Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: OpenAT
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Страницы: 1, 2
kban
Привет всем. Всем кто работал с данным зверем - просьба отписаться. Интересует следующее - как создавать НОВЫЕ проекты? С помощью Open AT Project Wizard - выбираем New Project и т.д.? Но тут начинаются проблемы - я создаю проект, Associated IDE выбираю c++. Потом в с++ проекте добавляю созданные мной файлы (уже откомпиленные в с++ т.е. ошибок нет). После чего сохраняю проект и делаю wmmake. Тут начинается что-то непонятное. То он ругается на .h - файлы, путь к которым в коде указывается явно, тем более с++ на них не ругается и видит их. То просто пишет no rule to make target "appli.c". Кстати, после того как он поругается на .h файлы при послед. попытке создать проект выдаёт эту же ошибку что нет правила.
Пытался просто создать проект типа hello-world и заменить там с++ файлы на свои - рез-т тот же.
Аналогично для примера pingGPRS.
Помогите разобраться плиз.
sz36
Цитата(kban @ Feb 20 2008, 10:37) *
Всем кто работал с данным зверем - просьба отписаться.


Ну я работал. Сделал таки на нем один проект, но дал себе слово больше с ним не связываться Это какой-то ужас, летящий на крыльях ночи :-)

Цитата(kban @ Feb 20 2008, 10:37) *
Интересует следующее - как создавать НОВЫЕ проекты?


ProjectWizard'ом создаем новый проект в новой папке, указывая необходимые плагины
Закрываем среду
Вручную переписываем свои *.h файлы в папку inc, *.c файлы - в папку src
Запускаем среду, при старте она их подхватывает
Права, я под Eclipse работал
KonstantinT
Хранцузы - такие затейники :-). Но через пол года - привык.
kban
Цитата
Вручную переписываем свои *.h файлы в папку inc, *.c файлы - в папку src

Вот и я так думал. Только вот проблема - С++ компилирует всё нормально, без ошибок. А при попытке сделать wmmake - он ругается на ВСЕ .h файлы, которые, кстати хранятся именно в папочке inc проекта. Либо (без исправлений, просто пересоздав проект) начинает ругаться на все функции которые описанны в .h файлах... Т.е - сами файлы видит, а функции в них - нет. И какой файл с++ считается по умолчанию главным? И при билде - он создаёт одну готовую прошивку из всех файлов?
dezzer
Банальная переустановка OpenAT зачастую излечивала эту среду от многих глюков.
de__
Цитата(kban @ Feb 26 2008, 12:16) *
Вот и я так думал. Только вот проблема - С++ компилирует всё нормально, без ошибок. А при попытке сделать wmmake - он ругается на ВСЕ .h файлы, которые, кстати хранятся именно в папочке inc проекта. Либо (без исправлений, просто пересоздав проект) начинает ругаться на все функции которые описанны в .h файлах... Т.е - сами файлы видит, а функции в них - нет. И какой файл с++ считается по умолчанию главным? И при билде - он создаёт одну готовую прошивку из всех файлов?


я все кидаю в src
а потом ручками правлю mak файл
типа
SRC_C_LIST = \
appli.c \
at.c \

SRC_H_LIST = \
at.h \
command2uart.h \
core.h \

SRC_H_LIST - методом научного тыка нашел.

какой файл главный? ну явно тот в котором находится функция
void adl_main ( adl_InitType_e InitType )

А французы гады редкостные. Официальный форум поддерживаются только такими же несчастными как ты сам ) Хотя этот форум - основной источник информации после кривой документации.

