

摘 要:串行通信因其成本低、可靠性高而被广泛运用。本文首先介绍了串行通信和基于Visual C++中的串口通信控件MSComm,然后基于Visual C++的MSComm控件进行编程,最后对串行通信程序进行了调试,设计结果表明程序能成功收发数据。
关键词: 串行通信;MSComm控件;Visual C++
Abstract: Serial communication is used extensively because of low costs and high dependability. Firstly, serial communication and MSComm control of serial communication in Visual C ++ are introduced. And then, a serial communication program based on the MSComm of Visual C ++ is maked. Finally, the serial communication program is debugged. The experiment result proves that the program can transfer and receive data successfully.
Key words: Serial communication;MSComm control;Visual C++
1 前言
1.1 串行通信技术发展趋势与展望
串行通信是一种常用的数据传输方法,虽然它的传输速度慢,但由于它占用的通信线路少、连接简单、使用方便、成本低、数据传递可靠容易实现等优点,在数据通信方式上仍占有重要地位。特别在现代的实时监控系统和工业自动化领域中得到了广泛应用,串行通信技术成为一种重要的数据传输手段。根据Windows的设备无关性,设备驱动程序将Windows应用程序和不同的设备相隔离,使得Windows程序员不用对硬件直接进行操作。同样,Windows的通信机制也进行了封装。因此编程者可以不知道串口的IRQ(中断请求)号、调制解调器型号以及各内部寄存器的含义等,只要知道需要打开的串口的名称(如:COM1、COM2 等)就可以了,Windows能自动对串口进行检测,并将待接收或发送的字符排队并等待处理。串行通信技术的发展主要体现在接口技术标准的改善。
目前,串口通信程序的开发,在Windows操作系统下一般用VB、VC、VF Delphi等等许多高级语言编写。Delphi没有自带的串口通信控件,在它的帮助文档里也没有提及串口通信,这也给编程人员带来许多不便,而除VC++外其他高级语言中,本人没有接触过。故本人采用基于VC++语言开发环境。
在工业控制领域,我们经常需要进行计算机与其他设备之间的通信,在开发串行通信程序的过程中,利用微软的MSComm通信控件则相对较简单,该控件具有丰富的与串行通信密切相关的属性及事件,提供了对串口的各种操作。MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VC中容易使用。
基于WindowsXP平台上,利用Microsoft Communications Control控件[6]编写串行通信程序的方法 ,用的是基于Visual C++语言中的ActiveX技术的串行通信编程的一般步骤。由于该方法简单、封装性好、可靠 ,从而大大缩短设计时间 ,很大程度减少了工作量,能比较轻松地写出串行通信程序。
1.2 设计目的与意义
本设计的目的是以单片机模块采集外界数据(如温度)通过串口在PC机上进行接收显示的系统原型,为设计实用的较复查的串口通信系统提供了基础。
本系统的实现目标:
1) 实时性强
本系统能够根据外界温度、湿度、电压的变化实时地显示各数据变化情况。
2 串口通信概述与MSComm控件
2.1 串口通信
串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,即只需一对传输线,数据的各位按照时间顺序依次传送,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。
2.1.1 串口通信的主要参数
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验[10]。对于两个进行通行的端口,这些参数必须匹配:
1) 波特率:这是一个衡量通信速度的参数。所谓波特率,即每秒钟传送的二进制位数,其单位为bps。它是衡量串行数据速度快慢的重要指标。有时也用“位周期”来表示传输速率,位周期是波特率的倒数。大多数串行接口电路的接收波特率和发送波特率可以分别设置,但接收方的接收波特率必须与发送方的发送波特率相同。通信线上所传输的字符数据(代码)是逐位传送的,1个字符由若干位组成,因此每秒钟所传输的字符数(字符速率)和波特率是两种概念。在串行通信中,所说的传输速率是指波特率,而不是指字符速率。