Как читать многобайтовые последовательные данные? - PullRequest
0 голосов
/ 30 марта 2020

У меня проблемы с чтением данных с ведомого устройства 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.

спасибо за помощь мне

...