import serial from serial import STOPBITS_TWO class IdiBusSerialLine(serial.Serial): def __init__(self, port="", baudrate=0, **kwargs): if not port or not baudrate: pass else: self.maxPacketSize = 256 + 2 + 5 # From defines in Slave self.defaultTimeout = 0.025 super().__init__( port=port, baudrate=baudrate, timeout=kwargs.get('timeout', self.defaultTimeout), parity=kwargs.get('parity', serial.PARITY_NONE), stopbits=kwargs.get('stopbits', STOPBITS_TWO), **{k: v for k, v in kwargs.items() if k not in ['timeout', 'parity', 'stopbits']} ) #print(f"Serial port opened at {self.port}") def __del__(self): if hasattr(self, 'is_open') and self.is_open: self.close() #print(f"Serial port closed at {self.port}") def writeData(self, msg): """Отправка данных""" return self.write(msg) # Возвращаем количество байт def readData(self, await_bytes=0): """Чтение данных""" if await_bytes == 0: await_bytes = self.maxPacketSize return self.read(await_bytes) # Дополнительные полезные методы def write_read(self, msg, response_bytes=0): """Отправить и прочитать ответ""" self.writeData(msg) return self.readData(response_bytes) def flush_buffers(self): """Очистить буферы""" self.reset_input_buffer() self.reset_output_buffer()