1、第 1 页 共 56 页基于 VB 的放入式电子测压器软面板及串行通信设计摘要摘要:设计了基于 Visual Basic 6.0 的测压器串行通信软件。上位机与下位机通过 PC 机的 RS-232 串行接口实现通信,通过串行通信达到二者的正常连接。本文阐述了在 VB6.0 中利用 MSComm 控件进行数据传输的实现方法,以及在 VB6.0中利用其他的控件进行数据分析的实现方法。此软件通过通信控件 MSComm 接受数据,并对接收到的数据进行处理、绘制波形,还可以对波形进行缩放,数据比较。此软件具有串口读数、读取文件、电路编程等功能模块。可以方便、快捷地对测压器进行编程控制,并将测压器采集的数
2、据显示分析。关键字:VB6.0,MSComm 控件,串行通信,控件第 2 页 共 56 页1 绪论1.1 引言随着计算机的迅速普及和计算机控制技术的发展,计算机被广泛应用于自动化控制领域之中。而要完成一个控制过程一般都要利用集散式计算机控制系统。在这种控制系统中,下位机主要完成对现场数据采集和对设备一级的监控,上位机则要完成对整个系统的采集、分析、处理和控制以及数据、图形显示、打印、人机对话等工作。而上位机与下位机大多是通过 PC 机的 RS-232 串行接口实现通信。随着 Windows 系统的普及,越来越多的用户由 DOS 系统转向了 Windows 系统,这使得数据采集及工业控制软件也上
3、升到了 Windows 环境下。这就给程序员提出了如何编写面向 Windows 的串行通信程序问题 1。Visual Basic 6.0 是一个 Windows 下简单、易学、高效的可视化软件开发平台,它以所见即所得的可视化界面设计风格和 32 位面向对象程序设计的特点,已被广泛应用到各个领域,成为众多开发人员采用的工具。VB 不但提供了良好的界面设计能力,而且在串口通信方面也有很强的功能。它提供的 Microsoft Communication control(以下简称 MSComm)这样一个通信控件,它利用 PC 机的两个串行口 COM1 和 COM2 作为输入输出通道。单片机则利用内部的
4、全双工串行异步通信接口,能方便地构成双机或多机通信系统。该控件“隐藏”了大部分串口通信的低层运行过程和许多繁琐的过程,它使用户能够方便地访问 Windows 下串口通信驱动程序的大多数特性。所以整个串行通信程序的开发过程变得十分简单易行,程序员不需要处理繁琐的细节,而通过利用通信控件,只需编写少量的代码来实现主要应用功能和界面的设计,就可以完成软件的开发过程 2。1.2 课题研究内容该软件主要利用 VB 实现数据在测压器和计算机之间的通信问题,通过串行通信转换达到二者的正常连接,及时准确的在电脑上显示出要表达的结果。系统软件主要是 VB6.0 对 R-S232 串口编程。实现硬件之间的通讯。M
5、SComm 是 Microsoft 公司提供的主要用于串行通信编程的 ActiveX 控件。ActiveX 控件包括一系列的属性、方法和事件 , 应用程序通过 ActiveX 控件提供的第 3 页 共 56 页接口来访问控件的功能。通信控件把许多复杂的操作都留给了 VB 处理,编程人员编程时只需设置其中的一些属性 3。1.3 课题研究意义随着超大规模集成电路、通信技术、VB 技术的迅猛发展和工作精度的日渐提高,利用 VB 及其它串行通信实现测压器与计算机之间的通信已成为可能,且是一种发展趋势。由于现代化集中管理的需要,对现场数据需进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置
6、进行实时控制,完成各种规定操作,达到集中管理的目的。由于单片机的计算能力有限,难以进行复杂的数据处理,因此在功能比较复杂的控制系统中,通常以 PC 为主机,单片机为从机,由单片机完成数据的采集及对装置的控制,而由主机完成各种复杂的数据处理及对单片机的控制。解决以上问题的关键在于如何实现主机与从机之间的数据通讯。实践证明,用 VB 实现通信及数据库管理的操作具有极大的灵活性与控制力。可以在对现有单片机控制系统做较小改动的基础上,实现与 PC 机的通信,具有广泛的开发潜力和应用前景 2。利用 Visual Basic 的可视化编程语言开发系统设计一个单片机与计算机串行通信软件,此软件可以方便、快捷
7、地将测压器采集的数据读出并显示,并可对数据进行分析。1.4 基于 Visual Basic 串行通信软件设计的现状VB 是伴随 Windows 操作系统而发展的,在中国使用较广的版本有VB4.0、 VB5.0、VB6.0 。VB4.0 是为配合 WIN95 的问世于 1995 年推出的, 既可用于编写 WIN3.X 平台的 16 位应用程序也可编写 WIN95 平台的 32 位应用程序;VB5.0 主要用于编写WIN95 平台的 32 位应用程序,较之 VB4.0 主要扩展了数据库、ActiveX 和Internet 方面的功能;VB6.0 是与 WIN98 配合于 1998 年推出的,进一步
8、加强了数据库、Internet 和创建控件方面的功能 56。1.5 基于 VB 串口通信的应用(1)利用VB6. 0下的ActiveX控件MSComm 和COP8AME单片机演示板RS-232的串口通信功能,实现了在Windows98环境下PC机与单片机之间数据通信。并能第 4 页 共 56 页实时检测温度传感器的工作状态 7。(2)使用汇编语言和 Visual Basic 设计了 PC 机与单片机间的串行通信程序, 并提出了数据趋势曲线的绘制方法。设计了基于单片机的罐道倾角数据采集系统, 介绍了系统的构成、工作原理和流程图, 给出了单片机 AT89S52 与外围器件的硬件接口电路。设计的数据
9、采集系统具有易实现、易编程、可移植、体积小、功耗低等优点 8。(3)基于 VB 控件的串行通信程序设计,方便地实现了 T5557 射频卡与 PC机之间的串行通信。利用这种方法还能够创造出生动的界面,灵活的功能选择,开发者还可以根据需要增强各种功能,充分体现了用 VB 实现串行通信的优越性 2。(4)串行通信是数据采集系统中最常用的通信手段之一。设计并研制了基于VB的LED 大屏幕显示串行数据通信系统,具有编程灵活、控制通信对象容易的优点。通过8250的奇偶校验位与单片机的SM2位的配合,实现了PC机与多个单片机的串行数据通信。介绍了基于VB6. 0进行串行通信的流程和编程,较好地解决了同时使用
10、通信方式0与方式1时引起的RXD端口的冲突问题。实验证明,该设计简单、实用,提高了系统设计的效率 9。(5)采用 VB6. 0 可实现大屏幕显示系统串行通信数据传输。系统下位机采用 MCS251 单片机完成信息的接收以及送往数码管、点阵发光二极管(LED )显示屏等设备进行显示;上位机即 PC 机负责信息编辑、转化及向下位机发送,并对下位机进行控制。一般情况下,显示屏即下位机是多机并行工作,且显示内容各不相同,通常需要采用多机通信技术实现。目前,单片机多机通信普遍采用通信方式 3 和中断方式接收。显示屏系统进行数据显示时已占用通信方式 0,且用定时器 T0 中断激活,所以若采用通信方式 3 将
11、涉及两种中断(串行接收中断和定时器 T0 中断)的嵌套问题,不易协调,容易出错。为此提出一种用 VB 语言实现的上位机与各下位机主从式多机通信的方法,并在实践中得以应用。这种通信方法解决了 MCS251 单片机同时用到两种通信方式引起的串口冲突,对类似的显示屏系统将起到借鉴作用 9。第 5 页 共 56 页2 软件设计总体思路 本设计中的放入式电子测压器软面板可以通过串口读取单片机中的数据,可以打开已有的数据,也可以向单片机发送数据,此外还可以将读取到的数据绘制成波形,并显示出波形的坐标,进行波形缩放、坐标比较以及转换数据。在设计测压器的串行通信软件时,先定义标准模块,在模块中包含全局变量、类
12、型等,也包括全局过程。窗体可直接调用模块中声明的变量、类型等。其次,在模块的基础上创建窗体,窗体包括两块,一块为主窗体,即软件运行时的主界面,在此界面中绘制出波形;另一个为功能窗体,实现软件的主要功能,可以接收数据,发送数据等等。如图2.1:图 2.1 工程总体结构图标准模块:标准模块(文件扩展名为.BAS)是应用程序内其它模块访问的过程和声明的容器。它们可以包含变量、常数、类型、外部过程和全局过程的全局(在整个应用程序范围内有效的)声明或模块级声明。写入标准模块的代码不必绑在特定的应用程序上 10 11。在标准模块中,有draw_all,定义初值,原始XY坐标_place,draw_原始坐标
13、线,draw_ 原始坐标值,draw_游标1,draw_游标2 ,draw_yali 等这几个部分。其中draw_all的流程图如下: 主窗体标准模块功能模块第 6 页 共 56 页画 draw_游标 1画 draw_yali画 draw_原始坐标线画原始 XY 坐标 _place定义全局变量及其类型,定义初值画 draw_原始坐标值图 2.2 draw_all 流程图“原始 XY 坐标_place”的作用是设置窗体 1 中图片框、坐标值的文本框以及坐标单位文本框的位置。“draw_原始坐标线”的作用是画坐标线。“draw_原始坐标值”的作用是定义坐标值的大小,以及设置坐标值的单位。“draw
14、_游标 1”的作用是显示第一个游标的坐标值。“draw_yali”的作用是根据数组中所存的值画出点,并且将点与点之间由直线的,构成曲线图。其流程图和代码如下所示:开 始设置所画线的样式画第一个点设置步长循环画点结束开 始第 7 页 共 56 页图 2.3 draw_yali 流程图Form1.Picture1.DrawWidth = 1Form1.Picture1.DrawStyle = 0 Form1.Picture1.PSet (x_least + 1, data_yali(1, x_least + 1), &HFFFF& x_step = (x_most - x_least) / 102
15、4If x_step 524288 Then i = 524288 Form1.Picture1.Line -(i, data_yali(1, i), &HFFFF&Next i“draw_游标 2”的作用是显示第二个游标的坐标值并将其与第一个游标值进行比较。第 8 页 共 56 页3 窗体界面设计 3.1 VB 概述Visual Basic(简称 VB) 是 Microsoft 公司开发的一种通用的基于对象的程序设计语言。 “Visual”指的是开发图形用户界面(GUI)的方法 不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象 add 到屏幕上的一点即可。“Basic”指的
16、是 BASIC(Beginners All-Purpose Symbolic Instruction Code)语言,一种在计算技术发展历史上应用得最为广泛的语言。Visual Basic 在原有BASIC 语言的基础上进一步发展 ,至今包含了数百条语句、函数及关键词,其中很多和 Windows GUI 有直接关系。专业人员可以用 Visual Basic 实现其它任何Windows 编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。Visual Basic Scripting Edition(VBScript)是广泛使用的脚本语言,它是Visual Basic 语言的子集,
17、可嵌入 HTML 语言中用于网页设计,如 ASP(Active Server Page)文件 3。3.2 VB 基本术语(1)对象和对象类对象是代码和数据的组合,可以作为一个单位来处理。对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序也是一个对象 12。VB中的每个对象都是用类定义的。类是面向对象程序设计的核心技术,可以理解成一种定义了对象行为和外观的模板;把对象看作是类的原原本本的复制品,类具有继承性、封装性、多态性、抽象性 13。(2)属性属性是对对象特性的描述,VB为每一类对象都规定了若干属性,设计中可以改变具体对象的属性值。比如窗体的背景颜色、高度与宽度。(3)事件(Ev
18、ent)事件是发生在对象上的动作。事件的发生不是随意的,某些事件仅发生在某些对象上。在 VB 中事件的调用形式是:第 9 页 共 56 页Private Sub 对象名_事件名(事件内容)End Sub(4)方法(Method)方法指的是控制对象动作行为的方式。它是对象本身内含的函数或过程,它也是一个动作,是一个简单的不必知道细节的无法改变的事件,但不称作事件;同样,方法也不是随意的,一些对象有一些特定的方法。在 VB 里方法的调用形式是:对象名.方法名 14。3.3 利用 VB 设计及软件的步骤一个 VB 程序也称为一个工程,由窗体、标准模块、自定义控件及应用所需的环境设置组成。开发步骤一般
19、如下 15:(1) 创建程序的用户界面;(2) 设置界面上各个对象的属性;(3) 编写对象响应事件的程序代码;(4) 保存工程;(5) 测试应用程序,排除错误;(6) 创建可执行程序。3.3.1 创建工程创建工程首先从“文件”菜单中选择“新建工程” ,然后从“新建工程”对话框中选定“标准 EXE”(首次启动 VB 时会显示“新建工程”对话框) 。VB 会创建一个新的工程并显示一个新的窗体。如图 3.1 所示 16:第 10 页 共 56 页图3.1 创建工程窗体是创建应用程序的基础。在 VB 中,通过使用窗体可将窗口和对话框添加到应用程序中。也可把窗体作为项的容器,这些项是应用程序界面中不可视
20、的部分。例如,应用程序中可能有一个作为图形容器的窗体,而这些图形是打算在其他窗体中显示的 12。3.3.2 绘制对象创建 VB 应用程序的第一步是创建窗体,这些窗体将是应用程序界面的基础。然后在创建的窗体上绘制构成界面的对象。对于本设计,使用了文本框控件、命令按钮控件、标签控件如图 3.2:图3.2 控件图示此外还有串行通信控件、进程条控件、单选按钮、框架控件、图片框控件、公用对话框控件等等。在窗体上添加控件的另一种简单方法是双击工具箱中的控件按钮,这样会在窗体中央创建一个大小为默认值的控件,然后再将该控件移到窗体中的其他位置。在绘制控件时,出现在控件四周的小矩形框称为尺寸句柄;下一步可用这些尺寸句柄调节控件尺寸,也可用鼠标、键盘和菜单命令移动控件、锁定和解锁控