
При подключении USB-устройств, преобразователей USB-UART, модемов или контроллеров Windows назначает им COM порты автоматически. Номер порта может меняться при переподключении, использовании другого USB-разъема или установке драйверов. Это часто приводит к сбоям в работе программ, которые ожидают конкретный COM порт.
Командная строка позволяет получить точные сведения о назначенных COM портах без запуска диспетчера устройств и графических утилит. Через стандартные команды Windows можно увидеть список портов, связать номер COM с конкретным устройством, а также проверить, доступен ли порт для подключения в текущий момент.
В статье разобраны практические способы определения COM порта через cmd и PowerShell. Показано, как получить данные о портах с помощью встроенных утилит, как найти нужное устройство по его имени или идентификаторам и как избежать типовых ошибок, связанных с занятыми или некорректно определёнными COM портами.
Просмотр списка COM портов через mode в Windows
Для получения дополнительной информации о конкретном порте можно указать его явно, например mode COM4. В этом случае команда вернёт параметры соединения: скорость, число бит данных, чётность и состояние управления потоком. Если порт не существует или занят другим процессом, будет выведено сообщение об ошибке, что позволяет сразу выявить проблему доступа.
Команда mode не показывает название устройства или производителя, но хорошо подходит для первичной диагностики и проверки доступности COM портов. При необходимости связать номер порта с конкретным оборудованием следует использовать другие инструменты командной строки, которые работают с идентификаторами устройств.
Определение COM порта устройства с помощью wmic
| DeviceID | Name | Description |
|---|---|---|
| COM3 | USB Serial Device (COM3) | USB Serial Device |
| COM7 | Prolific USB-to-Serial Comm Port (COM7) | USB Serial Port |
Для фильтрации по конкретному устройству допустимо использовать find. Пример: wmic path Win32_SerialPort get DeviceID,Name | find «USB». Такой запрос оставит только строки, содержащие нужное ключевое слово, что упрощает поиск при большом количестве портов.
Следует учитывать, что wmic помечен как устаревающий инструмент в новых версиях Windows. Команда продолжает работать, но в долгосрочной перспективе рекомендуется переходить на PowerShell, если требуется автоматизация или интеграция в скрипты.
Поиск COM порта через PowerShell командой Get-PnpDevice
Ключевым полем является FriendlyName, где обычно указан номер COM порта в скобках. Пример строки: USB Serial Device (COM6). Это даёт прямую связь между физическим устройством и назначенным портом без обращения к графическим инструментам.
При необходимости получить технические идентификаторы применяется связка с Get-PnpDeviceProperty. Это позволяет извлечь InstanceId, VID и PID, по которым можно однозначно отличить одинаковые адаптеры. Такой подход подходит для диагностики, настройки скриптов и проверки корректности установки драйверов.
Сопоставление COM порта с устройством по VID и PID

Получить VID и PID можно через PowerShell, используя данные устройства. Сначала определяется нужный порт командой, возвращающей список последовательных устройств, после чего извлекается идентификатор экземпляра. В строке вида USB\VID_0403&PID_6001\A9X12345 значения VID_0403 и PID_6001 указывают на конкретный чип и модель адаптера.
После определения VID и PID их можно использовать для поиска связанного COM порта. Фильтрация по этим идентификаторам позволяет выделить нужное устройство даже в системах, где подключены модемы, отладочные платы и виртуальные порты. Такой подход исключает ошибки, связанные с изменением номера COM порта при переподключении.
Сопоставление по VID и PID удобно для диагностики и автоматизации. В скриптах можно проверять наличие конкретного устройства и получать его COM порт без привязки к фиксированному номеру. Это особенно полезно при работе с промышленным оборудованием и средами тестирования, где стабильность конфигурации имеет значение.
Проверка доступности COM порта через командную строку
После определения номера COM порта требуется убедиться, что он доступен для работы и не занят другим процессом. Командная строка Windows позволяет выполнить такую проверку без сторонних утилит и графических средств.
Базовая проверка выполняется через обращение к порту командой mode COMx, где вместо x указывается номер порта. Результат выполнения сразу указывает на текущее состояние:
- сообщение об ошибке – порт отсутствует или занят;
- отказ в доступе – порт открыт другим приложением.
В сценариях с несколькими портами полезно проверять их по списку:
- получить список COM портов через mode;
- последовательно проверить каждый порт командой mode COMx;
- зафиксировать порты, возвращающие параметры без ошибок.
Если порт существует, но недоступен, причиной чаще всего является:
- запущенное ПО для работы с устройством;
- служба, удерживающая соединение;
- некорректно завершённый процесс, не освободивший порт.
Такая проверка позволяет быстро понять, готов ли COM порт к использованию, и выявить конфликты доступа до запуска основного приложения.
Типовые ошибки при определении COM порта и способы их проверки

