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

UWP GATT heart rate monitor characteristic value interpretation

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

heart rate is : 16-40-15-04-6D-02-8C-01-0C-04-24-04-AB-03-7B-02-B4-01

heart rate is : 16-40-20-04

heart rate is : 16-40-8F-03

heart rate is : 16-40-10-04

...

heart rate is : 16-40-F7-03

heart rate is : 16-40-05-04

heart rate is : 16-40-31-04

heart rate is : 16-40-F8-02-47-01

heart rate is : 16-40-A5-03

...

heart rate is : 16-40-D4-02

heart rate is : 16-40-FE-03

heart rate is : 16-40-15-05

heart rate is : 16-3C-97-03

heart rate is : 16-3D-64-03-78-03

heart rate is : 16-3D-4F-04

heart rate is : 06-3D

...

heart rate is : 16-3E-3D-04

heart rate is : 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

谢谢。

heart rate is : 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的顺序)。

heart rate is : 16-40-15-04-6D-02-8C-01-0C-04-24-04-AB-03-7B-02-B4-01

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

heart rate is : 06-3D

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

另见 GATT heart rate characteristic specification