我写了一个连接到心率模型的程序,但我不知道如何解释数据。 以下是从第一个输出开始的示例:
心率为: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
谢谢。
答案 0 :(得分:5)
心率是:16-40-20-04
第一个字节是0x16
,它是Flags
的{{1}}值字段。其二进制形式为heart_rate_measurement
,第一位(最低有效位)为0001_0110
位,此处为Heart Rate Value Format
,表示在0
之后的心率字节。在这里,心率为Flags
,即每分钟0x40
次(bpm)(十进制形式为64
)。第四位为64
位,此处为RR-Interval
,表示存在一个或多个1
值。 RR-Interval
值由两个字节表示。这里有一个RR-Interval
值,它是RR-Interval
(按照LSO到MSO的顺序)。
心率为:16-40-15-04-6D-02-8C-01-0C-04-24-04-AB-03-7B-02-B4-01
从0x0420
到结尾有八个RR-Interval值。
心率是:06-3D
0x15
值字段的第四位为Flags
位,此处为RR-Interval
,表示0
值不存在。因此,只有心率值:RR-Interval
。