摘 要:串口通讯作为一种灵活、方便、可靠的通讯方式,广泛应用于计算机与其它设备之间的通讯以及工业控制系统中,是计算机与外部设备进行数据通讯时经常使用的方式之一。本文介绍了VC++6.0环境下利用MSComm控件实现计算机与外部设备之间的串口通讯。
关键词:串口通讯 VC++6.0 MSComm
一、引言
串口作为计算机标准配置中的对外接口,由于其简便、易行及数据传输可靠等优点,使其成为计算机与外部设备之间通讯的主要手段之一,广泛应用于工业控制系统中。VC++6.0作为面向对象的可视化开发工具,具有良好的界面设计能力,利用具有良好运行效率和稳定性的MSComm控件,可以简单方便的实现串口通讯功能。
二、MSComm控件介绍
VC++6.0是基于Windows操作系统的主流编程可视化语言。应用VC++6.0开发串行通讯通常有如下几种方法:
1.利用Windows API通讯函数。
2.利用VC的标准通讯函数_inp,_inpw,_inpd,_outp,_outpw,_outpd等直接对串口进行操作。
3.使用Microsoft Visual C++的通讯控件(MSComm)。
以上几种方法中,前两种由于使用时需要的专业程度比较高,需要了解内部接口及标准通讯函数的定义,因此比较困难;第三种方法较简单,对使用者要求不高,只需对串口进行简单配置即可。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司基于组件对象模型(COM)开发的简化Windows下串口通讯编程的ActiveX控件,它为应用程序提供了通过串口接口收发数据的简便方法。该控件屏蔽了通讯过程中的底层操作,用户只需通过设置并监视其属性和事件,即可完成串口编程,实现与被控制对象的串行通讯、数据交换,并监视或响应在通讯过程中可能发生的各种错误和事件。
具体有两种处理方法:
一是事件驱动(Event-Driven)。
二是查询法。应用MSComm控件进行串口通讯编程的步骤如下:
(1)在建立的程序工程中插入Microsoft Communications Control控件。
(2)添加MSComm控件ID的控制变量(或对象)。
(3)对串口进行初始化,设置MSComm控件的属性。
期刊文章分类查询,尽在期刊图书馆
(4)添加串口事件的消息处理函数OnComm()函数,在该函数中根据需要,编写数据处理代码。
三、串口通讯的实现
1.建立应用工程
打开Visual C++6.0,建立一个基于对话框的MFC应用程序:SerialPortTest。然后在对话框中添加ActiveX控件下的Microsoft Communications Control,其中该控件在运行时是不显示的,设计时可以放在对话框任何位置。
2.初始化串口
串口初始化是使用MSComm控件的控制变量m_ctrlComm对相应函数的参数进行设置来完成。
3.串口接收数据
串口通讯过程中的数据处理采用事件驱动方式(Event-Driven),这种方式的优点是实时性强,可靠性高。通过OnComm事件和CommEvent属性捕捉并检查通讯事件和错误的值。发生通讯事件或错误时,将触发OnComm事件,CommEvent属性的值将被改变,应用程序检查CommEvent属性值并做出相应的反应。
4.串口发送数据
串口发送数据可以建立在一个编辑控件和一个按钮控件的基础上,以事件驱动(Event-Driven)方式来实现。其中编辑控件中输入需要通过串口发送的数据,通过按钮来实现串口数据的发送。
其中发送代码如下:
void CSerialPortTestDlg::OnSend(CString str)
{
int i,count;
char data[512];
count=Str2Hex(str, data); //要发送的数据内容
CByteArray m_Array;
m_Array.RemoveAll();
m_Array.SetSize(count);
for(i=0;i<count;i++)
m_Array.SetAt(i,data[i]);
m_ctrlComm.SetOutput(COleVariant(m_Array));
}
四、结语
在VC++6.0对话框的基础上利用MSComm控件实现串口数据通讯,用户不必了解具体的硬件原理,简化了编程,使程序透明化,适应性好,可移植性高。经实践证明,在各种环境下运行情况良好。在此基础上稍加改动,即可实现在不同通讯协议和不同通讯设备(如单片机、计算机等设备)之间的串口通讯。由于这种技术具备简单,易操作,可靠性高等优点,未来将越来越多的被采用。
论文作者:张波涛
论文发表刊物:《素质教育》2015年11月总第189期供稿
论文发表时间:2015/11/19
标签:串口论文; 通讯论文; 控件论文; 事件论文; 函数论文; 数据论文; 计算机论文; 《素质教育》2015年11月总第189期供稿论文;