通过RS-485进行Python串行读/写

时间:2018-02-01 11:28:23

标签: python raspberry-pi serial-port rs485

我有通过RS-485进行串行读/写的问题。我想检查传输Raspberry Pi和FTDI。 FTDI通过USB和RS-485适配器连接到Raspberry。

现在我有两个设备ttyUSB0和ttyS0。

success=0
rsPin=22 #physical PIN 15 
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(rsPin,GPIO.OUT)
d1 = open_port("/dev/ttyUSB0")
d2 = open_port("/dev/ttyS0")
data = "data"
while True:
    GPIO.output(rsPin, GPIO.HIGH)
    x=d2.read(d2.inWaiting())
    time.sleep(1)
    d1.write(data)
    if x:
       print x
       success+=1
       GPIO.output(rxPin, GPIO.LOW)
       y = d1.read(d1.inWaiting())
       time.sleep(1)
       d2.write(x)
       if y:
          print y
          success+=1
          if y==data and success==2:
              print "success"
              exit(1)
          else:
              print "error"
              exit(1)

程序无法正常运行,当我运行第一次程序时,并且可能获得无限循环,当我再次运行时它向我显示第一个数据但后来显示也复制了数据和错误:

d2.write(wrdata)
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 554, in write
raise SerialException('write failed: {}'.format(v))
serial.serialutil.SerialException: write failed: [Errno 5] Input/output error

我认为我的设置方向RTS可能不好,我应该使用带有GPIO.output的setRTS来设置方向RTS吗?

0 个答案:

没有答案