VC6.0, Windows操作系统     DWORD dwErrorFlag;
COMSTAT ComStat;
ClearCommError(hCom, &dwErrorFlag, &ComStat);
DWORD dwLength;
dwLength = min(dwMaxReadLength, ComStat.cbInQue);         ReadFile(hCom, byBuffer, dwLength, &dwLength, &OverlappedRead);
如果发送方发送的字符>8个的话, dwLength 则为8,也就是说ComStat.cbInQue 为8。经调试,发送方是一次全部发出来了的而我在打开串口的时候,已经执行了这条语句:
SetupComm(hCom, dwMaxReadLength, dwMaxWriteLength);
dwMaxReadLength和dwMaxWriteLength的值都为128.请问这是何故呢?谢谢!

解决方案 »

  1.   

    首先你应该使用一个比较大的缓冲区,
    然后用WaitCommEvet函数循环等待EX_RXCHAR消息,你读一次不可能将对方一次发送过来的数据,一次性接受回来的
      

  2.   

    做什么也是无补于事的,Windows的串口是一次最多只能接收8个字符的
      

  3.   

    geeksky(虚空无转) 
    说的对,其实我早就解决了。 原以为帖子沉下去了。没想到还有这么多热心的兄弟。其实解决很简单,在读缓冲区之前加一个延迟, 比如Sleep(100)就OK了。