多连载 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
我正在使用 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