|
|
  |
Q64 организация TCP/IP с помощью OpenAt, Использование adl_grps в WIP плагине |
|
|
|
Dec 28 2011, 11:29
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
Люди подскажите плииз, был контроллер раньше, и по уарту управлял модемом wavecom FXT002, все работало замечательно. Но тут случиласт проблема нехватки озу на контроллере, вот решил использовать озу самого модема ну соответственно с помощью Open AT. Взял пример ихних что бы создать тсп_клиента, и начался какой то кошмар. Проходит ввод пин кода adl_simSubscribe( evh_sim, GPRS_PINCODE);, возвращается состояние ADL_SIM_EVENT_FULL_INIT: Дальше делаю все как в примере после запроса adl_atCmdCreate( "AT+CREG?", FALSE, poll_creg_callback, ADL_STR_CREG, NULL); попадаю вот сюда ..... if ( 1 == regStateInt || 5 ==regStateInt) { TRACE (( 1, "(poll_creg_callback) Registered on GPRS network." )); open_and_start_bearer(); } ..... вызываю открыть беар. Но функция ..... if ((r=wip_bearerOpen(&b,"GPRS", evh_bearer, NULL)) !=0) { TRACE (( 1, "wip_bearerOpen r = %d ",r )); //return FALSE; } ..... мне постоянно возвращает значение r=-28, и соответственно дальше ничгео не работает. Может подскажите из за чего такое мождет происходить?
|
|
|
|
|
Dec 28 2011, 13:36
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 10-05-11
Пользователь №: 64 905

|
А WIP стек перед этим инициализировали?
|
|
|
|
|
Dec 28 2011, 15:02
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
Да инициализировал, там стоит вначале программы r = wip_netInitOpts( WIP_NET_OPT_DEBUG_PORT, WIP_NET_DEBUG_PORT_UART1, WIP_NET_OPT_END); Это может быть как то связано с отладкой? Я запускаю программу в режиме RTE, модем подлючен по usb к компу, вот сейчас допустим wip_bearerOpen вернул 0, а на след операторе: r = wip_bearerSetOpts( b, WIP_BOPT_GPRS_APN, GPRS_APN, WIP_BOPT_LOGIN, GPRS_USER, WIP_BOPT_PASSWORD, GPRS_PASSWORD, WIP_BOPT_END); вылетает окно дизассемблера, и после этого, программа виснет, и дальше логику отследить невозможно в принипе  .
|
|
|
|
|
Dec 28 2011, 16:23
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
Еще на счет отладки в m2m, у меня почему то получается запустить отладку только в RTE режиме. А вот тут вот запускают по дргуом, но почему то у меня так не получилось. http://www.youtube.com/watch?v=q_NTeAN-p_0...player_embedded
|
|
|
|
|
Dec 29 2011, 05:46
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
оказывается проблема вот в этих параметрах: GPRS_USER и GPRS_PASSWORD, если ставлю их в NULL, отладчик вылетает на wip_bearerSetOpts, ставлю их в gdata или в *, то он проходит установку те wip_bearerSetOpts, но вылетает на старте беар, с ошибкой -27, и пишет [WIP] No more ctx, call adl_gprsUnsubscribe(). Оператор мегафон, у него никогда не было ни логина ни пароля, что можно еще попробовать туда записать?
|
|
|
|
|
Dec 29 2011, 07:17
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Может, не совсем в тему, но если уж совсем упретесь в глухую стену, то помните о возможности соединения "вручную". Можно отлогировать конект РС с подходящим драйвером модема. Причем нет необходимости в реализации полного ррр, достаточно отработать его по минимальному шаблону, т.к. в GSM сам алгоритм ррр зависит только от прошивки модуля, но не от оператора. Таким образом, после CGDCONT и ATD обычно достаточно двух обменов фиксированными пакетами для LCP, одного обмена для PAP и двух-трех - для IPCP. Из дополнительных функций понадобится 7D-преобразование и crc16. В итоге получаем как бы raw-сокет с полным доступом к IP-заголовкам. Если обмен будет только по UDP, то просто дописываем IP-UDP заголовок к датаграмме (с длиной данных, UDP CS можно 0 , считаем IP CS и crc16, выполняем 7D-преобразование и отправляем в порт). Для TCP-сокета гимора чуть побольше (необходимо "тройное рукопожатие" вначале, вести счетчики SEQ и ACK и таймауты повторных отсылок), но вполне реализуемо. В итоге получаем абсолютно прозрачную и полностью управляемую вами реализацию обмена без глюков встроенного стека.
|
|
|
|
|
Dec 29 2011, 07:29
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
Да хочется же разобраться с wip, сейчас вот где стопорится: начинается соеденение с жпрс, а потом модем почему то, судя по лампочке, сбрасывается, отладка опять же ничего не показывает.
GPRS]: GPRS CTX (cid=1) found [GPRS]: GPRS EVENT SETUP OK (cid=1): GPRS activate
+WIND: 3
+WIND: 13
+WIND: 1
+WIND: 16
+WIND: 4
+WIND: 10,"SM",0,"FD",0,"ON",0,"SN",0,"EN",0
+WIND: 11,,,,"9D59FA612615B2190DCB1F8273AE906B","CDD9FB4785F604BADC77D4B146B6147 C",
+WIND: 7
[GPRS]: open: -> DISCONNECTED [GPRS]: start: -> CONNECTING [WIP] No more ctx, call adl_gprsUnsubscribe() [GPRS]: close: -> CLOSED
|
|
|
|
|
Dec 29 2011, 09:38
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 10-05-11
Пользователь №: 64 905

