vc怎样调用串口? A页面是串口设置页面(我用控件实现的),当设置好后,通过B页面调用已经设置好的A页面的串口,从而实现通讯,请问B页面怎么调用A页面的串口? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么导出啊?能不能具体点,我思路是这样的:直接传递串口控件,然后他的状态肯定就直接传递过来了,但是我写的代码连编译都不能通过这样写的 Bdlg 定义个CMSComm类型的变量mcom,Adlg有个串口控件叫m_com 则 mcom=adlg.m_com这样报错 你这样不行的,要知道你的adlg是在什么地方创建的才行,如果是在InitInstance中创建的局部变量,那是不可能在Bdlg中访问到adlg中的m_com对象的,总之,要看到你的源代码才行,你发源代码到[email protected],我来帮你改 用指针就可以了Bdlg 定义个CMSComm*类型的变量mcom,Adlg有个串口控件叫m_com 则 mcom=&adlg.m_com 按照5楼的做了,语法编译过去了,运行出错了,0xC0000005:Access Violation,c++用的时间短,不怎么会改 首先,你的确保你的mcom指针在你进行各种操作SetCommPort,SetPortOpen等等操作前已经mcom = &dlg.m_com其次,你得确保你的COMM操作本身有无问题,比如,你是不是没有SetPortOpen就已经在SendData了。还有,你的搞清楚是不是其它的问题造成的建议你一步步来,先屏蔽所有的B页面关于mcom的操作,包括mcom=&dlg.m_com,然后再一点点加上代码,看看出错在哪一步如果你会用调试工具的话,相信很快能调出来的 CModuleDlg dlg;放在InitInstance外面定义了,运行时报错,放在InitInstance里面了,然后紧接着com=&dlg.m_com; 在就运行当if(com->GetPortOpen())就报错,是我的com没有获取到吗?我跟踪com是0x0013ec94 1.为CMain对话框创建CMSComm类型的成员变量指针,代码如下: CMSComm* m_commptr;2.修改CMain的对话框的构造函数,初始化指针m_commptr: 在类定义文件中(Main.h): CMain(CWnd* pParent = NULL,CMSComm* objptr = NULL); 在类实现文件中(Main.cpp): CMain::CMain(CWnd* pParent,CMSComm* objptr/*=NULL*/) : CDialog(CMain::IDD, pParent) { //{{AFX_DATA_INIT(CMain) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_commptr = objptr; }3.在CModuleDlg::OnButton1()中创建CMain对话框,做以下修改 CMain dlg(NULL,&m_com);做完以上步骤,就可在CMain类的成员函数中随便调用串口对象了,不论是获取它的各种信息还是对它进行操作都可以,如:void CMain::OnButton1() {// TODO: Add your control notification handler code here if(m_commptr->GetPortOpen()) { }}这是楼上的正确答案,在这要谢谢他,同时也谢谢所有给我思路,帮我分析问题解决问题的人 MFC 中简单的问题 赋值问题 如何编程实现USB MODEM读写传输数据 请大家推荐经典书! 怎样更改多文档子框架的外观? 请教:想把文本文件.txt做成DLL,然后exe调用dll读取出文本txt的内容 关于OPENGL图像变换后的世界坐标和二维显示坐标 关于CPropertySheet SendDlgItemMessage()问题 ICON类型的CListCtrl,在NM_CUSTOMDRAW自绘的时候,为何文字没了 截获ActiveX控件消息 动态创建CbitmapButton的问题
这样写的 Bdlg 定义个CMSComm类型的变量mcom,Adlg有个串口控件叫m_com 则 mcom=adlg.m_com
这样报错
用指针就可以了
Bdlg 定义个CMSComm*类型的变量mcom,Adlg有个串口控件叫m_com 则 mcom=&adlg.m_com
其次,你得确保你的COMM操作本身有无问题,比如,你是不是没有SetPortOpen就已经在SendData了。还有,你的搞清楚是不是其它的问题造成的建议你一步步来,先屏蔽所有的B页面关于mcom的操作,包括mcom=&dlg.m_com,然后再一点点加上代码,看看出错在哪一步
如果你会用调试工具的话,相信很快能调出来的
CMSComm* m_commptr;
2.修改CMain的对话框的构造函数,初始化指针m_commptr:
在类定义文件中(Main.h):
CMain(CWnd* pParent = NULL,CMSComm* objptr = NULL);
在类实现文件中(Main.cpp):
CMain::CMain(CWnd* pParent,CMSComm* objptr/*=NULL*/)
: CDialog(CMain::IDD, pParent)
{
//{{AFX_DATA_INIT(CMain)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_commptr = objptr;
}
3.在CModuleDlg::OnButton1()中创建CMain对话框,做以下修改
CMain dlg(NULL,&m_com);
做完以上步骤,就可在CMain类的成员函数中随便调用串口对象了,不论是获取它的各种信息还是对它进行操作都可以,如:
void CMain::OnButton1()
{
// TODO: Add your control notification handler code here
if(m_commptr->GetPortOpen())
{
}
}
这是楼上的正确答案,在这要谢谢他,同时也谢谢所有给我思路,帮我分析问题解决问题的人