返回OK 才执行下一条AT命令,否则继续等待或执行本条AT命令. 以下是理想情况下的,要考虑非理想情况,代码应如何写呢,给一点思路吧. WriteStrToSerial(L"AT+XXX1"); 
if ( m_strDataReceived.Find(L"OK") > 0 ) 

  WriteStrToSerial(L"AT^XXX2"); 
  if ( m_strDataReceived.Find(L"OK") > 0 ) 
  { 
      WriteStrToSerial(L"AT^XXX3=1"); 
      if ( m_strDataReceived.Find(L"OK") > 0 ) 
      { 
        WriteStrToSerial(L"AT^XXX4=1,1,0"); 
        if ( m_strDataReceived.Find(L"OK") > 0 ) 
        { 
             ......
        } 
    } 
  } 

解决方案 »

  1.   

    好像不能这么写吧
    你这样不是永远只执行WriteStrToSerial(L"AT^XXX2"); 么?
      

  2.   

    发送和接收at是两个线程啊。
    发送完at1后阻塞发送线程,
    你接收到ok后,要在接收线程里发消息到发送线程中,发送线程工作。
      

  3.   

    或者做一个状态机,发送at1后状态设为busy,接到ok后状态改为waiting。
    busy状态下不接收at。
      

  4.   

     m_strDataReceived 是一个全局的变量,串口返回OK时, m_strDataReceived = "OK"