|
Функция adl_smsSend в OpenAT, не работает |
|
|
|
May 24 2009, 15:50
|
Частый гость
 
Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352

|
Wavecom Q64 OpenAT R7.3 Ни под каким углом не могу заставить модем отсылать sms c помощью функции adl_smsSend. Упорно возвращается ошибка -8 (ADL_RET_ERR_BAD_STATE), означающая the product is not ready to send an SMS (initialization not yet performed, or sending an SMS already in progress) Но при этом "продукт" прекрасно отсылает сообщения с помощью at-команд (at+cmgs ...). Само OpenAT-приложение чётко принимает входящие сообщения. Если послать на виртуальный порт at+csca? то возвращается csca: "+79219909090",145 , то есть по идее номер провайдера модуль знает. Что делать? Где искать засаду ? Вот основные фрагменты кода: Код static s8 SmsHandle = -1; static s32 SmsResult; static ascii SmsSendBuffer[200]; static ascii SmsSendNumber[20];
void adl_main ( adl_InitType_e InitType ) { ... SmsHandle = adl_smsSubscribe (SmsReceivedHandler,SmsControlHandler,ADL_SMS_MODE_TEXT); ... }
static bool SmsReceivedHandler(ascii *SmsTel, ascii *SmsTimeOrLength, ascii *SmsText) { ...
return TRUE; }
static void HeartbeatTimerHandler ( u8 ID, void * Context ) { ... ascii stemp[64]; HeartbeatCounter++; ...
if (HeartbeatCounter==6) { //adl_atCmdCreate( "at+csca=\"+79219909090\"",FALSE,(adl_atRspHandler_t)NULL,NULL); SmsResult = adl_smsSend(SmsHandle,SmsSendNumber,SmsSendBuffer,ADL_SMS_MODE_TEXT); wm_sprintf(stemp,"adl_smsSend result %d\r\n",SmsResult); adl_atSendResponse ( ADL_AT_UNS,stemp); } }
|
|
|
|
|
 |
Ответов
(1 - 5)
|
May 26 2009, 05:26
|
Группа: Новичок
Сообщений: 10
Регистрация: 9-12-08
Пользователь №: 42 313

|
Цитата(PriBoris @ May 24 2009, 23:50)  Wavecom Q64 OpenAT R7.3 Ни под каким углом не могу заставить модем отсылать sms c помощью функции adl_smsSend. Упорно возвращается ошибка -8 (ADL_RET_ERR_BAD_STATE), означающая the product is not ready to send an SMS (initialization not yet performed, or sending an SMS already in progress) Но при этом "продукт" прекрасно отсылает сообщения с помощью at-команд (at+cmgs ...). Само OpenAT-приложение чётко принимает входящие сообщения. Если послать на виртуальный порт at+csca? то возвращается csca: "+79219909090",145 , то есть по идее номер провайдера модуль знает. Что делать? Где искать засаду ? Вот основные фрагменты кода: Код static s8 SmsHandle = -1; static s32 SmsResult; static ascii SmsSendBuffer[200]; static ascii SmsSendNumber[20];
void adl_main ( adl_InitType_e InitType ) { ... SmsHandle = adl_smsSubscribe (SmsReceivedHandler,SmsControlHandler,ADL_SMS_MODE_TEXT); ... }
static bool SmsReceivedHandler(ascii *SmsTel, ascii *SmsTimeOrLength, ascii *SmsText) { ...
return TRUE; }
static void HeartbeatTimerHandler ( u8 ID, void * Context ) { ... ascii stemp[64]; HeartbeatCounter++; ...
if (HeartbeatCounter==6) { //adl_atCmdCreate( "at+csca=\"+79219909090\"",FALSE,(adl_atRspHandler_t)NULL,NULL); SmsResult = adl_smsSend(SmsHandle,SmsSendNumber,SmsSendBuffer,ADL_SMS_MODE_TEXT); wm_sprintf(stemp,"adl_smsSend result %d\r\n",SmsResult); adl_atSendResponse ( ADL_AT_UNS,stemp); } } У вас sms отправляется раньше, чем успевает инициалироваться sim-карта.Делайте отправку после инициализации. Успехов.
|
|
|
|
|
May 26 2009, 13:57
|
Частый гость
 
Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352

|
Цитата(kav @ May 26 2009, 09:26)  У вас sms отправляется раньше, чем успевает инициалироваться sim-карта.Делайте отправку после инициализации. Сообщение не отстылается ни через минуту после регистрации, ни через 10 минут, ни через пол часа. Более того, если я внутри приложения пытаюсь отослать cообщение командами типа Код adl_atCmdCreate( "at+cmgs=\"+79217880846\"",FALSE,(adl_atRspHandler_t)AtCmgsResponseHandler,"*",NULL); static bool AtCmgsResponseHandler( adl_atResponse_t *atResponse) { adl_atCmdSendText( FALSE , "testtesttesttesttesttest"); return FALSE; } то оно тоже не отсылается. И при всем при этом, если я по внешнему rs-232 at-командами пытаюсь отослать , то все корректно отсылается. Цитата Делайте отправку после инициализации. Может как-то можно проверять инициализацию ? Или как-то можно принудительно переинициализировать ?
|
|
|
|
|
Jun 2 2009, 03:46
|
Группа: Новичок
Сообщений: 10
Регистрация: 9-12-08
Пользователь №: 42 313

|
Цитата(PriBoris @ May 26 2009, 21:57)  Сообщение не отстылается ни через минуту после регистрации, ни через 10 минут, ни через пол часа. Более того, если я внутри приложения пытаюсь отослать cообщение командами типа Код adl_atCmdCreate( "at+cmgs=\"+79217880846\"",FALSE,(adl_atRspHandler_t)AtCmgsResponseHandler,"*",NULL); static bool AtCmgsResponseHandler( adl_atResponse_t *atResponse) { adl_atCmdSendText( FALSE , "testtesttesttesttesttest"); return FALSE; } то оно тоже не отсылается. И при всем при этом, если я по внешнему rs-232 at-командами пытаюсь отослать , то все корректно отсылается. Может как-то можно проверять инициализацию ? Или как-то можно принудительно переинициализировать ? посмотрите adl_simSubscribe()
|
|
|
|
|
Jun 2 2009, 07:22
|
Частый гость
 
Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352

|
Цитата(kav @ Jun 2 2009, 07:46)  посмотрите adl_simSubscribe() adl_simSubscribe( SimHandler, PINCODE) возвращает OK но при этом никогда не вызывается SimHandler если поинтересоваться у модема adl_simGetState() то в любое время его ответ ADL_SIM_STATE_INIT (Service init state (PIN state not known yet)) Не знаю как это понимать.
|
|
|
|
|
Jun 4 2009, 12:09
|
Частый гость
 
Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352

|
Это маразм. Накопал на форуме wavecom ветку, где у человека абсолютно те же заморочки. http://www.wavecom.com/modules/movie/scene...TATE_INIT#p8598После долгих мытарств у него получилось отослать сообщение: Цитата Hi all, I've used adl_adRecompact function at the beginning of OpenAt application (after every reset/power on) and the WIND:4 indication and the full sim card init indication both came back. Now I can use adl_smsSend with no problem. Я то же попробовал запустить adl_adRecompact и у меня тоже все заработало. Как может быть связано одно с другим ? Wavecom жжот.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|