You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

com0com虚拟串口已在设备管理器及GUI中显示但无法被Python pyserial访问的问题求助

com0com虚拟串口已在设备管理器及GUI中显示但无法被Python pyserial访问的问题求助

各位大佬好,我遇到了一个关于com0com虚拟串口和pyserial的问题,想请教大家:我用com0com创建了COM20和COM21这对虚拟串口,它们在设备管理器和com0com的GUI里都能正常显示,但用Python的pyserial访问时却一直失败,具体情况如下:

我已经做的操作

首先,我通过com0com的setupc.exe成功创建了串口对,执行的命令是:

> setupc.exe install PortName=COM20 PortName=COM21

创建完成后,虚拟串口对在com0com的GUI里能正常看到,也在设备管理器的「com0com - serial port emulators」分类下显示正常。

但当我用pyserial尝试访问这些端口时,却遇到了FileNotFoundError,我的测试代码是这样的:

import serial
import serial.tools.list_ports

# 列出可用端口
print("Available COM ports:")
for port in serial.tools.list_ports.comports():
    print(f"  {port.device}: {port.description}")

# 尝试打开虚拟端口
try:
    ser = serial.Serial('COM20', 9600, timeout=1)
    print("Successfully opened COM20")
    ser.close()
except Exception as e:
    print(f"Error: {e}")

代码运行后的输出是:

Available COM ports:
  COM7: Standard Serial over Bluetooth link (COM7)
  COM3: Intel(R) Active Management Technology - SOL (COM3)
  COM6: Standard Serial over Bluetooth link (COM6)
Error: could not open port 'COM20': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)

可以看到,pyserial的端口列表里完全找不到COM20和COM21,直接打开也报错。

我的运行环境

  • Windows 10 系统
  • Python 3.12.2
  • pyserial 3.5 版本
  • com0com 3.0.0.0 版本
  • 脚本已经用管理员权限运行

我的几个疑问

  1. 为什么com0com创建的虚拟串口不会出现在pyserial的可用端口列表里?
  2. 有没有办法让pyserial识别并正常使用这些虚拟串口?
  3. 是不是创建虚拟串口后,还需要等待一段时间或者执行额外的配置步骤才能访问?

我已经尝试过的排查方法

  • 用管理员权限运行脚本
  • 特意创建了编号更高的串口(COM20、COM21,避免和系统默认串口冲突)
  • 多次在设备管理器和com0com GUI里确认串口存在且状态正常
  • 重启过电脑

实在找不到解决办法了,希望有经验的朋友能给我一些思路或者替代方案,非常感谢!

备注:内容来源于stack exchange,提问作者Foad S. Farimani

火山引擎 最新活动