Использование управления xonxoff-flow с pyserial

В настоящее время я пытаюсь взаимодействовать с довольно старой моделью HP-принтера, которая дает мне два возможных метода управления потоком: полное отсутствие управления потоком или управление потоком на основе программного обеспечения (XON/XOFF).

Я инициализирую pySerial следующей командой и просто использую большую строку для записи данных в порт:

serial = serial.Serial(port = '/dev/ttyUSB3', baudrate = 9600, parity = serial.PARITY_ODD, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS)

Это работает нормально, но есть загвоздка: кажется, что управление потоком полностью игнорируется, а данные отправляются и отправляются, что приводит к переполнению буфера ввода-вывода и прекращению работы устройства.

Моей первой мыслью было, что если я использую serial.write('невероятно длинная строка'), pySerial не сможет прекратить передачу, поэтому я разбил строку на куски и отправил ее:

data = ['command', 'another command', 'more commands', 'you get the drift...']
for i in data:
    serial.write(i)

Ну... Это тоже не работает.

Таким образом, в основном я мог бы просто изменить скорость передачи данных на что-то более низкое, чтобы устройство работало быстрее, чем передача, или просто добавить что-то вроде сна каждые несколько фрагментов ... Но я думаю, это не то, как нужно делать это.

Итак... Кто-нибудь объяснит мне, что я делаю не так? ;-)

Спасибо,

Мартин


person Martin    schedule 04.06.2013    source источник


Ответы (1)


Вы забыли параметр xonxoff. xonxoff=Истина

http://pyserial.readthedocs.io/en/latest/pyserial_api.html

person user2679859    schedule 11.10.2013