Программа для работы с GPS-трекером или промышленным контроллером выдаёт ошибку «порт не найден», хотя устройство подключено — типичная ситуация, когда требуется создание виртуального COM-порта. Физический разъём RS-232 давно исчез с корпусов ноутбуков, однако огромное количество оборудования — от кассовых аппаратов до 3D-принтеров — по-прежнему общается с компьютером через последовательный интерфейс.
Виртуальный COM-порт решает эту задачу программно: операционная система видит его как обычный последовательный порт, а приложения работают с ним через стандартные вызовы, не подозревая, что «железа» за ним нет. В статье разберём, как создать такой порт в Windows, какие инструменты выбрать и как устранить типичные ошибки.
Что такое виртуальный COM-порт и когда он нужен
Виртуальный COM-порт — это программная эмуляция последовательного интерфейса. Для приложений он выглядит как стандартный COM3 или COM5: можно открыть его в терминале, задать скорость передачи, читать и отправлять данные. Физически же данные перенаправляются либо между двумя программами на одном ПК, либо на реальное устройство через USB или сеть.
Основные сценарии, где без виртуального порта не обойтись:
- 🔌 Подключение USB-устройств (модемов, сканеров, плат Arduino), которые определяются системой как COM-порт через драйвер.
- 🔁 Связь двух программ между собой — например, эмулятора датчика и программы мониторинга — через связанную пару портов.
- 🌐 Перенаправление последовательного порта по сети (технология COM over Ethernet) для удалённого доступа к оборудованию.
- 🧪 Тестирование и отладка ПО, которое пишется под устройство, которого физически ещё нет под рукой.
- 🖥️ Проброс COM-порта в виртуальную машину для работы устаревшего ПО.
Способ 1: USB-устройство с драйвером виртуального порта
Самый частый случай — устройство с чипом преобразователя USB-UART (например, FTDI, CH340, CP210x). После установки драйвера Windows автоматически создаёт виртуальный COM-порт, и вам остаётся только узнать его номер.
Откройте Диспетчер устройств (нажмите Win + X и выберите соответствующий пункт), подключите устройство и посмотрите раздел Порты (COM и LPT). Там появится новая строка вида USB-SERIAL CH340 (COM4). Номер в скобках — тот самый порт, который нужно указать в вашей программе.
Если устройство определилось с восклицательным знаком, драйвер не установлен. Скачайте его с сайта производителя чипа или платы — универсальных драйверов не существует, для каждого семейства чипов (FTDI, CH340, CP210x, Prolific) он свой.
⚠️ Внимание: драйверы для преобразователей USB-UART скачивайте только с официальных сайтов производителей чипов. Сторонние «сборники драйверов» нередко содержат вредоносное ПО или несовместимые версии, из-за которых порт работает нестабильно.
Способ 2: Пара связанных портов через com0com
Когда нужно соединить две программы на одном компьютере, используется связанная пара (null-modem pair): всё, что одна программа пишет в первый порт, вторая читает из второго, и наоборот. Классический бесплатный инструмент для этого — com0com с открытым исходным кодом.
Порядок действий общий для большинства версий Windows:
- 📥 Скачайте подписанную сборку com0com с официального репозитория проекта — неподписанные версии Windows 10/11 может отказаться устанавливать.
- ⚙️ Установите драйвер, согласившись с предупреждениями системы безопасности.
- ➕ Запустите утилиту настройки
setupc.exeили графический конфигуратор и создайте пару портов командойinstall PortName=COM5 PortName=COM6. - ✅ Проверьте в Диспетчере устройств, что оба порта появились в списке.
☑️ Проверка связанной пары портов
После создания пары укажите один порт в программе-источнике данных, а второй — в программе-приёмнике. Обратите внимание: оба приложения должны использовать одинаковые параметры порта — скорость (baud rate), число стоп-битов и контроль чётности, иначе данные будут искажаться.
Способ 3: Коммерческие утилиты и проброс по сети
Для профессиональных задач — проброса порта по Ethernet, работы с устаревшим ПО, требующим точной эмуляции сигналов — применяют коммерческие решения вроде Virtual Serial Port Driver (Eltima) или HW VSP. Их отличие от com0com — графический интерфейс, поддержка сложных схем (один порт на несколько приложений, объединение портов) и официальная поддержка современных версий Windows.
Сценарий «порт по сети» работает так: на компьютере, куда физически подключено устройство, запускается серверная часть, а на удалённой машине создаётся виртуальный порт, трафик которого идёт через TCP/IP. Параметры сетевого подключения (IP, номер TCP-порта) задаются в настройках конкретной утилиты — сверяйтесь с её документацией, так как интерфейсы программ различаются.
Сравнение инструментов для создания порта
Выбор зависит от задачи и бюджета. Ниже — ориентировочное сравнение популярных решений по ключевым критериям:
| Инструмент | Тип | Стоимость | Подходит для |
|---|---|---|---|
| Драйвер USB-UART (FTDI, CH340) | Драйвер устройства | Бесплатно | Подключение реального оборудования |
| com0com | Драйвер-эмулятор | Бесплатно, open source | Связанные пары портов, отладка |
| Virtual Serial Port Driver | Коммерческая утилита | Платно, есть пробная версия | Сложные схемы портов, техподдержка |
| HW VSP и аналоги | Сетевой проброс | Зависит от версии | COM over Ethernet |
Почему Windows иногда блокирует установку com0com
Современные версии Windows требуют цифровой подписи драйверов. Старые сборки com0com подписаны сертификатом, который система может не принять. Решение — использовать актуальную подписанную сборку проекта. Отключать проверку подписи драйверов в системе ради установки не стоит: это снижает защиту от вредоносных драйверов.
Типичные ошибки и их устранение
Даже правильно созданный порт может отказываться работать. Разберём частые проблемы.
«Порт занят» или «Access denied». Порт уже открыт другой программой — терминалом, второй копией приложения или зависшим процессом. Закройте все программы, использующие порт, и проверьте список процессов в Диспетчере задач. Помогает и простое переподключение USB-устройства.
Порт появляется и исчезает. Возможная причина — нестабильный USB-контакт, неисправный кабель или срабатывание энергосбережения USB. Попробуйте другой порт USB, замените кабель и проверьте в свойствах USB-концентратора в Диспетчере устройств, не разрешено ли системе отключать устройство для экономии энергии.
Номер порта меняется после перезагрузки. Windows назначает номера динамически. В свойствах порта в Диспетчере устройств (Параметры порта → Дополнительно) для многих USB-UART адаптеров можно вручную закрепить постоянный номер COM — это удобно, если программа жёстко привязана к конкретному порту.
⚠️ Внимание: не назначайте вручную номер, который уже используется другим устройством, — конфликт приведёт к тому, что оба порта перестанут открываться. Перед изменением проверьте список занятых номеров в том же окне расширенных настроек.
Как проверить работоспособность порта
После настройки полезно убедиться, что порт действительно передаёт данные. Для связанной пары откройте два окна терминала (например, PuTTY в режиме Serial), подключите их к разным портам пары и отправьте текст из одного окна — он должен появиться во втором.
Для физического устройства проверка зависит от его протокола: многие платы и модемы отвечают на AT-команды или выдают диагностические сообщения при старте. Если устройство молчит, убедитесь, что скорость порта в терминале совпадает со скоростью, заданной в прошивке или документации устройства.
Часто задаваемые вопросы
Чем виртуальный COM-порт отличается от физического?
Для прикладной программы — практически ничем: используются те же системные вызовы. Разница в том, что за виртуальным портом нет физического разъёма RS-232: данные передаются программно — между приложениями, через USB-адаптер или по сети.
Можно ли создать виртуальный COM-порт без сторонних программ?
Штатного средства создания пар виртуальных портов в Windows нет — потребуется драйвер вроде com0com или коммерческая утилита. Однако при подключении USB-устройства с чипом USB-UART порт создаётся автоматически после установки драйвера производителя.
Почему программа не видит созданный порт?
Проверьте три момента: порт присутствует в Диспетчере устройств без ошибок; номер порта входит в диапазон, поддерживаемый программой (старое ПО часто видит только COM1–COM4); порт не занят другим приложением в этот момент.
Сколько виртуальных портов можно создать?
Теоретически система поддерживает большое количество номеров COM. На практике ограничением становятся возможности конкретной утилиты и здравый смысл: десятка портов хватает для подавляющего большинства задач отладки и подключения оборудования.
Работает ли виртуальный COM-порт в виртуальной машине?
Да, но с оговорками. Гипервизоры (VirtualBox, VMware, Hyper-V) умеют пробрасывать последовательные порты в гостевую систему, однако настройка зависит от конкретной платформы виртуализации — сверяйтесь с её документацией. Альтернатива — создать виртуальный порт уже внутри гостевой ОС тем же com0com.