Заканчиваю (надеюсь) большой проект с этим девайсом -обмен данными по HTTP с внешним сервером. Ощущения противоречивые ;-) вроде когда все работает - морда довольная.
Но столько ржавых граблей нужно собрать! ппц.
kban
Спасибо всем за ответы. Установил - более-менее разобрался, пытаюсь работать. Вопрос в следующем - работу TCP/IP (клиент - сервер) вроде организовал, но как теперь сделать так, чтобы модем отсылал не ту информацию, которая ручками была забита в буфер в прошивке, а ту, которая на него приходит через COM порт или USB? Есть ли какой - нибуть зарезервированный под это дело буфер (предусмотренный производителем) который доступен из OpenAT без его обьявления? Всмысле уже вшитый в стандартную прошивку. И если он есть, то как до него достучаться?
alexQ
вот это не очень понятно:
>не ту информацию, которая ручками была забита в буфер в прошивке,


если хотите гнать данные с uart в сокет, то копайте в сторону FCM. буфер сами делайте памяти там свободной до дури. почитайте внимательно доки. там все разжевано.

USB может работать пока только как slave.
de__
Цитата(kban @ Mar 20 2008, 13:12) *
Спасибо всем за ответы. Установил - более-менее разобрался, пытаюсь работать. Вопрос в следующем - работу TCP/IP (клиент - сервер) вроде организовал, но как теперь сделать так, чтобы модем отсылал не ту информацию, которая ручками была забита в буфер в прошивке, а ту, которая на него приходит через COM порт или USB? Есть ли какой - нибуть зарезервированный под это дело буфер (предусмотренный производителем) который доступен из OpenAT без его обьявления? Всмысле уже вшитый в стандартную прошивку. И если он есть, то как до него достучаться?


Если вы взяли готовый пример, то для начала нужно выкинуть из него процентов 60 кода ) И в остатках - досконально разобраться.
Я понимаю конечно что автор визарда силен в Сях, но нафига было так извращаться?

Как я понимаю, этот буфер то есть, но его пользователю давать нельзя. Идеология ОС рушиться. Делать его волатильным? )
Короче ОЗУ дофига, можно выделить скока нужно.
Кстати в старый модем Q2406 я еле влазил. в новом Q24Pl на мегабайт больше и теперь комфортно )
alexQ
а в 26-м четыре и все работает намного быстрее.
и дешевле они ....
de__
Цитата(alexQ @ Mar 20 2008, 16:12) *
а в 26-м четыре и все работает намного быстрее.
и дешевле они ....


Не изучал этот вопрос... А почему они дешевле? В чем там засада? Там нужна внешяя память?
Ведь по всем параметрам 26ые лучше...
alexQ
26-е лучше конечно. а 24-е позиционируются как поддержка старых 24-х
поэтому и дороже.
вейвкомы просто стимулируют более быстрый переход на 26-е smile.gif
kban
Спасибо за ответ.
Цитата(alexQ @ Mar 20 2008, 17:26) *
USB может работать пока только как slave.
- а когда нибудь вообще он сможет работать как мастер?
Относительно FCM -
s8 dwl_Download ( u8 DwlType, u32 Length, u8 * pData, u8 FlowID, ascii * FileName, ascii * FilePath );
почемуто когда ставлю DwlType - DWL_TYPE_RAM - по GSM не работает...
Когда же меняю обратно на DWL_TYPE_APPLI - работает вроде... А можно ли вообще по GSM передать просто данные (не приложение)?
Делал так:
dwl_Download ( ( u8 ) DWL_AUTH_TYPE_PASSWORD | DWL_TYPE_RAM,
appdwl_RamBufferSize,
appdwl_RamBuffer,
ADL_FCM_FLOW_GSM_DATA,
NULL,
NULL )
Мож где ошибка?
kban
Пересоздал буфер - вроде начал передавать.... Только при попытке что - нить передать (писать в гипер терминале) выдаёт x-Modem transfere error. При передаче через x-Modem - вроде отправляет (пробовал отправить текстовый файл - показал что отправил...) А как мне теперь на втором модеме до этого файла достучаться? И как устроить передачу в автономном режиме (желательно не файлом, а как при соединении точка - точка, т.е. приходит потоковая информация на модем с COM - порта, и тут же её нужно передать на др. модем...)? Код следующий:
/* Call Service Handler */
s8 appdwl_CallHandler ( u16 Event, u32 CallID )
{
static bool DownloadStarted = FALSE;

TRACE (( appdwl_TraceLevel, "Call event : %d %d", Event, CallID ));

/* Switch on call event */
switch ( Event )
{
case ADL_CALL_EVENT_RING_DATA :
if ( !DownloadStarted )
{
TRACE (( appdwl_TraceLevel, "Call Handler -> auto answer" ));

/* Data call -> Start downloader */
adl_atSendResponse ( ADL_AT_UNS, "\r\nApplication Downloader -> start...\r\n" );
/* Get new bufer*/

appdwl_RamBufferSize=2*1024;
appdwl_RamBuffer = adl_memGet ( appdwl_RamBufferSize );

/* GSM data download start */
if ( dwl_Download ( (u8) DWL_AUTH_TYPE_NORMAL | DWL_TYPE_RAM,
appdwl_RamBufferSize,
appdwl_RamBuffer,
ADL_FCM_FLOW_GSM_DATA,
NULL,
NULL ) != OK )

{
// Start Downloader Error
adl_atSendResponse ( ADL_AT_UNS, "\r\nApplication Downloader -> failed\r\n" );
}
else
{
//TRACE(1,"STARTED!", );
TRACE (( appdwl_TraceLevel, "STARTED!" ));
// wm_sprintf ("\r\n STARTED! \r\n");
// Let's go !!!
DownloadStarted = TRUE;
ascii StrRsp [ 50 ];
wm_sprintf ( StrRsp, "\r\n%s: %d\r\n", DWL_STR_RAMDWL_CMD + 2, appdwl_RamBufferSize/1024 );
}
}
break;

default :
DownloadStarted = FALSE;
break;
}

return ADL_CALL_FORWARD;
}

