pySerial - Не удается получить данные от последовательного USB-устройства после закрытия и повторного открытия порта - PullRequest
0 голосов
/ 30 октября 2019

Я читаю последовательные данные с USB-устройства, используя pySerial в Python 2.7. Однако, если я закрываю порт или повторно инициализирую соединение, я прекращаю получать данные.

Вот моя реализация для того же:

Инициализация моего последовательного соединения

def __init__(self, *args, **kwargs):
    self.usb_port = kwargs.get("USB_PORT", '/dev/ttyACM0')
    self.baud_rate = kwargs.get("BAUD_RATE", 38400)
    self.output = []
    self.serial_input = serial.Serial(self.usb_port, self.baud_rate, timeout=5,
                                      stopbits=serial.STOPBITS_ONE, parity=serial.PARITY_NONE)

Чтение данных (при повторяющихся событиях)

def read(self):
    if not self.serial_input.isOpen():
        self.serial_input.open()
    in_waiting = self.serial_input.inWaiting()
    data = self.serial_input.read(in_waiting) if in_waiting > 0 else ""
    self.output.append(data)
    self.serial_input.close()

Выход

>>> print self.output
>>> ["990000000000001299", "", "", ""]

Повторное выполнение кодаопять тоже не помогает. Я должен перезагрузить устройство, чтобы снова получить пакет данных. Если я вообще не закрываю порт, он работает безупречно, но останавливается при повторном запуске сценария, и я начинаю получать пустые пакеты до перезагрузки устройства. Есть ли способ, которым я могу решить эту проблему и получить полный поток данных?

...