在CSerialPort类中有
Event = WaitForMultipleObjects(3, port->m_hEventArray, FALSE, INFINITE);
我一直搞不懂读的事件是怎样激活的?我没有发现它在那里用了setevent函数啊
Event = WaitForMultipleObjects(3, port->m_hEventArray, FALSE, INFINITE);
我一直搞不懂读的事件是怎样激活的?我没有发现它在那里用了setevent函数啊
首先初始化事件数组
// initialize the event objects
m_hEventArray[0] = m_hShutdownEvent; // highest priority
m_hEventArray[1] = m_ov.hEvent;
m_hEventArray[2] = m_hWriteEvent;事件一在 程序关闭是触发,如其析构函数
CSerialPort::~CSerialPort()
{
do
{
SetEvent(m_hShutdownEvent);
} while (m_bThreadAlive);
}
其中事件二是串口重叠操作完成后触发的事件。事件三在如下函数触发
void CSerialPort::WriteToPort(char* string)
{
assert(m_hComm != 0); memset(m_szWriteBuffer, 0, sizeof(m_szWriteBuffer));
strcpy(m_szWriteBuffer, string); // set event for write
SetEvent(m_hWriteEvent);
}
其中事件二的触发交复杂,要好好体会。