При работе с COM портами часто возникают ошибки, связанные с некорректным определением устройства или занятостью порта. Основные ситуации и способы их проверки:
1. Порт отсутствует в списке. Возможные причины:
- устройство не подключено или отключено;
- драйвер не установлен или не загружен;
- порт был отключён системой после переподключения.
Проверка: выполнить mode или Get-PnpDevice -Class Ports для подтверждения наличия порта. Если порт отсутствует, проверить подключение и драйвер.
2. Неверный COM порт указан в программе. Часто возникает при автоматическом назначении портов Windows после переподключения USB.
Проверка: использовать wmic path Win32_SerialPort get DeviceID,Name или PowerShell для сопоставления устройства с текущим COM.
3. Порт занят другим процессом. Появляется сообщение «Access denied» или сбой при записи/чтении.
Проверка: закрыть программы, использующие порт, и повторно выполнить mode COMx или попытку записи через команду echo test > COMx.
4. Несовпадение VID/PID. При наличии нескольких одинаковых устройств COM порт может быть назначен другому адаптеру.
Регулярная проверка этих аспектов помогает избежать ошибок при автоматизации, тестировании и подключении оборудования через командную строку.
Вопрос-ответ:
Как быстро узнать, какой COM порт присвоен USB-UART адаптеру через командную строку?
Для этого можно использовать команду mode. Откройте командную строку и введите mode без параметров. В списке появятся все доступные COM порты, включая USB-UART адаптеры. Если нужно уточнить параметры конкретного порта, используйте mode COMx, где x — номер порта. Команда покажет скорость, число бит данных, чётность и состояние управления потоком.
Можно ли определить COM порт устройства по его VID и PID через командную строку?
Да. VID и PID однозначно идентифицируют USB-устройство. Через PowerShell выполняется команда Get-PnpDevice -Class Ports для списка портов, затем с помощью Get-PnpDeviceProperty можно получить InstanceId, содержащий VID и PID, например USB\VID_0403&PID_6001\A9X12345. Сопоставив эти значения с FriendlyName, вы узнаете номер COM порта конкретного устройства, даже если подключено несколько одинаковых адаптеров.
Почему COM порт не отображается в списке после подключения устройства?
Причины могут быть связаны с отсутствием драйвера, некорректной установкой устройства или отключением системы. Проверьте подключение кабеля, перезагрузите драйвер или выполните команду Get-PnpDevice -Class Ports в PowerShell. Если порт по-прежнему не отображается, убедитесь, что устройство поддерживается вашей версией Windows и корректно распознаётся в Диспетчере устройств.
Как проверить, что COM порт свободен и готов к использованию?
Для проверки доступности порта используйте mode COMx. Если команда возвращает параметры соединения — порт доступен. Для проверки записи можно использовать echo test > COMx. Ошибка «Access denied» указывает, что порт занят другим процессом. В этом случае закройте программы, которые его используют, или перезагрузите драйвер устройства.
Какая разница между проверкой COM порта через wmic и PowerShell?
Команда wmic path Win32_SerialPort get DeviceID,Name,Description выводит таблицу с COM портами и описанием устройств, подходящую для быстрого просмотра. PowerShell с Get-PnpDevice -Class Ports даёт более детальную информацию, включая статус устройства и возможность фильтровать по FriendlyName или VID/PID. WMIC удобен для базового контроля, PowerShell — для точного сопоставления оборудования с портом и диагностики.