И ещё - при попытке прошить один модем через другой по средствам GSM (как это предлагается делать в примере) постоянно после загрузки приложения (отправляет файл 100%) и перезагрузке принимающий модем выдаёт Download error... Пример использовал стандартный - Application_Download. Мож там чё дописать надо чтоб устаавливал по нормальному?
de__
Цитата(kban @ Apr 4 2008, 08:27) *
А как мне теперь на втором модеме до этого файла достучаться? И как устроить передачу в автономном режиме (желательно не файлом, а как при соединении точка - точка, т.е. приходит потоковая информация на модем с COM - порта, и тут же её нужно передать на др. модем...)


Как я понимаю здесь 2 пути: либо имея статичные IP адреса осуществить передачу через GPRS. Либо дозвоном на номер телефона в DATA режиме. Чтобы передавать данные с COM-порта - просто переключить его в DATA режим.
kban
Цитата(de__ @ Apr 4 2008, 17:32) *
Как я понимаю здесь 2 пути: либо имея статичные IP адреса осуществить передачу через GPRS. Либо дозвоном на номер телефона в DATA режиме. Чтобы передавать данные с COM-порта - просто переключить его в DATA режим.

Насчёт режимов передачи данных - это понятно. Непонятно только то, как происходит обмен? Всмысле - как от одного модема другому передать информацию - ясно, а как в 1 модеме настроить передачу СОМ->Модем->GPRS или voice call вот это не понятно... Для работы с СОМ портом внутри модема нужно ли использовать FCM, как записать принятое в буфер и т.д.?
de__
Хм. На вопрос "а мне все здесь непонятно, расскажите мне всё, как это работает" не хочется и отвечать. Так и хочется сказать RTFM!

"Для работы с СОМ портом внутри модема нужно ли использовать FCM, как записать принятое в буфер и т.д.?"
Смысл в том что нужно объявить подписку на нужный порт. (FCM) И при подписке в одном из параметров - указатель на вашу функцию обработчик. По событиям - обрабатываем...
Грабли - передающий буфер ограничен. (смотреть документацию для каждого случая) Если нужно послать больше - рвать на куски
kban
Прошу прощения, мож я чё не так написал...
Вопрос сформулмрую точнее... Если передавать данные по GSM, то делаем функцию Call_Handler(u16 Event, u32 Call_ID) где по событию Event делаем обработку... например ADL_CALL_EVENT_RING_DATA где отвечаем на звонок adl_callAnswer(), а затем по событию ADL_CALL_EVENT_ANSWER_OK подписываем
V24Handle = adl_fcmSubscribe ( USED_FLOW, V24CtrlHandler, V24DataHandler );
Интересует аналог для COM порта. Вместо adl_fcmSubscribe уже использовать adl_portSubscribe?

