qq_35186893 2016-07-25 15:14 采纳率: 0%
浏览 1326

怎么从数据中提取指定内容???

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>

谢谢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 写回答

1条回答

  • 关注

    ata_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
    {

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题