WEB开发网
开发学院软件开发VC 多线程,多接收模式串口类LsComm之二 阅读

多线程,多接收模式串口类LsComm之二

 2010-06-23 20:40:57 来源:WEB开发网   
核心提示:3. greatim:DataWaiting 是有什么用的??在例子程序里没有引用到,而且在 Open 的函数里,多线程,多接收模式串口类LsComm之二(3),CreateEvent 被屏蔽了,是否代表 DataWaiting 这函数不能使用呢? DataWaiting 和 Attech 有什么关系?答:因为 Dat

3. greatim:DataWaiting 是有什么用的??在例子程序里没有引用到。而且在 Open 的函数里,CreateEvent 被屏蔽了,是否代表 DataWaiting 这函数不能使用呢? DataWaiting 和 Attech 有什么关系?

答:因为 DataWaiting 是 PJ Naughter 写的,请仔细看他的源码:

BOOL CSerialPort::DataWaiting(DWORD dwTimeout)
  {
    ASSERT(IsOpen());
    ASSERT(m_hEvent);
    //Setup to wait for incoming data
    DWORD dwOldMask;
    GetMask(dwOldMask);
    SetMask(EV_RXCHAR);//1.设置接收中断事件

    //Setup the overlapped structure
    OVERLAPPED o;
    o.hEvent = m_hEvent;
    //Assume the worst;
    BOOL bSuccess = FALSE;
    DWORD dwEvent;
    bSuccess = WaitEvent(dwEvent, o);//2. 设置监听
    if (!bSuccess)
    {//3.dwTimeOut为所等待的时间,有数据收到,返回发现数据
      if (WaitForSingleObject(o.hEvent, dwTimeout) == WAIT_OBJECT_0)
      {
       DWORD dwBytesTransferred;
       GetOverlappedResult(o, dwBytesTransferred, FALSE);
       bSuccess = TRUE;
      }
    }
    //Reset the event mask
    SetMask(dwOldMask);
    return bSuccess;
    }

这好像与 Attach 没什么关系吧?

4. Sander:在win2000下能用no overlapped吗?

答:查看了一下 MSDN 中 CreateFile 的说明,没有在 Win2K 下的使用限制,应该是可以的。

上一页  1 2 3 4  下一页

Tags:线程 接收 模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接