вопрос снимается... и правда протупил.. ещё оаз прошу прощения=)
kban
В интернете нашёл хорошую ссылочку - http://www.compeljournal.ru/enews/2007/19/9
Полезная, на мой взгляд)
kban
И снова здравствуйте. Сделал приложение, которое по подаче команды at+start начинает считывать данные, введённые с клавиатуры в буфер, пока не будет послан символ "a". Но есть один касяк - программа работает только 1 раз - после повторного введения команды at+start в функцию - обработчик этой команды программа приходит, но ничего не делает. В функции, обрабатывающей это событие стоит
V24Handle=adl_fcmSubscribe (ADL_PORT_UART1, (adl_fcmCtrlHdlr_f)V24CtrlHandler, (adl_fcmDataHdlr_f)V24DataHandler);
где в V24CtrlHandler я меняю командный режим на режим передачи данных, а затем в V24DataHandler после обработки данных меняю его обратно на командный режим... По-моему касяк в том, что в V24CtrlHandler программа попадает только 1 раз.... Может я не понял суть этой функции? Программа должна заходить в неё по событиям?
Код функции
bool V24CtrlHandler ( u8 Event )
{
bool bReturn = TRUE;
s32 sReturn;
TRACE (( 1, "V24 event %d", Event ));
adl_atSendResponse (ADL_AT_RSP, "\r\n Prishli v V24Ctrl handler!\r\n");

// Switch on event
switch ( Event )
{
case ADL_FCM_EVENT_FLOW_OPENNED :
sReturn = adl_fcmSwitchV24State ( V24Handle, ADL_FCM_V24_STATE_DATA );
TRACE (( 1, "Switch to data : %d", sReturn ));
bFCMIsReady = TRUE;
break;

case ADL_FCM_EVENT_RESUME :
bFCMIsReady = TRUE ;
TRACE (( 1, "Resume Data Flow"));
break;

case ADL_FCM_EVENT_MEM_RELEASE :
bFCMIsReady = TRUE ;
TRACE (( 1, "Data are sent"));
break;
}

return bReturn;
}


И ещё - может дело в adl_fcmSubscribe (ADL_PORT_UART1, (adl_fcmCtrlHdlr_f)V24CtrlHandler, (adl_fcmDataHdlr_f)V24DataHandler) и adl_fcmUnsubscribe(V24Handle); ? Куда правильно нужно ставить adl_fcmUnsubscribe(V24Handle);? Если сразу же после adl_fcmSubscribe - то просто зависает в режиме передачи данных...
kban
И ещё - в V24CtrlHandler на событие ADL_FCM_EVENT_FLOW_CLOSED ( как я понял из мануалов оно происходит во время adl_fcmUnsubscribe) вообще не реагирует...
sobr
По этому кусочку кода понять что то сложно, покажи весь сишный файл, если не комерческая тайна.
kban
#include "adl_global.h"

/***************************************************************************/
/* Mandatory variables */
/*-------------------------------------------------------------------------*/
/* wm_apmCustomStack */
/* wm_apmCustomStackSize */
/*-------------------------------------------------------------------------*/
/***************************************************************************/
const u16 wm_apmCustomStackSize = 1024;


/***************************************************************************/
/* Local variables */
/***************************************************************************/

/* String To Send List */
wm_lst_t StringList;

/* Flag for FCM State */
bool bFCMIsReady = TRUE;
bool flag = FALSE;

/* AT command buffer */
ascii ATCommand[ 512 ];
/* Used flow */
#define USED_FLOW ADL_PORT_UART1

