解决方案 »

  1.   

    我没有用到多线程  OVERLAPPED结构体是不是一个摆设?
      

  2.   

    ReadFile作为一个异步操作,直接返回结果,所以当你在取400字节数据操作返回的时候是ERROR_IO_PENDING(997)的状态,说明数据还在传输中,这是正常情况。下面我们要做的就是等待它传输完成。 if(ReadFile(hPort,comBuf,400,&readedlen,&overlapped){
    .............................. 
    else{
    if(GetLastError()==ERROR_IO_PENDING)
    {
    bool bResult = GetOverlappedResult(hPort,&overlapped,&readedlen,TRUE); 
    if(!bResult)
    AfxMessageBox("error");
    }
    else
    AfxMessageBox("error");
    }
      

  3.   

    谢谢你给我答疑  我还有些地方没有理解。
    ReadFile(hPort,comBuf,400,&readedlen,&overlapped)
    发送端是每10秒发送10个字节的数据。如果我读取400个字节,是不是要等10*40秒?
      

  4.   

    还是说 ReadFile 必须一次写入大于或等于400字节 才能读到
      

  5.   

    谢谢你给我答疑  我还有些地方没有理解。
    ReadFile(hPort,comBuf,400,&readedlen,&overlapped)
    发送端是每10秒发送10个字节的数据。如果我读取400个字节,是不是要等10*40秒?
    至少不比这个时间短
      

  6.   

    我是一次writefile 10个字节    10秒是间隔
      

  7.   

    再做了一次实验
    把400改成40      每1秒write  10字节,但是readFile一直返回FALSE  并没有在第4秒后接受成功      我推测是不是每次写数据之前都会自动把缓存清空?   再同步模式并没有清空之前发送的数据
      

  8.   

    每次读取前看下ClearCommError的状态,没全部代码我也不知道你是什么问题