Прослушивание используемых последовательных портов - PullRequest
18 голосов
/ 27 мая 2009

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

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

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

Ответы [ 4 ]

13 голосов
/ 27 мая 2009

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

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

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

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

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

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

10 голосов
/ 19 января 2015

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

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

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

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

4 голосов
/ 27 мая 2009

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

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

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

0 голосов
/ 30 марта 2016

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

...