реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> OPENAT GPRS, connect
ArtemTom
сообщение Jul 2 2009, 06:59
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Помогите разобраться с подключением к серверу через GPRS с помощию OPENAT приложения.
Вобщем я с помощью АТ команд(WIP) настроил один модем для прослушивания определённого порта. Это будет сервер.
Дальше попытался сделать элементарное приложение в OPENAT на основе WIP tcp_client. Просто поменял там адрес сервера на то что у меня и GPRS_APN, login, pass. Только чтоб он постучался к серверу.
Залил приложение. Запускаю AT+WOPEN=1.
Вываливаются строки:
[GPRS]: initialized.
[GSM]: initialized.
[UART1]: initialized.
[UART2]: initialized.
[]: initialized.
И всё что дальше? На сервере ничего не происходит, он не определяет никакого коннекта к нему.
Я пока только начинаю разбираться, наверно что-то простое упустил?
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 08:43
Сообщение #2


Участник
*

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



Это отработала функция wip_netInitOpts. Далее надо wip_bearerOpen();wip_bearerSetOpts() по вкусу;wip_bearerStart(). Только не забудь проверить готовность сим карты.

upd : невнимательно прочитал нельзя менять GPRS_APN, логин и пароль иначе ты не выйдешь в инет через жпрс и не сможешь приконнектится

Сообщение отредактировал bronepoezd - Jul 2 2009, 08:53
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 09:09
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Это нужно в OPENAT прописывать? Или как из терминала уже запускать при этом приложении?
Мне бы хотелось чтоб при включении питания модем автоматически стучался в порт на сервере.

Как не менять APN пароль и логин там же по умолчанию:
#define GPRS_APN "websfr"
#define GPRS_USER "a2b"
#define GPRS_PASSWORD "access"
#define GPRS_PINCODE "0000"

А мне надо "internet.mts.ru", "mts", "mts". Или и с этим каракулями запустится?
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 09:18
Сообщение #4


Участник
*

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



да, надо именно
#define GPRS_APN "internet.mts.ru" и т.д. А как ты обращаешься к "серверу"? IP на каждой сессии меняется) Если ты хочешь сразу после включения стучаться-поймай сначала событие об полной инициализации сим карты

Сообщение отредактировал bronepoezd - Jul 2 2009, 09:19
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 09:25
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Ну сервер я не трогаю пока, запустил там "AT+WIPBR=4,6,0" и "AT+WIPCREATE=3,1,2000,5,8" и всё, узнал IP "AT+WIPBR=3,6,15" и ждет слушает.
А в OPENAT сделал приложение на основе WIP client изменил там IP адрес на полученный от сервера и порт поставил, APN поменял. Запустил наивно думал что приконектится, а нет. Для чего же это приложение пример, что оно делает кроме вывода этих строк?

Сообщение отредактировал ArtemTom - Jul 2 2009, 09:26
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 09:29
Сообщение #6


Участник
*

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



Да блин, я не понял, ты что , вместо internet.mts.ru адрес сервера в GPRS_APN поставил?=) Сокету присвается ненулевое значение?
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 09:32
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Нет конечно, там при создании на основе примера создается 7 файлов в cfg_gprs.c я исправил
#define GPRS_APN "websfr"
#define GPRS_USER "a2b"
#define GPRS_PASSWORD "access"
#define GPRS_PINCODE "0000"

А в entry_point.c
#define PEER_STRADDR "192.168.1.5"
#define PEER_PORT 2000
#define RCV_BUFFER_SIZE 10240
На нужные мне.
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 09:42
Сообщение #8


Участник
*

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



Ну тут уже судить тяжело попробуй получить для начала данные с какого -нить ya.ru . Поставь трейсы в процедурах чтоб понять где отваливается).
Лучше всего на мой взгяд написать свое приложение на основе примеров, как хоть понять можно как и что рабоает).
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 09:55
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



