Цитата(SolarFire @ 21.2.2018, 17:40)

да, это вроде я понял. Но я правильно понял, что после отправки запроса открытия сеанса нужно дождаться ответа?
Да, на все команды, за исключением команды конца сеанса передачи, нужно дождаться ответа счетчика.
Счетчик не ответит, если:
* Неправильные параметры порта: скорость, четность, биты данных, стоповый бит (для RS-485 по умолчанию 9600/7E1).
* Неправильный формат команды или контрольная сумма (BCC, при наличии, см. ниже)
* Не было команды начала сеанса передачи
В общем случае порядок команд такой:
1. Начало сеанса передачи: /?AAA!<CR><LF>. Ответ: /XXXZID<CR><LF>
2. Переход в режим программирования: <ACK>0Z1<CR><LF>. Ответ: <SOH>P0<STX>(XXX)<ETX><BCC>
3. Пароль: <SOH>P1<STX>(XXX)<ETX><BCC>. Ответ: <ACK> или <NAK>
4. Чтение данных: <SOH>R1<STX>ID(XXX)<ETX><BCC>. Ответ: <STX>ID(XXX)<ETX><BCC> или массив.
5. Конец сеанса передачи: <SOH>B0<ETX><BCC>. Ответ: нет ответа.
Все команды указаны в условном формате. Управляющие символы указаны в угловых скобках <>. Разъяснение форматов команд см. п.5.3 в ГОСТ IEC 61107-2011.
Вместо режима программирования можно использовать чтение без пароля. Но это не всегда удобно, мы у себя не используем.