Сейчас интегрируюсь с одной чудо железкой по COM-порту. Для неё ранее уже написан сторонний софт.
Начну издалека.
Четвёртый байт ответа содержит длину ответа (с учётом байта длины).
Вот так происходит обмен информацией с уже написанным приложением:
Отправил: #03#82#65
Получил: #03#82#65#19#01#42#82#00#00#00#3C#35#45#16#19#02#11#00#20#80#C1#35#32#00#1A#00#00#29
Всё OK, всё в порядке
Теперь делаю запрос с помощью pyserial:
Отправил: #03#82#65
Получил: #03#80#D9#19#01#42#80#00#00#00#3C#14#49#16#19#02#00#20#80#C1#35#32#00#1A#00#00#2E
И мне возвращается на один байт меньше! А самое интересное, что с этих самых пор, контроллер отдаёт события исключительно без этого байта.
Быть может кто подскажет, в чём может быть проблема? Я надеюсь, что проблема всё-таки в библиотеке, а не в железке.
Поскольку скорее всего проблема в подключении, вот код:
s = pyserial.Serial(0, baudrate = 4800, timeout = TIMEOUT, parity = pyserial.PARITY_SPACE, xonxoff = 0x13)
s.parity = pyserial.PARITY_MARK
s.write('\x01', 1)
s.readline()
s.parity = pyserial.PARITY_SPACE
s.write('\x03\x80\xD9')
s.readline()