А если тариф такой что у модемов только локальная сеть и они инет не видят?
Ну что никто не делал на основе этого примера WIP tcp_client. Он должен только эти строки чтоль выводить или конектится сразу? Может после них нужно набрать что?
Лучше всего на мой взгяд написать свое приложение на основе примеров.
Да, но для этого надо наверно понять что в примерах, я пока начинаю разбираться и фразы
Только не забудь проверить готовность сим карты
поймай сначала событие об полной инициализации сим карты
Мне не совсем понятно как реализовывать.
Может кто делал что подобное дайте мне примеры, чтоб быстрей пошло.
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 10:03
Сообщение #10


Участник
*

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



>Мне не совсем понятно как реализовывать.

adl_tmrHandler_t Check_SIM()
{
adl_simState_e SIM_event;
SIM_event = adl_simGetState ();
TRACE((1,"SIM state: %d",SIM_event));
switch (SIM_event)
{
case ADL_SIM_STATE_INIT:
TRACE((1,"Service init state (PIN state not known yet)"));
break;

case ADL_SIM_STATE_REMOVED:
TRACE((1,"SIM removed"));
break;

case ADL_SIM_STATE_INSERTED:
TRACE((1,"SIM inserted (PIN state not known yet)"));
break;

case ADL_SIM_STATE_FULL_INIT:
TRACE((1,"SIM Full Init done"));
//sim готова к работе
break;

case ADL_SIM_STATE_PIN_ERROR:
TRACE((1,"SIM error state"));
break;

case ADL_SIM_STATE_PIN_OK:
TRACE((1,"PIN code OK, waiting for full init"));
break;

case ADL_SIM_STATE_PIN_WAIT:
TRACE((1,"SIM inserted, PIN code not entered yet"));
break;

case ADL_SIM_STATE_PUK_WAIT:
TRACE((1,"PIN is locked, PUK code is required"));
break;

case ADL_SIM_STATE_PUK_ERROR:
TRACE((1,"Wrong PUK input"));
break;

case ADL_SIM_STATE_FAILURE:
TRACE((1,"PUK is locked, SIM is unavailable"));
break;
};
}


void adl_main ( adl_InitType_e InitType )
{
My_tmr = (adl_tmr_t *)adl_tmrSubscribe ( TRUE, 10, ADL_TMR_TYPE_100MS, (adl_tmrHandler_t)Check_SIM );
}
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 10:29
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



bronepoezd Спасибо будем пробовать.
А может есть исходничком уже что-то работающее?
А то куда вставлять и сработало или нет непонятно.

И ещё вопрос чем отличаются файлы при компиляции?
gcc_Client.dwl
gcc_Client.wpb.dwl
У меня в некоторых случаях заливается только один в некоторых другой.

Сообщение отредактировал ArtemTom - Jul 2 2009, 10:15
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 10:36
Сообщение #12


Участник
*

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



Сжатый /несжатый я лью обычно несжатый) Мой исходник на 1500 строк точно будет еще менее понятен) http://www.compeljournal.ru/enews/2007/19/9 почитай вот это и встраивай в adl' евский пример hello world=) я так разбирался)
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 10:45
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Спасибо будем разбиратся.
А не бывало что при заливке сразу еррор и пишется передача прервана удаленной системой?
У тебя весь код одним файлом? И при какой скорости заливаешь?

Да и самое главное забыл, можно как тестить без заливки в модем? Что каждые 5 мин не перезаливать.
Target monitoring tool вроде для этого?

Сообщение отредактировал ArtemTom - Jul 2 2009, 10:51
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 11:12
Сообщение #14


Участник
*

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



1) Да бывает=)
2) все одним файлом rolleyes.gif
3) я так и не смог настроить эмулятор) так что забил и тестю на модеме) тока надо поаккуратнее)я долго его реанимировал после fault 004=)
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 12:06
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



bronepoezd
Тут есть вроде как работающие приложение, там и проверка как у тебя sim карты идет, и по коду вроде всё должно работать, а когда заливаю в модем он мне выдает все те же 5 строк и всё.
Как там дальше что запускать, по коду он мне должен строки выдавать по процессом ну или хотябы ошибки какие, а тут эти 5 строк и всё. Посмотри, может скажешь что.
Вобщем эти строки после WOPEN=1 выскакивают и что дальше? Автоматом все должно быть или мне что делать?
Прикрепленные файлы
Прикрепленный файл  src.rar ( 19.34 килобайт ) Кол-во скачиваний: 34
 
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 12:24
Сообщение #16


