VB编程技术在汽车衡管理软件上的应用
2012-06-02湖北省漳河工程管理局刘恒清
湖北省漳河工程管理局 刘恒清
1.引言
Visual Basic(简称VB)是Windows环境下简单、易学、高效的编程语言开发系统,以其所见即所得的可视化界面设计风格和32位面向对象的程序设计等特点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。VB提供了良好的界面设计能力,提供了强大的数据库访问功能和微机串口通信功能。完全能够满足汽车衡管理系统的数据采集、处理和存储要求。下面以SCS微机汽车衡称重软件为例,叙述VB软件对系统中几个重要功能程序的设计。
2.管理软件功能需求
SCS微机汽车衡称重系统主要通过计算机串口连接汽车衡称重仪表,处理仪表所获取的汽车重量信息,达到管理汽车称重数据的目的。系统软件要求达到的功能主要有:
(1)设置管理权限,达到操作人员分级登录操作。
(2)记录、贮存并打印每一次称重结果。包括车号、货物名称、运货单位、驾驶员、毛皮重、净重、进出厂过磅时间、司磅员等内容。
(3)查询打印功能。可按车号、时间范围、司磅员、货物种类、驾驶员等或任意组合查询过去称重记录,并可打印输出。
(4)统计打印功能。可对称重结果自动进行统计,并打印各种报表,如月报、年报、分类报表等。
(5)数据维护功能。包括记录限制修改和删除,数据备份和导出。
在这个系统软件中,重点是编写数据采集的串口通信模块和数据库操作访问功能程序。用Visual Basic编程语言来编制这些程序,也就要充分理解串口通信和数据库访问相关的控件特点和应用技术。
3.数据采集程序模块的设计
3.1 选择MSComm控件实现串口通信
用VB开发串口通信程序常用两种方法,一种是利用WINDOWS的通信API函数实现,另一种是采用VB内集成的MSComm通信控件实现。在实例中选用MSComm控件实现串口通信的编程,该控件具有丰富的与串口通信密切相关的属性和事件,提供了对串口的各种操作。在通信过程中,当发送数据、收到数据或产生传输错误时,触发MSComm控件的OnComm事件,然后可以通过判断CommEvent属性值获得事件类型,再根据事件类型进行相应数据处理。因此用其实现微机串口的数据通信相当简单,以很少的程序代码就可以轻松实现串口的访问和数据通信。
3.2 仪表参数及其数据通信协议
以微机管理系统连接汽车衡XK3 19O-A9称重显示器为例。该仪表可连接8个35OΩ或12个7OOΩ的高精度称重传感器,用于测量汽车重量数据。仪表测量准确度为Ⅲ级(N=3OOO)按显示分度值设置不同,测量范围最大值1OO吨。该仪表具有RS-232/RS422(选配)串行通讯接口,能与微机进行串口数据通信,实时传送检测数据。
该仪表串口数据通信协议是:数据传输速率为6OO/12OO/24OO/96OObps(可选),数据格式(1O位):1位开始位,8位数据位(ASCⅡ编码),1位停止位,无奇偶校验位。通讯方式有连续方式和指令方式两种,这里只列举连续通讯方式中的格式。
所传送的数据为仪表显示的当前称量(毛重或净重)。每帧数据由1O组数据组成。格式如表1。
3.3 部分参数的技术说明
表1
(1)为满足各种仪表参数和计算机不同运行环境的需要,把串口通信的一些参数用数据库的表进行存放,程序通过读取表数据来进行通信环境参数的设置。这样做用户可以修改数据表的数据来改变运行参数,以满足实际需要。
(2)为了提高接收数据的读取速度,实现实时监测功能,设置MSComm1的属性RThreshold=4,接收缓冲区收到四个字节产生OnComm事件;InputLen=1,每次读取一个字节。设置接收数据模式采用二进制形式,即InputMode=comInputM odeBinary。设置InBufferSize=5O(设置接收缓冲区为5O字节),OutBufferSize=2(设置发送缓冲区为2字节)。
(3)定义一个Byte类型数组变量来存放重量数据值。注意用Input属性读取数据时,还要看仪表输出数据位格式的编码方式。压缩的BCD码存入Byte类型变量,VB系统只按十进制数处理,这要通过一个简单算法换算,解压BCD码才能还原成十进制表示数值。本例ASCⅡ编码直接赋值给数组Byte类型变量。
表2 本地表数据表结构
表3 称重数据表结构
3.4 源程序代码
系统数据库db1.mdb建立一个名为“串口”的表,字段分别为串口、波特率、校验、停止位、数据位、流控制,记录串口运行参数设置信息。在窗体中添加名为MSComm1的MSComm控件,名为Label7显示重量数据的标签控件,名为Text3、Text4存贮毛重、皮重的文本框控件等。
串口初始化模块:
4.数据库程序模块设计
4.1 数据库表结构设计
本例以Microsoft Access数据库进行称重数据的管理,建立db1.mdb数据库。汽车衡完成一个称重过程一般是某车号汽车称毛重,再过皮重(或者称重顺序反调)得出净重后,数据存入数据表,打印报表。在实际称重中称毛重和过皮重的过程并不连续,有时要连续称几台汽车的毛重或皮重,因此必须建立一个用于存贮称重暂存数据的表。在db1.mdb数据库中建立报头、帐户、本地表、称重、单位设置、历史皮重、串口、物质类别等数据表。“本地表”用于存贮历史称重数据,“称重”表存贮称重暂存数据,本例重点介绍“本地表”和“称重”两个关键表的结构设计,如表2,表3所示。
4.2 数据库编程
SCS微机汽车衡称重软件建立了“系统登录”、“称重管理”、“报表管理”等多个窗体,都涉及到对db1.mdb数据库的编程,主要应用了Visual Basic对Access数据库操作的编程语言。如:
[1]刘乐善,欧阳明星,等.微型计算机接口技术及应用[M].武汉:华中理工大学出版社,2001.
[2]龚沛曾,等.Visual Basic程序设计教程[M].北京:高等教育出版社,1998.
[3]XK3190—A9称重显示器使用说明书.上海耀华称重系统公司.