Прослушивание используемых последовательных COM-портов

StackOverflow https://stackoverflow.com/questions/915904

  •  06-09-2019
  •  | 
  •  

Вопрос

Я имею дело с некоторыми устаревшими системами, которые используют RS232 для связи с периферийными устройствами.У меня не очень большой опыт работы с COM-интерфейсом.У меня есть код, который может открывать и использовать COM-порты, но не может открывать порты, используемые другими приложениями.Мне нужно поместить пакеты в черный ящик, чтобы мы могли использовать один и тот же протокол для обновленных коммуникаций.

Есть ли способ передать входящие пакеты «посреднику» на открытый COM-порт и определить, какие пакеты отправляются? Я использую .NET, но открыт для любого решения.

(Я нашел этот там, но я не думаю, что это сработает для меня.)

Это было полезно?

Решение

Я использовал com0com — он отлично подходит для настройки виртуальных ком-портов, но вам это совсем не поможет.

Интерфейс COM-порта по сути представляет собой «чтение файлов».Мое приложение выдает исключение, когда я пытаюсь подключиться к COM-порту, из которого уже читает другой экземпляр.Я не уверен, что вы могли бы попробовать открыть его как «только для чтения» вместо чтения и записи, но попробовать стоит.

У вас должна быть возможность написать виртуальный com-порт, который сможет передавать ваши данные в файл журнала.Com0com имеет открытый исходный код, поэтому вы можете использовать его в качестве отправной точки.

Другим возможным решением может быть приобретение кабель-сплиттер RS232 передает последовательный сигнал на другой последовательный порт.

Или еще одна возможность — Программа серийного сниффера (или сниффер с открытым исходным кодом).

Или попробуйте приложение Hub4com с того же сайта com0com!

Другие советы

Есть ли способ «посредника»

Да, их много.Сильно поддерживается в Windows благодаря концепции «драйвера-фильтра».Такой драйвер можно вставить перед драйвером, который получает запросы ввода-вывода и видит все, что проходит мимо.Обычно предназначен для изменения запросов ввода-вывода, но также очень подходит для простого мониторинга запросов.Человек посередине.

Каноническим примером такого водителя является почтенный Утилита PortMon от SysInternals.Показывает все, что приложение отправляет и получает через последовательный порт, включая конфигурацию и данные.Таких приложений много, просто Google «драйвер фильтра последовательного порта» (много примеров исходного кода) и «монитор последовательного порта».

Одна сноска: у вас, как правило, возникают проблемы в 64-битной версии Windows.Подавляющее большинство этих приложений, включая PortMon, работают только в 32-битной версии.64-битная версия позволяет устанавливать только сертифицированные драйверы, продажа этих приложений требует очень мало денег, чтобы оправдать затраты.Остерегайтесь этого, совершая покупки.

Я пошел по тому же пути.Аппаратный разветвитель – самое простое решение.

Для настройки Hub4com потребуется мастер «Добавить новое оборудование».Если у вас много компьютеров, географически разделенных компьютеров или пользователи, которые не подкованы технически и не имеют необходимых разрешений, установка может оказаться затруднительной.

Если это устаревшее приложение, работает ли оно в ntvdm?Если да, то вы можете запустить его ДосБокс вместо этого измените код DosBox для записи в файл в дополнение к отправке/получению в/из последовательного порта.DosBox также является кроссплатформенным.

Вы также можете использовать TCPcom конвертировать данные в пакеты Ethernet и отслеживать их с помощью Wireshark, а также транслировать их куда-либо еще.Затем вы используете другой экземпляр TCPcom для пересылки его на любой понравившийся вам com-порт, включая виртуальный com-порт.Теперь вы по сути перехватили данные через Ethernet.https://sourceforge.net/projects/combytcp/?source=directory

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top