Участник
*

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



Мое на основе этого сделано) должно все нормально работать) Еще раз ) пихай везде где можно TRACE((1,"my_text")); чтобы понять где отваливается.
Пин код на симке надеюсь отключен?
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 12:38
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Да пин код отключен. Щас попихаю тогда.

Там даже перед этой функцией - wip_netInitOpts, которая и выводит:
Код
[GPRS]: initialized.
[GSM]: initialized.
[UART1]: initialized.
[UART2]: initialized.
[]: initialized.

Стоит TRACE (( 1, "Start" ));
Значит как минимум должно быть:
Код
Start
[GPRS]: initialized.
[GSM]: initialized.
[UART1]: initialized.
[UART2]: initialized.
[]: initialized.

А у меня просто эти строки. У тебя они появляются вобще при запуске?
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 12:48
Сообщение #18


Участник
*

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



В чем ты их смотришь? если m2m там есть настройки в трейсах. поставь галочки на всех каналах
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 12:51
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Ни в чём, компилю в Eclipse и в модем заливаю, а в Гипертерминале это и выдает.
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 2 2009, 12:52
Сообщение #20


Участник
*

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



если надо в гипер терминале - adl_atSendResponse(ADL_AT_RSP,"my_text"); вообще для отладки юзай m2m studio
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 2 2009, 12:54
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Ок щас и m2m поставлю буду пробовать.
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 04:57
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



В TRACE((2,"SIM state: %d",SIM_event)); есть %d, SIM_event.
А как мне в adl_atSendResponse(ADL_AT_RSP,"SIM state:"); это вставить, в мануалах для этой функции нет %d, как мне сделать аналог TRACE? Эта функция только строку может выводить или как в TRACE можно сделать.
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 3 2009, 05:41
Сообщение #23


Участник
*

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



Ну например так
char* temp=adl_memGet(10);
int k=0;
adl_atSendResponse(ADL_AT_RSP,wm_itoa(k, temp));

Сообщение отредактировал bronepoezd - Jul 3 2009, 05:42
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 05:53
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Ну а для примера выше это как будет выглядеть?
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 3 2009, 05:58
Сообщение #25


Участник
*

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



Блин чувак, почитай мануалы там все есть .Заюзай функцию wm_strcat()
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 06:09
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Ладно, это и не особо обязательно.
Вобщем у меня эта функция не проходит:
Код
static bool poll_creg_call(adl_atResponse_t *Rsp)
{
    ascii *rsp;
    ascii regStateString[3];
    s32 regStateInt;
    TRACE (( 1, "(poll_creg_call) Enter." ));

    rsp = (ascii *)adl_memGet(Rsp->StrLength);
    wm_strRemoveCRLF(rsp, Rsp->StrData, Rsp->StrLength);
    
    wm_strGetParameterString(regStateString, Rsp->StrData, 2);
    regStateInt = wm_atoi(regStateString);
    
    if ( 1 == regStateInt || 5 ==regStateInt) {          
        TRACE (( 1, "(poll_creg_callback) Registered on GPRS network." ));
        step=4;
    } else {  TRACE (( 1, "not ready %d",regStateInt));
      /* Not ready yet, we'll check again later. Set a one-off timer. */
      My_tmr_2=adl_tmrSubscribe( FALSE, CREG_POLLING_PERIOD, ADL_TMR_TYPE_100MS,
                        poll_creg);
    }                
    return FALSE;
}

Выдает:
(poll_creg_call) Enter.
not ready %d
(poll_creg_call) Enter.
not ready %d
И так по кругу. В чём может быть проблема?
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 3 2009, 06:18
Сообщение #27


Участник
*

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