static s8 V24Handle,UARTHandle;



/***************************************************************************/
/* Function : V24CtrlHandler */
/*-------------------------------------------------------------------------*/
/* Objet : FCM Control Events Handler */
/* */
/* Return : return value is not relevant */
/* */
/*-------------------------------------------------------------------------*/
/* Variable Name |IN |OUT|GLB| Utilisation */
/*--------------------+---+---+---+----------------------------------------*/
/* Event | | | | Event from GPRS Service */
/*--------------------+---+---+---+----------------------------------------*/
/***************************************************************************/
bool V24CtrlHandler ( u8 Event )
{
bool bReturn = TRUE;
s32 sReturn;
flag = FALSE;
TRACE (( 1, "V24 event %d", Event ));
adl_atSendResponse (ADL_AT_RSP, "\r\n Prishli v V24Ctrl handler\r\n");
// sReturn = adl_fcmSwitchV24State ( V24Handle, ADL_FCM_V24_STATE_DATA );
// Switch on event
switch ( Event )
{
case ADL_FCM_EVENT_FLOW_OPENNED :
adl_atSendResponse (ADL_AT_RSP, "\r\n Open \r\n");
sReturn = adl_fcmSwitchV24State ( V24Handle, ADL_FCM_V24_STATE_DATA );
adl_atSendResponse (ADL_AT_RSP, "\r\n Switch to data\r\n");
TRACE (( 1, "Switch to data : %d", sReturn ));
bFCMIsReady = TRUE;
break;

case ADL_FCM_EVENT_RESUME :
adl_atSendResponse (ADL_AT_RSP, "\r\n Resume \r\n");
sReturn = adl_fcmSwitchV24State ( V24Handle, ADL_FCM_V24_STATE_DATA );
adl_atSendResponse (ADL_AT_RSP, "\r\n Switch to data\r\n");
bFCMIsReady = TRUE ;
TRACE (( 1, "Resume Data Flow"));

break;

case ADL_FCM_EVENT_MEM_RELEASE :
bFCMIsReady = TRUE ;
TRACE (( 1, "Data are sent"));
break;
case ADL_FCM_EVENT_FLOW_CLOSED :

adl_atSendResponse (ADL_AT_RSP, "\r\n Flow closed\r\n");
sReturn = adl_fcmSwitchV24State ( V24Handle, ADL_FCM_V24_STATE_AT );\
bFCMIsReady = TRUE ;
TRACE (( 1, "Data are sent"));
break;
}

return bReturn;
}



void MyTimeout (u8 id)

{

adl_atSendResponse (ADL_AT_RSP, "\r\n Timer works!\r\n");
}

bool V24DataHandler ( u16 Length, u8 * Data )
{
adl_atSendResponse (ADL_AT_RSP, "\r\n Prishli v V24DATA handler!\r\n");
/* Scan received string */
u16 i,j,ATLastLength = wm_strlen ( ATCommand );

ascii * RecString = adl_memGet ( ( u16 ) ( Length ) );

TRACE (( 1, "V24DataHandler begin"));
wm_memcpy ( ( ascii * ) RecString, ( ascii * ) Data, Length );
adl_atSendResponse (ADL_AT_RSP, "\r\n Receive complete!\r\n");

for ( i = 0 ; i < Length ; i++ )
{
/* If string is empty, search for 'a' */
if ( ( wm_strlen ( ATCommand ) == 0 )
&& ( ( RecString [ i ] == 'a' )
|| ( RecString [ i ] == 'A' ) ) )
{
adl_fcmSwitchV24State ( V24Handle, ADL_FCM_V24_STATE_AT );
flag = TRUE;
// adl_fcmUnsubscribe(V24Handle);
// return TRUE;
// continue;
}


}
adl_fcmSendData (V24Handle, RecString, wm_strlen (RecString));
ATLastLength = 0;

adl_memRelease ( RecString );
// release credit
return TRUE;

}



void AtStartHandler (adl_atCmdPreParser_t *p)

