如何在不延迟程序的情况下监视新的/已删除的串行设备连接?

问题描述

我在树莓派上有一个GUI,可将数据发送到几个相连的arduino。我曾经用硬编码通用串行端口名称/ dev / ttyACM1之类的,但是其他一些板具有不同的设备ID,因此我找到了一些仅检查所有串行端口的代码

基本上,该代码接收到一些更新的遥测,并尝试将其全部(大约300个字符)发送到与树莓派连接的任何和所有arduino。

代码很棒,可以删除300行我的硬编码废话,但是该程序现在在传输数据时滞后了很多,我怀疑它与每秒查找每个串行设备有关。

基本上,我只是在寻找实现目标的最佳方法的信息。

def serial_ports():
    ports = glob.glob('/dev/tty[A-Za-z]*')
    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            result.append(port)
            #s.close() #do I need to close the port each time
        except (OSError,serial.SerialException) as e:
            pass
    return result

def serialWrite(*args): #
    logWrite("Function call - serial write: " + str(*args))
    for port in serial_ports():
        try:
            ser = serial.Serial(port,9600,write_timeout=0,timeout=0)
            ser.write(str.encode(*args))
        except (OSError,serial.SerialException) as e:
            print(e)
            pass 

serialWrite函数每秒调用约13次,我想我应该对所有数据进行分组并只调用一次函数?还是所有这一切

关于在程序运行时自动添加新插入的串行设备并考虑设备被移除而不对程序造成不必要负担的任何建议?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)