gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:39:54 25 4
gpt4 key购买 nike

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

可能每个供应商都有自己的将数据包装成字节的方法。但是我怎样才能将这些字节转换成某种可读格式,以便我可以分析其中的变化呢?
像 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 b1

55 04 00 38 00 12 b2

最佳答案

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

Heart Rate Measurement at Bluetooth.org

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

  1. 将第一个十六进制字节 55 转换为二进制:01010101。
  2. 由于蓝牙数据是小尾数法,因此将该序列的右端视为第 0 位,将左端视为第 7 位。
  3. 现在您可以查看蓝牙消息标志字段的文档。标志字段的第 0 位告诉您心率数据是 8 位还是 16 位。在你的例子中,第 0 位是 1,所以你有 16 位数据。
  4. 查看第一个示例中接下来的两个十六进制字节:04 00。
  5. 将其转换为十进制。现在这部分我不确定。如果我将 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 - 分析心率监测器返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10421633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com