Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分析心率监测器返回的数据_Java_Android_Heartbeat - Fatal编程技术网

Java 分析心率监测器返回的数据

Java 分析心率监测器返回的数据,java,android,heartbeat,Java,Android,Heartbeat,我试图读取通过蓝牙传输的心率监测器数据,但我真的不知道如何读取心率监测器返回的字节 可能每个供应商都有自己的方式将数据包装成字节。但是如何将这些字节转换成可读的格式,以便分析其中的变化? 比如ASCII值或一些十六进制值 我尝试了MyTrack应用程序的代码,但这对我不起作用 我试图在Android中读取字节,目前我正在获取这些数据,但不知道哪个字段代表什么 55 04 00 38 00 15 af 14 b0 00 38 00 13 b1 55 04 00 38 00 1

我试图读取通过蓝牙传输的心率监测器数据,但我真的不知道如何读取心率监测器返回的字节

可能每个供应商都有自己的方式将数据包装成字节。但是如何将这些字节转换成可读的格式,以便分析其中的变化?
比如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 

除非您能找到一些有关心率监视器传输规范的文档,否则您将需要分析数据并破译格式。一种方法是在心率监视器发送的数据中创建受控的变化(例如在休息的人和慢跑的人之间交换),然后查找数据中的差异和模式


至少,我希望数据由时间和心率值组成,但肯定还有其他字段,如报头、数据包标识符和长度以及校验和值。

希望您的心率监视器遵循此处定义的数据规范:

据我所知,以下是如何应用该文档中的信息:

  • 取第一个十六进制字节55,并将其转换为二进制:01010101
  • 由于蓝牙数据是little endian,因此将该序列的右端视为位0,左端视为位7
  • 现在,您可以查看蓝牙消息标志字段的文档。标志字段的第0位告诉您心率数据是8位还是16位。在您的例子中,位0是1,所以您有16位数据
  • 请看第一个示例中接下来的两个十六进制字节:04 00
  • 把它转换成十进制。这部分我不太清楚。如果我把0400转换成十进制,我得到1024,所以我一定是做错了什么。也许巧合的是,如果我把这些数字倒过来,把00-40转换成十进制,我会得到64,这可能是坐在电脑前的人的心率值(我的现在是62)。也许有人可以评论一下如何解释这一部分
  • 在我的例子中,使用Wahoo Blue HR,数据返回如下:

    14 46 59 03 58 03

    将14转换为二进制(0000100)并查看位0(0)告诉我心率是8位的,所以我只需要第二个十六进制字节(46)。把它转换成十进制,我得到70

    不幸的是,我不知道如何解释你的第二个样本。第一个十六进制字节14表示一个8位的值,但这将使心率值B0或176——对于坐在电脑前的人来说,这不太可能是一个值。我也不希望单个设备在传输8位和16位值之间切换,但我想这是可能的


    包括执行这些转换的代码,它对我有用。我只是想在实现之前尝试理解文档

    我没有查看您的数据,但我从ANT解码了一些监视器,ANT+数据流包括节拍之间的时间(以毫秒为单位)以及最后三次节拍的小时数。建议从一致的人力资源部门获取数据是最好的开始。然后请记住,显示的数字可能从三到四次四舍五入。

    是的,但我问的是,当我打印字节时,我得到一些无法读取的值,如何解密?你看这些值,你想,你猜,你调整,你尝试,你测试。冲洗并重复,直到满意为止。解码未知数据格式时没有快捷方式。辛苦的劳动就是方法。你所拥有的只是字节,所以把它想象成试图破解密码。正如@bos所说,你只需要不断尝试。请重新阅读我的答案并按照建议进行操作。感谢您添加数据,但您还需要更多。以已知的心率记录数据。对于上面的数据,如果你的心率在177左右,那么我猜最后一个字节代表心率(af,b1,b2),接下来的两个字节可能是时间。你需要更多的数据和测试才能确定。@Nate,不,那些比特并不代表心跳,我尝试了很多组合,甚至通过减法、加法等,但仍然没有找到解码的方法