Когда программа для диагностики оборудования или эмулятор GPS требует указать COM-порт, а физического разъёма в компьютере нет, выходом становится виртуальный последовательный порт — программная эмуляция интерфейса RS-232, которая для операционной системы выглядит как настоящее устройство. Создать его можно как штатными средствами Windows, так и с помощью специальных утилит, и весь процесс занимает несколько минут.
Виртуальные порты используют для связи двух приложений между собой, отладки программ, работающих с COM-интерфейсом, подключения USB-устройств через драйверы эмуляции и тестирования оборудования без реального железа. Ниже разберём основные способы создания виртуального порта, их настройку и типичные ошибки.
Что такое виртуальный порт и когда он нужен
Виртуальный COM-порт — это программный объект, который имитирует поведение физического последовательного порта. Приложения обращаются к нему так же, как к реальному разъёму: открывают, отправляют данные, читают ответ. Разница лишь в том, что данные передаются не по проводам, а внутри системы — между программами или через драйвер.
Типичные сценарии, где без виртуального порта не обойтись:
- 🔌 Связь двух программ через пару соединённых виртуальных портов (например, эмулятор датчика и программа мониторинга).
- 🛰️ Передача данных GPS-навигации из смартфона или эмулятора в навигационное ПО.
- 🔧 Отладка и тестирование программ для микроконтроллеров без подключения реального устройства.
- 💾 Работа старого ПО, рассчитанного на COM-порт, на современных компьютерах без такого разъёма.
Способ 1. Драйвер USB-устройства (USB-Serial)
Самый распространённый сценарий: вы подключаете устройство через USB, а оно определяется в системе как виртуальный COM-порт. Так работают адаптеры USB-to-Serial, программаторы, платы Arduino и многие диагностические сканеры. В этом случае порт создаётся автоматически после установки драйвера устройства.
Порядок действий: подключите устройство к USB, дождитесь установки драйвера (или установите его с сайта производителя чипа — например, FTDI, CH340 или CP210x), затем откройте Диспетчер устройств и проверьте раздел «Порты (COM и LPT)». Там должна появиться строка вида «USB Serial Port (COM3)».
Если устройство определилось, но номер порта неудобен (некоторые старые программы работают только с COM1–COM4), его можно изменить: откройте свойства порта в Диспетчере устройств, перейдите на вкладку Параметры порта, нажмите Дополнительно и выберите нужный номер из списка.
⚠️ Внимание: если в Диспетчере устройств порт появился с жёлтым восклицательным знаком, драйвер установлен некорректно. Удалите устройство, отключите его от USB и установите драйвер заново, скачав актуальную версию с официального сайта производителя чипа.
Способ 2. Программа com0com (бесплатная)
Для связи двух программ между собой без всякого железа удобнее всего использовать com0com — свободный драйвер с открытым кодом, который создаёт пары связанных виртуальных портов. Данные, записанные в один порт пары, мгновенно появляются на другом — как если бы их соединил нуль-модемный кабель.
После установки com0com откройте утилиту настройки Setup Command Prompt или графический конфигуратор из комплекта. По умолчанию создаётся одна пара портов с именами вида CNCA0 и CNCB0 — их можно переименовать в привычные COM-номера, например COM10 и COM11, чтобы программы видели их в стандартных списках.
☑️ Создание пары портов через com0com
Чтобы проверить работу пары, откройте два терминала (например, PuTTY в режиме Serial), подключите их к разным портам пары и отправьте текст из одного — он должен появиться во втором. Если данные проходят, связка настроена правильно.
Способ 3. Virtual Serial Port Driver и аналоги
Коммерческие программы вроде Virtual Serial Port Driver от Eltima предлагают более удобный интерфейс: создание пар портов в один клик, разветвление одного порта на несколько, объединение портов и мониторинг трафика. Это удобно, если нужны сложные схемы — например, чтобы одно устройство «слушали» сразу три программы.
Общий принцип у всех таких утилит одинаков: вы устанавливаете программу, нажимаете кнопку добавления пары портов, выбираете номера (или оставляете автоматические) и подтверждаете создание. Порты появляются в системе сразу и сохраняются после перезагрузки.
| Инструмент | Тип | Основное назначение |
|---|---|---|
| Драйвер USB-Serial | Бесплатный (от производителя) | Подключение реального USB-устройства |
| com0com | Бесплатный, open source | Пары связанных портов для связи программ |
| Virtual Serial Port Driver | Платный | Сложные схемы: разветвление, объединение портов |
| com2tcp / hub4com | Бесплатный | Проброс COM-порта через сеть (TCP/IP) |
Проверка работоспособности порта
После создания порта полезно убедиться, что он открывается и передаёт данные. Самый простой способ — терминальная программа: PuTTY, Terminal или встроенный монитор порта в среде разработки. Укажите номер порта, скорость (для виртуальных портов она часто не критична, но программы могут требовать конкретное значение, например 9600 бод) и откройте соединение.
Для пары портов тест выглядит так: первый терминал подключается к первому порту пары, второй — ко второму. Набранный в одном окне текст должен отображаться в другом. Если этого не происходит, проверьте, не занят ли порт другой программой — одновременно открыть один порт может только одно приложение.
⚠️ Внимание: ошибка «порт занят» или «access denied» почти всегда означает, что порт уже открыт другой программой — закройте терминалы, среды разработки и фоновые утилиты мониторинга, прежде чем подключаться снова.
Типичные проблемы и их решение
Чаще всего пользователи сталкиваются с тремя ситуациями. Первая — порт создан, но программа его не видит: обычно помогает перезапуск программы после создания порта, так как многие приложения сканируют порты только при старте. Вторая — порт пропадает после перезагрузки: проверьте настройки утилиты, в com0com пары сохраняются автоматически, а в некоторых программах есть отдельная опция автозапуска конфигурации.
Третья ситуация — конфликт номеров. Если вы вручную назначили номер, который система считает занятым (даже если устройства сейчас нет), измените номер на свободный через Диспетчер устройств. Пометка «in use» рядом с номером порта в расширенных настройках не всегда означает реальное занятие — часто это следы ранее подключённых устройств.
Как удалить «мертвые» COM-порты из системы
В Диспетчере устройств включите «Вид → Показать скрытые устройства», раскройте раздел «Порты (COM и LPT)» — отобразятся полупрозрачные записи отключённых устройств. Их можно удалить через контекстное меню, освободив номера портов.
Часто задаваемые вопросы
Можно ли создать виртуальный COM-порт без сторонних программ?
Штатных средств для создания пары виртуальных портов в Windows нет — система создаёт такие порты только при установке драйвера реального устройства. Для связи программ между собой понадобится com0com или аналогичная утилита.
Сколько виртуальных портов можно создать?
Практический лимит определяется используемой утилитой и свободными номерами. Для большинства задач достаточно одной-двух пар; при необходимости com0com позволяет создать множество пар.
Почему программа требует порт с номером от COM1 до COM4?
Это ограничение старого ПО, написанного под классические аппаратные порты. Решение — вручную назначить виртуальному порту младший номер через Диспетчер устройств или настройки утилиты, создавшей порт.
Работают ли виртуальные порты после перезагрузки?
Да, если драйвер или утилита настроены на автоматическое восстановление конфигурации. В com0com пары сохраняются по умолчанию, в коммерческих программах проверьте соответствующую опцию в настройках.
Можно ли пробросить виртуальный порт на другой компьютер?
Да, для этого используются утилиты типа hub4com или специализированные программы COM-over-IP, которые связывают порт с TCP-соединением. На удалённой машине создаётся зеркальный виртуальный порт.