对于从串口读取的一串数据怎么先判断前几位是否正确再接受余下的数据呀
是不是用Sleep()进行延时呀
给个思路把
我用的是MSComm
谢谢

解决方案 »

  1.   

    你可以一个字节一个字节的读取
    我用的是CSerialPort类模块
    用Read方法读取,举例如下:....
    //以上已经通过串口发送了指令
    //现在接收数据
    BYTE RecByte = 0;
    pPort.Read(hCom,&RecByte,1);//hCom是你打开串口的句柄
    pPort.Read(hCom,&RecByte,1);if(RecByte != 0x00) return false;
    pPort.Read(hCom,&RecByte,1);if(RecByte != 0xB0) return false;
    pPort.Read(hCom,&RecByte,1);
    if(RecByte == 0x95) return false;
    ......
      

  2.   

    这是我接受到的部分数据
    43 43 FF FF FF FF 0D 01 
    13 22 20 20 37 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
    01 01 01 01 01 01 01 01 
      

  3.   

    一个字节一个字节的收,再判断!
    详见:http://www.gjwtech.com/serialcomm.htm
      

  4.   

    在OnOnCommMscomm 事件中判断
    if(m_comm.GetCommEvent()==4 || m_comm.GetCommEvent()==2)
    {
        .... \\在这里进行处理,这是每接受到一个字节就会走到这个地方
    }
      

  5.   

    if(m_comm.GetCommEvent()==2)
    {
    这个条件就是每接收一个字节就响应这个事件,然后你再按字节比较处理就可以了
    }