我试图读取心率监测器通过蓝牙传输的数据,但我真的不知道如何读取心率监测器返回的字节。
每个供应商可能都有自己的方式将数据包装成字节。但是,如何将这些字节转换为可读格式,以便我可以分析其中的变化? 像ASCII值或一些十六进制值。
我尝试了MyTrack应用程序的代码,但这对我没用。
我正在尝试读取Android中的字节,截至目前我正在获取这些数据,但不知道哪个字段代表什么。
55 04 00 38 00 15 af
14 b0 00 38 00 13 b1
55 04 00 38 00 13 b1
55 04 00 38 00 12 b2
答案 0 :(得分:5)
希望您的心率监测器遵循此处定义的数据规范:
Heart Rate Measurement at Bluetooth.org
据我所知,这里是如何在该文件中应用信息:
在我的情况下,使用Wahoo Blue HR,数据会像这样回来:
14 46 59 03 58 03
将14转换为二进制(00010100)并查看位0(0)告诉我心率是8位,所以我只需要第二个十六进制字节(46)。将其转换为十进制可以得到70。
不幸的是,我不知道如何解释你的第二个样本。第一个十六进制字节14表示一个8位值,但这会使心率值B0或176 - 对于坐在他们计算机上的人来说不是一个可能的值。我也不希望单个设备在传输8位和16位值之间切换,但我想这是可能的。
This SO question包含执行这些转化的代码,并且它为我工作。我只想在实现之前尝试理解文档。
答案 1 :(得分:1)
除非您能找到心率监测器传输规范的一些文档,否则您将需要分析数据并解密格式。实现此目的的一种方法是创建从心率监测器发送的数据的受控变化(例如在静止的人和慢跑的人之间交换),然后查找数据中的差异和模式。
至少,我希望数据包含时间和心率值,但是肯定会有其他字段,例如标题,数据包标识符和长度以及校验和值。
答案 2 :(得分:0)
我没有查看您的数据,但是我已经从ANT,ANT +解码了一些监视器,数据流包括拍子之间的时间(以毫秒为单位)以及最近三个拍子的HR。建议从一致的HR获取数据是最好的起点。然后请记住,您看到的数字可能会从三到四次跳动舍入。