WaitCommEvent WINAPI串口事件

时间:2017-06-02 10:42:05

标签: c winapi

我一直在参考以下页面https://msdn.microsoft.com/en-us/library/ff802693.aspx来创建事件驱动的串行端口。在我的初始化中,我设置了以下内容:

Status = GetCommState(hComm, &dcbSerialParams); 
Status = SetCommState(hComm, &dcbSerialParams); 
Status = SetCommMask(hComm, EV_RXCHAR);

在我的WinMain中,我使用WaitCommEvent来侦听要在端口上接收的数据。它看起来如下:

while(1){
    if( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
        DispatchMessage(&msg);
    }
    else{
        //SetWindowText(hStatic, "");
        Status = WaitCommEvent(hComm, &dwEventMask, NULL); //Wait for the character to be received
        if (Status == TRUE){
            ReadFromSerialPort();
        }
    }
  }

这样工作正常,所有数据都正在读取,因为它正在进入,我可以按下写入端口按钮,数据写入和其他东西,所以没有真正的抱怨。然而,代码基本上是美化轮询,constantlty检查WaitCommEvent的状态并在true时读取端口。我宁愿不进行轮询,只是坐在那里直到事件发生,就像微控制器中使用的中断服务路由一样。这可能使用win32吗?

感谢。

0 个答案:

没有答案