主题:[讨论]MSComm 控件的应用问题 ?
miaoyong
[专家分:760] 发布于 2009-12-05 00:04:00
大家好啊,我最近在做一个COM 口调试小软件, 基于对话框的,用MSComm控件做!
但是在我做的过程中遇到一个问题, 就是我更具别人资料上说的,调出MSComm控件添加到项目中,
然后在控件工具箱中 把 MSComm控件拖到对话框上, 添加了初始化代码后.在我简单测试时,发现
在对话框 CommonDlg.h 文件中添加了 #include "mscomm.h"
CMSComm MSC;//定义了实例对象,但我发现这个类没有构造函数,但编译正确?
BOOL temp[10]
在对话框 CommonDlg.cpp 文件中添加了 #include "commonDlg.h"
DWORD style=WS_VISIBLE;
MSC.Create(NULL,style,rect,this,IDC_MSCOMM1);
MSC.SetCommPort(m_PortNo);
MSC.SetSettings("9600,n,8,1");
temp[0]=MSC.GetPortOpen();
// 就在我跟踪调试到这里时发现 MSC.GetPortOpen();这个函数调用
没有返回,原理上应该返回串口打开状态?
不知为什么 定义的MSC这个对象的成员函数没有正确返回?
那位高人,帮我解答一下,谢谢!
沙发
miaoyong [专家分:760] 发布于 2009-12-05 22:53:00
我在CommonDlg.cpp 中添加了如下代码:
DWORD style=WS_VISIBLE;
temp[1]=MSC.Create(NULL,style,rect,this,IDC_MSCOMM1);
MSC.SetCommPort(m_PortNo); // 当程序单步执行到这里temp[1]是1,证明创建成功?是这样吧!
MSC.SetSettings("9600,n,8,1");
temp[0]=MSC.GetPortOpen();
if(temp[0]) // 当程序单步执行到这一行时temp[0]为0,这是为什么啊? 不知错在那里?
{
if(IDOK==MessageBox("The Com Prot alread Open! are you continue?","Open Error",MB_ICONSTOP | MB_YESNO))
{MSC.SetPortOpen(FALSE);}
}
MSC.SetInBufferSize(1024);
MSC.SetOutBufferSize(512);
MSC.SetInputLen(0);
MSC.SetInputMode(1);
MSC.SetRThreshold(1);
if(!MSC.GetPortOpen())
{
MSC.SetPortOpen(TRUE);
m_bOpenF=TRUE;
SetDlgItemText(IDC_OPENCOM,"关闭串口");
}
待高手解答啊..........?