Коллеги, помогите с идеями. Задача такова. Есть удалённый компьютер, на котором крутится программа, собирающая информацию с датчиков и выдающая поток данных на COM-порт.
Требуется организовать передачу этих данных на центральный компьютер, который мог бы получать поток в квази-реальном времени. Ну, то есть, как если бы они были связаны шнурком RS-232 физически. В удалённом месте есть возможность подключить только USB-net stick или, скажем, GPRS-модуль. Но никаких драйверов писать нет возможности, особенно под USB.
Подскажите, каким образом можно решить такое с минимальной морокой?
Да, удаление - несколько километров в условиях города. То есть, радиомодули не внушают надёжности. Предпочтительнее всего интернет.
rx3apf
Mar 15 2018, 20:46
Может, я чего не понял, но...
Taltech TCP-com, на "удаленной" стороне клиент с виртуальным COM, на который программа шлет данные. С другой стороны он же (TCP-com) в режиме сервера, можно на виртуальный или реальный порт, или что и как вообще предполагается делать с принятым потоком ?
Да, и что за машина с какой ОС стоит на "удаленной" стороне ? Если не с win, то предложенное решение отпадает, само собой...
Цитата(Herz @ Mar 15 2018, 22:58)

Есть удалённый компьютер, на котором крутится программа, собирающая информацию с датчиков и выдающая поток данных на COM-порт.
А поток информации какой? Допустимая средняя скорость, задержки?
Тоже интересует такая задача, M2M GPRS телематика стоит ~~100руб/месяц в РФ.
Но пока не понял, можно ли организовать такой режим на обычных GPRS модулях, те без покупки готовых устройств.
На удалённой машине Win7, поток относительно медленный: samle rate 8Hz, baud rate 115200. На центральном компьютере предполагается принять данные, обработать в МАТЛАБ, и выдать на монитор картинку. Задержка в несколько секунд допустима. Посмотрю на Taltech, спасибо.
Посмотрел, M2M услуга - только на страничке для корпоративных клиентов - не подходит для частного разового устройства?
(мне нужно мобильное решение)
как-то пробрасывал порты через сеть если не ошибаюсь с помощью com0com. но там надо было именно чужой программе устройство пробросить.
а если в свою программу обработки в матлабе, то можно наверное вообще тупо писать в файл на удалённом ПК чуть ли не средствами ОС.
copy COM1 somefile поди до сих пор работает и в win7
а из матлаба потом этот файл по сети как угодно забирать, хоть по http, и отображать.
ну а уж как лучше интернет на удалённом компе организовать в условиях города вам там поди виднее.
rx3apf
Mar 16 2018, 07:28
Цитата(Herz @ Mar 16 2018, 00:39)

Посмотрю на Taltech, спасибо.
Если не ошибаюсь, там используется создание виртуальных портов от Eltima. Софтина с определенными ограничениями, но все решаемо. Ну, а на приемной стороне можно принять чем угодно, хоть терминалом с поддержкой TCP, хоть вообще на vbs с сетевым компонентом за пару часов накропать. Ну или опять же в порт перенаправить.
Цитата(_pv @ Mar 16 2018, 01:41)

как-то пробрасывал порты через сеть если не ошибаюсь с помощью com0com. но там надо было именно чужой программе устройство пробросить.
а если в свою программу обработки в матлабе, то можно наверное вообще тупо писать в файл на удалённом ПК чуть ли не средствами ОС.
copy COM1 somefile поди до сих пор работает и в win7
а из матлаба потом этот файл по сети как угодно забирать, хоть по http, и отображать.
ну а уж как лучше интернет на удалённом компе организовать в условиях города вам там поди виднее.
На удалённом компьютере сейчас программа и так пишет данные в таблицу, csv-file, помимо выдачи потока на порт. В USB вставлен модем (USB-net stick), при помощи которого есть доступ к компьютеру по интернету через TeamViewer. Через него же я забираю готовые файлы, останавливая запись и отрывая новый файл. Это могу делать раз в сутки или неделю. Но теперь нужно получать в реал-тайм, или почти в реал-тайм. Обработку в любом случае делать уже в центральном, на удалённом МАТЛАБ ставить громоздко, да и ни к чему. Вопрос как раз в том, чем передать данные по интернету, я в веб-сервисах полный ноль.
Цитата(rx3apf @ Mar 16 2018, 09:28)

Если не ошибаюсь, там используется создание виртуальных портов от Eltima. Софтина с определенными ограничениями, но все решаемо. Ну, а на приемной стороне можно принять чем угодно, хоть терминалом с поддержкой TCP, хоть вообще на vbs с сетевым компонентом за пару часов накропать. Ну или опять же в порт перенаправить.
Буду разбираться. Вся проблема в том, что для меня эти сетевые компоненты, TCP и vbs - в диковинку.

