我使用python 3.X测试了Rasp PI 3和Windows PC之间的串行通信。 收到的数据与发送的数据不同。 Windows PC的源代码和运行环境值得信赖。 我认为Raspi PI的某些内容(来源或配置)是错误的。
请让我知道原因以及解决方法。
这是Windows PC(接收器)的代码
import time
import serial
import binascii
port = serial.Serial("COM4", baudrate=9600, timeout=0.5)
while True:
rcv = port.read(100)
s = bytearray(rcv)
for c in s:
print(hex(c))
time.sleep(1)
对于Raspi PI 3,配置如下。
在config.txt
中添加了1行dtoverlay = PI3-禁用-BT
这是Raspi PI 3(发件人)
的源代码import time
import serial
sp = serial.Serial('/dev/ttyAMA0', 9600, timeout=0.5)
sp.write(b'\xAA')
这些是测试结果(发送数据和接收数据表)。
发送:接收
A9 : 2B 00
AA : 15 00
AB : 2A 00
AC : 0A 00
AD : 29 00
AE : 14 00
AF : 28 00
AA AA : 95 15 00
[DIDWEV:] 20170216.2318.D005.K0.01
答案 0 :(得分:0)
您无法直接将RS232接口信号连接到Pi GPIO。 RS232的范围为+/- 12V。 GPIO引脚的电压范围为0-3.3V,并且还需要逻辑反相。您需要RS232 Pi级别转换才能将传统的PC 9或25针D型RS232接口连接到Pi。此外,您还冒着烧断Pi或GPIO引脚的风险,它们不适用于高于3.3V或低于0V的输入电压。