# 新手请教 关于电池电量测算的问题

**URL:** <https://bbs.aprbrother.com/t/topic/1466>\
**Category:** AprilBeacon\
**Created:** [March 26, 2019, 8:02am UTC](https://bbs.aprbrother.com/t/topic/1466 "2019-03-26T08:02:17Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [March 26, 2019, 8:02am UTC](https://bbs.aprbrother.com/t/topic/1466/1 "2019-03-26T08:02:18Z")

</div>

我在安卓开发中获得如下的数据，请问怎样得到电量值？

 ![QQ%E5%9B%BE%E7%89%8720190326161035](https://bbs1.aprbrother.com/uploads/default/original/1X/96892f73dc1f96f80698a7c3ef92205e64087916.jpeg) !  
为何我的13-14这数的值，每次都不同的？

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [March 27, 2019, 2:08am UTC](https://bbs.aprbrother.com/t/topic/1466/2 "2019-03-27T02:08:21Z")

</div>

请问你购买了哪个型号的产品？是我们的beacon产品么？由于我们的beacon会以[google eddystone TLM-plain方式](https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-plain.md)广播电量，一般情况下你只需要观察eddystone TLM-plain格式的广播包就可以了，这个广播数据里包含电量

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [March 29, 2019, 3:00am UTC](https://bbs.aprbrother.com/t/topic/1466/3 "2019-03-29T03:00:32Z")

</div>

![QQ%E5%9B%BE%E7%89%8720190327155013](https://bbs1.aprbrother.com/uploads/default/original/1X/5b97fb8e15134a14d52b6a3d9db99703c43a2fb0.jpeg) 这是你们的产品吧？我这个数据是从 安卓开发的接收到字段全部读出来的结果。  
final byte[] scanRecord  
for (int k=0;k\<=(scanRecord.length-1);k++) {  
gettest1=gettest1+k+": “+ scanRecord[k] +”  
";  
}  
再将gettes1 显示，就这样的。但是好像跟你们例子中数据不同。

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [March 29, 2019, 3:59am UTC](https://bbs.aprbrother.com/t/topic/1466/4 "2019-03-29T03:59:37Z")

</div>

这款产品是EEK beacon。它的广播形式是3个iBeacon广播和1个设备信息的广播。然后大概15秒左右插播一个Google Eddystone TLM-plain 广播包，你需要把这个TLM广播包过滤出来，然后读取其中的电量

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [March 31, 2019, 1:46am UTC](https://bbs.aprbrother.com/t/topic/1466/5 "2019-03-31T01:46:42Z")

</div>

3个iBeacon广播和1个设备信息的广播是依次播放还是一次播放的？ Google Eddystone TLM-plain 广播包 怎样读取？ 我的意思是在安卓编程你们有源码共享一下吗？这方面的资料太少了。谢谢！

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [March 31, 2019, 7:47am UTC](https://bbs.aprbrother.com/t/topic/1466/6 "2019-03-31T07:47:03Z")

</div>

检查了一下，13，14位 共收到三种数据：  
-22  
-79

-81  
-62

11  
93  
应当哪一组才是电池电量的数据？

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [April 1, 2019, 2:37am UTC](https://bbs.aprbrother.com/t/topic/1466/7 "2019-04-01T02:37:08Z")

</div>

请参考[eddystone 的示例app](https://github.com/google/eddystone/tree/master/tools)

> [@greatwish](#):
>
> 3个iBeacon广播和1个设备信息的广播是依次播放还是一次播放的？

依次播放的，像这样

iBeacon - iBeacon - iBeacon - 设备信息 - iBeacon …

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [April 4, 2019, 3:03am UTC](https://bbs.aprbrother.com/t/topic/1466/8 "2019-04-04T03:03:05Z")

</div>

组1  
13：-22  
14: -79  
组2  
13：-22  
14: -79  
组3  
13：-22  
14: -79  
组4  
13：-81  
14: -62  
那电量应当是多少？

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [April 8, 2019, 3:08am UTC](https://bbs.aprbrother.com/t/topic/1466/9 "2019-04-08T03:08:47Z")

</div>

请注意广播内容是uint8的，不存在负数，你需要把它转成uint8来计算。另外TLM plain的广播头固定前缀定义在[这里](https://github.com/google/eddystone/blob/master/protocol-specification.md). 这里的第8个字节是0x11.

然后你再检查它的[frame type](https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-plain.md)是不是0x20，这样可以精确的过滤出TLM包。

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [April 8, 2019, 3:09am UTC](https://bbs.aprbrother.com/t/topic/1466/10 "2019-04-08T03:09:51Z")

</div>

另外你可以安装[eddystone validator](https://github.com/google/eddystone/tree/master/tools/eddystone-validator) 来检查电量的值

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [April 20, 2019, 2:53am UTC](https://bbs.aprbrother.com/t/topic/1466/11 "2019-04-20T02:53:48Z")

</div>

![S90419-225823](https://bbs1.aprbrother.com/uploads/default/original/1X/70fc980328725e1d5ed5f412b8c62ebca9212c00.jpeg) 帮我看看，谢谢

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [April 22, 2019, 2:31am UTC](https://bbs.aprbrother.com/t/topic/1466/12 "2019-04-22T02:31:46Z")

</div>

看最后一个广播，我估计是这个

- 13位 ad
- 14位 6f

这个电压是 `0x6FAD = 28589mv`，电压约等于`2.8589mv`

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [May 27, 2019, 3:34pm UTC](https://bbs.aprbrother.com/t/topic/1466/13 "2019-05-27T15:34:50Z")

</div>

这是你帮另个人回答电量计算的回答：  
13 = 12 = 0xC  
14 = -82 = 0xAD  
用计算器可以算得 `0xCAD = 3245` ，这里的单位是mV，所以剩余电量为3245mV  
这是帮我计算电量的回答：

- 13位 ad
- 14位 6f  
这个电压是 `0x6FAD = 28589mv` ，电压约等于 `2.8589mv`  
为何 两次的回答 13 ,14位的左右顺序不同？  
还有，我每次调整了发射的间距后，这个13,14位的值会跟着变，所以我怀疑这两个值是不是代表电量值，还是其他位的值呢？

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [May 28, 2019, 1:28am UTC](https://bbs.aprbrother.com/t/topic/1466/14 "2019-05-28T01:28:32Z")

</div>

首先你一定要确定一个包是TLM包，再去解析电量，否则解析结果怎么也不会正确。

- TLM包的开头必定是[这些字节](https://github.com/google/eddystone/blob/master/protocol-specification.md). 其中offset=7数据必定是`0x11`
- TLM包的offset=11数据必定是`0x20`，其中Version数据必定是0x00

由这些条件，你肯定可以过滤出eddystone TLM数据包，而不是什么数据位发生变化这种情况。最后贴个swift代码示例，这里[分别解析了eddystone的各种数据帧](https://github.com/google/eddystone/blob/master/tools/ios-eddystone-scanner-sample/EddystoneScannerSampleSwift/Eddystone.swift). 见方法`frameTypeForFrame`

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [May 28, 2019, 12:21pm UTC](https://bbs.aprbrother.com/t/topic/1466/15 "2019-05-28T12:21:45Z")

</div>

![8](https://bbs1.aprbrother.com/uploads/default/original/1X/2a32a848f66294f8433ce4ca768ebc1954c56f30.jpeg) 我将全部数据上传了，麻烦看看。 这个数据应当是直接读出来的，[]为序号。

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [May 28, 2019, 12:45pm UTC](https://bbs.aprbrother.com/t/topic/1466/16 "2019-05-28T12:45:14Z")

</div>

我用你们提供的aprilbeacondemo 可以测试是75%电量，信号也是3组ibeacon +1组Eddystone信号，但是信号在7,11位数值上跟你说的又不同，晕死了。

---

<div class="post-metadata">

**Author:** ![aprilpea](https://bbs.aprbrother.com/user_avatar/bbs.aprbrother.com/aprilpea/32/9_2.png) [@aprilpea](https://bbs.aprbrother.com/u/aprilpea)\
**Post date:** [May 29, 2019, 12:27am UTC](https://bbs.aprbrother.com/t/topic/1466/17 "2019-05-29T00:27:52Z")

</div>

- 如果7, 11位的数值不匹配，那么这个广播肯定不是TLM广播
- 大概每隔30秒会发一个TLM包，频率很低。并不是3组iBeacon + 1组TLM包，请注意

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [May 29, 2019, 7:27am UTC](https://bbs.aprbrother.com/t/topic/1466/18 "2019-05-29T07:27:56Z")

</div>

明白了，怪不得数据老是不规律，原来TLM频率这么低。 那13位是b,14位是24,那电量值是多少？ 正常电压应当是多少？

---

<div class="post-metadata">

**Author:** ![greatwish](https://bbs.aprbrother.com/letter_avatar_proxy/v4/letter/g/e36b37/32.png) [@greatwish](https://bbs.aprbrother.com/u/greatwish)\
**Post date:** [June 3, 2019, 8:26am UTC](https://bbs.aprbrother.com/t/topic/1466/19 "2019-06-03T08:26:35Z")

</div>

用你们提供的demoapp测算的值总是75%或66%，怀疑是错的。
