我有一个 Android 应用程序,可以从 Polar H10 设备获取心率测量值。我完全不知道如何解释心率。不幸的是,各种指向 bluetooth.com 网站的链接都导致了 404 错误。
特征值为 ie [16, 59, 83, 4]
据我了解,第二个字节(59)是以 BPM 为单位的心率。但这似乎不是十进制的,因为值上升到 127 然后继续 -127、-126、-125,......它也不是十六进制。
我试过(在科特林)
characteristic.value[1].toUInt()
characteristic.value[1].toInt()
characteristic.value[1].toShort()
characteristic.value[1].toULong()
characteristic.value[1].toDouble()
一旦 -127 出现,所有值都会出现异常。
我是否必须将 59 转换为二进制 (59=111011) 并在其中看到它?请给我一些见解。
### 编辑(2021 年 4 月 12 日)###
我为获得这些值所做的是 BluetoothDevice.connectGatt()。然后持有关贸总协定。为了获得我寻找的心率值
- 服务 0x180d 及其
- 特征 0x2a37 及其唯一
- 描述符 0x2902。
然后我通过在描述符上设置 0x01 来启用通知。然后,我在 GattClientCallback.onCharacteristicChanged() 回调中获取正在进行的事件。我将在下面添加一个包含所有数据的屏幕截图。
据我了解,响应应该是 6 个字节长而不是 4 个字节,对吧?我究竟做错了什么?
在图片上,您可以看到最顶部的特征。它链接到服务 180d,并且特征保存底部 4 个字节的值。