У меня проблемы с чтением данных с ведомого устройства UART на моем Rapberry Pi. Руководство для устройства выглядит следующим образом: https://app.box.com/shared/static/4l8fiyowu4agg26lc7fu234edci1n8no.pdf
На странице 12 указано, что данные, отправляемые с подчиненного устройства, имеют формат Little Endian. Это первый раз, когда я работаю с python, и мне не повезло, когда я пытаюсь найти способ интерпретировать данные такого типа.
Если я отправлю байтовый массив [7,75,0, 76] (стр. 17, средняя мощность чтения), сообщение, которое я получаю: b'K \ x1c \ x00W '
Это мой код:
import serial
import time
import struct
ser = serial.Serial('/dev/ttyS0',
baudrate=19200,
parity='N',
bytesize=8,
stopbits=1,
timeout = 1)
print ("Starting up")
print(ser.name)
connected = False
commandToSend = '[7,75,0,76]' # get the distance in mm
while True:
print ("Writing: ", commandToSend)
values = bytearray([7,75,0,76])
ser.write(values)
while True:
try:
print ("Attempt to Read")
ans = ser.read(4)
print ("Reading: ", ans)
time.sleep(5)
break
except:
pass
print ("Restart--------------------------------")
ser.flush() #flush the buffer
для любого другая команда, которая имеет размер байта 1, у меня нет проблем вообще. По крайней мере, я знаю, что контрольная сумма и сообщения отправляются правильно, единственная проблема - это чтение тех, которые превышают 1.
спасибо за помощь мне