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 版本
- 脚本已经用管理员权限运行
我的几个疑问
- 为什么com0com创建的虚拟串口不会出现在pyserial的可用端口列表里?
- 有没有办法让pyserial识别并正常使用这些虚拟串口?
- 是不是创建虚拟串口后,还需要等待一段时间或者执行额外的配置步骤才能访问?
我已经尝试过的排查方法
- 用管理员权限运行脚本
- 特意创建了编号更高的串口(COM20、COM21,避免和系统默认串口冲突)
- 多次在设备管理器和com0com GUI里确认串口存在且状态正常
- 重启过电脑
实在找不到解决办法了,希望有经验的朋友能给我一些思路或者替代方案,非常感谢!
备注:内容来源于stack exchange,提问作者Foad S. Farimani




