各位高手,我在做个ActiveX串口通信的控件,想问一下,当串口得到数据时,它会以什么形式通知我呢?我查了一些资料,说是用WaitCommEvent()来检测事件,可是这样的话,我是不是就要用个循环来重复调用它呢,好像会死机的。那还有什么方法呢?会不会有像VB那样,串口得到数据会发给程序消息,只需要有个消息调用函数就行呢?谢谢帮助。

解决方案 »

  1.   

    WaitCommEvent返回以后,可能需要调用ClearCommError,这样下次调用WaitCommEvent就不会立即返回了。
      

  2.   

    可是waitCommEvent()是不是必须用个函数来循环调用呢,要不怎么才能时时都在监控串口的状态呢?
      

  3.   

    我没用到waitCommEvent()这个函数 我用的是
    BEGIN_EVENTSINK_MAP(CRDATA, CWnd)
    ON_EVENT(CRDATA, IDC_MSCOMM2, 1, OnCommMscomm1, VTS_NONE)
    END_EVENTSINK_MAP()
    OnCommMscomm1()
    {
       if(m_Comm.GetCommEvent() == 2) //事件值为2表示接收缓冲区内有字符
        {
           //接受数据
        }
    }
      

  4.   

    回复liangwei_2008,你的代码好像是用的MSComm控件吧,我想用API函数来做,不知道有没有类似的方法?
      

  5.   

    哦 的确是用的控件 MSComm别的方法没试过 我用过的只有这个了 帮你顶吧。