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_measurement
的Flags
值域。它的二进制形式是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 心率监测器特征值解读的主要内容,如果未能解决你的问题,请参考以下文章
ESP32学习笔记(33)——BLE GATT客户端发现服务和读写特征值