#include <sim900.h>
#include <basic.h>
bit OK_flag=0;
bit SMS_Finish_flag=0;
bit Ready_flag=0;
bit Response_receive_SMS_flag=0;
bit RDY_flag=0;
bit CFUN_flag=0;
bit AT_CREG_flag=0;
unsigned char Current_bit=0;
unsigned int status_count=0;
void Response_OK(void)
{
unsigned char i=0;
while(i<=MAXNUM_GSM)
{
if(Rx_data[i] =='O'&&Rx_data[i+1]=='K')
{
OK_flag=1;
Clear_Rxbuffer(Rx_buffer_length); //清除Rxbuffer
return ;
}
i++;
}
OK_flag=0;
}
void Response_Ready(void)
{
unsigned char i=0;
while(i<=MAXNUM_GSM)
{
if(Rx_data[i]=='>')
{
Ready_flag=1;
Clear_Rxbuffer(Rx_buffer_length); //清除Rxbuffer
return ;
}
i++;
}
Ready_flag=0;
}
void Response_SMS_Finish(void)
{
unsigned char i=0;
while(i <= MAXNUM_GSM)
{
if(Rx_data[i] =='+'
&&Rx_data[i+1]=='C'
&&Rx_data[i+2]=='M'
&&Rx_data[i+3]=='G'
&&Rx_data[i+4]=='S'
&&Rx_data[i+5]==':')
{
SMS_Finish_flag=1;
Clear_Rxbuffer(Rx_buffer_length); //清除Rxbuffer
return ;
}
i++;
}
SMS_Finish_flag=0;
}
unsigned char Response_receive_SMS(void)
{
unsigned char i=0;
while(i<=MAXNUM_GSM)
{
if(Rx_data[i] =='+'
&&Rx_data[i+1]=='C'
&&Rx_data[i+2]=='M'
&&Rx_data[i+3]=='T'
&&Rx_data[i+4]=='I'
&&Rx_data[i+5]==':')
//Rx_data[i+7]=='"'
//Rx_data[i+8]=='S'
//Rx_data[i+9]=='M'
//Rx_data[i+10]=='"'
//Rx_data[i+11]==','
{
Response_receive_SMS_flag = 1;
return i+11;
}
i++;
}
// Response_receive_SMS_flag = 0;
return 0;
}
void send_english_sms(void)
{
Usart_PutString("AT\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(100);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGF=1\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CSCS=\"GSM\"\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 0K
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGS=\"+8613659476545\"\r "); // AT+CMGS
Delay_ms(100); //等反馈信号延时
Response_Ready(); // 反馈 >
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("WELCOME!The defence of the house is opened.\x01a");
Delay_ms(500); Delay_ms(500); Delay_ms(500); //等反馈信号延时
Response_SMS_Finish();
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Delay_ms(10);
}
void send_help_sms(void)
{
Usart_PutString("AT\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(100);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGF=1\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CSCS=\"GSM\"\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 0K
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGS=\"+8613659476545\"\r "); // AT+CMGS
Delay_ms(100); //等反馈信号延时
Response_Ready(); // 反馈 >
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("Send o to system to open the defence of the house!Send c to system to close the defence.Send t to system to show the temperature.\x01a");
Delay_ms(500); Delay_ms(500); Delay_ms(500); //等反馈信号延时
Response_SMS_Finish();
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Delay_ms(10);
}
void send_english_curtain_open(void)
{
Usart_PutString("AT\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(100);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGF=1\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CSCS=\"GSM\"\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 0K
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGS=\"+8613659476545\"\r "); // AT+CMGS
Delay_ms(100); //等反馈信号延时
Response_Ready(); // 反馈 >
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("The curtain has been opend.\x01a");
Delay_ms(500); Delay_ms(500); Delay_ms(500); //等反馈信号延时
Response_SMS_Finish();
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Delay_ms(10);
}
void send_english_curtain_close(void)
{
Usart_PutString("AT\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(100);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGF=1\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CSCS=\"GSM\"\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 0K
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGS=\"+8613659476545\"\r "); // AT+CMGS
Delay_ms(100); //等反馈信号延时
Response_Ready(); // 反馈 >
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("The curtain has been closed.\x01a");
Delay_ms(500); Delay_ms(500); Delay_ms(500); //等反馈信号延时
Response_SMS_Finish();
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Delay_ms(10);
}
void send_english_sms_smog(void)
{
Usart_PutString("AT\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(100);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGF=1\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 OK
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CSCS=\"GSM\"\r");
Delay_ms(100); //等反馈信号延时
Response_OK(); //反馈 0K
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("AT+CMGS=\"+8613659476545\"\r "); // AT+CMGS
Delay_ms(100); //等反馈信号延时
Response_Ready(); // 反馈 >
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Usart_PutString("WARNNING! Your family may be on fire.\x01a");
Delay_ms(500); Delay_ms(500); Delay_ms(500); //等反馈信号延时
Response_SMS_Finish();
Delay_ms(200);
Clear_Rxbuffer(Rx_buffer_length); //清Rxbuffer
Delay_ms(10);
}
void send_english_sms_infrared(void)
{
Usart_PutString("AT\r