📄 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 + -