我有一个在串行端口上执行重叠 I/O 的程序,我看到应用程序未读取已接收数据的情况。我的代码正在使用SetCommMask()
,WaitCommEvent()
如下所示:
if(!waiting_for_comm_event)
{
comm_event_ready = false;
if(!SetCommMask(port_handle, EV_RXCHAR | EV_ERR | EV_RLSD))
throw OsException(my_strings[strid_set_comm_mask_failed].c_str());
rcd = WaitCommEvent(port_handle, &event_mask, &event_control);
last_error = GetLastError();
if(rcd && event_mask != 0)
comm_event_ready = true;
else if(last_error != ERROR_IO_PENDING)
throw OsException(my_strings[strid_wait_comm_event_failed].c_str());
else
waiting_for_comm_event = true;
}
在我的输出缓冲区中写入任何数据后调用此代码。在写入过程中可能会接收到数据。是否会WaitCommEvent()
报告已经有数据等待读取的情况?