Перейти к содержанию

Подслушиваем COM порты

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

Необходимое ПО

Все, что необходимо, содержится в проекте com0com.

https://sourceforge.net/projects/com0com/

А именно нам будут нужны программы

  • hub4com.exe
  • com0com.exe

Сам процесс

В com0com создаем две пары виртуальных портов: галочкой отмечаем, чтобы эмулировался Port class. Например, так:

Подключаем исследуемую железку. Допустим, в Диспетчере устройств появился COM4 – реальная железка. COM6 – открываем и слушаем мы через любую терминальную программу. COM14 – работает “Некая программа“, данные с которой мы хотим получить.

Нам нужно, чтобы связь с реальной железкой, была прокинута на обе пары виртуальных COM-портов. Значит, нужно связать ответные пары созданных ранее портов. Эдакий свич/хаб, но программный. Допустим, скорость соединения 115200.

hub4com.exe --octs=off --baud=115200 --route=All:All \\.\COM4 \\.\COM11 \\.\COM13 

То есть – прокинуть в обе стороны все что есть на портах 4, 11 и 13. Теперь они заняты. Но остались свободными их ответные части/пары 6 и 14. Ранее мы подключили в 14 порт условную программу от производителя девайса. Цепляемся на 6 порт терминальной программой и что мы видим?

Все работает отлично!

Есть ограничение – слишком большая скорость(>600,000 бод) на протоколе может вызывать проблемы с производительностью и корректностью данных, но попробовать можно

Comment

programel