我该如何清理这些正在使用的 COM 端口?
COM 端口号似乎总是被某些东西占用,虽然现在我只有 4 个串行端口(3 个通过蓝牙,1 个通过 USB 转 RS-232),但我已将多个 COM 端口设置为正在使用。我想稍微清理一下该列表。
另外在我看来,有时,其中一个被占用的 COM 端口会被释放,然后我使用的其中一个设备会占用该号码,从而造成混乱,因为我必须去设备管理器中寻找它的 com 号码。
更新:
好吧,我刚刚使用 USBDeview 清理了曾经连接到计算机的无数 USB 设备,但问题仍然存在。
答案1
从提升的命令行运行设备管理器:
> set DEVMGR_SHOW_NONPRESENT_DEVICES=1
> devmgmt.msc
在菜单中启用“显示隐藏的设备”,并卸载灰色的 COM 端口。
答案2
我找到了一个有用的答案如何清除或重置 COM 端口?
- 单击开始 → 运行 → 输入
regedit
并单击确定按钮 - 导航
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
- 现在在右侧面板上,您可以看到密钥
ComDB
。右键单击它,然后单击修改 - 在值数据部分选择全部并删除重置为零(
0
)
其 32 个字节,每个字节 8 位,以十六进制表示。值为 1 的位使端口号(1...256)保留。前 8 个端口位于两个最左边的十六进制值中,位从最低到最高从右到左升序,接下来的 8 个端口位于后两个,依此类推:十六进制将F3 24
是二进制1111 0011 0010 0100
,这意味着使用以下端口:(1, 2, 5, 6, 7, 8
和1111 0011)
(。11, 14
0010 0100)
- 关闭注册表编辑器,然后重新启动计算机。如果将值设置为
0
所有 COM 端口都是空闲的。
您可能需要重新安装任何 USB 转串行转换器。
答案3
感谢以上所有建议。我编写了软件来自动清理注册表,但尽管它确实调整了硬件、软件和仲裁器部分,但它并没有删除幻像 COM 端口条目。即使在移除“USB 转 2 串行端口”设备的情况下重新启动也无法正确清理系统。
然而,关于此的说明PDF确实工作正常:
对于 Win7,我稍微调整了 PDF 上的说明如下:
- 单击开始/(右键单击:)计算机/属性/高级系统设置(不是设备管理器)
- 单击环境变量
- 单击系统变量(底部)单击新建
- 输入变量名称:DEVMGR_SHOW_NONPRESENT_DEVICES
输入变量值:1 - 单击“确定”(退出环境)
单击“确定”(退出系统属性)
单击“开始”。在命令框中,键入“管理”。这将显示“计算机管理”窗口...
- 单击“设备管理器”
- 单击查看并选择显示隐藏的设备
- 单击端口(COM 和 LPT)。
现在出现所有端口,真实端口(黑色文本)和幻影端口(灰色文本)。 - 逐个右键单击幻影端口,然后选择卸载
现在应该已经清除了系统中不需要的幻影 USB 端口。
注意:清理所有幻象端口后,只留下“COM1”,我发现我的注册表显示:
Hardware: COM1
Software: COM1, COM2, COM3, COM4, COM5
Arbiter: COM1, COM2, COM3
右键单击“计算机/属性/设备管理器/端口”仅显示 COM1。右键单击“COM1/属性/端口设置/高级”显示 COM1,其中 COM2“正在使用”,COM3“正在使用”。以前“正在使用”的所有其他设置(最高 7)现在都已释放。因此,只有“仲裁器”设置似乎在告诉 Win7 系统真正“正在使用”的是什么。计算机管理系统已清理仲裁器,但未清理软件部分...
... 微软有很多未解之谜...
答案4
我有一个简单的解决方案,对我有用...我统计了一下正在使用的 COM 端口多达 45 个!
1)打开设备管理器
2)从“查看”菜单中,选择“显示隐藏的设备”
3)从列表中展开“端口(COM 和 LPT)”类别
4)右键点击所有设备,删除(无需勾选删除驱动程序)
5)从操作菜单中,选择“扫描新设备”
6) 哇!所有实际设备将从 COM1 重新分配