当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 Windows 中清理或重置 COM 端口号

作者:精品下载站 日期:2024-12-14 23:17:54 浏览:14 分类:玩电脑

如何在 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 端口已经繁忙,并且您想尝试释放它。

  1. 通过运行以下命令打开设备管理器

    devmgmt.msc

    命令;

  2. 在菜单中选择查看->显示隐藏设备

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

  3. 然后展开端口(COM 和 LPT)并在列表中找到您的设备;

  4. 进入端口设置选项卡,点击高级按钮;

  5. 当前分配给设备的COM端口号可以在COM端口号字段中找到;

  6. 要更改它,请打开下拉列表并选择要设置的 COM 端口号。

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

但更常见的是,您无法在硬件属性中将分配的 COM 端口号更改为另一个端口号,因为所有“较低”的 COM 端口都已在使用中。在这种情况下,您需要尝试删除 COM 端口保留

  1. 展开端口(COM & LPT)分支,找到您需要的COM端口号分配给哪个(浅色图标表示该COM端口已分配,但该设备当前未连接);

  2. 右键单击它并选择卸载

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

  3. 现在您可以将释放的 COM 端口分配给另一个设备。再次打开设备的属性,转到端口设置 -> 高级选项卡。然后转到端口设置选项卡并单击高级。在下拉列表中选择空闲的 COM 端口。

    [玩转系统] 如何在 Windows 中清理或重置 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

[玩转系统] 如何在 Windows 中清理或重置 COM 端口号

特定 COM 端口的服务名称显示在服务列中。例如,对于 COM2,它是“串行”。现在您需要以管理员身份运行 Process Explorer,并从菜单中选择查找-> 查找句柄或 DLL 。在句柄或DLL子字符串行中,输入之前获取的Service值。在我们的例子中,这是

Serial

Process Explorer 应显示当前正在使用您的 COM 端口的进程名称。要释放 COM 端口,请终止进程或程序。

[玩转系统] 如何在 Windows 中清理或重置 COM 端口号

重置 Windows 注册表中的 COM 端口号

有关正在使用的 COM 端口的信息存储在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter 注册表项下的 CommDB 注册表参数中。

  1. 打开注册表编辑器(

    regedit.exe

    ) 并转到上面提到的注册表项;

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

    重要!我们强烈建议您在执行任何操作之前备份此注册表项(文件 -> 导出)。如果出现问题,可以恢复原来的COM口配置。

  2. 二进制格式的ComDB参数的值决定了Windows中保留的COM端口列表。每个位确定相应端口的状态(从 1 到 255)。例如,如果您只需要为 COM3 保留保留,则 ComDB 的十六进制值将等于 04 (0000 0100);

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

    重要!要非常小心,不要向参数添加任何额外的位,否则系统将开始出现 BSOD。

  3. 如果需要重置所有COM端口绑定,请将ComDB的值更改为0

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

    注意。您可以在注册表项 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 下查看 Windows 中连接的 COM 端口的完整列表。 只有当底层设备已连接并准备就绪时,SERIALCOMM 下的注册表项才能出现。该子项是 HARDWARE 项的一部分,每次系统启动时都会重新创建。

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

  4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports 注册表项包含所有分配的 COM 端口号的列表。您可以删除所有不必要的端口预留。在我们的示例中,我们将只保留 COM3 并删除其余端口;

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

  5. 拔掉所有外部设备并重新启动计算机;

  6. 重启后,按必要的顺序连接设备,重新安装USB转串口转换器等。全部 系统将自动检测检测到的 COM 端口设备并分配连续的 COM 端口号。

您还可以使用以下免费工具来清理保留的 COM 端口:

  • COM 名称仲裁工具 - 此工具可以帮助您重置 COM 端口保留并查找已使用的 COM 端口号。下载该工具并以管理员身份运行。选择要释放的COM端口,然后点击清除未使用的预留删除不存在的设备;

    [玩转系统] 如何在 Windows 中清理或重置 COM 端口号

  • 设备清理工具 - 该实用程序用于在注册表中搜索以前连接的设备(在注册表项下)

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

    ),删除未使用的设备,并清除 COM 端口保留。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