if((temp_rec_data_uart0=='I')&&(rec_data_len_uart>3))
{
if((Buffer_Uart0_Rec[rec_data_len_uart-1]=='T')&&(Buffer_Uart0_Rec[rec_data_len_uart-2]=='M')&&(Buffer_Uart0_Rec[rec_data_len_uart-3]=='C')&&(Buffer_Uart0_Rec[rec_data_len_uart-4]=='+'))
{
flag_reced_mess=1;
}
}
if(flag_rec_message==1) //如果检测到收到一条短信,开始执行短信数据接收
{
if((temp_rec_data_uart0=='R')&&(rec_data_len_uart>5)) //如果接收到的数据‘R’,并且已经接了一些数据了,此时可能单片机开始接收短信数据
{
if((Buffer_Uart0_Rec[rec_data_len_uart-1]=='G')&&(Buffer_Uart0_Rec[rec_data_len_uart-2]=='M')&&(Buffer_Uart0_Rec[rec_data_len_uart-3]=='C')&&(Buffer_Uart0_Rec[rec_data_len_uart-4]=='+'))//说明收到了短信数据 +CMGR
{
flag_start_rec_message=1; //置开始接收短信数据标志位
fenhao_num=0; //重新开始根据逗号个数查找短信内容
rec_data_len_uart=0; //前接的数据无用了
flag_rec_message_data=0;
}
}
}
if(flag_start_rec_message==1) //收到短信数据才进行后续短信数据的提取
{
if(temp_rec_data_uart0=='"') //如果收到的数据是 ‘,’
{
fenhao_num++;
if(fenhao_num>11) //一次读取回来的短信数据中逗号的个数不可能超过11个,超过了还没处理完 说明数据有误
{
fenhao_num=0;
flag_rec_message=0; //不对短信数据进行处理
flag_start_rec_message=0; //无短信数据数据 ,好似不需要处理,待定
flag_rec_message_data=0;
}
switch (fenhao_num)
{
case 1:
rec_data_len_uart=0; //前面数据处理完毕,重新接
break;
case 2: //后取短信是否读取
//memcpy(temp_data_read,Buffer_Uart0_Rec+rec_data_len_uart-8,rec_data_len_uart-4); //多存一些
memcpy(temp_data_read,Buffer_Uart0_Rec+1,7); //多存一些
// if(hand(temp_data_read,"UNREAD"))
// {
// flag_read_or_un_message=1; //没读取过
// }
// else
// {
// flag_read_or_un_message=0; //读取过
// }
//temp_data_read[rec_data_len_uart-3]='\0';
temp_data_read[10]='\0';
rec_data_len_uart=0; //前面数据处理完毕,重新接
break;
case 3: //空
rec_data_len_uart=0; //前面数据处理完毕,重新接
break;
case 4: //temp_data_tele_num 获取电话号码
//memcpy(temp_data_tele_num,Buffer_Uart0_Rec+(rec_data_len_uart-13),13); //多存一些
memcpy(temp_data_tele_num,Buffer_Uart0_Rec+1,14); //多存一些
rec_data_len_uart=0; //前面数据处理完毕,重新接
break;
case 5: //空
rec_data_len_uart=0; //前面数据处理完毕,重新接
break;
case 6: //空
rec_data_len_uart=0; //前面数据处理完毕,重新接
break;
case 7: //时期开始
rec_data_len_uart=0; //前面数据处理完毕,重新接
break;
case 8: //temp_data_date,日期
memcpy(temp_data_date,Buffer_Uart0_Rec+1,20); //
flag_rec_message_data=1; //置开始接收短信数据标志位
fenhao_num=0;
rec_data_len_uart=0;
break;
default:
break;
}
}
}
**********在读取中,想提取指定的字符串**数据内容如下:
+CMTI:"SM",12
+CMGR: "REC UNREAD","","","16/06/17,18:09:35+32"@adgjmptxm789123./+-OK
OK
+CMGR:"UNREAD,151,JJJ,13/,002
@@@@@@@@@@怎么提取字符串<+8618045171367>
谢谢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~