基于VC++6.0实现的串口通讯

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于VC++6.0实现的串口通讯

摘要:串口通讯作为一种灵活、方便、可靠的通讯方式,广泛应用于计算机与其它设备之间的通讯以及工业控制系统中,是计算机与外部设备进行数据通讯时经常使用的方式之一。本文介绍了VC++6.0环境下利用MSComm控件实现计算机与外部设备之间的串口通讯。

关键词:串口通讯VC++6.0MSComm

一、引言

串口作为计算机标准配置中的对外接口,由于其简便、易行及数据传输可靠等优点,使其成为计算机与外部设备之间通讯的主要手段之一,广泛应用于工业控制系统中。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

m_Array.SetAt(i,data[i]);

m_ctrlComm.SetOutput(COleVariant(m_Array));

}

四、结语

在VC++6.0对话框的基础上利用MSComm控件实现串口数据通讯,用户不必了解具体的硬件原理,简化了编程,使程序透明化,适应性好,可移植性高。经实践证明,在各种环境下运行情况良好。在此基础上稍加改动,即可实现在不同通讯协议和不同通讯设备(如单片机、计算机等设备)之间的串口通讯。由于这种技术具备简单,易操作,可靠性高等优点,未来将越来越多的被采用。

相关文档
最新文档