Бывает так, что есть некоторое ПО от производителя для общения с его железкой через 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