Я использую 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