{
adl_atSendResponse (ADL_AT_RSP, "\r\nHello, world!\r\n");
V24Handle=adl_fcmSubscribe (ADL_PORT_UART1, (adl_fcmCtrlHdlr_f)V24CtrlHandler, (adl_fcmDataHdlr_f)V24DataHandler);
if(flag==TRUE)
{
adl_atSendResponse (ADL_AT_RSP, "\r\n flag==TRUE\r\n");
adl_fcmUnsubscribe(V24Handle);
}
};

void AtSwitchHandler (adl_atCmdPreParser_t *p)

{
adl_atSendResponse (ADL_AT_RSP, "\r\nSwitch\r\n");
adl_fcmSwitchV24State ( V24Handle, ADL_FCM_V24_STATE_DATA );

};

void adl_main ( adl_InitType_e InitType )
{
adl_atSendResponse (ADL_AT_RSP, "\r\n Hi user, let's start our transfere!\r\n");
ascii * RecString1 = adl_memGet ( ( u16 ) ( 256) );
/* Initialize String To Send list */
StringList = wm_lstCreate ( WM_LIST_NONE, NULL );



/* Init AT command string */
ATCommand[ 0 ] = 0;
/* Subscribe to call events */

adl_atCmdSubscribe ("at+start", (adl_atCmdHandler_t)AtStartHandler, ADL_CMD_TYPE_ACT);
adl_atCmdSubscribe ("at+switch", (adl_atCmdHandler_t)AtSwitchHandler, ADL_CMD_TYPE_ACT);


}
Вот весь файл...
sobr
Попробуйте так...
Код
void AtStartHandler (adl_atCmdPreParser_t *p)

{
       adl_atSendResponse (ADL_AT_RSP, "\r\nHello, world!\r\n");
      
       if(flag==TRUE)
       {
             adl_atSendResponse (ADL_AT_RSP, "\r\n flag==TRUE\r\n");
             adl_fcmUnsubscribe(V24Handle);
             flag=FALSE;
       }
       else
       {
            V24Handle=adl_fcmSubscribe (ADL_PORT_UART1, (adl_fcmCtrlHdlr_f)V24CtrlHandler,    
       (adl_fcmDataHdlr_f)V24DataHandler);
       }
};
de__
Не понятно зачем вы переходите в ДАТА режим для отправки данных?

разве не достаточно просто послать
adl_atSendResponse(ADL_PORT_UART1,bufUart1);
или для текущего порта
adl_atSendResponse(ADL_AT_RSP,bufUart1);
или для вашего случая adl_atSendResponsePort(ADL_AT_RSP, p->Port, x)

Я как то написал универсальную функцию и забыл... Возможно кривовато
#define MAX_LEN_BUF_UART1 512 //максимальная длина посылки за один раз
unsigned char bufUart1[MAX_LEN_BUF_UART1+1]; //Буфер глобальный. Возможно так быстрее
unsigned int SendUart1(unsigned char *str)
{
unsigned char *pBuf;
unsigned int len, bufLen;

bufLen = len = (unsigned int)strlen(str);

if(!len) //Нулевую длину не обрабатываем
return 0;

if(len<=MAX_LEN_BUF_UART1)
{//Для буфера меньше допустимо возможного просто отправляем данные и выходим
adl_atSendResponse(ADL_PORT_UART1,str);
}
else
{ //Массив большой - пошлём кусками
pBuf = str;
do{
memset(bufUart1, 0, MAX_LEN_BUF_UART1+1);
strncpy(bufUart1, pBuf, MAX_LEN_BUF_UART1); //копируем кусок для отправки

adl_atSendResponse(ADL_PORT_UART1,bufUart1);

len = (unsigned int)strlen(pBuf);

if(len<=MAX_LEN_BUF_UART1)
break;
else
pBuf+=MAX_LEN_BUF_UART1;
}while(1);
}
return bufLen; //Возвращаем количество посланных байт
}
kban
Спасибо большое за ответы! Буду работать дальше!

