调用CMSComm类函数put_PortOpen(true)总是谈出“port already open”, 程序不往下走了

mmm1024 2008-09-12 03:42:29
环境:Dell D630 本本;XP professional SP2; vc2008; 在网上下载mscomm32.ocx(1998-06-24),放在c:\winnt\system32, 并用regsvr32注册; MFC 基于对话框程序;调试时串口上没接硬件。


问题:在初始化对话框程序中调用CMSComm类函数put_PortOpen(true)总是弹出“port already open”, 程序不往下走了。但主对话框能出来。


个人认为:“port already open”应该是mscomm32.ocx定义的。是不是需要连接硬件才能调试?


期望高手帮忙:如何用CMSComm类进行串口通信(PC与PLC之间)


代码:
BOOL CbDlg::OnInitDialog()
{
//省略自动生成的初始化对话框代码
// TODO: Add extra initialization here
if(m_ctrlComm.get_PortOpen())

{
m_ctrlComm.put_PortOpen(false);
}
else
{
AfxMessageBox(_T("端口no打开"));

}

m_ctrlComm.put__CommPort(1);
m_ctrlComm.put_InBufferSize(1024);
m_ctrlComm.put_OutBufferSize(512);
m_ctrlComm.put_Settings(_T("9600,n,8,1"));
m_ctrlComm.put_InputMode(1);
AfxMessageBox(_T("1"));//能执行到
m_ctrlComm.put_PortOpen(true);//执行到此就弹出“port already open”,并得到对话框
AfxMessageBox(_T("2"));//不能执行到,以下程序都不能执行到
if (m_ctrlComm.get_PortOpen())
{
m_ctrlComm.put_RThreshold(1);
m_ctrlComm.put_InputLen(0);
m_ctrlComm.get_Input();
AfxMessageBox(_T("1"));
}
AfxMessageBox(_T("2"));

return TRUE; // return TRUE unless you set the focus to a control
}
...全文
1795 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjdev 2008-09-15
  • 打赏
  • 举报
回复
port already open,好像是串口已经打开了吧。你把打开串口那一句去掉试试。
mmm1024 2008-09-14
  • 打赏
  • 举报
回复
To Yang79tao:

我使用右键->insert active control插入的
youngwolf 2008-09-12
  • 打赏
  • 举报
回复
你是不是用的import将ocx导入到工程?
听说有窗口的控件,必须要通过project->add to project->components and controls将控件添加到工程,因为MSCOMM控件是有窗口的控件(它隐藏了)。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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