что выдает команда "AT+CREG?" ?
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 06:21
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Не понятно лог такой:
AT+CREG?
(poll_creg_call) Enter.
not ready %d
Если в ручную то:
AT+CGREG?
+CGREG: 0,1
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 3 2009, 06:37
Сообщение #29


Участник
*

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



После regStateInt = wm_atoi(regStateString);
добавь
TRACE((1,"regStateInt %d",regStateInt));

Что выдает?
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 07:04
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Выдаст
regStateInt %d
biggrin.gif . Я пока не разобрался как выводить переменную в терминал, а m2m у меня не ставится что-то.

bronepoezd
Просматриваю мануалы, там у adl_atSendResponse только вывод строки везде, то что ты описал совсем найти не могу. Может как ещё взможно вывести в терминал значение переменной?
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 3 2009, 07:32
Сообщение #31


Участник
*

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



itoa- стандартаная функция перевода инта в строку wm_itoa- она и есть. Описание есть в Basic_Development_Guide.pdf.
adl_atSendResponse выводит строку. Ну так и переведи все что надо вывести в строку, какие пробелмы?
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 07:48
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Проблемы в том что всё её описание это её упоминание с принемаемыми параметрами, ни примеров как использовать ничего нет.
Для меня непонятно как перевести это
Код
char* temp=adl_memGet(10);
int k=0;
adl_atSendResponse(ADL_AT_RSP,wm_itoa(k, temp));

в это
TRACE((1,"regStateInt %d",regStateInt));
В часности вот это непонятно
Код
char* temp=adl_memGet(10);
int k=0;

как относится к regStateInt?

Сообщение отредактировал ArtemTom - Jul 3 2009, 07:49
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 3 2009, 07:51
Сообщение #33


Участник
*

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



Еще раз) почитай как устроена itoa) где искать я тебе сказал) мануал идет вместе с SDK. k для примера- на экране у тебя выведется значение k то есть 0

Сообщение отредактировал bronepoezd - Jul 3 2009, 07:52
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 08:24
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Может тебе поможет понять что я в С не особо, и указатели всякие уже подзабыл. И читать одну строку устройства функции не долго. Я нашёл что ты говорил там же 1 строка про неё.
И мне ещё не понятно почему если тут всего 2-3 строки надо написать, тебе это тудно?

Так чтоль просто? Будет работать?
adl_atSendResponse(ADL_AT_RSP, wm_itoa(regStateInt,temp));

Работает выдает 0 вобщем, понятно всё. А как теперь это исправить? Почему 0 то?

Да, насколько я понимаю он проверяет сдесь "AT+CGREG?"? Так почему он будет не 0, если регистрация в GPRS вроде как должна идти только следующим щагом по коду?
"AT+CGREG?" как раз и проверяет статус регистрации в снти GPRS.
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 3 2009, 09:00
Сообщение #35


Участник
*

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



По идее должно выдавать 1,так как когда ты вводил вручную- выдавалось 0,1 и должно было вывести 2й параметр. Кароч) по идее процедура в данном случае нафиг не нужно, имхо=) так как в сети ты регистрируешься . попробуй обойти ее) Забей на if и сразу пиши step=4.
Это как я понимаю идет просто проверка есть сеть или нет. опять же это есть в описании к ат командам.
<stat>(второе значение)
0 :не зарегистрировано, мобильное оборудование не проводит поиск нового оператора
1 :зарегистрировано, домашний оператор
2 :не зарегистрировано, мобильное оборудование проводит поиск нового
оператора для регистрации
3 :регистрация отклонена
4 :неизвестно
5 :зарегистрировано, роуминг

Проблема в том что все хотят чтобы им все написали а мануалы никто читать не хочет)я просто сам столкнулся с этим когда разбирался пару месяуев назад) Посто надо повнимательнее почитать манулы и все) я тож не особо силен в сях , однако разобраться с этим вполне возможно)

Сообщение отредактировал bronepoezd - Jul 3 2009, 09:03
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 3 2009, 09:07
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



bronepoezd
Да я так и сделал просто вместо 1 поставил 0 при проверке. И всё дальше прошло. Теперь разбираюсь с остальным.
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 6 2009, 04:56
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



