多串行Raspberry Pi Python程序

2024-04-26 21:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个树莓派(革命派昆布斯)通过串行通信(usb)控制多个阿杜伊诺。我想知道是否可以同时控制多个串行端口。我知道多序列的aruduinos,比如MultiSerialMega,允许你列出串行开始(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)

我现在只是在玩步进电机,但只要我切换串行端口,程序就结束/电机停止运行。在


Tags: 端口devimport程序inputserialstepsser
1条回答
网友
1楼 · 发布于 2024-04-26 21:26:00

据我所知,你想写多个串行端口连接到你的Rpi。您应该能够使用任意多个端口来实现这一点,就像使用多个硬件uart处理Arduinos一样。在

试试这个:

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))

编辑:如果您碰巧有太多的Arduinos,以至于无法连接USB端口,您可以考虑切换到RS485,这是多点的,这样您就可以将多达32个串行设备(您的Arduinos)连接到Rpi上的单个串行端口。另请参见link

相关问题 更多 >