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

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

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

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

4 ответа

Решение

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

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

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

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

Или еще одна возможность - программа Serial Sniffer (или анализатор с открытым исходным кодом).

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

Есть ли способ "среднего человека"

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

Каноническим примером такого драйвера является почтенная утилита SysInternals' PortMon. Показывает все, что приложение отправляет и получает в / из последовательного порта, включая конфигурацию и данные. Есть много таких приложений, только Google "драйвер фильтра последовательного порта" (большой объем примеров исходного кода) и "монитор последовательного порта".

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

Я был на этом же пути. Аппаратный сплиттер - самое простое решение.

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

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

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

Другие вопросы по тегам