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

 
 
> Функция adl_smsSend в OpenAT, не работает
PriBoris
сообщение May 24 2009, 15:50
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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);
     }
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
kav
сообщение May 26 2009, 05:26
Сообщение #2





Группа: Новичок
Сообщений: 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-карта.Делайте отправку после инициализации.
Успехов.
Go to the top of the page
 
+Quote Post
PriBoris
сообщение May 26 2009, 13:57
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 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-командами пытаюсь отослать , то все корректно отсылается.
Цитата
Делайте отправку после инициализации.

Может как-то можно проверять инициализацию ? Или как-то можно принудительно переинициализировать ?
Go to the top of the page
 
+Quote Post
kav
сообщение Jun 2 2009, 03:46
Сообщение #4





Группа: Новичок
Сообщений: 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()
Go to the top of the page
 
+Quote Post
PriBoris
сообщение Jun 2 2009, 07:22
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 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))
Не знаю как это понимать.
Go to the top of the page
 
+Quote Post
PriBoris
сообщение Jun 4 2009, 12:09
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 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 жжот.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:50
Рейтинг@Mail.ru


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