在Rasp PI 3和Windows之间进行串行通信时,数据会发生变化

时间:2016-12-01 01:58:59

标签: python serial-port gpio raspberry-pi3

我使用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,配置如下。

  1. PC(COM4)的串行线路连接在每个GPIO No 6,8,10(GPIO插槽的GND,TxD,RxD)。
  2. 在config.txt

    中添加了1行

    dtoverlay = PI3-禁用-BT

  3. 这是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

1 个答案:

答案 0 :(得分:0)

您无法直接将RS232接口信号连接到Pi GPIO。 RS232的范围为+/- 12V。 GPIO引脚的电压范围为0-3.3V,并且还需要逻辑反相。您需要RS232 Pi级别转换才能将传统的PC 9或25针D型RS232接口连接到Pi。此外,您还冒着烧断Pi或GPIO引脚的风险,它们不适用于高于3.3V或低于0V的输入电压。