问题描述
我正在尝试编写一个可以从小米米秤版本 1 进行体重测量的应用程序。我从身体成分测量服务中得到一个像 0624b2070101002e3800004c04(5.50kg) 这样的十六进制值。
根据我的研究,第一个字节给出 02:计量单位 最后两个字节是权重值, 但是当我将此值转换为十进制并除以 200 时,我没有得到正确的值。
有人可以帮我获取正确的数据吗?
解决方法
十六进制 4c04
的值等于 19460,这不会给您想要的结果。
但是将 endianess(字节顺序)更改为 044c
会产生 1100 的值,除以 200,您会得到 5.5kg 的预期结果
最后两个字节是 4c04
。蓝牙以小端格式发送数据,因此作为 1100
的整数。
位于 https://www.bluetooth.com/specifications/specs/ 的“GATT 规范补充 4”文档说:
3.27.2.7 权重字段
如果 Flag 字段的第 0 位为 0,则该字段以千克为单位,分辨率为 0.005 或以磅为单位,分辨率为 0.005 如果标志字段的位 0 为 1,则为 0.01。
1100 * 0.005 = 5.5 公斤