13.6.1 构造及析构函数的实现
构造函数CMySerial()及析构函数CMySerial(),分别负责初始化变量及资源释放的工作,实现如下:
- 01 CMySerial::CMySerial()
- 02 {
- 03 m_hComm = NULL; //初始化串口句柄
- 04 //初始化异步操作成员变量
- 05 m_ov.Offset = 0;
- 06 m_ov.OffsetHigh = 0;
- 07 //创建异步操作的事件成员变量
- 08 m_ov.hEvent = NULL;
- 09 //初始化发送及关闭事件
- 10 m_hWriteEvent = NULL;
- 11 m_hShutdownEvent = NULL;
- 12 //初始化发送变量
- 13 m_szWriteBuffer = NULL;
- 14 m_nWriteSize=1;
- 15 m_bThreadAlive = FALSE; //串口监控线程处于非激活状态
- 16 }
- 17 CMySerial::~CMySerial()
- 18 {
- 19 do
- 20 {
- 21 SetEvent(m_hShutdownEvent); //关闭串口
- 22 } while (m_bThreadAlive);
- 23 if (m_hComm != NULL) //如果上面没有关闭成功,则继续关闭
- 24 {
- 25 CloseHandle(m_hComm);
- 26 m_hComm = NULL;
- 27 }
- 28 if(m_hShutdownEvent!=NULL)
- 29 CloseHandle( m_hShutdownEvent); //关闭串口关闭事件句柄
- 30 if(m_ov.hEvent!=NULL)
- 31 CloseHandle( m_ov.hEvent ); //关闭串口异步操作事件句柄
- 32 if(m_hWriteEvent!=NULL)
- 33 CloseHandle( m_hWriteEvent ); //关闭写串口事件句柄
- 34 TRACE("Thread ended\n");
- 35 delete [] m_szWriteBuffer; //释放发送缓冲区
- 36 }