bronepoezd
Можешь подкинуть интересные функции из своей программы, проверки всякие может что ещё есть?
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 6 2009, 05:38
Сообщение #38


Участник
*

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



Ну думаю это будет полезно=) нашел на вейвкомовском форуме правда иногда работает странно)
//--------------------------------------------------------------------------------------------------------
s32 GetTime(void)
{
adl_rtcTime_t time;
s32 milliseconds;
adl_rtcGetTime(&time);
milliseconds = (s32)1000*time.SecondFracPart/32768;
milliseconds += (s32)1000*time.Second;
milliseconds += (s32)(60*1000)*time.Minute;
milliseconds += (s32)(60*60*1000)*time.Hour;
milliseconds += (s32)(24*60*60*1000)*time.Day;
return milliseconds;
}
//-----------------------------------------------------------------------------------------------------
void OATSleep (u16 msec)
{
s32 initial_time;
u16 diff = 0;
initial_time = GetTime();
while (diff<msec)
{
diff = GetTime() - initial_time;
}
}
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 6 2009, 05:58
Сообщение #39


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Как-то не работает у меня, может не туда вписал.
Она для чего вообще?

Сообщение отредактировал ArtemTom - Jul 6 2009, 06:03
Go to the top of the page
 
+Quote Post
bronepoezd
сообщение Jul 6 2009, 06:34
Сообщение #40


Участник
*

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



Задержка без передачи управления: OATSleep (20); -задержка 20 мс.
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 6 2009, 07:29
Сообщение #41


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



А на каком этапе её вызывать? И что может быть полезного, какие возможны лаги без неё? Я тут накопал:
Цитата
После включения питания загруженное в модем приложение обеспечивает автоматическое подключение к сети GSM/GPRS и установление между двумя модемами прозрачного канала обмена данными (TCP/IP-сокета). В процессе работы контролируются нештатные ситуации (сбои SIM-карты, уровень GSM-сигнала, регистрация в сети GSM/GPRS, сбои в сети оператора связи, передача данных через TCP/IP-сокет, активность на порту данных и т.п.) и обеспечивается максимально быстрое восстановление соединения, в том числе, за счет перезагрузки или перехода на резервный канал.
Для настройки режимов работы модема введено расширение AT-команд.
Для исключения ситуации ”зависания” модема все этапы установления соединения и передачи данных охвачены контролем времени завершения (более 30 контролируемых тайм- аутов). В том числе, реализованы тайм-аут на отсутствия приема-передачи данных по интерфейсу и тайм-аут на попытку возврата с резервного канала на основной.

Вот biggrin.gif. Типа так. Вот такие проверки.

Что как тихо, я не порошу всё это). Так просто, какое мнение по поводу этого?
Go to the top of the page
 
+Quote Post
sobr
сообщение Jul 6 2009, 07:29
Сообщение #42


Знающий
****

Группа: Свой
Сообщений: 926
Регистрация: 18-01-07
Пользователь №: 24 552



Цитата
"192.168.1.5"
"Это внутренний IP, на сервере должен быть внешний.
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 6 2009, 07:40
Сообщение #43


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



sobr
Это не надо, там только первый файл работает appli.c, насколько я понимаю. Остальные есть т.к. приложение создано на основе примера из стандартных.
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 14 2009, 08:23
Сообщение #44


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Вобщем я застопорился на UART.
Ситуация такая:
Файл adl_fcm.h
Цитата
// Old constants for compatibility
#define ADL_FCM_FLOW_GSM_DATA ADL_PORT_GSM_BASE
#define ADL_FCM_FLOW_GPRS ADL_PORT_GPRS_BASE
#define ADL_FCM_FLOW_V24_UART1 ADL_PORT_UART1
#define ADL_FCM_FLOW_V24_UART2 ADL_PORT_UART2
#define ADL_FCM_FLOW_V24_USB ADL_PORT_USB

// Flow subscribed as slave only
#define ADL_FCM_FLOW_SLAVE 0x8000

