解决方案 »

  1.   

    顶一下,确实帖子太长,下面这个break是跳出整个for循环
    if (bResult == 0)//调用失败
    {
    TRACE("%s:ClearCommError调用失败,原因:%s",_GetTime(),_GetErrorCodeCause(GetLastError()));
                    break;//这里是跳出本次循环?还是跳出整个循环?
    }
      

  2.   

    " ERROR_IO_PENDING indicates that the overlapped operation has been successfully initiated and that completion will be indicated at a later time."
      

  3.   

    其实这里的关键是两个函数的返回值:
    1、WaitCommEvent();这个函数等待的事件是谁设置的,等待的是什么?
    2、WaitForMultipleObjects();这个函数中等待的第二个事件,也就是重叠IO的OVERLAPPED结构体中的事件,这个事件在那些情况下都会被设置为有信号?难道只是,写完成和读完成两种?
      

  4.   

    不妨使用CxSerial串口类
    http://www.cnblogs.com/EdmundDwyane/p/3174308.html 
      

  5.   

    直接用moxa.com提供的串口函数库,没有源代码,但都是经过测试的C库函数,我用着一直很好。
    windows本身的mscomm是个玩具,能把他开发完善了,还需要一堆时间,不建议普通程序员使用。
      

  6.   

    其实这里的关键是两个函数的返回值:
    1、WaitCommEvent();这个函数等待的事件是谁设置的,等待的是什么?
    2、WaitForMultipleObjects();这个函数中等待的第二个事件,也就是重叠IO的OVERLAPPED结构体中的事件,这个事件在那些情况下都会被设置为有信号?难道只是,写完成和读完成两种?
    WaitForMultipleObjects该函数第三个参数是false,表明只要一个事件有信号就返回,,,只要读、写、关闭三个事件中,其中一个有信号就返回
      

  7.   

    看起来是个使用IOCP串口的代码,应该是比较高级的,把完整的代码放出来看看如何?