Как очистить или сбросить номера COM-портов в Windows

Когда вы подключаете к компьютеру новое COM-устройство или USB-устройство (USB-модем, мобильный телефон, Bluetooth-адаптер, преобразователи последовательного интерфейса в USB и т. д.), Windows обнаруживает его с помощью Plug-n-Play и присваивает ему порт номер COM-порта в диапазоне 1 до 255 (COM1, COM2, COM3 и т.д.). При повторном подключении этого устройства зарезервированный COM (Communication, или Serial) ему присваивается номер порта. Новое устройство получает первый свободный номер COM-порта. Часто бывает, что при подключении внешние устройства создают сразу несколько COM-портов. В моем случае после подключения адаптера Bluetooth 10!!! В системе появились новые COM-порты.

Ряд устаревших приложений может обращаться только к двузначным номерам COM-портов и не работает с COM100 и выше. В худшем случае эти программы работают только с COM1-COM9 порты. Что делать, если устройство имеет более высокий номер COM-порта? Можно ли сбросить нумерацию зарезервированных COM-портов и удалить назначенные порты?

Как изменить номер COM-порта устройства в Windows?

В Windows можно вручную изменить номер COM-порта, назначенного устройству. Предположим, что нужный COM-порт уже занят, и вы хотите попробовать его освободить.

  1. Откройте диспетчер устройств, выполнив команду devmgmt.msc команду;
  2. Выберите Просмотр->Показать скрытые устройства в меню;Показать скрытые устройства
  3. Затем разверните Порты (COM & LPT) и найдите свое устройство в списке;
  4. Перейдите в раздел Настройки порта вкладку и нажмите кнопку Дополнительно кнопка;
  5. Текущий номер COM-порта, назначенный устройству, можно найти в разделе Номер COM-порта поле;
  6. Чтобы изменить его, откройте выпадающий список и выберите номер COM-порта, который вы хотите установить.Изменение назначения COM-порта

Но чаще всего изменить назначенный номер COM-порта на другой в свойствах оборудования не удается, поскольку все «младшие» COM-порты уже используются. В этом случае нужно попытаться снять резервирование COM-порта.

  1. Разверните Порты (COM & LPT) ветви, найдите номер COM-порта, которому назначен нужный вам порт (бледный значок означает, что этот COM-порт назначен, но в данный момент устройство не подключено);
  2. Щелкните его правой кнопкой мыши и выберите Удалить;Деинсталляция COM-устройства
  3. Теперь вы можете назначить освободившийся COM-порт другому устройству. Снова откройте свойства устройства, перейдите к пункту Настройки порта -> Продвинутый вкладка. Затем перейдите на вкладку Порт Настройки вкладку и нажмите Дополнительно. Выберите свободный COM-порт в раскрывающемся списке.номер ком-порта

Однако этот метод не во всех случаях позволяет освободить занятый COM-порт.

Вы можете получить полный список занятых COM-портов в Windows с помощью PowerShell:

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

Узнайте, какой процесс использует последовательный COM-порт в Windows

Вы не сможете освободить COM-порт устройства, которое используется Windows или запущенной программой (процессом). Сначала нужно остановить процесс, который в данный момент использует 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

powershell - получить имя службы ком-порта

Имя службы конкретного COM-порта отображается в поле Служба столбец. Например, для COM2 это Последовательный. Теперь вам нужно запустить Process Explorer от имени администратора и выбрать Найти -> Поиск обработчика или DLL из меню. В Подстрока обработчика или DLL строке введите значение Service, полученное ранее. В нашем примере это Serial .

Process Explorer должен показать имя процесса, который в настоящее время использует ваш COM-порт. Чтобы освободить COM-порт, завершите процесс или программу.

process explorer - получение имени процесса, использующего последовательный номер com-порта

Сброс номера COM-порта в реестре Windows

Информация об используемых COM-портах хранится в CommDB параметр реестра под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter рег. ключ.

  1. Откройте редактор реестра (regedit.exe) и перейдите к вышеупомянутому ключу реестра;COM Name Arbiter
    Важно! Мы настоятельно рекомендуем вам создать резервную копию этого ключа реестра (File -> Export), прежде чем что-либо предпринимать. Если что-то пойдет не так, вы сможете восстановить исходную конфигурацию COM-порта.
  2. Значение параметра ComDB параметр в двоичном формате определяет список COM-портов, зарезервированных в Windows. Каждый бит определяет состояние соответствующего порта (от 1 до 255). Например, если необходимо оставить резервирование только для COM3, шестнадцатеричное значение ComDB будет равно 04 (0000 0100); ComDB
    Важно! Будьте очень внимательны и не добавляйте к параметру никаких дополнительных битов, иначе система начнет сбоить в BSOD.
  3. Если вам необходимо сбросить все привязки COM-портов, измените значение параметра ComDB на 0;сброс настроек ком-порта
    Примечание. Полный список COM-портов, подключенных в Windows, можно посмотреть в ключе реестра HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM. Записи реестра под SERIALCOMM могут присутствовать только в том случае, если базовые устройства подключены и готовы к работе. Этот подключ является частью ключа HARDWARE, и он создается заново при каждом запуске системы.SERIALCOMM
  4. The HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports ключ реестра содержит список всех назначенных номеров COM-портов. Вы можете удалить все ненужные резервирования портов. В нашем примере мы оставим только COM3 и удалим остальные порты;используемые com-порты
  5. Отключите все внешние устройства и перезагрузите компьютер;
  6. После перезагрузки подключите устройства в нужном порядке, переустановите преобразователи USB в последовательный порт и т. д. Все обнаруженные устройства COM-порта будут автоматически определены системой и им будут присвоены последовательные номера COM-портов.

Вы также можете использовать следующие бесплатные инструменты для очистки зарезервированных COM-портов:

  • COM Name Arbiter Tool — этот инструмент поможет вам сбросить резервирование COM-портов и найти используемые номера COM-портов. Загрузите инструмент и запустите его от имени администратора. Выберите COM-порты, которые необходимо освободить, и нажмите кнопку Очистить неиспользуемые резервы и Удалите не присутствующие устройства;инструмент для сброса назначений номеров ком-портов
  • Инструмент очистки устройства — утилита используется для поиска в реестре ранее подключенных устройств (под ключом реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum), удаления неиспользуемых устройств и очистки резервирования COM-портов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *