我正在尝试编写一个可以从小米 mi 体重秤版本 1 进行体重测量的应用程序。我从身体成分测量服务中获得了一个像 0624b2070101002e3800004c04(5.50kg) 这样的十六进制值。
根据我的研究,第一个字节给出 02:measurement unit 最后两个字节是重量值,但是当我将此值转换为十进制并除以 200 时,我没有得到正确的值。
有人可以帮我获取正确的数据吗?
我正在尝试编写一个可以从小米 mi 体重秤版本 1 进行体重测量的应用程序。我从身体成分测量服务中获得了一个像 0624b2070101002e3800004c04(5.50kg) 这样的十六进制值。
根据我的研究,第一个字节给出 02:measurement unit 最后两个字节是重量值,但是当我将此值转换为十进制并除以 200 时,我没有得到正确的值。
有人可以帮我获取正确的数据吗?
hex 的值4c04
等于 19460,它不会给你想要的结果。但是将字节序(字节顺序)更改044c
为 1100 的值,除以 200,得到所需的结果 5.5kg
最后两个字节是4c04
. 蓝牙以 little endian 格式发送数据,即1100
.
https://www.bluetooth.com/specifications/specs/上的“GATT 规范补充 4”文档说:
3.27.2.7 权重字段
如果标志字段的位 0 为 0,则该字段以千克为单位,分辨率为 0.005;如果标志字段的位 0 为 1,则该字段以磅为单位,分辨率为 0.01。
1100 * 0.005 = 5.5 公斤
我有一个类似的问题,这就是我如何亲自阅读我记录的所有内容并且不要被它的外观吓倒它实际上非常简单:
对于转换我使用这个网站的原因很好我不知道如何转换:) 在此处输入链接描述
这是一张显示它是如何工作的图像,您需要查看 INT 16 BIG endian 并发布整个十六进制代码,而不仅仅是像这样的最后两个字节: