UWP GATT 心率监测器特征值解读

Posted

技术标签:

【中文标题】UWP GATT 心率监测器特征值解读【英文标题】:UWP GATT heart rate monitor characteristic value interpretation 【发布时间】:2016-08-07 22:01:55 【问题描述】:

我编写了一个连接到建模心率的程序,但我不知道如何解释数据。 这是从第一个输出开始的示例:

心率为:16-40-15-04-6D-02-8C-01-0C-04-24-04-AB-03-7B-02-B4-01

心率为:16-40-20-04

心率为:16-40-8F-03

心率为:16-40-10-04

...

心率为:16-40-F7-03

心率为:16-40-05-04

心率为:16-40-31-04

心率为:16-40-F8-02-47-01

心率为:16-40-A5-03

...

心率为:16-40-D4-02

心率为:16-40-FE-03

心率为:16-40-15-05

心率为:16-3C-97-03

心率为:16-3D-64-03-78-03

心率为:16-3D-4F-04

心率为:06-3D

...

心率为:16-3E-3D-04

心率为:16-3E-17-04-78-03

这是获取和转换数据的代码:

void hrMeasurementChanged( GattCharacteristic sender, GattValueChangedEventArgs eventArgs)
    
        byte[] hrData = new byte[eventArgs.CharacteristicValue.Length];
        Windows.Storage.Streams.DataReader.FromBuffer(
            eventArgs.CharacteristicValue).ReadBytes(hrData);

        var hrValue = BitConverter.ToString(hrData); 
        Debug.WriteLine("heart rate is : " +hrValue);
    

此页面对此进行了解释,但我不确定如何解释数据: https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.heart_rate_measurement.xml

谢谢。

【问题讨论】:

【参考方案1】:

心率为:16-40-20-04

第一个字节是0x16,是heart_rate_measurementFlags值域。它的二进制形式是0001_0110,第一位(最低有效位)是Heart Rate Value Format位,这里是0,表示跟随Flags的心率,用一个字节表示。这里,心率为0x40,即64 每分钟心跳次数(bpm)(十进制为64)。第四位是RR-Interval 位,这里是1,表示存在一个或多个RR-Interval 值。 RR-Interval 值由两个字节表示。这里有一个RR-Interval的值,是0x0420(从LSO到MSO的顺序)。

心率为:16-40-15-04-6D-02-8C-01-0C-04-24-04-AB-03-7B-02-B4-01

0x15 到结尾有八个 RR-Interval 值。

心率为:06-3D

Flags值域的第四位是RR-Interval位,这里是0,表示RR-Interval值不存在。所以只有心率值:0x3D

另见 GATT heart rate characteristic specification

【讨论】:

以上是关于UWP GATT 心率监测器特征值解读的主要内容,如果未能解决你的问题,请参考以下文章

BLE GATT 服务器数据格式

找出 Android 蓝牙 LE GATT 配置文件

ESP32学习笔记(33)——BLE GATT客户端发现服务和读写特征值

在没有发布 GATT 配置文件的情况下解释来自 BLE 设备的数据

一个 Gatt 中的单独与组合特征

哪些 GATT 服务使用具有相同 UUID 的多个特征?