Я читаю последовательные данные с 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", "", "", ""]
Повторное выполнение кодаопять тоже не помогает. Я должен перезагрузить устройство, чтобы снова получить пакет данных. Если я вообще не закрываю порт, он работает безупречно, но останавливается при повторном запуске сценария, и я начинаю получать пустые пакеты до перезагрузки устройства. Есть ли способ, которым я могу решить эту проблему и получить полный поток данных?