Создание виртуального COM-порта: полное руководство

Программа для работы с 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.
  • ✅ Проверьте в Диспетчере устройств, что оба порта появились в списке.

☑️ Проверка связанной пары портов

Выполнено: 0 / 5

После создания пары укажите один порт в программе-источнике данных, а второй — в программе-приёмнике. Обратите внимание: оба приложения должны использовать одинаковые параметры порта — скорость (baud rate), число стоп-битов и контроль чётности, иначе данные будут искажаться.

Способ 3: Коммерческие утилиты и проброс по сети

Для профессиональных задач — проброса порта по Ethernet, работы с устаревшим ПО, требующим точной эмуляции сигналов — применяют коммерческие решения вроде Virtual Serial Port Driver (Eltima) или HW VSP. Их отличие от com0com — графический интерфейс, поддержка сложных схем (один порт на несколько приложений, объединение портов) и официальная поддержка современных версий Windows.

Сценарий «порт по сети» работает так: на компьютере, куда физически подключено устройство, запускается серверная часть, а на удалённой машине создаётся виртуальный порт, трафик которого идёт через TCP/IP. Параметры сетевого подключения (IP, номер TCP-порта) задаются в настройках конкретной утилиты — сверяйтесь с её документацией, так как интерфейсы программ различаются.

📊 Для какой задачи вам нужен виртуальный COM-порт?
Подключение USB-устройства (Arduino, сканер, модем)
Связь двух программ на одном ПК
Проброс порта по сети
Отладка и тестирование собственного ПО

Сравнение инструментов для создания порта

Выбор зависит от задачи и бюджета. Ниже — ориентировочное сравнение популярных решений по ключевым критериям:

ИнструментТипСтоимостьПодходит для
Драйвер 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.