void CMTKSNDlg::Onreadsn() 
{
CString buff="AT+ESLP=0\n";
CString buff1="AT+EGMR=0,5\n";
CString readbuff;
readbuff.Empty();
//char rb[400]="";
CString b,e;
int i=0;
for(i=0;i<5;i++)
{
m_com.WriteComm((char*)(LPCTSTR)buff,10);
m_com.ReadComm((char*)(LPCTSTR)readbuff,200);  
if(-1!=readbuff.Find("OK",0))  
{ m_com.WriteComm((char*)(LPCTSTR)buff1,12);
m_com.ReadComm((char*)(LPCTSTR)readbuff,400);  //"AT+EGMR=0,5
//
//+EGMR: "324322322290292292294291288"
//
//OK
//xdbcs.cpp"
//这部分是readbuff读取到的内容,然后我要取引号中间的内容,所以就 int beg=temp.readbuff("\"",0)+1;     //这个查找结果正确
int end=temp.readbuff("\"",beg);     //直接报异常
CString sn=readbuff.Mid(beg,end-beg);//        readbuff.GetAt(0);//也报异常
         readbuff.ReleaseBuffer(); //也报异常,总感觉操作不了读回来CString
         return;
}
}
MessageBox("read Fail");
}

解决方案 »

  1.   

    temp.readbuff是什么语法? 不明白,是不是这个意思?
        int beg=readbuff.Find("\"",0)+1;    
        int end=readbuff.Find("\"",beg);     
      

  2.   

        int beg=readbuff.readbuff("\"",0)+1;     //这个查找结果正确
        int end=readbuff.readbuff("\"",beg);     //直接报异常笔误,正常应该是这个用其他的CString是正确的,就是从串口读出来的内容放在CString中就操作不了了
    比如       GetAt(0);//也报异常
               ReleaseBuffer(); //也报异常,//这样OK
        CString readbuff="213123 3243434 gerg \"0000000\" ertgeergregh "
        int beg=readbuff.readbuff("\"",0)+1;     //这个查找结果正确
        int end=readbuff.readbuff("\"",beg);     //直接报异常
        CString sn=readbuff.Mid(beg,end-beg);//sn="0000000"
        
      

  3.   

    试试这样void CMTKSNDlg::Onreadsn() 
    {
        CString buff="AT+ESLP=0\n";
        CString buff1="AT+EGMR=0,5\n";
        CString readbuff;
        readbuff.Empty();
        //char rb[400]="";
        CString b,e;
        int i=0;
        for(i=0;i<5;i++)
        {
            m_com.WriteComm((char*)(LPCTSTR)buff,10);
            m_com.ReadComm((char*)(LPCTSTR)readbuff.GetBuffer(),200);
            readbuff.ReleaseBuffer();
            if(-1!=readbuff.Find("OK",0))  
            {            m_com.WriteComm((char*)(LPCTSTR)buff1,12);
                m_com.ReadComm((char*)(LPCTSTR)readbuff.GetBuffer(),400); 
                readbuff.ReleaseBuffer(); //"AT+EGMR=0,5
    //
    //+EGMR: "324322322290292292294291288"
    //
    //OK
    //xdbcs.cpp"
    //这部分是readbuff读取到的内容,然后我要取引号中间的内容,所以就    int beg=temp.readbuff("\"",0)+1;     //这个查找结果正确
        int end=temp.readbuff("\"",beg);     //直接报异常
        CString sn=readbuff.Mid(beg,end-beg);//        readbuff.GetAt(0);//也报异常                         return;
            }
        }
        MessageBox("read Fail");    
    }