// Constants for compatibility
#define ADL_FCM_FLOW_V24_MASTER ADL_FCM_FLOW_V24_UART1
#define ADL_FCM_FLOW_V24 ( ADL_FCM_FLOW_V24_UART1 | ADL_FCM_FLOW_SLAVE )

При таком определении
UART1_handle=adl_fcmSubscribe ( ADL_FCM_FLOW_V24_MASTER,(adl_fcmCtrlHdlr_f) UART1_ctrl(adl_fcmDataHdlr_f)UART1_data );
У меня зависает, лог такой:
Код
* My program step 1 * - Wait for step 1
SIM state: 3 - SIM Full Init done
* My program step 15 *
OPEN UART2
Handle UART2 return value: 0
UART1_ctrl: 0 ----- завис всё

Дальше идет перезагрузка и приложение выполняется сначала опять до этого этапа.
Т.е. как я понимаю у меня не открывается UART1.
Если же поставить UART2, т.е.
UART1_handle=adl_fcmSubscribe (ADL_FCM_FLOW_V24_UART2,(adl_fcmCtrlHdlr_f) UART1_ctrl, (adl_fcmDataHdlr_f)UART1_data );
То приложение проходит нормально:
Код
* My program step 1 * - Wait for step 1
SIM state: 3 - SIM Full Init done
* My program step 15 *
OPEN UART2
Handle UART2 return value: 0
UART1_ctrl: 0 - ADL_FCM_EVENT_FLOW_OPENNED
UART1_ctrl: 2 - ADL_FCM_EVENT_V24_DATA_MODE
* My program step 2 *
AT+CREG?
CGREG - 0
...

Но дальше при отправке через UART2 у меня ничего не выводится в терминал.
Если запустить такой код
Код
wip_debug("\n OPA");
adl_fcmSendData (UART1_handle,"Data",4);

То в терминале появится
Код
OPA
UART1_ctrl: 7 - ADL_FCM_EVENT_MEM_RELEASE

Data не выводится.
При выполнении в функции
Цитата
void UART1_write(void)
{ s8 res;
wip_debug("\nWrite to UART2");
res=adl_fcmSendData (UART1_handle,"\r\nInstalling application...\r\n", 29);
wip_debug("\nwrite to UART2: %i",res);
switch (res)
{ case OK: {wip_debug(" - OK");}; break;
case ADL_FCM_EVENT_MEM_RELEASE: {wip_debug(" - ADL_FCM_EVENT_MEM_RELEASE");}; break;
case ADL_FCM_RET_OK_WAIT_RESUME: {wip_debug(" - ADL_FCM_RET_OK_WAIT_RESUME");}; break;
case ADL_RET_ERR_PARAM: {wip_debug(" - ADL_RET_ERR_PARAM");}; break;
case ADL_RET_ERR_UNKNOWN_HDL: {wip_debug(" - ADL_RET_ERR_UNKNOWN_HDL");}; break;
case ADL_RET_ERR_BAD_STATE: {wip_debug(" - ADL_RET_ERR_BAD_STATE");}; break;
case ADL_FCM_RET_ERR_WAIT_RESUME: {wip_debug(" - ADL_FCM_RET_ERR_WAIT_RESUME");};break;
};
};

Лог такой:
Код
Write to UART2
write to UART2: 0 - OK
UART1_ctrl: 7 - ADL_FCM_EVENT_MEM_RELEASE

Т.е. пишет что вроде всё нормально, но информация же должна показыватся в терминале?
Кто может чем помочь. Почему зависает первый UART и работает второй?
Почему не выводится данные в терминал а вместо этого UART1_ctrl: 7 - ADL_FCM_EVENT_MEM_RELEASE?
Может с этим надо что делать AT+WMFM=...?
И если я что ввожу из терминала то должна по идеи выполнятся функция UART1_data? Она не выполняется совсем.
Go to the top of the page
 
+Quote Post
ArtemTom
сообщение Jul 14 2009, 09:32
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 22-06-09
Пользователь №: 50 523



Вопрос пока снимается.
Там оказывается не виснет).
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 02:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01773 секунд с 7
ELECTRONIX ©2004-2016