Ещё вопрос - как вывести буфер на экран?
Какие параметры должны быть у wm_sprintf(ascii buf, ascii fmt, ...)?
Какой буфер тут имеется ввиду - тот который выводим? И fmt - Это формат? Если так - то при попытке вывода буфера, модем почемуто перезагружается....
sobr
Цитата(kban @ Apr 28 2008, 12:36) *
Ещё вопрос - как вывести буфер на экран?

adl_atSendResponse(ADL_AT_RSP, buf);
kban
И снова здравствуйте, уважаемые форумчане. Вопрос следующий - почемуто при работе с TCP сервер срабатывает на WIP_CEV_READ только 1 раз. В процессе обработки этого события вконце он отрубает клиента... Но когда этот же клиент конектится к этому серверу - он выдаёт, что коннект произошёл, а в WIP_CEV_READ не попадает, хотя клиент сообщает, что всё отослал успешно. В чём может быть касяк?
код:
case WIP_CEV_READ: {
int nread;
int i;
wip_debug ("[SAMPLE] Some data arrived\n");
adl_atSendResponse (ADL_AT_RSP, "\r\n Some data arrived\r\n");
nread = wip_read( ev->channel, rcv_buffer + rcv_offset,
sizeof( rcv_buffer) - rcv_offset);
if( nread < 0) { wip_debug( "[SAMPLE] read error %i\n", nread);
adl_atSendResponse (ADL_AT_RSP, "\r\n read error\r\n");
return; }
rcv_offset += nread;
if( rcv_offset == sizeof( rcv_buffer)) {
wip_debug( "[SAMPLE] Reception capacity exceeded, won't read more\n");
adl_atSendResponse (ADL_AT_RSP, "\r\n Reception capacity exceeded, won't read more\r\n");
} else {
wip_debug( "[SAMPLE] Wrote %i bytes of data from network to rcv_buffer. "
"%i bytes remain available in rcv_buffer\n",
nread, sizeof( rcv_buffer) - rcv_offset);

adl_atSendResponse(ADL_AT_RSP, "\n\r");

adl_atSendResponse(ADL_AT_RSP, rcv_buffer);

}
adl_atSendResponse(ADL_AT_RSP, "\n\r Povtor bufera \n\r");

adl_atSendResponse(ADL_AT_RSP, rcv_buffer);
adl_atSendResponse(ADL_AT_RSP, "\n\r");
for (i=0;i<sizeof( rcv_buffer);i++)
{
rcv_buffer[i]=0;
}
wip_close( ev->channel);
clients_count--;
break;
}
kban
И снова здраствуйте. Подскажите пожалуйста команду, которая перезагружает модем (всмысле реализацию её на OAT).
sobr
Цитата(kban @ May 8 2008, 11:41) *
И снова здраствуйте. Подскажите пожалуйста команду, которая перезагружает модем (всмысле реализацию её на OAT).

Код
adl_atCmdSend ( "at+cfun=1",NULL,NULL,NULL);
kban
Спасибо)
kban
Цитата(sobr @ May 8 2008, 12:17) *
Код
adl_atCmdSend ( "at+cfun=1",NULL,NULL,NULL);

А другие команды так подавать можно? Всмысле можно ли просто пользуясь стандартными АТ командами, подавая их таким оброазом, допустим, стартануть сервак TCP IP?
sobr
Цитата(kban @ May 8 2008, 13:43) *
А другие команды так подавать можно? Всмысле можно ли просто пользуясь стандартными АТ командами, подавая их таким оброазом, допустим, стартануть сервак TCP IP?

Да, причем если в место первого NULL написать название обработчика, а в место второго "*", то в обработчик будут сваливаться ответы. "*" это маска означающая прием всех ответов.
kban
А тогда (извиняюсь, мож я чё не понял...) какой смысл использовать плагин WIP и через него работать?
sobr
Цитата(kban @ May 8 2008, 14:35) *
А тогда (извиняюсь, мож я чё не понял...) какой смысл использовать плагин WIP и через него работать?