Нужно что-то готовое по максимуму.
rx3apf
Mar 16 2018, 10:17
Для меня, в общем-то, тоже (тридцать лет прекрасно обходился без ЯВУ). Но быстренько накропать что-то суррогатное из нескольких строчек basic может кто угодно, ничего там сложного нет. А, оказалось, вещь-то (vbs) удобная и и полезная, если нужно быстренько соорудить какую-нибудь консольную утилиту.
Цитата(Herz @ Mar 15 2018, 21:58)

Коллеги, помогите с идеями. Задача такова. Есть удалённый компьютер, на котором крутится программа, собирающая информацию с датчиков и выдающая поток данных на COM-порт.
Требуется организовать передачу этих данных на центральный компьютер,
...
Предпочтительнее всего интернет.
Уже много лет для решения подобных задач (преобразования интерфейса виртуального COM-порта в TCP-сокет) использую "Tibbo VSP Manager".
На прошлой работе он широко использовался и в системах АСКУЭ и АСДУЭ в коммерческих проектах.
По этой ссылке
http://tibbo.com/ru/soi/software.htmlТолько там смотреть и ставить нужно именно только "VSP Manager". Остальное - не нужно.
Пример конфигурирования для создания порта в пассивном режиме:
Нажмите для просмотра прикрепленного файлаДля активного режима - всё то же самое, только "Routing mode" == "Client" и нужно задать "Destination" вместо "Listening port":
Нажмите для просмотра прикрепленного файлаТеперь при открытии порта COM51 будет установлено соединение COM51<->COM50.
Цитата(Herz @ Mar 16 2018, 12:09)

Буду разбираться. Вся проблема в том, что для меня эти сетевые компоненты, TCP и vbs - в диковинку.

Нужно что-то готовое по максимуму.
Tibbo очень легко сконфигурить: только нужно определиться в каком режиме порт нужен - пассивный (при открытии COM-порта открывается TCP-порт в режиме listening и ждёт входящего соединения с удалённой стороны) или активный (при открытии такого COM-порта инициируется исходящее активное TCP-соединение на удалённый TCP-порт).
Протокола передачи в сокете там никакого нет, данные передаются "как есть", так что связать можно не только два приложения, работающие через интерфейс COM-порта, но и приложение работающее через COM-порт с приложением работающим через TCP-порт.
Есть ограничение для портов в пассивном режиме: они могут принимать
только одно входящее соединение.
PS: Для VSP Manager кряков никаких не нужно - он и так работает без ограничений.
rx3apf
Mar 16 2018, 10:38
А Tibbo в режиме UDP понимает, когда исходящий порт у отправителя меняется ? А то у софтины от Taltech с этим проблема - если на удаленном конце сотовый модем в режиме UDP и интервал между посылками достаточно велик, то порт может смениться, а софтина этого не понимает, и продолжает отправлять на старый порт, и приходится перезапускать. В TCP все хорошо, а вот в UDP - такая неприятность...
Цитата(rx3apf @ Mar 16 2018, 12:38)

А Tibbo в режиме UDP понимает, когда исходящий порт у отправителя меняется ?
Никогда не использовал её в UDP. Зачем?
rx3apf
Mar 16 2018, 11:54
В системах сбора данных с множеством абонентов и одним сервером. TCP там совершенно не подходит. Ладно, при случае попробую, интересно...
Цитата(Herz @ Mar 16 2018, 17:09)

На удалённом компьютере сейчас программа и так пишет данные в таблицу, csv-file, помимо выдачи потока на порт.
можно просто запустить какой-нибудь miniweb в директории с csv файлом.
а со стороны матлаба забирать этот файл частично по http, последние n байт.
если матлаб сам не умеет куски файла забирать, он может запускать какой-нибудь wget который будет просто докачивать недостающее, а csv файл пусть пишется непрерывно.
ну а самый простой наверное способ это какой-нибудь dropbox (google/yandex диск/...) на обоих компах установить, но вроде бы достаточно умный должен быть чтобы файл не целиком пересылать каждый раз если ему в конец что-то дописали.
на раз в несколько секунд поди хватит.
ну или может просто расшарить директорию с csv файлом через smb, и подключить на комп с матлабом как сетевой диск.
Ruslan1
Mar 16 2018, 15:09
Есть несколько проектов, где на объектах стоит GSM модем, который имеет железячный COM-порт.
Этот порт виден в интернете по IP, и к нему возможен удаленный доступ как к виртуальному порту.
На центральном сервере стоит своя программа (писал в си++билдере), которая может достучаться до данного виртуального порта, ну а дальше работает с этим портом как с локальным.
Утилит и софта, как работать с виртуальным портом со стороны сервера- много, нужно только решить как оптимально этот порт организовать на удаленном устройстве. Например, GSM модем или COM/TCP или COM/DSL коробочка, да мало ли что.
В своем софте использовал Indy компоненты для виртуального порта, так как были какие-то глюки в сетевых компонентах от привычного AsyncProfessional.
Цитата(Herz @ Mar 16 2018, 13:09)

