📄 sms.c
字号:
/*************************************************
文件名:SMS.C
功 能:与短信相关的代码
*************************************************/
#include <W77C32.h>
#include "hal.h"
#include "SMS.h"
//发送AT命令
void SENDCMD(uchar cmdlen,uchar *cmd)
{uchar i=0;
for(;cmdlen>0;cmdlen--)
{SBUF=cmd[i++];
while(TI==0);
TI=0;
}
}
//发送一个字符
void SENDCHAR(uchar c)
{ SBUF=c;
while(TI==0);
TI=0;
}
//获得发送手机的号码和数据
void GETNUMBER_DATA(void)
{uint i;
for(;rcount>0;rcount--)
{if((rbuff[rcount]==0x38)&&(rbuff[rcount-1]==0x30)&&(rbuff[rcount-2]==0x0A)&&(rbuff[rcount-3]==0x0D))
for(i=0;i<14;i++)
{number_buff[i]=rbuff[rcount+23+i];
}
datalen=(DoubleAscii2Byte(rbuff[rcount+55],rbuff[rcount+56]))*2;
for(i=0;i<datalen;i++)
{databuff[i]=rbuff[rcount+57+i];
}
break;
}
}
//向指定的号码发送短消息(内容为:短信已收到!)
void SENDSMS(void)
{ulong i=0xfffff;
rcount=0;//数据缓冲区指针回0
SENDCMD(10,&cmgs);
SENDCHAR(0x0D);
while(rbuff[rcount-1]!=">")
{i--; //超时返回
if(i==0)
{return;}
}
SENDCMD(10,&smsdata0);
SENDCMD(14,&number_buff); //发送号码
SENDCMD(20,&smsdata1);
SENDCHAR(0x1A); //Ctrl+z发送短信
i=0xffffff; //发送短消息超时处理
while(receive_ok==0)
{i--;
if(i==0) //超时还未响应则返回
{rcount=0;
receive_ok=0;
return;}
}
receive_ok=0;
rcount=0;
}
//读取指定索引号的短信内容
void READSMS(void)
{ulong i=0xfffff;
rcount=0;
SENDCMD(8,&cmgr);
SENDCHAR(index_buff[0]);
if(index_len==2)
{SENDCHAR(index_buff[1]);}
SENDCHAR(0x0D);
while(receive_ok==0)
{i--;
if(i==0) //超时还未响应则返回
{rcount=0;
receive_ok=0;
return;}
}
receive_ok=0;
}
//删除指定索引号的短信内容
void DELSMS(void)
{ulong i=0xffff;
rcount=0;
SENDCMD(8,&cmgd);
SENDCHAR(index_buff[0]);
if(index_len==2)
{SENDCHAR(index_buff[1]);}
SENDCHAR(0x0D);
while(receive_ok==0)
{i--;
if(i==0) //超时还未响应则返回
{rcount=0;
receive_ok=0;
return;}
}
receive_ok=0;
rcount=0;
}
//计算短信索引号
void GET_INDEX(void)
{for(;rcount>0;--rcount)
if(rbuff[rcount]==0x2C) //用逗号来定位
{if((rbuff[rcount+2]>=0x30)&&(rbuff[rcount+2]<=0x39))
{index_len=2;
index_buff[0]=rbuff[rcount+1];
index_buff[1]=rbuff[rcount+2];
break;
}
else
{index_len=1;
index_buff[0]=rbuff[rcount+1];
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -