Данные разбора, полученные из Pyserial, считываются в строку - PullRequest
0 голосов
/ 19 июня 2019

Я читаю данные из последовательного порта, используя python (pyserial). Я могу прочитать данные, но когда я пытаюсь их использовать, кажется, что $*%\xff\x06$*%\xff\x02 ссылается на несколько ресурсов при переполнении стека и обнаружил, что ему нужнобыть декодированным, я попытался декодировать его в ascii, используя processed = (binascii.b2a_qp(raw)), используя библиотеку binascii, но получил следующий вывод $*%=FF=00$*%=FF=08 Я также попытался декодировать то же самое в UTF-8, но все еще безуспешно.Любые предложения о том, как обрабатывать ввод, полученный от функции read().Я также пытался использовать readline(), но затем программа гаснет или выполняется бесконечно, кажется, что в последовательном выходе нет маркера EOL.Демонстрационный код выглядит следующим образом:

with serial.Serial('/dev/cu.usbserial-Device',9600) as ser:
    ser.flushInput()
    ser.flushOutput()
    ser.write('S')
    inputVal=[]
    while(len(inputVal)<10000):
        val = ser.read(10)
        inputVal.append(binascii.b2a_qp(val))

Есть предложения?Заранее спасибо.

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете попытаться кодировать во время записи на последовательный порт.

ser.write(str.encode('S\r')

В то время как для чтения я бы использовал что-то вроде

a = ser.readline()
b = v.rstrip()
c = b.decode('utf-8')
...