?? atcmd.c
字號:
//******************************************************************
//直接按照內容執行AT指令:CEN666666#57:AT+CREG?
//參數:paraptr=命令代碼以后的參數的地址
//返回值:成功1,失敗0,同時產生serialmsg消息
//函數說明:
//正確時回復短信:執行后AT指令返回的內容
//錯誤時回復短信:密碼錯誤或命令錯誤或參數錯誤
//******************************************************************
bit cen_run_at_cmd(uchar *paraptr)
{
uchar len=0,mdelay=0;
paraptr++;//跳過":"
//獲取并校驗AT指令,控制符除外
while(isprint(*paraptr+len)) len++;
*(paraptr+len) = '\r';
*(paraptr+len+1) = '\0';
send_string_dir(paraptr,0);
clear_watchdog();
while (mdelay<LDELAY)//無應答時最長延時60秒
{
if(bufloc(comatbuf,"OK")) break;
else if(bufloc(comatbuf,"ERROR"))
{
serialmsg = CEN_CMD_ERROR;
return 0;
}
delay_10ms(60);
clear_watchdog();
mdelay++;
}
clear_watchdog();
//執行后AT指令返回內容在comatbuf中,必需復制到短信緩沖區中
//轉換AT指令返回內容中的控制符為空格
for(len=0;len<strlen(comatbuf);len++)
{
comsmsbuf[len] = comatbuf[len];
if(!isprint(comatbuf[len])) comsmsbuf[len] = 0x20;
}
comsmsbuf[strlen(comatbuf)] = 0;
if(!send_sms_text(srcphone,comsmsbuf))
{
errorSMS = 1;
return 0;
}
return 1;
}
//修改工作參數:CEN666666#59:[序號][參數]
bit cen_set_param(uchar *contentptr,uchar *paraptr)//?????
{
uchar index;
uchar mmask[2];
paraptr++;//跳過':'
index = (*paraptr++ & 0x0f) *10;
index += (*paraptr++ & 0x0f);
if(index>1)
{
serialmsg = CEN_PARA_ERROR;
return 0;
}
mmask[0] = toint(*paraptr++) * 16 + toint(*paraptr++);
mmask[1] = toint(*paraptr++) * 16 + toint(*paraptr++);
FLASH_WriteNByte((uint)&alarm_state_mask,mmask,2);
// alarm_state_mask
if(!send_sms_text(srcphone,contentptr))
{
errorSMS = 1;
return 0;
}
return 1;
}
//未知短信轉發
bit trans_sms_unknow(uchar *paraptr)
{
if(!send_sms_pdu(center_phoneno,paraptr))
{
errorSMS = 1;
return 0;
}
return 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -