【发布时间】:2019-09-23 16:20:05
【问题描述】:
我正在使用 arduino 通过 BLE 向移动设备发送消息,该移动设备使用“nRF Connect for Mobile”来扫描 arduino。
我能够获取血压 (0x1810) 和健康温度计 (0x1809) 的信息,但脉搏血氧计服务 (0x1822) 失败
只显示
Value: (0x) 00-63-00-50-00
我期待的是
00 = flags
63-00 = SLOAT of the SpO2 value, i.e. 99%
50-00 = SLOAT of the pulse rate, i.e. 80
由于它没有“无效数据语法”之类的症状,所以我想知道这个服务是不是这个应用程序定义的。
// For Blood Pressure service (0x1810): Blood Pressure Measurement (0x2A35)
byte flags1 = 0b00000000;
byte SYS = 100;
byte DIA = 160;
byte MAP = 120;
byte BP[8] = {flags1, SYS, 0, DIA, 0, MAP, 0};
pChara1_1->setValue(BP, 8);
pChara1_1->indicate();
// The mobile app (nRF Connect) display the systolic pressure: 100 mmHg successfully (also the diastolic and mean pressure)
// For Pulse Oximeter Service (0x1822): PLX Spot-check Measurement (0x2A5E)
byte flags3 = 0b00000000;
byte Sp = 99;
byte PR = 80;
byte SPO2[5] = {flags3, Sp, 0, PR, 0};
pChara3_1->setValue(SPO2, 5);
pChara3_1->indicate();
// For Pulse Oximeter Service (0x1822): PLX Features (0x2A60)
byte flags4[2] = {0b00000000,0b00000000};
pChara3_3->setValue(flags4, 2);
// It turns out "Value: (0x) 00-63-00-50-00"
预期结果
SpO2: 99%
Pulse rate: 80
实际结果
Value: (0x) 00-63-00-50-00
【问题讨论】:
-
我认为 NRF 连接应用程序不支持解析 PulseOximetry 的特征数据。我正在处理完全相同的问题。
-
我强烈建议您查看 Windows C++/C# BLE GUI 示例应用程序,您可以与它配对并连接到您的 nRF 服务器设备并发现 GATT 配置文件、服务和特征。如果它是可通知的,您可以订阅通知的特征,或者如果它是可读的,则可以读取它,如果它是可写的,则可以写入它github.com/microsoft/Windows-universal-samples/tree/master/…
标签: c# bluetooth bluetooth-lowenergy