打开的串口无法关闭?
我参考cnComm类写了一个串口类(采用多线程),
调试时发现当打开多个串口,经常出现串口无法关闭的现象,麻烦各位大哥帮忙看看!
//当接受到数据送到窗口的消息
#define ON_COM_RECEIVE WM_USER + 170 // WPARAM 端口号
class CSerial
{
public:
CSerial();
virtual ~CSerial();
int Open( int nPort, //端口
int nBaud = 9600 , //波特率
BYTE ByteSize = 8, //
BYTE Parity = NOPARITY, //奇偶校验
BYTE StopBits=ONESTOPBIT//停止位
);
bool IsOpen();
bool Close();
int SetState();
void SetNotifyNum(int NotifyNum);
void SetWnd(HWND hWnd);
DWORD Write(char *szBuffer, DWORD dwBufferLength);
DWORD Read(char *szBuffer, DWORD dwBufferLength);
HANDLE m_hComDev; //打开串口的句柄
HANDLE m_hWatchThread; //监视线程的句柄
volatile HWND m_hUIWnd; //通知串口
volatile int m_nPort; //
int m_nBaud; //
bool m_bOpened;
int m_nErrId;
volatile int m_nNotifyNum;
OVERLAPPED m_ReadOverlapped;
OVERLAPPED m_WriteOverlapped;
OVERLAPPED m_WaitOverlapped;
COMMPROP m_Commprop;
COMMCONFIG m_CommConfig;
BYTE m_OutData[30];
};