Тайм-аут в поведении PySerial отличается от версии 2.7 до 3.x

Я работаю с BeagleBones Black Rev C с некоторого времени, и я использую много интерфейсов UART (RS-232 и RS-485), а некоторое время назад я начинаю использовать модуль pyserial 3.4, и я замечаю некоторую разницу в поведении тайм-аута,

Так, в модуле 2.7, когда я открываю порт (ser = serial.Serial(port, baudrate, ..., timeout)), я обычно устанавливаю timeout = 1, и если порт не получал ничего в течение 1 секунды, функция ser.read() закрывается.

В модуле 3.4 с тайм-аутом = 1, даже если порт принимает данные, функция ser.read(x) закрывается перед получением всех данных. Есть пример, где я прошу ввести тайм-аут, который я хочу, и байты, которые я получаю за каждый тайм-аут, который я выбираю, с другой стороны, я отправляю в общей сложности 240048 байтов с 125000 бод.

timeout.py...

baudrate_0 = 115200
parity_0 = 'N'
stopbits_0 = 1
timeout = input( ' Timeout? \n')
timeout_0 = timeout
uart = serial.Serial(port="/dev/ttyO1",baudrate=baudrate_0, parity=parity_0, stopbits=stopbits_0, timeout = timeout_0)
....
data = uart.read(240048)
print 'bytes read:', len(data)

Выход:

root@beaglebone:# python timeout.py
Timeout?
1
bytes read: 11232
root@beaglebone:# python timeout.py
Timeout?
2
bytes read: 22656
root@beaglebone:# python timeout.py
Timeout?
10
bytes read: 113904
root@beaglebone:# python timeout.py
Timeout?
25
bytes read: 240048

Поэтому вопрос заключается в следующем: можно ли изменить поведение тайм-аута на то же, что и раньше (модуль 2.7)?

0 ответов

Другие вопросы по тегам