为什么python的serial.read,serial.read_until在4个字节后返回垃圾?

问题描述 投票:1回答:1

我正在使用Serial.write将命令发送到工作中的设备(工作正常)。

成功将数据发送到外部设备后,我收到一个8-byte响应,我正在尝试在python上读取该响应。我知道8字节应该是什么样子,因为我在oscilloscopeserial protocol mode中都使用了realTerminal

我的python程序读取的前四个字节是正确的,但是随后我得到了垃圾。我使用什么ser.read命令都没有关系。

这里是代码和输出:

    import serial
    import time

    ser = serial.Serial(port='COM10',baudrate=38400,timeout=1)

    wakeupSAA232 = b'\x0D'
    ser.write(wakeupSAA232)


    time.sleep(0.5)


    sendData = bytearray([170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 0, 0])

    ser.write(sendData)

    #s = ser.read_until('\r')

    s = ser.read(8)

    print(s)

我知道我应该阅读:

00 00 00 F8 0A 14 16 0D(8字节,以十六进制表示)>

但是这里是OUTPUT:

b'\x00\x00\x00\xf8\n\x04\x07\r'

如果再次运行该程序。 输出:

b'\x00\x00\x00\xf8\n\x94\x96\r'

每次运行程序时,最后4个字节(应该是什么)我都会得到不同的垃圾。

前4个字节正确(x00\x00\x00\xf8)。其余为与我的范围或终端数据不匹配的垃圾。

8字节十六进制数据在范围内:8 bytes of Hex data on scope

8字节的十六进制数据在终端上:8 bytes of Hex data on terminal

我试图在线搜索我的问题,但是我需要一些指导。

我正在使用Serial.write将命令发送到工作中的设备(工作正常)。成功将数据发送到外部设备后,我收到一个8字节的响应,试图读取...

python-3.x serial-port pyserial
1个回答
0
投票

我认为您可能需要查看设备的协议。

© www.soinside.com 2019 - 2024. All rights reserved.