📄 at_app.c
字号:
dialPanel = CreateWindow( WNDCLASS_KEYBD,
NULL,
WS_CHILD|KBS_DIALPAD|0xff,
1,(U16)(formH-16),
(U16)(formW-2),16,
mainwin,
0,
NULL);
// SetFocus( editor );
CreateTimer( &ringTimer, 10000, NULL, NULL, ALARM_MODE|AUTO_CLEAR_MODE );
while( !quit )
{
ASIXGetMessage( &msg, NULL, 0, 0 );
switch( msg.message )
{
case WM_COMMAND:
if( msg.lparam == btCall )
{
//char *add = "13809000282";
//char *add = "13851614197";
//char *add = "13813839703";
//char *add = "0253794248";
char *add = GetEditorStr( editor, NULL, 0 );
DIAL( add );
state = ST_DIALING;
SetWindowText( stState, "拨号中", NULL );
}
else if( msg.lparam == btHangUp )
{
HANG_UP( );
SetWindowText( stState, "通话结束", NULL );
}
else if( msg.lparam == btDel )
{
MSG ed_msg;
ed_msg.message = WM_CHAR;
ed_msg.lparam = editor;
ed_msg.wparam = ASIX_KEY_DROP;
ed_msg.data = ((ASIX_WINDOW *)editor)->ctrl_str;
AdvSendMessage(GetCurTask()->id, (P_MESSAGE)(&ed_msg), NO_SWAP_TASK);
}
else if( msg.lparam == btSMS )
{
SMSCenter( );
}
break;
case WM_AT:
switch( msg.lparam )
{
case AT_RPS_OK:
// uartmsg.message = SM_SWITCH;
// uartmsg.lparam = SWAP_TASK_LATER;
// uartmsg.wparam = PSA_TASK_ID;
// uartmsg.data = NULL;
// SysSendMessage( SYSTASK_ID, &uartmsg );
if( state == ST_DIALING )
{
state = ST_TALKING;
SetWindowText( stState, "通话中", NULL );
}
// else
// SetWindowText( stState, "OK", NULL );
break;
case AT_RPS_RING:
{
ID tid;
get_tid( &tid );
uartmsg.message = SM_SWITCH;
uartmsg.wparam = SWAP_TO_FOREGROUND;
uartmsg.lparam = tid;
uartmsg.data = NULL;
SysSendMessage( SYSTASK_ID, &uartmsg );
}
SetWindowText( stState, "有电话", NULL );
StartTimer( ringTimer );
break;
case AT_RPS_CONNECT:
SetWindowText( stState, "Connect", NULL );
break;
case AT_RPS_BUSY:
SetWindowText( stState, "占线", NULL );
break;
case AT_RPS_NO_CARRIER:
SetWindowText( stState, "对方挂机", NULL );
break;
case AT_RPS_ERROR:
SetWindowText( stState, "错误", NULL );
break;
case AT_RPS_CMTI:
{
ID tid;
get_tid( &tid );
uartmsg.message = SM_SWITCH;
uartmsg.wparam = SWAP_TO_FOREGROUND;
uartmsg.lparam = tid;
uartmsg.data = NULL;
SysSendMessage( SYSTASK_ID, &uartmsg );
}
switch( ReceiveSMSDlg( ) )
{
case IDOK:
{
AT_RPS_PAR *par = (AT_RPS_PAR *)msg.data;
SUBPAR *subpar = par->head;
// get sms index
subpar = subpar->next;
READ_SMS( subpar->data );
}
break;
default:
break;
}
FreeParameter( msg.data );
break;
case AT_RPS_CLIP:
{
ID tid;
get_tid( &tid );
uartmsg.message = SM_SWITCH;
uartmsg.lparam = SWAP_TO_FOREGROUND;
uartmsg.wparam = tid;
uartmsg.data = NULL;
SysSendMessage( SYSTASK_ID, &uartmsg );
}
{
AT_RPS_PAR *par = (AT_RPS_PAR *)msg.data;
SUBPAR *subpar = par->head;
char info[25];
dataLen = (U8)strlen( subpar->data );
memcpy( info, &subpar->data[2], dataLen -3 );
info[dataLen-3] = '\0';
//SetWindowText( stState, info, NULL );
FreeParameter( msg.data );
ReceiveCallDlg( info );
}
break;
default:
break;
}
break;
case WM_TIMER:
SetWindowText( stState, "No carrier", NULL );
CreateTimer( &ringTimer, 10000, NULL, NULL, ALARM_MODE|AUTO_CLEAR_MODE );
break;
case WM_QUIT:
uartmsg.message = SM_SWITCH;
uartmsg.wparam = SWAP_TASK_LATER;
uartmsg.lparam = 0;
uartmsg.data = NULL;
SysSendMessage( SYSTASK_ID, &uartmsg );
// quit = 1;
break;
}
DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
}
DestroyWindow( mainwin );
return 0;
}
U8 SMSCenter( void )
{
MSG msg, uartmsg;
U32 mainwin;
U32 stSrcAd;
U32 edSrcAd;
U32 btSend, btRead, btDel, btReply;
U32 editor;
U32 kb;
// U32 hGC;
U8 quit = 0;
// WINDOW ARRANGEMENT
const U16 formW = PHY_LCD_W, formH = PHY_LCD_H, formX = 0, formY = 0;
const U16 stW = 40, stH = 20;
const U16 stSrcAdX = formX + 4, stSrcAdY = formY + 22;
const U16 edW = formW - 8, edH = 60, edSrcAdW = edW - stW - 4, edSrcAdH = stH;
const U16 edSrcAdX = stSrcAdX + stW + 4, edSrcAdY = formY + 22;
const U16 edX = stSrcAdX, edY = stSrcAdY + stH + 4;
const U16 btW = 32, btH = 20, btGap = ( formW - btW * 4 )/5;
const U16 btSendX = formX + btGap, btSendY = edY + edH + 4;
const U16 btReadX = formX + formW - btW - btGap, btReadY = btSendY;
const U16 btDelX = btSendX + btW + btGap, btDelY = btSendY;
const U16 btReplyX = btDelX + btW + btGap, btReplyY = btSendY;
mainwin = CreateWindow( WNDCLASS_WIN,
"短信中心",
WS_OVERLAPPEDWINDOW,
formX,formY,
formW,formH,
0,
0,
NULL);
btSend = CreateWindow( WNDCLASS_BUTTON,
"发送",
WS_CHILD | BS_REGULAR,
btSendX,btSendY,
btW,btH,
mainwin,
0,
NULL);
btRead = CreateWindow( WNDCLASS_BUTTON,
"读取",
WS_CHILD | BS_REGULAR,
btReadX,btReadY,
btW,btH,
mainwin,
0,
NULL);
btReply = CreateWindow( WNDCLASS_BUTTON,
"回复",
WS_CHILD | BS_REGULAR,
btReplyX,btReplyY,
btW,btH,
mainwin,
0,
NULL);
btDel = CreateWindow( WNDCLASS_BUTTON,
"删除",
WS_CHILD | BS_REGULAR,
btDelX,btDelY,
btW,btH,
mainwin,
0,
NULL);
stSrcAd = CreateWindow( WNDCLASS_STATIC,
"收信人:",
WS_CHILD | SS_TEXT,
stSrcAdX,stSrcAdY,
stW,stH,
mainwin,
0,
NULL);
edSrcAd = CreateWindow( WNDCLASS_EDITOR,
NULL,
WS_CHILD | ES_SINGLELINE | ES_RIGHT,
edSrcAdX,edSrcAdY,
edSrcAdW,edSrcAdH,
mainwin,
0,
NULL);
editor = CreateWindow( WNDCLASS_EDITOR,
NULL,
WS_CHILD | ES_MULTI_REGULAR,
edX,edY,
edW,edH,
mainwin,
0,
NULL);
kb = CreateWindow( WNDCLASS_KEYBD,
NULL,
WS_CHILD|KBS_PINGYING|0xff,
1,(U16)(formH-16),
(U16)(formW-2),16,
mainwin,
0,
NULL);
SetFocus( editor );
while( !quit )
{
ASIXGetMessage( &msg, NULL, 0, 0 );
switch( msg.message )
{
case WM_COMMAND:
if( msg.lparam == btSend )
{
char *sms, *add;
add = GetEditorStr( edSrcAd, NULL, 0 );
sms = GetEditorStr( editor, NULL, 0 );
if( *add != '\0' && *sms != '\0' )
SEND_SMS( add, sms );
}
else if( msg.lparam == btRead )
{
switch( ReadSMS( "1" ) )
{
case IDOK:
break;
default:
break;
}
}
else if( msg.lparam == btReply )
{
}
break;
case WM_AT:
switch( msg.lparam )
{
case AT_RPS_RING:
quit = 1;
break;
case AT_RPS_ERROR:
SetWindowText( stSrcAd, "Error", NULL );
SetWindowText( editor, "错误", NULL );
break;
case AT_RPS_CMTI:
{
ID tid;
get_tid( &tid );
uartmsg.message = SM_SWITCH;
uartmsg.wparam = SWAP_TASK_LATER;
uartmsg.lparam = tid;
uartmsg.data = NULL;
SysSendMessage( SYSTASK_ID, &uartmsg );
}
switch( ReceiveSMSDlg( ) )
{
case IDOK:
{
AT_RPS_PAR *par = (AT_RPS_PAR *)msg.data;
SUBPAR *subpar = par->head;
// get sms index
subpar = subpar->next;
READ_SMS( subpar->data );
}
break;
default:
break;
}
FreeParameter( msg.data );
break;
case AT_RPS_READY:
SEND_SMS_DATA();
break;
default:
break;
}
break;
case WM_QUIT:
quit = 1;
break;
}
DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
}
DestroyWindow( mainwin );
return 0;
}
U8 ReadSMS( char *number )
{
MSG msg, uartmsg;
U32 mainwin;
U32 stSrcAd, stDate;
U32 btPrev, btNext, btDel, btReply;
U32 editor;
// U32 hGC;
U8 quit = 0;
U8 curSMSNum = atoi( number );
U8 result = 0;
// WINDOW ARRANGEMENT
const U16 formW = PHY_LCD_W, formH = PHY_LCD_H, formX = 0, formY = 0;
const U16 stW = formW - 8, stH = 20;
const U16 stSrcAdX = formX + 4, stSrcAdY = formY + 22;
const U16 stDateX = stSrcAdX, stDateY = stSrcAdY + stH;
const U16 edW = stW, edH = formH - 90, edX = stSrcAdX, edY = stDateY + stH;
const U16 btW = 32, btH = 20, btGap = ( formW - btW * 4 )/5;
const U16 btPrevX = formX + btGap, btPrevY = formY + formH - 24;
const U16 btNextX = formX + formW - btW - btGap, btNextY = btPrevY;
const U16 btDelX = btPrevX + btW + btGap, btDelY = btPrevY;
const U16 btReplyX = btDelX + btW + btGap, btReplyY = btPrevY;
mainwin = CreateWindow( WNDCLASS_WIN,
"收到的短信",
WS_OVERLAPPEDWINDOW,
formX,formY,
formW,formH,
0,
0,
NULL);
btPrev = CreateWindow( WNDCLASS_BUTTON,
"前一条",
WS_CHILD | BS_REGULAR,
btPrevX,btPrevY,
btW,btH,
mainwin,
0,
NULL);
btNext = CreateWindow( WNDCLASS_BUTTON,
"后一条",
WS_CHILD | BS_REGULAR,
btNextX,btNextY,
btW,btH,
mainwin,
0,
NULL);
btReply = CreateWindow( WNDCLASS_BUTTON,
"回复",
WS_CHILD | BS_REGULAR,
btReplyX,btReplyY,
btW,btH,
mainwin,
0,
NULL);
btDel = CreateWindow( WNDCLASS_BUTTON,
"删除",
WS_CHILD | BS_REGULAR,
btDelX,btDelY,
btW,btH,
mainwin,
0,
NULL);
stSrcAd = CreateWindow( WNDCLASS_STATIC,
NULL,
WS_CHILD|SS_TEXT,
stSrcAdX,stSrcAdY,
stW,stH,
mainwin,
0,
NULL);
stDate = CreateWindow( WNDCLASS_STATIC,
NULL,
WS_CHILD|SS_TEXT,
stDateX,stDateY,
stW,stH,
mainwin,
0,
NULL);
editor = CreateWindow( WNDCLASS_EDITOR,
NULL,
WS_CHILD | ES_MULTI_REGULAR | ES_READONLY,
edX,edY,
edW,edH,
mainwin,
0,
NULL);
// SetFocus( editor );
READ_SMS( number );
while( !quit )
{
ASIXGetMessage( &msg, NULL, 0, 0 );
switch( msg.message )
{
case WM_COMMAND:
if( msg.lparam == btPrev )
{
char preSMS[4];
if( curSMSNum != 0 )
{
curSMSNum--;
sprintf( preSMS, "%d", curSMSNum );
ReadSMS( preSMS );
}
}
else if( msg.lparam == btNext )
{
char preSMS[4];
if( curSMSNum != 50 )
{
curSMSNum++;
sprintf( preSMS, "%d", curSMSNum );
ReadSMS( preSMS );
}
}
else if( msg.lparam == btDel )
{
char curSMS[4];
MSG uartmsg;
sprintf( curSMS, "%d", curSMSNum );
DELETE_SMS( curSMS );
if( WAIT_AT_COMMAND_RPS( &uartmsg, AT_COM_CMGD ) == SYS_OK )
{
if( curSMSNum == LastSMS )
{
curSMSNum--;
LastSMS--;
}
READ_SMS( curSMS );
}
}
else if( msg.lparam == btReply )
{
quit = 1;
result = IDOK;
}
break;
case WM_AT:
switch( msg.lparam )
{
case AT_RPS_RING:
quit = 1;
break;
case AT_RPS_ERROR:
SetWindowText( stSrcAd, "Error", NULL );
SetWindowText( stDate, "Error", NULL );
SetWindowText( editor, "错误", NULL );
break;
case AT_RPS_CMTI:
{
ID tid;
get_tid( &tid );
uartmsg.message = SM_SWITCH;
uartmsg.wparam = SWAP_TASK_LATER;
uartmsg.lparam = tid;
uartmsg.data = NULL;
SysSendMessage( SYSTASK_ID, &uartmsg );
}
switch( ReceiveSMSDlg( ) )
{
case IDOK:
{
AT_RPS_PAR *par = (AT_RPS_PAR *)msg.data;
SUBPAR *subpar = par->head;
// get sms index
subpar = subpar->next;
READ_SMS( subpar->data );
}
break;
default:
break;
}
FreeParameter( msg.data );
break;
case AT_RPS_CMGR:
{
AT_RPS_PAR *par = (AT_RPS_PAR *)msg.data;
SUBPAR *subpar = par->head;
int i = 0, line = 0;
SMS_DELIVER_PDU_CONTENT *pdu;
if( curSMSFormat == 0 ) // PDU format
{
int k = 0;
// get user data
while( subpar->next != NULL && k < 3 )
{
subpar = subpar->next;
k++;
}
pdu = TranslateSDPC( subpar->data );
if( pdu != NULL )
{
char time[30];
TIME_STAMP *t = &pdu->time;
SetWindowText( stSrcAd, pdu->oa, NULL );
sprintf( time, "20%02u年%u月%u日 %02u:%02u:%02u",
t->year, t->month, t->day, t->hour, t->min, t->sec );
SetWindowText( stDate, time, NULL );
SetWindowText( editor, pdu->ud, NULL );
}
FreeSDPC( pdu );
}
FreeParameter( msg.data );
}
break;
default:
break;
}
break;
case WM_QUIT:
quit = 1;
break;
}
DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
}
DestroyWindow( mainwin );
return result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -