多连载 Raspberry Pi Python 程序

Multi Serial Raspberry Pi Python Program

我正在使用 Raspberry Pi(Kunbus 的 Revolution Pi)通过串行通信 (usb) 控制多个 arduino。我想知道是否可以 control/communicate 同时使用多个串行端口。我知道多序列 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)

我现在只是在玩步进电机,但是一旦我切换串行端口,程序 ends/motor 就会停止运行。

据我了解,您想写入连接到 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))

编辑: 如果你碰巧有这么多 Arduino,你 运行 没有 USB 端口来连接它们,你可以考虑切换到 RS485 which is multi-point so you can connect up to 32 serial devices (your Arduinos) to a single serial port on your Rpi. See also this link