Автор |
Сообщение |
|
Дата: 06 Сен 2015 13:46:21
#
Суть задачи такова. Нужно программными средствами преобразовать данные с последовательного порта программы управления частотой РПУ, и направить их по протоколу telnet в приемник, у которого в качестве интерфейса управления есть только Ethernet. Пример такой. Есть некая прога - W-Code, в настройках которой можно задать выдачу кода частоты для управления каналом трафика Inmarsat-C по сигналам контрольного канала NCS. В программе можно установить выдачу кода частоты только по протоколу RS-232. Формат выводимых данных таков: RF1537100000 - частота канала управления NCS, RF1539455000 - например частота канала трафика. Приемник с LAN должен соответственно синхронно, в реальном времени, и без задержек автоматически настраиваться (перепрыгивать) с одной частоты на другую. Приемник с LAN по telnet понимает команду управления частотой только в таком виде: freq 1537100000 - частота канала управления NCS, freq 1539455000 - частота канала трафика. Соответственно, нужно как-то перехватить и преобразовать с удалением префикса RF и подстановкой freq каждое значение частоты с программы W-Code, и направить это значение в telnet, для дальнейшего управления приемником. Причем, видимо нужен какой-то скрипт для автоматической записи и передачи в telnet. Какими программными средствами это наиболее просто сделать? Нужна ли многоходовая комбинация с преобразованиями, и промежуточными программами-плагинами, или всю проблему можно решить с помощью одной программы? Желательно конечно иметь уже готовое решение...
|
|
Дата: 06 Сен 2015 13:54:15
#
Это к АСУ ТП не относится? Там используют контроллеры. Сколько раз я сталкивался, производители не советуют постоянно использовать СОМ порт, только для настройки.
|
Реклама Google
|
|
|
Дата: 06 Сен 2015 14:14:15
#
Это к АСУ ТП не относится?
Ни коим образом! Никакие устройства типа MOXA и пр. я даже не рассматриваю. У них в основном задача сбора данных с передачей в Ethernet, или дистанционный вынос com-порта по Ethernet. Все можно решить программными способами. Да и задачка у меня не совсем тривиальная. К тому-же и com-порт виртуальный.
|
|
Дата: 06 Сен 2015 19:31:26 · Поправил: Zmej (06 Сен 2015 19:33:28)
#
всю проблему можно решить с помощью одной программы? Желательно конечно иметь уже готовое решение...
Любой программист-самоучка сделает вам такую программку. Нужен компонент для сом порта и socket. Дальше по приходу строки из сом порта она будет переформатироватся в нужный вид и отправляться в сокет.
|
|
Дата: 06 Сен 2015 20:12:05 · Поправил: marvel (06 Сен 2015 20:15:49)
#
Любой программист-самоучка сделает вам такую программку
Вот-вот все кажется таким простым, а начнешь разбираться-дебри!
Я вроде как нашел одно из решений - экспорт в EXCEL с помощью компонентов MSComm и написания макроса.
А дальше в том-же EXCEL макрос на Telnet.
Но дальше примеров я не сдвинулся с мертвой точки... Не программист я!
сом порта она будет переформатироватся в нужный вид и отправляться в сокет.
Вот тут пожалуйста поподробнее - какими подручными средствами это можно сделать?
Может просто подменять пакеты TCP c данными Com порта. Пакеты я просниффил в Wireshark. Там ничего особенного - 72 байта и все в явном виде...
|
|
Дата: 06 Сен 2015 20:24:28
#
Нужная какая-то визуальная среда разработки, делфи там или C++Builder, может другие есть новей, но я уже не интересуюсь этим. Там всё примерно так: перетянул на форму компоненты нужные, дальше в них настроил параметры, скорость обмена для порта, куда соединяться телнет-клиенту... Потом там обработчики событий, например, что делать когда в сом порт поперли символы, вот и начинаем их записывать в переменную, дальше шлифуем их, если нужно, отдаем в другой компонент, тот же tcp-клиент. Язык операторов довольно простой, есть много примеров для начинающих.
|
|
Дата: 06 Сен 2015 20:31:06
#
Нужно еще и указать последнюю строку в логе частоты, чтобы программа забирала именно последнюю частоту.
Похоже да, к программисту мне дорога...
|
|
Дата: 08 Сен 2015 19:49:24
#
сом порта она будет переформатироватся в нужный вид и отправляться в сокет.
Вот тут пожалуйста поподробнее - какими подручными средствами это можно сделать?
Может просто подменять пакеты TCP c данными Com порта.
Но дальше примеров я не сдвинулся с мертвой точки... Не программист я!
Но таки попытались и даже типа в теме.. осталось немного,
качаем с микрософта MS VS 2015 бесплатную версию, а рыбу-проект (осталось делегаты докинуть просто) я завтра скину. Он не сложен.
|
|
Дата: 08 Сен 2015 23:07:20
#
Windk
А можно поподробнее как это все выглядит? Как я понимаю должно быть два виртуальных коморта соединенных нульмодемным кабелем, в первый шлет W-Code, из второго выгребает программка и отправляет в открытый сокет? У вас свой драйвер или надо купить Virtual Null Modem?
|
|
Дата: 09 Сен 2015 06:31:50
#
XOR
А можно поподробнее как это все выглядит? Как я понимаю должно быть два виртуальных коморта соединенных нульмодемным кабелем, в первый шлет W-Code, из второго выгребает программка и отправляет в открытый сокет?
ну это если все на одном комппе и портов нет или только один, то так. Если есть пара физ портов или разные компы, то виртуальные не надо.
У вас свой драйвер или надо купить Virtual Null Modem?
проект лишь просто открывает порт через .Net класс SerialPort и направляет в TCPClient, никакой поддержки виртуальных конечно нет, - это на усмотрение пользователя: покупать, искать бесплатные, крякнутые или организовывать физические порты,например усб-СОМ.
|
|
Дата: 09 Сен 2015 13:13:55
#
Все, проблема решена! Была написана (не мною) программка на VisualStudio. Она черпает данные с виртуального порта, подставляет вместо одного значения другое, и далее телнетом в TCP сокет. Все очень замечательно работает!
|
|
Дата: 09 Сен 2015 13:15:43
#
XOR
Как я понимаю должно быть два виртуальных коморта
Виртуальный как раз таки один нужен. С 2-мя она не работает.
|