Windows7下VS2008MFC基于对话框应用程序
我在OnInitDialog()里面Creat了串口对象
m_ctrlComm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);
点击串口按钮执行:
if( !m_ctrlComm.get_PortOpen()) // 串口在此进程中还未打开
{
————————————————————初始化
try
{
m_ctrlComm.put_PortOpen(TRUE);//打开串口,如果其它程序已经打开此串口,程序会在此出现异常
}
catch(COleDispatchException *e)
{
TCHAR szCause[255];
CString strFormatted;
e->GetErrorMessage(szCause, 255);
strFormatted = _T("The data file could not be opened because of this error: ");
strFormatted += szCause;
AfxMessageBox(strFormatted);
//MessageBox((portnumText+_T(" 已被占用!")),_T("系统提示:"),MB_ICONERROR);
return;
}
}
其他地方的数据发送就直接采用:
m_ctrlComm.put_Output(COleVariant(array1));
整个过程中关闭串口也有执行:
m_ctrlComm.put_PortOpen(FALSE);
在起初的调试阶段一直正常,今天忽然一点调试开就出现了错误:
operation valid only when the port is open !
还会提示:
MFComm.exe 中的 0x755b969b 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0026e7d8 处的 COleDispatchException。
Warning: Uncaught exception in WindowProc (returning 0).
先前怀疑是电脑的串口被占用,但是试了复位全部串口还是不行。
现在网上查找怀疑是哪里存在内存泄露,因为我每次尝试打开串口都会有
MFComm.exe 中的 0x755b969b 处最可能的异常: Microsoft C++ 异常: 内存位置 0x001ee07c 处的 COleDispatchException。
自己对电脑的串口机制还不了解,拜托各位高手指点,感激不尽。 |