Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переходим с GPRS в интернет из локальной сети
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Alezi
Добрый день! Вводная часть проблемы, имеется программа, которая получает/принимает данные из интернета через GPRS модем по COM-порту. Появилась возможность брать интернет из локальной сети по Ethernet, либо через USB модем от Yota. Вопрос, возможно ли "обмануть" программу, заставив ее думать что она получает доступ в интернет через GPRS модем ? Есть ли подобные решения, поскольку изобретать велосипед совсем не хочется. wacko.gif
vintick
Может конвертор Ethernet -> to COM ?
Но какой протокол был по прямому COM-y?
CADiLO
Роутер нужен, так как сам преобразователь не сумеет законектиться к провайдеру.

Берем роутер с минимум двумя Ethernet портами и чтобы один порт мог стать как WAN. Настраиваем его чтобы он коннектился к провайдеру через WAN порт, желательно PPoE чтобы не морочиться с логином-паролем. Ставим в роутере автораздачу IP через DHCP. Далее на второй порт вешаем банальный преобразователь ETHERNET<>RS232. Свой IP он получит от роутера автоматом. Если нужно с 3G USB модема, то берем роутер с USB портом понимающим 3G модемы. Это если в общих чертах. Но могут быть нюансы в самой программе - тут уж конкренее надо смотреть....
Alezi
Проблема в том, что программа общается с модемом командами "AT" и присутствие интернета на компьютере она не видит. Как вариант думал что то типа "виртуального модема" или драйвера, принимающего и отвечающего запросам программы на установление соединения и открытия сокета, а потом пересылкой данных через Ethernet.
CADiLO
Тогда прийдется взять что-то типа PIC18F67J60-I/PT в котором есть Ethernet и COM, и самому сделать переходник написав преобразование.
Ну или програмное преобразование, перехватывая сообщения от программы.
Alezi
Программный способ наиболее предпочтителен.
Как писал выше, нет желания изобретать велосипед, может есть аналоги программ или варианты решения?
CADiLO
Думаю что без велосипеда не обойтись, так как скорее всего ваша программа не ширпотреб и стандартных решений нет.
molecul
Цитата(Alezi @ Apr 16 2013, 07:02) *
либо через USB модем от Yota.

А что за модем? Может быть он может через виртуальный COM работать AT командами?
andrewlekar
Цитата
Может быть он может через виртуальный COM работать AT командами?

Скорее всего сможет. Вот только для 3G модемов и для GSM модемов, насколько я помню, разный номер нужен для дозвона. Если та программа позволяет задавать строку инициализации модема, то вполне можно с USB модемом поработать.
molecul
Цитата(andrewlekar @ Apr 16 2013, 12:55) *
Скорее всего сможет. Вот только для 3G модемов и для GSM модемов, насколько я помню, разный номер нужен для дозвона. Если та программа позволяет задавать строку инициализации модема, то вполне можно с USB модемом поработать.

Для GSM и UMTS/HSPA один и тот же номер - *99# либо *99***1#. Для LTE пока точно сказать не могу...
andrewlekar
Ну тогда вопрос с APN решить и в путь.
Alezi
Мысль ушла в другую сторону....подключение к сотовой сети не нужно!
Интернет можно взять из локальной сети, либо через прокси, либо через VPN, либо через USB модем от Yota (потому что бесплатный на 128к).
Используемый до сих пор модем Siemens MC35i и хотя в программе можно указать номер, хоть *99# либо *99***1#, для нее, как я понимаю, это не существенно. Программа ожидает от модема подтверждение, вида "Ok" и продолжает действия.
molecul
Цитата(Alezi @ Apr 17 2013, 02:27) *
Мысль ушла в другую сторону....подключение к сотовой сети не нужно!
Интернет можно взять из локальной сети, либо через прокси, либо через VPN, либо через USB модем от Yota (потому что бесплатный на 128к).
Используемый до сих пор модем Siemens MC35i и хотя в программе можно указать номер, хоть *99# либо *99***1#, для нее, как я понимаю, это не существенно. Программа ожидает от модема подтверждение, вида "Ok" и продолжает действия.

1. YOTA это LTE, т.е. стандарт сотовой связи.
2. Решил лично проверить. Huawei E392 от Мегафона (на знаю, что в Йоте предлагают, подозреваю что нечто аналогичное) - после установки драйверов образуются два виртуальных COM. На одном из них и висит AT интерфейс, через который можно работать модемом. Одна тонкость - там по умолчанию сыпятся URC о состоянии сети и уровне сигнала, как их отключить - нужно искать систему команд соответствующего модема.
CADiLO
И кроме того не все USB модемы работают АТ командами.
Вот темка по CDMA - http://www.microchip.su/showthread.php?t=3637
Alezi
Суть того, что пытался сделать:

Virtual Modem – эмуляция виртуальных модемов и факсов.