Все очень просто... WIP содержит стек TCP\IP, без него АТ команды касательные интернета не работают, далее если из приложения устанавливать сокет посредством АТ команд, то вся информация из соединения будет валиться в UART или USB (куда настроишь) и твоему приложению будет недоступна. По моему как то так...
kban
Пробовал разобраться с примерами GPS-приложений - так сходу ничего у меня не получилось, а срок поджимает... Слишком там всё уж запутанно... Может у кого есть пример простенького GPS приложения (прошивки)?
Мне надо то всего - получить время от GPS... Если есть - пришлите пожалуйста на мыло kban@ngs.ru или тут выложите - буду очень благодарен=)
kban
Или хотя бы последовательность действий (команд) для запуска GPS и получения времени.
kban
И снова здравствуйте! Кто-нибуль сталкивался с дистанционной перепрошивкой модемов? ПРобовал делать как в вейвкомовском примере AplicationDownolad, но после того, как перепрошивающий модем отсялыет всё перепрошиваемому, и тот перезагружается, он выдаёт Download error (InitType == ADL_INIT_DOWNLOAD_ERROR) и ничего не устанавливает. Параметры таковы:
if ( dwl_Download ( DWL_AUTH_TYPE_PASSWORD | DWL_APPLI_INSTALL | DWL_TYPE_APPLI,
0,
1, //может здесь касяк? Если шить не через GSM, а через serial, то номер ячейки нужно ставить 1=>по аналогии поставил и тут 1... В примере вообще NULL стояло...
ADL_FCM_FLOW_GSM_DATA,
NULL,
NULL ) != OK )
sobr
Не поделитесь этим примером?
kban
Вот пример вейвкома
sobr
Цитата(kban @ Jun 17 2008, 13:54) *
Вот пример вейвкома

Где??? huh.gif
kban
Дайте мыло - вышлю... чтото не выкладывается файл...
kban
Разобрался с перепрошивкой - всё заработало. Теперь встал вопрос - как совместить 2 прошивки в 1? Не хочется загромождать с-файл столь огромным кодом.
sobr
Цитата(kban @ Jun 17 2008, 15:00) *
Дайте мыло - вышлю... чтото не выкладывается файл...

Спасибо!
sobr
Цитата(kban @ Jun 18 2008, 12:51) *
Разобрался с перепрошивкой - всё заработало.

Может тебе будет интересно...Нажмите для просмотра прикрепленного файла
ArtemTom
Где можно скачать OpenAT?
У меня есть Open_AT_SDK_v4.01(400мб). Он ставится без ошибок, но не запускает проект видимо из-за несовпадения путей. В Cygwin выдает errorы на пути к компилятору и т.д.
Скачал с сайта wavecom M2M Studio 1.0.2(237мб) он не ставится, долго грузится и сообщает об ошибке какого-то log файла.
Я так понимаю что ещё этот OpenAT для всего разный? Мне нужен под windows XP для wavecom fastrack M1306B.
bronepoezd
OpenAT один) есть разный версии) после установки выбирается нужная прошивка. Не запускаться может если в пути есть русские буквы(имя пользователя например)
ArtemTom
Ну понятно что один, а какая версия нужна мне для перечисленного, и можно ли её где взять если я свой OPEN AT так и не запущу?
А где там после установки прошивку выбирать, и как посмотреть какая у меня прошивка?
bronepoezd
команда ati3 вообще z .pf. m2m studio для отладки и загрузки приложения , там же пишется версия прошивки стека и OS Рекомендую поставить) Проще всего обновить прошику на твоем модеме до той что идет в комплекте с OpenAt. через ту же m2m
ArtemTom
Выдает на ATI3 WAVECOM MODEM MULTIBAND 900E 1800
Спасибо за пояснения, хочу поставить OS и OPEN AT и m2m, вот у меня и вопрос дайте ссылку чтоль или на торрентах может где всё это есть, я никак не найду? Пусть даже и не новой версии.
А что за OS?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.