Помощь в разборе полей устройства modbus

Добрый день всем.

Подключил по шине RS-485 датчик угарного газа/метана.
Данные читаются.
Прошу помощи в разборе поля

Адрес 0x01 - 16 разрядный регистр состояния газосигнализатора (только чтение) со следующими информационными байтами:
старший байт - тип устройства;
1 - метан, пропан (далее – “CH”)
17 - угарный газ (СО)
18 - метан, пропан (“CH”)+ угарный газ (СО)

младший байт - текущее состояние устройства в формате ХХХХ Х D1 D1 D0; D1 1 - превышен порог, 0 – дежурный режим
D0 0 - неисправность, 1 – дежурный режим.

Каким образом при чтении параметра разбирать его на байты в различные каналы устройства?

При опросе из cli имею результат

Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[0A][03][00][01][00][01][D4][B1]
Waiting for a confirmation…
<0A><03><02><12><01>
SUCCESS: read 1 of elements:
Data: 0x1201

Данные читаются верно, но хотелось бы получить в разные каналы биты ответа
Т.е. разбить 0х1201 на

  1. версию устройства (0х12 = 18 = датчик угарного газа и метана)
  2. отсутствие тревоги по полям 1-го и второго бита (два ноля в ответе)
  3. бит дежурного режима/неисправности (единица в ответе)

с уважением
Евгений

Спасибо, нашёл

Битовое поле можно взять следующим образом

“address”: “1:8:8”,

Было бы неплохо, если бы было отражено в вики. К сожалению, не увидел

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.