BOOL CMyCOMDlg::OnInitDialog()
{
CDialog:OnInitDialog();
//以上为MFC框架自动生成的代码,在此不列出
//TODO:Add extra initialization here
m_wndCOM1.SetCommPort(1);
m_wndCOM1.SetSettings(“9600,e,7,1”);
m_wndCOM1.SetRThreshold(1);
m_wndCOM1.SetSThreshold(0);
m_wndCOM1.SetInputLen(1);
m_wndCOM1.SetPortOpen(TRUE);//打开通信口
return TRUE;//return TRUE unless you set the focus to a control
}
接下来为程序主对话框建立响应MSComm事件的处理函数,每当MSComm控件触发事件时该函数将被调用。在对话框编辑器中用鼠标左键双击MSComm控件图标,在弹出的对话框中输入函数名OnCommCOM1,该事件处理函数的原型定义和消息映射入口将自动被添加到CMyCOMDlg类中,我们所要做的只是在OnCommCOM1函数中给出具体的数据处理程序段,代码示例如下:
void CMyCOMDlg::OnCommCom1()
{
//TOD O:Add your control notification handler code here
CString sInput;
switch(m_wndCOM1.GetCommEvent())
{
case 1: //comEvSend事件
/*如有数据要发送,可采用以下代码:
VARIANT varOut;
VariantInit(&varOut);
varOut.vt=VT_BSTR;
USES_CONVERSION;
varOut.bstrVal=SysAllocString(T2OLE)(“My data”));
if(varOut.bstrVal){
m_wndCOM1.SetOutput(varOut);
SysFreeString(varOut.bstrVal);
}
*/
break;
case 2: //comEvReceiv事件,有数据到达
sInput=m_wndCOM1.GetInput().bstrVal;
//对接收到的数据做必要处理
break;
case 1009://comEventRxParity事件,奇偶校验错误
//错误处理代码
break;
default:
break;
}
在这里必须注意的一点是在发送字符数据时,必须向MSComm控件提供Unicode格式的字符串,在以上代码中用到了USES_CONVERSION和T2OLE宏进行ANSI字符串到Unicode字符串的转换,具体内容可参考Visual C++6.0所带的MSDN文档,在此不加赘述。
本文对Windows 98下Visual C++ 程序中使用MSComm串行通信ActiveX控件编程的方法做了探讨,显示了ActiveX技术的强大功能、充分的灵活性和易用性,具有一定的实践意义。
责任编辑:gt
关于通信网络就介绍完了,您有什么想法可以联系小编。