Python多串口降低Linux上的USB速度

2024-06-26 13:54:29 发布

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

我目前正在开发一个软件,它使用Python3(pyserial)与Raspberry Pi计算模块3+Lite上的许多串行端口(~24)进行接口。串行端口使用多个FTDI4232H芯片连接。我们通过以太网USB接口访问电路板。所有这些都连接到计算模块的唯一USB OTG端口

我注意到,当所有串行端口都打开时,即使没有串行通信,以太网速度也会急剧降低。速度测试结果从198.78 Mbits/s变为1.48 Mbits/s。当使用ssh访问设备时,一切都是不连贯的

我的猜测是,每个串行连接都有一个预先允许的最小数据带宽,但没有关于如何解决这个问题的线索

谢谢你的帮助

马丁

编辑:@AKX,下面是一个重现问题的代码示例

import multiprocessing
import time
from serial import Serial


QTY = 23
STOP_TEST_AFTER = 30


def serial_test(serial_port):
    serial_port = Serial(port=f"/dev/ttyUSB{serial_port}", baudrate=19200)
    timer = time.time()
    while time.time() - timer < STOP_TEST_AFTER:
        time.sleep(0.1)


if __name__ == "__main__":
    process_list = []
    for i in range(0, QTY):
        new_process = multiprocessing.Process(target=serial_test, args=(i,))
        new_process.start()

    for proc in process_list:
        proc.join()

Tags: 模块端口testimporttimeportserialmultiprocessing