Мне нужно создать виртуальный com-порт, с помощью которого я могу общаться с другим com-портом на машине. Это часть разработки драйвера устройства? Или просто мы можем писать на c ++.
Любой может помочь мне в этом
Заранее спасибо.
Вам придется написать драйвер, поэтому вам нужно будет установить 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
Полный обзор контрольных запросов можно найти Вот
Желаю хорошей поездки 🙂
Я предполагаю, что вы спрашиваете об этом для среды Windows, потому что вы пометили с Winapi.
Да, вам нужно будет написать виртуальный драйвер для этого. Хорошей новостью является то, что DDK (теперь называется WDK) свободно доступен от MS. Если у вас нет VS2013 (требуется для WDK версии 8.1), вы можете получить Express Edition с веб-сайта MS бесплатно.
на редактирование: Вы можете проверить это — http://com0com.sourceforge.net/. Из описания:
Эмулятор нуль-модема представляет собой виртуальный последовательный порт с открытым исходным кодом в режиме ядра.
Драйвер для Windows доступен бесплатно по лицензии GPL.
Эмулятор нуль-модема позволяет создавать неограниченное количество пар виртуальных COM-портов и использовать любую пару для подключения одного приложения на основе COM-порта к другому. Каждая пара COM-портов предоставляет два COM-порта. Выход на один порт является входом с другого порта и наоборот.
Похоже, это может быть в значительной степени то, что вы ищете.