Чтение последовательного порта с Python.Как работают буферы? - PullRequest
2 голосов
/ 10 марта 2011

Мне просто интересно, как работают буферы на ком-порте ... Приведенный ниже код представляет собой фрагмент того, как я читаю ком-порт. Мне интересно, если бы при выполнении serial_connection.close() и serial_connection.open() я бы потерял какие-либо данные или они остались бы в буфере? Вы можете спросить, почему я закрываю и открываю компорт. Причина в том, что на самом деле это виртуальный порт, и по какой-либо причине, когда я остаюсь подключенным к нему на некоторое время, данные перестают передавать ...

import serial

serial_connection = serial.Serial(
        port = self.SERIAL_PORT,
        baudrate = self.BAUD_RATE,
        timeout = 10
        )

while true:

    serial_connection.close()
    serial_connection.open()
    line = serial_connection.readline()
    print line

1 Ответ

4 голосов
/ 10 марта 2011

PySerial имеет отдельный поток, который слушает данные, чтобы убедиться, что ничего не потеряно.Однако сама ОС не буферизует данные.Существует небольшая вероятность того, что вы можете потерять некоторые данные за короткий промежуток времени между моментом закрытия порта и его повторного открытия.

...