Virtual Modem создает виртуальные com-порты и придает виртуальные модемы для них, которые работают так же, как реальные (поддержка Hayes AT-команд), однако использовать протокол TCP/IP для подключения к удаленному хосту. Это дает лучшую скорость и надежность передачи данных, а также до 255 модемов, которые могут быть созданы в любой системе.

Если все получится, то хорошо!
Alezi
Оказалось немного не то. На "другой" стороне требуется установка аналогичной программы и обмен данными возможен только между ними. Хотя эмулятор модема работает нормально, командами "AT" заставляет думать программу, что она общается с модемом. Только сигнал в линии не находит, поскольку клиентская часть не установлена.
GeGeL
Скорее всего, это и есть единственное тривиальное решение вашей задачи. Иначе пришлось бы вручную программно сэмулировать АТ-интерфейс модема и ррр-сервер, передавая затем полученные IP-данные через raw-сокет в Ethernet (плюс еще свой код роутера). А это уже далеко не тривиальная задача, и не каждому программисту по силе.
Можно это сделать даже на пике, но опять же писать ррр-сервер придется самому, т.к. в стандартном майкрочиповском стеке его нету.

Цитата(Alezi @ Apr 17 2013, 10:53) *
На "другой" стороне требуется установка аналогичной программы и обмен данными возможен только между ними. Хотя эмулятор модема работает нормально, командами "AT" заставляет думать программу, что она общается с модемом. Только сигнал в линии не находит, поскольку клиентская часть не установлена.

На другой стороне - это где? В модеме или на удаленном сервере/программе?
Модем стандартный, с обычной прошивкой? Модемы между собой как соединяются: GPRS, CSD или голосом (GMSK и т.д.)?
Виртуал-модем в интернет выходит? Лог снимали по RS232 между программой и реальным модемом а затем между программой и виртуальным? Сетевым анализатором видите пакеты от вашей программы->виртуального модема в WAN?
Alezi
Цитата
На другой стороне - это где? В модеме или на удаленном сервере/программе?

Требуется установка программы клиента на удаленной стороне. К сожалению, прямого доступа туда нет, все происходит через программу->Siemens MC35i GPRS модем->сервер в интернете.
Цитата
Модем стандартный, с обычной прошивкой? Модемы между собой как соединяются: GPRS, CSD или голосом (GMSK и т.д.)?

Модем обычный, соединяется через GPRS по номеру *99***1#.
Цитата
Виртуал-модем в интернет выходит?

Нет, после набора "виртуального номера", который идет с моей программы, выдает сигнал линия не доступна.
Цитата
Лог снимали по RS232 между программой и реальным модемом а затем между программой и виртуальным?

Да, все одинаково до момента, когда проверяется доступность линии. Потом виртуальный модем выдает сигнал о занятой линии.
Цитата
Сетевым анализатором видите пакеты от вашей программы->виртуального модема в WAN?

Не смотрел, виртуальный модем изначально просит установить адрес/порт удаленного хоста. Поскольку на стороне сервера программы такой нет, то думаю не поможет.
avor_il
Если есть протокол обмена между программой и реальным модемом, то можно взять null-modem кабель
воткнуть его на другой порт в этом же компьютере и повесить на него свой эмулятор протокола обмена.
В этом же эмуляторе сделать обмен данными с сервером и отдавать данные в клиентскую программу через
comport.
GeGeL
Цитата(Alezi @ Apr 23 2013, 09:33) *
виртуальный модем изначально просит установить адрес/порт удаленного хоста.

Тогда не повезло: ваш виртуальный модем - "не от того самолета двери". Скорее всего, он предназначен для простого пробрасывания RS232 через Internet. Вам же нужен полноценный эмулятор GPRS-модема. И готовые решения на вскидку мне не известны.

Я делал систему наоборот: езернет-клиент (спутниковый ресивер) подключался через ENC28J60+PIC18F1320 и далее через Siemens - GPRS -> удаленный сервер. И это была далеко не тривиальная задача (езернет-стек + простейший роутер + ppp-клиент на ассемблере). На PC сделать обратное решение проще, но все равно это сложно и должно себя оправдывать по трудозатратам.

Цитата(avor_il @ Apr 23 2013, 13:34) *
Если есть протокол обмена между программой и реальным модемом, то можно взять null-modem кабель
воткнуть его на другой порт в этом же компьютере и повесить на него свой эмулятор протокола обмена.
В этом же эмуляторе сделать обмен данными с сервером и отдавать данные в клиентскую программу через
comport.

В идеале эмулятор протокола обмена модема должен уметь обрабатывать АТ, быть ppp-сервером, затем роутером, а затем отсылать в интернет пакеты на уровне IP (ч/з RAW-сокет). Это подъемно на любитеьском уровне?
Реально, скорее всего, можно ограничиться шаблонным копированием ответов на АТ и фаз PPP вплоть до IPCP (получения IP-адреса и т.д.): эта часть для GPRS-модема постоянна. Но выполнять ppp-7D-преобразование, упаковывать в ррр, подсчитывать crc16 все равно необходимо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.