多串口树莓派 Python 程序
Posted
技术标签:
【中文标题】多串口树莓派 Python 程序【英文标题】:Multi Serial Raspberry Pi Python Program 【发布时间】:2019-06-01 01:25:52 【问题描述】:我正在使用 Raspberry Pi(Kunbus 的 Revolution Pi)通过串行通信 (usb) 控制多个 arduino。我想知道是否可以一次控制/与多个串行端口通信。我知道多串行 aruduino,例如 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】:据我了解,您想写入连接到您的 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,它是多点的,因此您最多可以连接 32 个串行设备(您的 Arduino)连接到 Rpi 上的单个串行端口。另见link
【讨论】:
以上是关于多串口树莓派 Python 程序的主要内容,如果未能解决你的问题,请参考以下文章