COM-порт Windows для IPC

Может ли COM-порт Windows использоваться двумя программами, работающими на одном ПК, для обмена данными между процессами? Наша конечная цель - написать программу, которая обменивается данными через COM-порт для управления оборудованием. Поскольку оборудование недоступно, мы хотим эмулировать оборудование в программе, которая читает из виртуального COM-порта и отвечает.

Тривиальный эмулятор - это программа, которая ожидает чтения байтов из COM-порта и отвечает записью в COM-порт. Для начала значения этих сообщений можно жестко запрограммировать.

Итак, у меня есть две программы, написанные на C / C ++, использующие функции ReadFile, WriteFile, предоставляемые окнами для чтения и записи в файл. Этот подход не будет работать из-за конфликта доступа. Поэтому мне было интересно, ошибочен ли наш подход к самому эмулятору.

Я новичок в программировании на базе Windows, хотя у меня есть опыт программирования в других областях. Любая помощь будет принята с благодарностью.

Обновление:

Решение:

  • Установленный драйвер виртуального последовательного порта 7.1 от Eltima Software (пробная версия)
  • Добавлена ​​пара виртуальных портов (например, COM1 и COM2)
  • Программа контроллера обменивается данными через COM1.
  • Программа-эмулятор обменивается данными через COM2.
  • Программное обеспечение Eltima заботится о передаче данных между двумя портами.

person thequark    schedule 21.04.2012    source источник
comment
Это технически возможно, но совершенно бессмысленно. Используйте трубу, чтобы добиться того же результата, без проводов и ужасной скорости.   -  person Hans Passant    schedule 21.04.2012
comment
Быстрый поиск показывает, что коммерческий продукт предлагает то, что, я думаю, вы ищете - я искал loopback виртуального Com-порта. Я не видел других результатов, которые, казалось бы, делали бы то же самое бесплатно, но я не тратил много времени на поиск.   -  person Damien_The_Unbeliever    schedule 21.04.2012
comment
@HansPassant В этом случае связь через COM-порт важна, поскольку она будет неотъемлемой частью решения. Эмулятор, который я напишу, выбросят   -  person thequark    schedule 09.05.2012
comment
@Damien_The_Unbeliever Вы имели в виду Eltima Software? Я использовал от них Serial Port Monitor. Хорошая утилита.   -  person thequark    schedule 09.05.2012


Ответы (1)


Вы можете открыть файл с параметрами общего доступа, которые позволяют обоим процессам читать / писать в него. Но это не очень хорошее решение, потому что последовательный порт чтения / записи имеет ряд отличий от чтения и записи в файл.

Вместо этого я рекомендую получить драйвер виртуального COM-порта (например, com0com.sourceforge.net или выбрать другой здесь en.wikipedia.org/wiki/COM_port_redirector). Установите его, создайте два COM-порта и виртуально их подключите. Так вы будете уверены, что ваша программа будет работать и на реальном COM-порту.

Если это решение неприемлемо, попробуйте использовать трубы, а не файл

person Isso    schedule 21.04.2012
comment
большое спасибо. Решение работает отлично. Чтение / запись файлов не было подходящим решением, поскольку две программы должны были обмениваться данными через COM-порт, а не иметь к нему общий доступ. Итак, я установил программное обеспечение для COM-порта. (Подробности указаны в основном посте) - person thequark; 09.05.2012