调用CMSComm类函数put_PortOpen(true)总是谈出“port already open”, 程序不往下走了
环境: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
}