如何在 Windows 中清理或重置 COM 端口号
当您将新的 COM 设备或 USB 设备连接到计算机(USB 调制解调器、移动电话、蓝牙适配器、串口转 USB 转换器等)时,Windows 使用即插即用功能检测到它,并为其分配一个 COM 端口号,范围在1 到 255 (COM1、COM2、COM3 等)。如果再次连接该设备,保留的 COM (
Communication, 或者
Serial)端口号被分配给它。新设备获得第一个空闲的 COM 端口号。连接时,外部设备经常会同时创建多个 COM 端口。就我而言,连接蓝牙适配器10!!!后,系统中出现了新的COM端口。
许多旧版应用程序只能寻址两位数的 COM 端口号,并且无法与 COM100 及更高版本一起使用。在最坏的情况下,这些程序仅适用于 COM1-COM9 端口。如果设备具有更高的 COM 端口号怎么办?是否可以重置保留 COM 端口的编号并删除分配的端口?
如何在 Windows 中更改设备的 COM 端口号?
在 Windows 中,您可以手动更改分配给设备的 COM 端口号。假设必要的 COM 端口已经繁忙,并且您想尝试释放它。
-
通过运行以下命令打开设备管理器
devmgmt.msc命令;
在菜单中选择查看->显示隐藏设备;
然后展开端口(COM 和 LPT)并在列表中找到您的设备;
进入端口设置选项卡,点击高级按钮;
当前分配给设备的COM端口号可以在COM端口号字段中找到;
要更改它,请打开下拉列表并选择要设置的 COM 端口号。
但更常见的是,您无法在硬件属性中将分配的 COM 端口号更改为另一个端口号,因为所有“较低”的 COM 端口都已在使用中。在这种情况下,您需要尝试删除 COM 端口保留
-
展开端口(COM & LPT)分支,找到您需要的COM端口号分配给哪个(浅色图标表示该COM端口已分配,但该设备当前未连接);
右键单击它并选择卸载;
现在您可以将释放的 COM 端口分配给另一个设备。再次打开设备的属性,转到端口设置 -> 高级选项卡。然后转到端口设置选项卡并单击高级。在下拉列表中选择空闲的 COM 端口。
但是,此方法并不允许您在所有情况下释放繁忙的 COM 端口。
您可以使用 PowerShell 获取 Windows 上繁忙 COM 端口的完整列表:
Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description您可以通过名称获取特定设备的 COM 端口号,例如:
Get-WMIObject Win32_SerialPort | Where-Object { $_.Name -like "*Arduino*"}|select name, deviceid或者
Get-WMIObject Win32_SerialPort | Where-Object { $_.Name -like "*GPS*"}|select name, deviceid找出 Windows 中哪个进程正在使用串行 COM 端口
您将无法释放 Windows 或正在运行的程序(进程)使用的设备的 COM 端口。首先,您需要停止当前正在使用 COM 端口的进程。您可以使用 Process Explorer 工具(由 Sysinternals 提供)来查找使用特定 COM 端口号的进程的名称 (https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer)。
首先,您需要显示使用 COM 端口的服务的名称。运行 PowerShell 命令:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service特定 COM 端口的服务名称显示在服务列中。例如,对于 COM2,它是“串行”。现在您需要以管理员身份运行 Process Explorer,并从菜单中选择查找-> 查找句柄或 DLL 。在句柄或DLL子字符串行中,输入之前获取的Service值。在我们的例子中,这是
Serial。
Process Explorer 应显示当前正在使用您的 COM 端口的进程名称。要释放 COM 端口,请终止进程或程序。
重置 Windows 注册表中的 COM 端口号
有关正在使用的 COM 端口的信息存储在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter 注册表项下的 CommDB 注册表参数中。
打开注册表编辑器(
regedit.exe) 并转到上面提到的注册表项;
重要!我们强烈建议您在执行任何操作之前备份此注册表项(文件 -> 导出)。如果出现问题,可以恢复原来的COM口配置。
二进制格式的ComDB参数的值决定了Windows中保留的COM端口列表。每个位确定相应端口的状态(从 1 到 255)。例如,如果您只需要为 COM3 保留保留,则 ComDB 的十六进制值将等于 04 (0000 0100);
重要!要非常小心,不要向参数添加任何额外的位,否则系统将开始出现 BSOD。
如果需要重置所有COM端口绑定,请将ComDB的值更改为0;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports 注册表项包含所有分配的 COM 端口号的列表。您可以删除所有不必要的端口预留。在我们的示例中,我们将只保留 COM3 并删除其余端口;
拔掉所有外部设备并重新启动计算机;
重启后,按必要的顺序连接设备,重新安装USB转串口转换器等。全部 系统将自动检测检测到的 COM 端口设备并分配连续的 COM 端口号。
您还可以使用以下免费工具来清理保留的 COM 端口:











