我试图读取心率监测器通过蓝牙传输的数据,但我真的不知道如何读取心率监测器返回的字节.
每个供应商可能有自己的方式将数据包装成字节.但是如何将这些字节转换为可读格式,以便我可以分析其中的变化?
像ASCII值或一些十六进制值.
我尝试了MyTrack应用程序的代码,但这对我没有用.
MyTrack Parse Heart Rate Data
我正在尝试读取AndroID中的字节,截至目前我正在获取这些数据,但不知道哪个字段代表什么.
55 04 00 38 00 15 af 14 b0 00 38 00 13 b1 55 04 00 38 00 13 b155 04 00 38 00 12 b2
解决方法:
希望您的心率监测器遵循此处定义的数据规范:
Heart Rate Measurement at Bluetooth.org
据我所知,这是如何在该文档中应用信息:
>取第一个十六进制字节55,然后将其转换为二进制:01010101.
>由于蓝牙数据是little-endian,因此将该序列的右端视为位0,将左端视为位7.
>现在,您可以查看蓝牙消息的Flags字段的文档. flags字段的第0位告诉您心率数据是8位还是16位.在你的情况下,位0是1,所以你有16位数据.
>查看第一个示例中的下两个十六进制字节:04 00.
>将其转换为十进制.现在这部分我不确定.如果我将04 00转换为十进制,我得到1024,所以我一定做错了.也许巧合的是,如果我将这些数字反转并将00 40转换为十进制,我得到64,这对于坐在他们电脑上的人来说可能是心率值(我现在是62).也许有人可以评论如何解释这部分.
就我而言,使用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包含进行这些转换的代码,它对我有用.我只想在实现之前尝试理解文档.
总结以上是内存溢出为你收集整理的java – 分析心率监测器的数据返回全部内容,希望文章能够帮你解决java – 分析心率监测器的数据返回所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)