После обратного инжиниринга приложения IRULU / Guangdong Biolight Meditech Temp Sitter оно выглядит так, как если бы сообщение имело следующий формат:
0 1 2 3 4 5 6 7
+------+------+------+------+------+------+------+------+
|Marker|Length|Type |Subtyp|Low |High |Unused|Chksum|
+------+------+------+------+------+------+------+------+
Example AA 06 11 00 3E 0D 00 62
Поля:
- Маркер : Всегда 0xAA.Маркер используется для разграничения сообщений.Формат сообщения, кажется, предназначен для отправки потока сообщений.0xAA будет означать начало нового сообщения.
- Длина : длина полезной нагрузки в байтах.Это длина без маркера и без контрольной суммы.
- Тип : Тип сообщения.0x11 - это сообщения о температуре.Есть также сообщение tpe 0x12, которое кажется интересным (хотя я не понимаю его цели).Приложение игнорирует другие типы сообщений.
- Подтип : Подтип сообщения.Подтип 0 - это измерения температуры.Подтипы 1 и 2 выглядят как high и low предупреждений / индикаторов.
- Low : младший байт значения температуры.
- High : старший байт значения температуры.
- Unused : кажется, что этот байт не задан и установлен в 0.
- Контрольная сумма : контрольная сумма полезной нагрузки.Он просто вычисляется путем добавления всех байтов полезной нагрузки (начиная с длина и заканчивая неиспользуемым полем).
Значение температуры сохраняется в0,01 градуса (вероятно, градус Цельсия).Таким образом, чтобы извлечь его, вы вычисляете:
double temperature = ((message[5] & 0xff) * 256 + (message[4] & 0xff)) * 0.01;
В приведенном выше примере результат будет 33,90 ° C.