各位大哥,在视图类的构造函数中为啥不能进行串口初始化啊?

goodgang 2005-05-18 12:47:23
大哥,我在基于CFormView的视图类中拖入了串口通讯控件,并为之添加了一个变量:CMSComm m_Com;然后在视图类的构造函数中对串口进行初始化:
CImageRecogView::CImageRecogView()
: CFormView(CImageRecogView::IDD)
{
//{{AFX_DATA_INIT(CImageRecogView)
//}}AFX_DATA_INIT
// TODO: add construction code here
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

if(m_Com.GetPortOpen())
m_Com.SetPortOpen(FALSE);
m_Com.SetCommPort(1); //选择串口
if( !m_Com.GetPortOpen())
m_Com.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port");

}
注:上面几个串口操作函数都用到下面的InvokeHelper()函数

问题是,在编译时老是报错:ASSERT Failed!
即下面InvokeHelper()函数中的断言失败,请问给为大哥这是为什么呢?????同样的操作在一个基于对话框的工程中的对话框类的OnInitDlg()中就没问题,急等解答,谢谢大家!

void AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)

if (m_pCtrlSite == NULL)
return;

va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo,
argList);
va_end(argList);
}
...全文
151 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcstudio 2005-05-19
  • 打赏
  • 举报
回复
对m_Com调用Create方法:
m_Comm.Create("MSCOMM_",WS_CHILD,CRect(0,0,0,0),(CWnd*)this,0)
就可以了
goodgang 2005-05-18
  • 打赏
  • 举报
回复
我试着在OnCreate中写了,可是还是老样子,ASSERT Failed!
即是CWnd::InvokeHelper函数中的
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)
通不过

唉,到底是哪儿的问题呀?头都大了
请各位大侠指导
oyljerry 2005-05-18
  • 打赏
  • 举报
回复
构造函数中视图都还没创建,不能初始化串口
oyljerry 2005-05-18
  • 打赏
  • 举报
回复
放到视图的OnCreate中

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