Создать виртуальный com порт

Мне нужно создать виртуальный com-порт, с помощью которого я могу общаться с другим com-портом на машине. Это часть разработки драйвера устройства? Или просто мы можем писать на c ++.

Любой может помочь мне в этом
Заранее спасибо.

1

Решение

Вам придется написать драйвер, поэтому вам нужно будет установить WDK (ранее назывался DDK). Но вам повезло, потому что Образцы пакета комплекта драйверов для Windows содержит образец виртуального последовательного порта.

Кажется, что вы хотите, чтобы «переводчик» общался с устройством, почему бы просто не написать драйвер фильтра и реализовать некоторые дополнительные IOControls?

Если вы действительно хотите получить доступ к другому порту из вашего драйвера (что я уже делал однажды), вам следует поискать следующие функции:

  • IoGetDeviceObjectPointer / ObDereferenceObject (для открытия / закрытия порта)
  • IoBuildDeviceIoControlRequest / IoCallDriver (для отправки IOCTL для изменения настроек порта)
  • IoBuildSynchronousFsdRequest / IoCallDriver (для записи / чтения данных)

Структуры / IOCTL вам понадобятся:

  • SERIAL_BAUD_RATE (за IOCTL_SERIAL_SET_BAUD_RATE/IOCTL_SERIAL_GET_BAUD_RATE)
  • IOCTL_SERIAL_SET_TIMEOUTS
  • SERIAL_HANDFLOW (за IOCTL_SERIAL_SET_HANDFLOW/IOCTL_SERIAL_GET_HANDFLOW)
  • SERIAL_LINE_CONTROL (за IOCTL_SERIAL_SET_LINE_CONTROL)
  • IOCTL_SERIAL_PURGE
  • IOCTL_SERIAL_SET_WAIT_MASK/IOCTL_SERIAL_GET_WAIT_MASK
  • IOCTL_SERIAL_SET_CHARS/IOCTL_SERIAL_GET_CHARS
  • IOCTL_SERIAL_WAIT_ON_MASK

Полный обзор контрольных запросов можно найти Вот

Желаю хорошей поездки 🙂

7

Другие решения

Я предполагаю, что вы спрашиваете об этом для среды Windows, потому что вы пометили с Winapi.

Да, вам нужно будет написать виртуальный драйвер для этого. Хорошей новостью является то, что DDK (теперь называется WDK) свободно доступен от MS. Если у вас нет VS2013 (требуется для WDK версии 8.1), вы можете получить Express Edition с веб-сайта MS бесплатно.

на редактирование: Вы можете проверить это — http://com0com.sourceforge.net/. Из описания:


Эмулятор нуль-модема представляет собой виртуальный последовательный порт с открытым исходным кодом в режиме ядра.
Драйвер для Windows доступен бесплатно по лицензии GPL.

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

Похоже, это может быть в значительной степени то, что вы ищете.

5

По вопросам рекламы [email protected]