|
Цитата(Vlad1977 @ Dec 29 2011, 07:46)  оказывается проблема вот в этих параметрах: GPRS_USER и GPRS_PASSWORD, если ставлю их в NULL, отладчик вылетает на wip_bearerSetOpts, ставлю их в gdata или в *, то он проходит установку те wip_bearerSetOpts, но вылетает на старте беар, с ошибкой -27, и пишет [WIP] No more ctx, call adl_gprsUnsubscribe(). Оператор мегафон, у него никогда не было ни логина ни пароля, что можно еще попробовать туда записать? Заменяете их просто пустыми кавычками #define GPRS_USER ""
|
|
|
|
|
Dec 29 2011, 11:19
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
вот же фигня какая, оказалось все банально просто, открутилась антенна на модеме  , сеть он кое как видел, а вот жпрс не работал.
|
|
|
|
|
Jan 18 2012, 08:57
|

Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830

|
Цитата(Vlad1977 @ Jan 13 2012, 12:17)  А как правильно закрыть соединение c GPRS, что бы выключить модем, в опен ат? Я сейчас делаю так: вызываю wip_close(), потом попадаю на функцию finalizzer, она вызывается когда сокет закрыт. И в ней уже пытаюсь закрыть wip_bearerClose(), но в ответ приходит ошибка -24. Что это за ошибка понять не могу  По поводу ошибки - WIP_BERR_BAD_HDL При открытии есть параметр wip_bearer_t *br, его же надо и при закрытии использовать //глобальная переменная wip_bearer_t br; wip_bearerOpen( &br, "GPRS", Handler обработчик сообщений, NULL) wip_bearerStart ( br ); wip_bearerClose( br);
|
|
|
|
|
Jan 18 2012, 12:19
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
Цитата(bolmoe @ Jan 18 2012, 12:57)  По поводу ошибки - WIP_BERR_BAD_HDL При открытии есть параметр wip_bearer_t *br, его же надо и при закрытии использовать
//глобальная переменная wip_bearer_t br;
wip_bearerOpen( &br, "GPRS", Handler обработчик сообщений, NULL) wip_bearerStart ( br ); wip_bearerClose( br); спасибо с этим уже разобрался. Может вы сталкивались с повышенным потреблением? модем жрет собара порядка 30-40мА в sleep режиме w32k=1, уже и open at отключил вообще. А пишут что должен потьреблять порядка 3-4 мА.
|
|
|
|
|
Jan 19 2012, 06:23
|

Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830

|
Цитата(Vlad1977 @ Jan 18 2012, 15:19)  спасибо с этим уже разобрался. Может вы сталкивались с повышенным потреблением? модем жрет собара порядка 30-40мА в sleep режиме w32k=1, уже и open at отключил вообще. А пишут что должен потьреблять порядка 3-4 мА. Честно говоря не сталкивался, задача немного другая, используем FASTRACK GO( 2686) и GL6100(WMP 100). Питаются от сети 220В, постоянно в GPRS висит, получает от и отправляет данные на сервер(а)...  Энергию не бережем  кстати, а DTR сигнал учитываете, а то при AT+W32K=1 отруливание SLEEP режимом происходит сигналом DTR, может просто терминал не находится в sleep режиме? Чтобы без DTR -> AT+W32K=1,0
|
|
|
|
|
Jan 19 2012, 19:30
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
Цитата(bolmoe @ Jan 19 2012, 10:23)  Честно говоря не сталкивался, задача немного другая, используем FASTRACK GO( 2686) и GL6100(WMP 100). Питаются от сети 220В, постоянно в GPRS висит, получает от и отправляет данные на сервер(а)...  Энергию не бережем  кстати, а DTR сигнал учитываете, а то при AT+W32K=1 отруливание SLEEP режимом происходит сигналом DTR, может просто терминал не находится в sleep режиме? Чтобы без DTR -> AT+W32K=1,0 Конечно dtr учитывается, в sleep mode он явно попадает, тк потребление после w32k снижается с 90ма до 30ma и сразу перестает реагировать на ат команды, через рс232. Как только dtr в 1цу загоняешь, модем просыпается. При том интересно, что если физически из модема выдернуть кабель рс232 в sleep mode, то потребление еще снижается и становится примерно 20-25ма, хотя это тоже много. И еще это потребление одинаково при рабочем gsm модуле и без него, одинаково высокое я бы сказал. Попробую завтра компорт командой отключить, хотя не уверен что это поможет. Еще можно попробовать все ноги на рс232 на землю опустить.... А больше идей никаких че то нету  , я уже даже светодиод на модема отключил, для чистоты эксперимента, что бы ничего ему не мешало.
|
|
|
|
|
Jan 20 2012, 07:20
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-04-09
Пользователь №: 47 606

|
точно, погсле команды at+wasr=1, уарт отключается полностью и потребление становится как и заявлено 2-3мА.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|