首页 > 解决方案 > 加快 pySerial 中的自动 COM PORT 扫描

问题描述

我正在尝试执行 COMPORT 自动扫描功能。但是,图片中的目标设备“COM7”没有名称,因此我无法根据设备名称执行 if else 语句。 在此处输入图像描述

所以我所做的是扫描所有端口并尝试在 Serial.serial 方法中打开每个端口。

for p in list(serial.tools.list_ports.comports()):
    try:
        with serial.Serial(port=p[0], baudrate=9600, timeout=0.01) as ser:
            msg = 10
            ser.write(f"{msg}\r".encode('utf-8'))
            time.sleep(0.1)
            ser.flushOutput()
            data = read_data(ser)        # if the correct COM is connected, the MCU will return "ok, switched to DUT{msg}"
        if 'ok' in data:
            break
    except serial.serialutil.SerialException:
        pass

但是运行需要 10 秒,而如果我运行 serial.Serial(port='COM7', baudrate=9600, timeout=0.01) 只需要 0.1 秒。我想知道 serial.Serial 方法中的 timeout 参数不起作用吗?还有有什么办法可以在1秒内减少函数的运行时间?

标签: pythonpyserial

解决方案


推荐阅读