четверг, 2 апреля 2015 г.

Виртуальный или... железный?

Мало кто знает, но бесплатный драйвер виртуального нуль-модемного кабеля с открытыми исходниками com0com, под ОС Windows 32/64 bit, имеет расширение в части ретрансляции и приема данных по TCP или Telnet, а также создание хаба из COM-портов. Что позволяет решать довольно таки нестандартные, но нужные в производстве задачи: например ваше устройство подключено к физическому или виртуальному COM-порту (созданного драйвером производителя конвертора интерфейсов, будь то USB/RS-232/RS-422/RS-485) вашего компьютера и вам кроме того, что необходимо работать с ним локально, нужно и ретранслировать (логгировать) данные с него (и на него) параллельно еще куда-нибудь, например во вторую программу или в сеть. Как пример, программатор у одного сотрудника подключен к ноутбуку и необходимо дать доступ к программатору параллельно другим сотрудникам.

Краткий экскурс...

Как вы уже знаете, COM порты обеспечивают соединение точка-точка, за исключением 9-ти битного режима и прочих аппаратных коммутационных ухищрений. Расширение hub4com решает эту проблему программно на раз. Рассмотрим следующую структуру:


1. Разветвляем поток с порта COM1, к которому подключено наше устройство с данными на два, заранее созданных в com0com, виртуальных нуль-модемных кабеля COM7-COM8 и COM100-COM101 с помощью 'hub4com'

hub4com \\.\COM1 \\.\COM7 \\.\COM100

При этом мы получаем полный доступ к порту COM1 с противоположной стороны нуль-модемов через порты COM8 и COM101. Порт COM101 можем пустить на программатор или логгер.

2. Ретранслируем порт COM8 в сеть по TCP на порт 7000 с помощью batch-файла 'com2tcp-rfc2217.bat', конфигурирующего 'hub4com'

com2tcp-rfc2217 COM8 7000

При этом все, что приходит на этот порт по TCP идет в COM8 и наоборот. По сути это сервер.

3. Подключаемся к серверу на удаленном клиенте по TCP с помощью batch-файла 'com2tcp-rfc2217.bat', конфигурирующего 'hub4com' таким образом, чтобы ретранслировать поток на выбранный COM-порт, например на нуль-модемный кабель на удаленной машине

com2tcp-rfc2217 \\.\COM45 IPSERVER 7000

В нашем случае, нуль-модемный кабель включает две точки COM45 и COM46.

4. Ведем прием потока на порту COM46 нуль-модемного кабеля, присоединенного к TCP-клиенту.

p.s.: конечно, вполне очевидно, что не все можно и нужно эмулировать программно. Например, там где нужна надежность, ПК явно избыточен и в игру вступают аппаратные конверторы интерфейсов. К тому же, они потребляют меньше энергии, имеют меньшие габариты.

Ресурсы
  1. Виртуальный нуль-модемный кабель com0com
  2. Расширение hub4com

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.