多串行Raspberry Pi Python程序

时间:2019-06-01 01:25:53

标签: python raspberry-pi serial-port raspberry-pi3 pyserial

我正在使用Raspberry Pi(Kunbus的Revolution Pi)通过串行通信(usb)控制多个arduino。我想知道是否可以一次控制/与多个串行端口通信。我知道多序列的aruduinos,例如MultiSerialMega,可以让您列出Serial.begin(9600);。和Serial1.begin(9600);一次与多个通信,Raspberry Pi是否存在?就目前而言,我切换了端口,但在另一台arduino上运行的程序一经停止便立即停止。

总结:我可以使用python中的三个串行端口(例如MultiSerialMega中)吗?

谢谢, 列维

我已经尝试过添加一个,例如MultiSerialMega的示例,但这是行不通的(不足为奇)

import serial
import time

while True:
    ser = serial.Serial('/dev/ttyACM0)
    steps = int(input("How many steps?")
    ser.write(b'%d' %steps)
    ser = serial.Serial('/dev/ttyACM1)
    steps = int(input("How many steps?")
    ser.write(b'%d' %steps)

此刻我只是在玩步进电机,但是一旦我切换了串行端口,程序就会结束/电机停止移动。

1 个答案:

答案 0 :(得分:0)

据我了解,您想写入连接到Rpi的多个串行端口。您应该能够使用尽可能多的端口来执行此操作,就像使用具有多个硬件UART的Arduino一样。

尝试一下:

import serial
import time
import sys
ser1 = serial.Serial("/dev/ttyACM0")
ser2 = serial.Serial("/dev/ttyACM1")
while True:

    steps = input("How many steps for serial 1? (press q to quit")
    if steps == "q" or steps == "Q":
        ser1.close()
        ser2.close()
        sys.exit()
    else:
        ser1.write(int(steps))

    steps = input("How many steps for serial 2? (press q to quit)")
    if steps == "q" or steps == "Q":
        ser1.close()
        ser2.close()
        sys.exit()
    else:
        ser2.write(int(steps))