python - 加快 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秒内减少函数的运行时间?
解决方案
推荐阅读
- ruby-on-rails - Figaro 没有创建“application.yml”文件
- python - 如何在窗口中为 Tkinter 构建一个包,如 exe?
- php - PHP用自定义文本替换了一个标签不起作用
- angular - Angular 6我必须在客户端生成jwt以匹配服务器还是只匹配服务器
- angular - 使用 PrimeNG 和 Material 组件验证 Angular 表单
- sql-server - SQL Server 连接用户在使用“127.0.0.1”和“localhost”时会有所不同。为什么?
- sql-server - 为什么 Jet-SQL 转 T-SQL 时不能使用 format 函数?
- python - 来自 scipy.misc 的 imread 不适用于 pycharm。我似乎也无法安装 PIL
- c - 为什么在 glibc 中使用 crypt 会导致编译器警告?
- javascript - Angular 2+ 多计算和多结果