SetCommMask 设置要监控的事件,WaitCommEvent 等待串口通信事件的发生.
SetCommMask
用途:设置串口通信事件
原型:BOOL SetCommMask(HANDLE hFile, //标识通信端口的句柄
DWORD dwEvtMask //能够使能的通信事件
);
参数说明:-hFile:串口句柄
-dwEvtMask:准备监视的串口事件掩码
串口上可能发生的事件如下表所示:
值 事件描述
EV_BREAK A break was detected on input.
EV_CTS The CTS (clear-to-send) signal changed state.
EV_DSR The DSR(data-set-ready) signal changed state.
EV_ERR
A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and
CE_RXPARITY.
EV_RING A ring indicator was detected.
EV_RLSD The RLSD (receive-line-signal-detect) signal changed state.
EV_RXCHAR A character was received and placed in the input buffer.
EV_RXFLAG
The event character was received and placed in the input buffer. The event character is
specified in the device's DCB structure, which is applied to a serial port by using the
SetCommState function.
EV_TXEMPTY The last character in the output buffer was sent.
参数含义:
EV_BREAK:收到 BREAK 信号。
EV_CTS:CTS(clear to send)线路发生变化。
EV_DSR:DST(Data Set Ready)线路发生变化。
EV_ERR:线路状态错误,包括了 CE_FRAME / CE_OVERRUN / CE_RXPARITY 3 种错误。
EV_RING:检测到振铃信号。
EV_RLSD:CD(Carrier Detect)线路信号发生变化。
EV_RXCHAR:输入缓冲区中已收到数据,即接收到一个字节并放入输入缓冲区。
EV_RXFLAG:使用 SetCommState()函数设置的 DCB 结构中的等待字符已被传入输入缓冲区中。
EV_TXEMPTY:输出缓冲区中的数据已被完全送出。
操作举例:SetCommMask(hComm,EV_RXCHAR|EV_TXEMPTY);
上面函数执行完毕后将监视串口中有无数据和发送缓冲区中的数据是否全部发送完毕。
WaitCommEvent()
用途:用来判断用 SetCommMask()函数设置的串口通信事件是否已发生。
原型:BOOL WaitCommEvent(HANDLE hFile,
LPDWORD lpEvtMask,
LPOVERLAPPED lpOverlapped