解析从Pyserial接收的数据读入字符串

时间:2019-06-19 06:15:08

标签: python python-2.7 serial-port byte pyserial

我正在使用python(pyserial)从串行端口读取数据,但我可以读取数据,但是当我尝试使用它时,$*%\xff\x06$*%\xff\x02似乎在堆栈溢出中引用了很少的资源,发现它需要解码,我尝试使用processed = (binascii.b2a_qp(raw))binascii将其解码为ascii,但收到以下输出$*%=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 :(得分:0)

您可以在写入串行端口的同时尝试进行编码。

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

在阅读时,我会使用类似的

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