uint16_t message_Init(void)
{
printf("AT+COPS?\r\n");
delay();
printf("AT+CSCS=\"UCS2\"\r\n");
delay();
printf("AT+CSMP=17,167,2,25\r\n");
return 0;
}
void MESSAGE_1(void)//窗开关程序
{
delay();
printf("AT+CMGD=1,4\r\n");//删除所有短信
tell_number();
delay();
printf("7A7A6C146E295EA651FA73B05F025E38FF0C662F54265F007A9765395584FF1F56DE590D0061003A5F007A970062003A4E0D5F007A970037");//空气温度出现异常,是否开窗改善?回复a:开窗b:不开窗7 delay();
tell_over();
delay();
while(USART_GetITStatus(USART2, USART_IT_RXNE)==0);
USART_ClearFlag(USART2,USART_IT_RXNE);
USART_SendData(USART2,0x1B);
while(discard((uint8_t*)"CMTI")==0);
delay();
printf("AT+CMGR=1\r\n");//读取位置1的短信
delay();
delay();
delay();
delay();
if(discard((uint8_t*)"0061")!=0)//选择a,开门
{
delay();
printf("AT+CMGD=1,4\r\n");//删除所有短信
tell_number();
delay();
printf("5DF27ECF5F007A97");
delay();
tell_over();
delay();
}
else if(discard((uint8_t*)"0062")!=0)//b,不开门
{
delay();
printf("AT+CMGD=1,4\r\n");//删除所有短信
tell_number();
delay();
printf("5DF27ECF4E0D5F007A97");
delay();
tell_over();
delay();
}
else if((discard((uint8_t*)"0062")==0)&&(discard((uint8_t*)"0062")==0))//未按规定输入
{
printf("AT+CMGD=1,4\r\n");//删除所有短信
tell_number();
delay();
printf("95198BEF63074EE4");
delay();
tell_over();
delay();
}
}
主函数
int main(void)
{
uart1_init(9600);
uart2_init(9600);
// //USART_SendData(USART2,0x1B);
message_Init();
MESSAGE_1();
}有个很奇怪的现象,本来其实就是一个init和发送,但是当执行MESSAGE_1(); while(discard((uint8_t*)"CMTI")==0);后面的时候,程序又会返回去继续执行message_Init(); 和MESSAGE_1();,这样来来回回3次才会停止,为什么
|