【发布时间】:2019-07-19 15:37:15
【问题描述】:
目前我有一个连接到两个串行设备的树莓派端口。这些设备是 USB 到 RS485/RS422 转换器。两者都通过电线连接到正确的端子(设备 A 的端子 1 到设备 B 的端子 2,设备 A 的端子 2 到设备 B 的端子 1)。
我能够成功地从一个设备读取和写入另一个设备,但是返回的读取数据与我写入的数据不同。
例如,如果我要发送的消息是“Te”,那么我阅读的消息是b'U\x13\x00'。
我目前正在 buster 上运行 python 3。
ser = serial.Serial(port='port 1', baudrate = 9600)
message = "Te"
message = message.encode('ascii')
while True:
ser.write(message)
time.sleep(1)
写.py
ser = serial.Serial(port = 'port 2', baudrate = 9600)
while True:
serial_line = ser.read(50)#placehoder until I am able to get correct values
print(serial_line)
read.py
我除了将读取中的字节输出转换为我在 write.py 中编写的字符串,但是输出总是完全不同的。
编辑: link to serial devices(USB转RS-485/RS-422)
【问题讨论】:
-
为什么要在发送前对消息进行编码?
-
如果我在没有编码的情况下编写,它会抛出一个类型错误,指出不支持 Unicode 字符串并将其编码为字节
-
这些设备到底是什么?没有更多信息,谈论“终端1”和“终端2”是没有意义的。你到底在给他们写什么?您发布的代码写了
test,它没有在任何地方定义。 -
感谢您发现这一点,这是清理我的代码并将其放在这里的错字。正确的变量应该是消息。至于设备,它们是连接到同一个树莓派的两个germo mini usb to RS485/RS422转换器ftdi芯片。
标签: python encoding raspberry-pi pyserial