**********************************************/ void Start_GSM(void) {
IGT=0;
Delay_ms(1000); IGT=1;
Delay_ms(1000); }
/******************************************************************************************************************/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数void GSM_INIT(void);实现功能:初始化TC35模块///////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************************************************/ void GSM_INIT(void) { LOOP:
Delay_ms(1000); sendstring(AT); Delay_ms(1000); sendstring(ATE); Delay_ms(1000);
sendstring(AT_CNMI); Delay_ms(1000);
sendstring(AT_CSCA); Delay_ms(1000);
for(Rx=0;Rx SystemBuf[Rx]=0x00; } Rx=0; sendstring(AT_CMGF); Delay_ms(1000); if((SystemBuf[2]=='O')&&(SystemBuf[3]=='K')) //判断是否模块初始化成功,成功的话模块会回复\给单片机 { // beep=1; //如果单片机没有收到OK,就继续发送初始化指令/ for(Rx=0;Rx SystemBuf[Rx]=0x00; } 44 Rx=0; } else { //beep=0; for(Rx=0;Rx SystemBuf[Rx]=0x00; } Rx=0; goto LOOP; } } /******************************************************************************************************************/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数void receive_ready(void);实现功能:接收短信准备/////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /******************************************************************************************************************/ void receive_ready(void) { uchar i; if((SystemBuf[5]==0x54)&&SystemBuf[6]==0x49) //如果有新短信(TI)来,模块会通过串口向单片机发送字符串, { // 此函数的功能是判断是否有新短信来,如果来的话就置位准备接受位标志为1 receiveready=1; //如果不是新短信的指令,就舍弃,并将接收数组清零/ } else { for(i=0;i /******************************************************************************************************************/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 45 ///////////////////函数 void message_read(void);实现功能:判断短信,准备是否回复短信给目标号码////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /******************************************************************************************************************/ void message_read(void) { if((sendready==1)&&(SystemBuf[5]==0x47)&&(SystemBuf[6]==0x52)) //GR send=1; } /******************************************************************************************************************/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数 void read_message(void);实现功能:发送读取短信指令,//////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /******************************************************************************************************************/ void read_message(void) { uchar i; Delay_ms(1000); for(i=0;i<3;i++) { numberbuf[i]=SystemBuf[14+i]; } for(i=0;i<8;i++) { AT_Read[i]=AT_CMGR[i]; } for(i=8;i<11;i++) { AT_Read[i]=numberbuf[i-8]; } for(Rx=0;Rx Rx=0; sendstring(AT_Read); //发送AT+CMGR=?,?代表短信储存所在位置 46 } /******************************************************************************************************************/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数 void delete_message;实现功能:删除读短信指令,//////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /******************************************************************************************************************/ void delete_message(void) { uchar i; Delay_ms(1000); Delay_ms(1000); Delay_ms(5000); for(i=0;i<8;i++) { AT_delete[i]=AT_CMGD[i]; } for(i=8;i<11;i++) { AT_delete[i]=numberbuf[i-8]; } for(Rx=0;Rx Rx=0; sendstring(AT_delete); //发送AT+CMGR=?,?代表短信储存所在位置 } /******************************************************************************************************************/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数 void sendmessage(void);实现功能:发送回复短信指令,//////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /******************************************************************************************************************/ void sendmessage(void) { uchar i; 47 for(i=0;i<8;i++) { AT_SendNumber[i]=AT_CMGS[i]; } for(i=8;i<24;i++) { AT_SendNumber[i]=SystemBuf[14+i]; //将对方号码提取用来回复给对方 } sendstring(AT_SendNumber); Delay_ms(400); if(flag==0) { //if(check==1) //{ // sendstring(state); //如果查询位置1时,发送状态信息 // } sendstring(successfully); // check=0; } else { sendstring(fail); } Delay_ms(30); sendchar(0X1A); } /******************************************************************************************************************/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数 void readcommend(void);实现功能:读取短信内容,判断相应指令是否正确////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /******************************************************************************************************************/ void readcommend(void) { uchar i; for(i=0;i<8;i++) //将短信内容中的指令部分截取出来放到 { 48