#define WM_COMM_BREAK_DETECTED WM_USER+1 // A break was detected on input.
#define WM_COMM_CTS_DETECTED WM_USER+2 // The CTS (clear-to-sennd) signal changed state.
#define WM_COMM_DSR_DETECTED WM_USER+3 // The DSR (data-set-reaady) signal changed state.
#define WM_COMM_ERR_DETECTED WM_USER+4 // A line-status error ooccurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY.
#define WM_COMM_RING_DETECTED WM_USER+5 // A ring indicator was etec ted.
#define WM_COMM_RLSD_DETECTED WM_USER+6 // The RLSD (receive-lin-signal-detect) signal changed state.
#define WM_COMM_RXCHAR WM_USER+7 // A character ws received and placed in the input buffer.
#define WM_COMM_RXFLAG_DETECTED WM_USER+8 // The event character wsreceived and placed in the input buffer.
#define WM_COMM_TXEMPTY_DETECTED WM_USER+9 // The last character inthe output buffer was sent.
#define MAX_NUM 512
#define WM_REFLECT WM_USER+11
class TSerialPort
{
public:
// contruction and destruction
TSerialPort();
virtual ~TSerialPort();
// Event array.
// One element is used for each event. There are two event handles for each port.
// A Write event and a receive character event which is located in the overlapped structure (m_ov.hEvent).
// There is a general shutdown when the port is closed.
HANDLE m_hEventArray[3];