Расчет уровня глюкозы из SFLOAT - BlueTooth BLE Swift 5 - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь найти и рассчитать значения глюкозы с помощью прибора BLE для определения уровня глюкозы в крови. Значение концентрации глюкозы представляет собой 16-битный SFLOAT , что означает, что 4 бита - это показатель , а 12-битные - mantissa (порядок байтов с прямым порядком байтов).

(Устройство My Glucose имеет по крайней мере одно значение глюкозы (6,2 ммоль / л) и значение кетозы (0,4 ммоль / л)

Я запросил все записи [0x01, 0x01] из RACP и получение 15 байтов из Измерение глюкозы :

[3, 0, 0, 228, 7, 3, 14, 23, 23, 0, 0, 0, 112, 176, 17]
[3, 1, 0, 228, 7, 3, 14, 23, 23, 0, 0, 0, 255, 255, 17]
[3, 2, 0, 228, 7, 3, 10, 13, 49, 0, 0, 0, 13, 176, 17]
[3, 3, 0, 228, 7, 3, 10, 13, 49, 0, 0, 0, 255, 255, 17]

Я использовал приложение nRFConnect, которое отображает значение измерения глюкозы в виде:

0x03 03 00 E4 07 03 0A OD 31 00 00 00 FF FF 11

Я предполагаю, что данные Flags равны 3, следовательно, 11000000 в двоичном обратном порядке, поэтому:

True : Смещение по времени

True : Концентрация глюкозы, тип и местоположение образца присутствуют

кг / л: Единицы концентрации глюкозы

Неверно : Присутствует оповещение о состоянии датчика

Неверно: Против Текстовая информация следует

(последние три бита зарезервированы для будущего использования)

см. Гатт: https://www.bluetooth.com/xml-viewer/?src=https: // www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Characteristics/org.bluetooth.characteristic.glucose_measurement.xml

Концентрация глюкозы может быть на уровне [12] и [13], но я не уверен, как это подтвердить. Преобразование этих значений с floatValueFromData приводит к следующему:

28848.0 
65535.0
3504.0
65535.0

В двоичном виде это:

0111000010110000

1111111111111111

0000110110110000

1111111111111111

Итак, для вышеуказанных четырех двоичных строк:

Показатели: 0111, 1111, 0000, 1111

Мантиссы: 000010110000, 111111111111, 110110110000, 111111111111

Я застрял, пытаясь расшифровать это.

По крайней мере, один из них должен иметь мой показатель глюкозы, который составляет 6,2 ммоль / л (такой же, как 111,6 мг / дл или 0,001116 кг / л. )

...