串口编程时:  发过Write指令之后,,,结果返回了很多数据,但我并没有读取串口,结果就返回了0x2000,这0x2000个数所我要做其它的处理,但现在因为不是我读回来的数据,这些数据找不到了,(我想应该在缓冲区吧),,,不知道怎么才能把这些数据
找回来,,,串口类库使用      CSerialPort类返回的数据分16次收到的,,,0x200* 0x10
这些数据应该在接收缓冲区吧,,,因为对这个类库 不怎么了解,,,,不知道怎样才能把这0X200*0X10个数据找出来,供我处理BOOL CCreateDictate::myCmd_SecReadCpuAndflash()
{

Sleep(200);
BYTE buf[20]="";
char pbuf[0x2100]="";
int nFlagTimer=0;
memset(sSenddata.pData,0,16);
sSenddata.pData[0]=SAGMENGFLAG;
        BYTE Y[]={0x00 ,0x06 ,0x00 ,0x08 ,0x30 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x20 ,0x00};
memcpy(sSenddata.pData+1, Y,12);
WORD uChecksum=LOWORD(CheckSUM(sSenddata.pData+1,12));//16 位的.
_libBigEndian_2(sSenddata.pData+5+8,uChecksum);
sSenddata.dwTotal=Mix7Eand7D((LPBYTE)sSenddata.pData,8+8);
if(sSenddata.dwTotal>0x1000) return FALSE;
sSenddata.pData[sSenddata.dwTotal-1]=SAGMENGFLAG;
if(m_Serail.Write(sSenddata.pData,sSenddata.dwTotal)==FALSE) return FALSE;

发过写指令后,,,端口自动返回了0x200 * 0x10 个数据回来
if (m_Serail.Read(pbuf,0x2100)==FALSE) return FALSE;
后面的    READ指令后读取的内容,第9块的第11位开始,,,只读了0x290个字节,,,那位大侠帮我看看,因为采用的是USB转串,,,,,,现在唯一感觉串口返回的数据很快,,,我去读的时候感觉很慢,,不知道是什么问题

解决方案 »

  1.   

    if(m_Serail.Write(sSenddata.pData,sSenddata.dwTotal)==FALSE) return FALSE; 发过写指令后,,,端口自动返回了0x200 * 0x10 个数据回来 
    if (m_Serail.Read(pbuf,0x2100)==FALSE) return FALSE; 
    后面的    READ指令后读取的内容,第9块的第11位开始,,,只读了0x290个字节,,,主要问题是怎么把端口自动返回的数据找出来,,,,,,,,,(我在监视软件上看到有这么多的数据自动返回来了,,,,但不知道调用这些数据)
      

  2.   

    // 串口输入缓冲区的数据,都可以用ReadFile得到。