……
for(k=0;k<len;k++)
{
  BYTE bt=*(char*)(rxdata+k);
  strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp(strtemp是CString型)存放
  m_strRXData+=strtemp; //把对应字符串加入到接收编辑框
}
UpdateData(FALSE);
AfxMessageBox(m_strRXData);//这里可以正确显示m_strRXData的值是AA,是我前面赋的
//下面一句就出问题了
if(m_strRXData=="AA")//不知道这里为什么老是不满足条件,是不是与十六进制方式有关?
  OnBUTTONSend();
……
补充一句,数据我是从串口上读取的。
不知道应该怎么改,请指教,不过字符一定要是十六进制方式,这个不能改
先多谢了!

解决方案 »

  1.   

    m_strRXData内可能有非打印字符
      

  2.   

    strtemp.Format("%02X ",bt); 
    不会出现A,
    只会出现空格A.
    m_strRXData.GetLength();
    试试
    看长度是不是2
      

  3.   

    if(m_strRXData=="AA")//
    改为:
    if(m_strRXData.Find("AA")!=-1)原因同意he_zhidan(何志丹:壮志在我心)!
      

  4.   

    楼主,m_strRXData+=strtemp;这句你注意了吗?+=跟=是不一样的!
      

  5.   

    这个问题我以前遇到过,
    你把if(m_strRXData=="AA")改成if(m_strRXData==_T("AA"))
    试试看
      

  6.   


       m_strRXData.GetBuffer(2) == "AA"
       或者
       strTemp = "AA";
       BOOL blnDefferent = FALSE;
       for(int i=0; i<m_strRXData.GetLength();i++ )
       {
              if(m_strRXData.GetAt(i) != strTemp.GetAt(i))
              {
                   AfxMessageBox("不相同");
                   blnDefferent = TRUE;
                   break;
              }
       }