解决Windows 7,Windows10系统串口号被占用而不断增加的问题

一. 问题由来

Windows系统使用USB 转串口工具或者USB接口的开发板时,Windows系统是依据所接入的USB设备的VID、PID以及序列号三者组合的不同而分配不同的COM口编号,同一个厂商的VID/PID完全相同,但是系统在每次检测到新USB设备接入后,会根据新的序列号在当前已经占用的COM口编号基础上递增分配新的COM口编号,后续即使设备已被拔出,所分配的COM端口在该系统上仍然处于被占用的隐藏状态,由此产生了许多被占用的多余的COM端口。

二. 解决方法

1. 删除占用的串口号

    1. 用管理员身份运行命令行。命令set devmgr_show_nonpresent_devices =1

    1. 打开设备管理器。点击菜单 查看 > 显示隐藏设备, 显示隐藏的没有连接到电脑上的设备名称。

    1. 在设备管理器窗口左侧展开串口部分,将可以看到所有已被分配的COM口的设备列表。选择相应的串口设备,通过右键菜单> 卸载。

2.让同型号的设备串口号不再增加

如果并不希望系统接入的同一个厂商相同型号的设备COM口编号随着不同设备的接入而变化,需要固定使用同一COM口编号,可以通过修改注册表相关选项让Windows系统忽略指定的VID/PID设备的序列号。

如果知道对应厂商的VID,PID 可以直接打开注册表编辑器,定位到计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags 在窗口右侧,右键-->新建-->二进制值,然后在出现的新值 #1上右键重命名为IgnoreHWSerNumXXXXYYYY,XXXX为厂商VID, YYYY为厂商PID,然后在它上面右键-->更改二进制数据,在弹出的数值数据中输入01,确认保存。

另外,可以新建一个文本文档,输入以下内容后,并把XXXX,YYYY更改为对应的VID,PID,保存时把文件后缀由.txt 改为.reg,然后双击同意更改注册表就可以了。

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags] 
"IgnoreHWSerNumXXXXYYYY"=hex:01 

如果不知道厂商的PID,VID可以定位到注册表计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\COM Name Arbiter\Devices,在右侧的对应的COMx 中可以看到对应的vid_xxxx, pid_yyyy,如下图以COM33 为例:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注