www.pudn.com > GSM-M51.rar > SMS.c
/************************************************* 文件名:SMS.C 功 能:与短信相关的代码 *************************************************/ #include#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 ") {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; } } }