我无法理解BLE Heart Rate Characteristic(服务180d
,特征2a37
)的返回数据。
根据规范,将有6或7个字节的数据(当base64解码时),我完全理解在这种情况下如何处理它。
但有时候它不会返回6或7个字节而是8个甚至更少的4个字节,我不知道为什么会有更多/更少的字节以及添加的字节的含义是什么或者哪些字节被遗漏。< / p>
我可以跳过所有没有6或7个字节的情况,但我想完全理解这一点。
我某些将base64编码转换为字节数组是正确完成的,我为它做了一个函数和使用手动base64-decode结合检查它charCodeAt(index)
和使用优质铅笔,纸张和大脑(不一定按此顺序)手动检查。
BLE心率(180d
,2a37
)有时不返回预期的字节数(当它应该是6或7字节时为4和8)。
究竟发生了什么以及为什么?
// 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
答案 0 :(得分:3)
能量消耗是可选的,检查样本数据情况下标志的第3位,它不存在。存在可变数量的rr间隔。 4个字节,你只有1个,6个字节,你有2个,8个字节,你有3个你理论上可以得到10个和4个。
您应该使用标志解码字节,然后如果rr存在,则剩余字节数/ 2是您拥有的rr数。