Я пытаюсь соединить две малины через последовательное соединение с pyserial.Я написал два небольших сценария для передачи и получения.В то время как происходит обмен данными между этими двумя, полученное сообщение полностью отличается от отправленного сообщения.
Например, если я делаю
serial1.write(b'hello')
на raspi1, тогда raspi2 получает:
print(serial2.readline().hex())
fa9b9fff
, представляющее собой шестнадцатеричное представление ú›Ÿÿ
.
РЕДАКТИРОВАТЬ: Вот методы получения и отправки:
отправитель:
def send_msg(_ser, _msg):
if _ser.isOpen(): # isOpen() is deprecated since version 3.0
try:
_ser.flushInput() # flush input buffer, discarding all its contents
_ser.flushOutput() # flush output buffer, aborting current output
# and discard all that is in buffer
_ser.write(_msg)
_ser.flush()
except IOError:
print('error communicating...')
else:
print('cannot open serial port')
return
получатель:
def read_line(_ser, _eol_character=b'\n', _timeout=1, _encoding='utf-8'):
buffer = ""
timer = time.time()
while (time.time()-timer)<_timeout:
one_byte = _ser.read(1)
print(one_byte.hex())
if one_byte == _eol_character:
return buffer.encode(_encoding)
else:
buffer += str(one_byte, _encoding, errors='replace')
raise TimeoutError("Timed out while read_line(), make sure there is an EOF!")