diff --git a/can/interfaces/slcan.py b/can/interfaces/slcan.py index e813d5a18..26f3bb36f 100755 --- a/can/interfaces/slcan.py +++ b/can/interfaces/slcan.py @@ -66,8 +66,6 @@ def __init__(self, channel, ttyBaudrate=115200, timeout=1, bitrate=None, **kwarg (channel, ttyBaudrate) = channel.split('@') self.serialPortOrig = serial.Serial(channel, baudrate=ttyBaudrate, timeout=timeout) - self.serialPort = io.TextIOWrapper(io.BufferedRWPair(self.serialPortOrig, self.serialPortOrig, 1), - newline='\r', line_buffering=True) time.sleep(self._SLEEP_AFTER_SERIAL_OPEN) @@ -86,8 +84,8 @@ def __init__(self, channel, ttyBaudrate=115200, timeout=1, bitrate=None, **kwarg def write(self, string): if not string.endswith('\r'): string += '\r' - self.serialPort.write(string.decode()) - self.serialPort.flush() + self.serialPortOrig.write(string.encode()) + self.serialPortOrig.flush() def open(self): self.write('O') @@ -103,10 +101,13 @@ def _recv_internal(self, timeout): remote = False extended = False frame = [] - readStr = self.serialPort.readline() + + readStr = self.serialPortOrig.read_until(b'\r') + if not readStr: return None, False else: + readStr = readStr.decode() if readStr[0] == 'T': # extended frame canId = int(readStr[1:9], 16)