【问题标题】:Bluetooth heartrate monitor byte decoding蓝牙心率监测器字节解码
【发布时间】:2015-11-25 13:32:53
【问题描述】:

问题:

我无法理解BLE Heart Rate Characteristic(服务180d,特征2a37)的返回数据。

根据规范将有 6 或 7 个字节的数据(当 base64 解码时),我完全理解在这种情况下如何处理它。

但有时它不会返回 6 或 7 个字节,而是 8 个字节,很少返回 4 个字节,我不知道为什么会有更多/更少字节以及添加字节的含义或遗漏了哪些字节。

我可以跳过所有没有 6 或 7 个字节的情况,但我想完全理解这一点。

确定将 base64 编码转换为字节数组是正确完成的,我为它创建了一个函数使用手动 base64-decode 组合检查它使用charCodeAt(index) 真正手动检查它使用好的 ol' 铅笔、纸和大脑(不一定按这个顺序)。

TL;DR :

BLE 心率 (180d,2a37) 有时不会返回预期的字节数(4 和 8,而应该是 6 或 7 字节)。 究竟发生了什么,为什么?

示例:

// Example results in byte-array's
["00010110", "01110111", "00000100", "00000010"] // unexpected 4 byte
["00010110", "01111000", "11111111", "00000001", "11111111", "00000001", "00001100", "00000001"] // unexpected 8 byte
["00010110", "01110111", "00001000", "00000010", "00001000", "00000010"] // normal 6 byte

// Example results in hex-array's (easier to read on small screens)
["0x16","0x77","0x04","0x02"] // unexpected 4 byte
["0x16","0x78","0xFF","0x01","0xFF","0x01","0x0C","0x01"] // unexpected 8 byte
["0x16","0x77","0x08","0x02","0x08","0x02"] // normal 6 byte

字节说明:

  1. 标志。如果心率为 16 位格式(我只有 8 位),则第一位(最右边)打开。
  2. heartrate,如果心率是 16 位格式,这里会有 2 个字节
  3. 能量消耗
  4. 能量消耗
  5. rr 间隔
  6. rr 间隔

【问题讨论】:

  • 当然,在 4 字节的情况下它可能是 [F][C1][C4][C4] 但如果是这种情况,它不应该在文档中吗?但这并不能解释 8 字节的场景……
  • 系统是什么?操作系统硬件设置等。与系统交互的代码在哪里,这是最有可能导致问题的原因......
  • @lfor 我正在科尔多瓦应用程序中使用 randdusings ble 插件。该插件包含代码(src/android/*.java 或 www/*.js),可以通过谷歌搜索“cordova-plugin-bluetooth”轻松找到。

标签: bluetooth bluetooth-lowenergy


【解决方案1】:

能源消耗是可选的,检查样本数据情况下标志的第 3 位它不存在。有可变数量的 rr 间隔。 4 个字节你只有 1 个,6 个字节你有 2 个,8 个字节你有 3 个,理论上你可以得到 10 和 4。

您应该使用标志对字节进行解码,然后如果存在 rr,则剩余字节数 / 2 是您拥有的 rr 数。

有关详细信息,请参阅XML-Definition 文件。

【讨论】:

  • 根据规范,消耗的能量大小为uint16,即2字节。剩下的就不是很清楚你在说什么了......
  • 是的,它是 2 个字节,但它是可选的。如果未设置标志的第 3 位,则您不会获得这两个字节,并且其他所有内容都会向上移动。您将获得可变数量的 rr 条目,每个条目 2 个字节。您基本上会查看解码初始内容后剩余的字节数,这会告诉您将拥有多少个 rr。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多