我试图读取心率监测器通过蓝牙传输的数据,但我真的不知道如何读取心率监测器返回的字节.
每个供应商可能有自己的方式将数据包装成字节.但是如何将这些字节转换为可读格式,以便我可以分析其中的变化?
像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
解决方法:
希望您的心率监测器遵循此处定义的数据规范:
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包含进行这些转换的代码,它对我有用.我只想在实现之前尝试理解文档.
标签:heartbeat,android,java 来源: https://codeday.me/bug/20190826/1729367.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。