2009-05-27 4 views
18

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

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

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

+1

Я думаю, что приложение hub4com (от com0com) может фактически сделать то, что вам нужно. –

ответ

13

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

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

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

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

Или еще одна возможность - Serial Sniffer program (или open source sniffer).

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

+1

Обвинения, которые вы предложили, - это то, что я уже написал. Я думаю, что виртуализация может быть самым удачным способом, но мне нравится идея разделения линии. Смогу ли я захватить пакеты на устройство и с него? – Daniel

+0

Знаете ли вы, где взять код для hub4com, на сайте есть exe, но я не вижу код. – baash05

+0

http://com0com.cvs.sourceforge.net/viewvc/com0com/hub4com/ Добрался там через: http://sourceforge.net/scm/?type=cvs&group_id=129551 – Kieveli

4

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

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

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

+0

Пока что все, что я знаю, это работает на окнах. Остальное - полностью черный ящик. К сожалению, система находится в Польше, а я нет. Мой контакт разумный компьютерный грамотный. Если расщепление кабеля даст мне возможность прослушивать как входящий, так и исходящий трафик, это похоже на путь. – Daniel

+0

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

10

Есть ли способ, чтобы "средний человек"

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

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

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

0

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

Смежные вопросы