Android 可编程心率传感器值解释

Android 可编程心率传感器值解释,android,bluetooth-lowenergy,bluetooth-gatt,heartrate,Android,Bluetooth Lowenergy,Bluetooth Gatt,Heartrate,我有一个Android应用程序,可以从Polar H10设备上获取心率测量值。 我完全不知道如何解释心率。不幸的是,bluetooth.com网站的各种链接导致404个错误 特征值为,即。 [16,59,83,4] 据我所知,第二个字节(59)是BPM中的心率。但这似乎不是十进制的,因为值先升到127,然后再升到-127,-126,-125。。。它也不是十六进制 我试过(在科特林) 一旦-127出现,所有的值都会崩溃 我必须将59转换为二进制(59=111011)并在那里看到它吗?请给我一些见解

我有一个Android应用程序,可以从Polar H10设备上获取心率测量值。 我完全不知道如何解释心率。不幸的是,bluetooth.com网站的各种链接导致404个错误

特征值为,即。 [16,59,83,4]

据我所知,第二个字节(59)是BPM中的心率。但这似乎不是十进制的,因为值先升到127,然后再升到-127,-126,-125。。。它也不是十六进制

我试过(在科特林)

一旦-127出现,所有的值都会崩溃

我必须将59转换为二进制(59=111011)并在那里看到它吗?请给我一些见解

编辑(2021年4月12日)

要获取这些值,我需要一个BluetoothDevice.connectGatt()。 那就举行关贸总协定。 为了得到我想要的心率值

  • 服务0x180d及其应用
  • 特性0x2a37及其唯一特性
  • 描述符0x2902
然后通过在描述符上设置0x01来启用通知。然后,我在GattClientCallback.onCharacteristicChanged()回调中获取正在进行的事件。我将在下面添加一个包含所有数据的屏幕截图

据我所知,响应应该是6字节而不是4字节,对吗?我做错了什么

在图片上,你可以看到最上面的特征。它链接到服务180d,该特性保存底部有4个字节的值


我似乎找到了一种方法,通过如下方式检索值

val hearRateDecimal = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1)
有两件事很重要 首先是UINT8的格式(虽然我不知道什么时候使用UINT8,什么时候使用UINT16。实际上我认为我需要使用UINT16,因为第一个字节实际上是16(见上面的问题) 第二个-偏移参数1


我现在得到的是一个大于127->127、128、129、130的整数,

我似乎找到了一种方法,通过如下方式检索该值

val hearRateDecimal = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1)
有两件事很重要 首先是UINT8的格式(虽然我不知道什么时候使用UINT8,什么时候使用UINT16。实际上我认为我需要使用UINT16,因为第一个字节实际上是16(见上面的问题) 第二个-偏移参数1

我现在得到的是一个大于127->127、128、129、130的整数,

请参见文档链接。如答案所示,这里是解码:

字节0-标志:16(0001 0000) 位从LSB(0)到MSB(7)进行编号

  • 位0-心率值格式:0=>UINT8次/分钟
  • 位1-2-传感器触点状态:00=>不支持或检测到
  • 第3位-能量消耗状态:0=>不存在
  • 位4-RR间隔:1=>存在一个或多个值
所以第一个字节是UInt8格式的心率,接下来的两个字节是RR间隔

要在Kotlin中阅读此内容:

characteristic.getIntValue(FORMAT_UINT8, 1)
这将返回56 bpm的心率

并忽略其他两个字节,除非您需要RR。

有关文档的链接,请参阅。如答案所示,解码如下:

字节0-标志:16(0001 0000) 位从LSB(0)到MSB(7)进行编号

  • 位0-心率值格式:0=>UINT8次/分钟
  • 位1-2-传感器触点状态:00=>不支持或检测到
  • 第3位-能量消耗状态:0=>不存在
  • 位4-RR间隔:1=>存在一个或多个值
所以第一个字节是UInt8格式的心率,接下来的两个字节是RR间隔

要在Kotlin中阅读此内容:

characteristic.getIntValue(FORMAT_UINT8, 1)
这将返回56 bpm的心率


除非您需要RR,否则请忽略其他两个字节。

嗨,Rob,谢谢您的回答。我在问题和屏幕截图中添加了更多信息。如果您对此有意见,将非常有帮助。谢谢!对不起;我记错了位0的含义(我脑子里有“可用心率”而不是“心率格式”).重写答案。嗨,罗布,谢谢你的回答。我在我的问题和屏幕截图中添加了更多信息。如果你能就此发表意见,那将非常有帮助。谢谢!对不起;我记错了位0的意思(我脑子里想的是“可用心率”而不是“心率格式”)。重写答案。