В USB вставлен модем (USB-net stick), при помощи которого есть доступ к компьютеру по интернету через TeamViewer. Через него же я забираю готовые файлы, останавливая запись и отрывая новый файл.
Может, не в тему, но у TeamViewer есть режим подключения VPN, формирующий общую локалку.
Я через него поднимал соединение с JTAG-сервером и прошивал плисины, но использовался UDP или что-то вроде того. В Вашем случае можно, как тут советовали, с помощью специальных транслирующих программ. Правда, это всё костыли, требующие иногда переподключения.
Спасибо, есть пища для подумать.
Цитата(_pv @ Mar 16 2018, 16:43)

ну или может просто расшарить директорию с csv файлом через smb, и подключить на комп с матлабом как сетевой диск.
Интересная мысль, как-то не приходила в голову. Стоит попробовать.
В этой ветке спрашивать, или новую создать?
Хочется напрямую связать по GPRS пару GSM модулей, например SIM800L (и тп).
Это возможно в сети одного провайдера?
Попробовал перевести модуль в режим сервера (по документации), отвечает ОК, показывает свой IP (локальный ?),
но ping от компа не проходит. Попробовать со вторым модулем?
Знаний сетевых протоколов и тп у меня нет, куда копать?
rx3apf
Mar 16 2018, 21:27
Без отдельного сервера с "белым" ip (хоть бы даже динамическим) фокус не получится. Или нужно для GPRS-сервера покупать "белый" ip.
Купил "белый" ip (динамический),
ping с компа прошел, зашел с компа по telnet - модем увидел подключение,
а дальше зависло все, кроме модема - что-то не так сделал, наверно, надо разбираться с протоколами.
Гугление показало, что проблема, конечно, не нова и решения имеются. Как правило, платные, вроде того же Taltech, Perle, Eltima и многих других...
Даже термин такой, оказывается есть: "Serial Tunneling".
Но, с одной стороны, несколько избыточные, ведь мне не нужно физическое подключение к порту,
с другой - не все "перехватывают" данные с порта, который уже открыт другой программой (выдают ошибку и - капут!),
ну, а с третьей - хотелось бы подешевле...
Цитата(jcxz @ Mar 16 2018, 12:34)

Уже много лет для решения подобных задач (преобразования интерфейса виртуального COM-порта в TCP-сокет) использую "Tibbo VSP Manager".
Спасибо, попробовал, в локалке работает, но с интернетом не получилось. Как-то ведь надо указать клиенту не только IP шлюза, но и конкретный хост. А то ведь под одним IP несколько устройств... Как это делается? И ещё вопрос. Вот создаёт VSP Manager виртуальный порт, если я туда шлю данные из гипертерминала, нет проблем. А как его связать с реальным портом?
Цитата(Herz @ Mar 19 2018, 15:56)

Спасибо, попробовал, в локалке работает, но с интернетом не получилось. Как-то ведь надо указать клиенту не только IP шлюза, но и конкретный хост. А то ведь под одним IP несколько устройств... Как это делается?
Вы имеете в виду, что устройство у Вас в локальной сети за роутером (шлюзом)? Тогда нужно пробросить TCP-порт с внешнего интерфейса роутера во внутреннюю сеть роутера. Сколько устройств - столько и портов пробросить. Как это делается - см. доку на роутер, у всех по разному. У роутеров MikroTik например эта операция называется "netmap".
Цитата(Herz @ Mar 19 2018, 15:56)

И ещё вопрос. Вот создаёт VSP Manager виртуальный порт, если я туда шлю данные из гипертерминала, нет проблем. А как его связать с реальным портом?
Tibbo только делает преобразование виртуальный_COM <-> TCP-порт.
Для преобразования реальный_COM <-> TCP-порт нужно юзать другие тулзы. Их тоже много разных, платных в основном. Но есть и фриварные.
Я например пользовал эту: ip_com_v3_0_0.exe (не помню где брал, но в инфо указано "IP->Com is Copyright ©2002, Stephen Hill").
Ясно, спасибо. Буду копать дальше.
Цитата(Leka @ Mar 17 2018, 00:22)

Хочется напрямую связать по GPRS пару GSM модулей, например SIM800L (и тп).
Получилось. Но удобные телематические тарифы (с округлением сессии до 1КБ) почему-то исчезли из продажи...
k155la3
Mar 23 2018, 15:10
Цитата(Leka @ Mar 23 2018, 02:16)

Получилось. Но удобные телематические тарифы (с округлением сессии до 1КБ) почему-то исчезли из продажи...
Удобные тарифы и услуги для таких задач предоставляются провайдерами для очень-корпоративных клиентов в виде VPN.
Нужен сервер с белым IP, на котором (или через который) Вы можете запустить свое host-сервер ПО.
(это будет "посредник" между Вашими GPRS точками.)
В сети есть сервисы, которые так или иначе предоставляют подобные возможности (broker).
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.