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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> OPENAT GPRS, connect
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 Текстовая версия Сейчас: 31st July 2025 - 20:20
Рейтинг@Mail.ru


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