联系方式 |
 |
杭州易测计量设备有限公司 地 址:杭州市余杭区北沙西路152号 联系人:王经理 电 话:0571-85108155 传 真:0571-85105122 手 机:18094712401
|
|
|
本文通过对一个地磅管理系统软件的编程过程,介绍了用VB6.0编程软件在地磅管理系统中的技术应用。
1.引言
Visual Basic(简称VB)是Win-
dows环境下简单、易学、高效的编程语言开发系统,以其所见即所得的可视化界面设计风格和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
190-A9称重显示器为例。该仪表可连接8个350Ω或12个700Ω的高精度称重传感器,用于测量汽车重量数据。仪表测量准确度为Ⅲ级(N=3000)按显示分度值设置不同,测量范围最大值100吨。该仪表具有RS-232/RS422(选配)串行通讯接口,能与微机进行串口数据通信,实时传送检测数据。
该仪表串口数据通信协议是:数据传输速率为600/1200/2400/9600bps
(可选),数据格式(10位):1位开始位,8位数据位(ASCⅡ编码),1位停止位,无奇偶校验位。通讯方式有连续方式和指令方式两种,这里只列举连续通讯方式中的格式。
所传送的数据为仪表显示的当前称量(毛重或净重)。每帧数据由10组数据组成。格式如表1。
3.3 部分参数的技术说明
(1)为满足各种仪表参数和计算机不同运行环境的需要,把串口通信的一些参数用数据库的表进行存放,程序通过读取表数据来进行通信环境参数的设置。这样做用户可以修改数据表的数据来改变运行参数,以满足实际需要。
(2)为了提高接收数据的读取速度,实现实时监测功能,设置MSComm1的属性RThreshold=4,接收缓冲区收到四个字节产生OnComm事件;InputLen=1,每次读取一个字节。设置接收数据模式采用二进制形式,即InputMode=comInputModeBinary。设置InBufferSize=50(设置接收缓冲区为50字节),OutBufferSize=2(设置发送缓冲区为2字节)。
(3)定义一个Byte类型数组变量来存放重量数据值。注意用Input属性读取数据时,还要看仪表输出数据位格式的编码方式。压缩的BCD码存入Byte类型变量,VB系统只按十进制数处理,这要通过一个简单算法换算,解压BCD码才能还原成十进制表示数值。本例ASCⅡ编码直接赋值给数组Byte类型变量。
3.4 源程序代码
系统数据库db1.mdb建立一个名为“串口”的表,字段分别为串口、波特率、校验、停止位、数据位、流控制,记录串口运行参数设置信息。在窗体中添加名为MSComm1的MSComm控件,名为Label7显示重量数据的标签控件,名为Text3、Text4存贮毛重、皮重的文本框控件等。
串口初始化模块:
Private Sub Form_Load()
MSComm1.CommPort = rec(“串口”)‘赋值串口端口号,本例为COM1
MSComm1.Settings = rec(“波特率”) & ",n,8,1" ‘无奇偶校验,8位数据位,1位停止位
MSComm1.InputLen = 1
MSComm1.RThreshold = 4
If MSComm1.PortOpen = False Then ‘判断串口端口是否打开
MSComm1.PortOpen = True ‘打开端口
Else
MsgBox “串行端口号已被占用,请选择其它端口!”, vbCritical + vbOKOnly, “系统信息”
Exit Sub
数据读取、转换及显示模块:
Private Sub MSComm1_OnComm()
Dim buf() As Byte
‘定义一个数据变量
If MSComm1.CommEvent = 2 Then ‘判断接收缓冲区内字符数达到Rthreshold指定的值
buf = MSComm1.Input
‘读取一个字节
If buf(0) = 2 Then
‘判断是否为开02(XON) 开始
c2 = buf(1)
‘以下读取各位重量数据分别赋值
c3 = buf(2)
c4 = buf(3)
c5 = buf(4)
c6 = buf(5)
c7 = buf(6)
c8 = buf(7)
以下为对各位字节数据进行转换和组合显示
shuju = Chr(c2) + Chr(c3) + Chr(c4) + Chr(c5) + Chr(c6) + Chr(c7) + Chr(c8) Label7.Caption = shuju ‘赋值显示
If Option1.Value=True Then
‘Option1为毛重选项。判断是否Option1被选中
Text3.Text = Val(Label7.Caption) ‘赋值给毛重文本控件
End If
If Option2.Value = True Then ‘Option21为皮重选项。判断是否Option2被选中
Text4.Text = Val(Label7.Caption) ‘赋值给皮重文本控件
End If
Label10.Caption= “数据稳定!"
Else
Label10.Caption = “连接正常,但数据不稳定...!"
MSComm1.PortOpen = False ‘重新关闭和开启串口端口一次
MSComm1.PortOpen = True
End If
End If
End Sub
4.数据库程序模块设计
4.1 数据库表结构设计
本例以Microsoft Access数据库进行称重数据的管理,建立db1.mdb数据库。地磅完成一个称重过程一般是某车号汽车称毛重,再过皮重(或者称重顺序反调)得出净重后,数据存入数据表,打印报表。在实际称重中称毛重和过皮重的过程并不连续,有时要连续称几台汽车的毛重或皮重,因此必须建立一个用于存贮称重暂存数据的表。在db1.mdb数据库中建立报头、帐户、本地表、称重、单位设置、历史皮重、串口、物质类别等数据表。“本地表”用于存贮历史称重数据,“称重”表存贮称重暂存数据,本例重点介绍“本地表”和“称重”两个关键表的结构设计,如表2,表3所示。
4.2 数据库编程
SCS微机地磅称重软件建立了“系统登录”、“称重管理”、“报表管理”等多个窗体,都涉及到对db1.mdb数据库的编程,主要应用了Visual Basic对Access数据库操作的编程语言。如:
dim conn as new adodb.connection
dim rs as new adodb.recordset
连接数据库
with conn
If .State<>adstateclosed Then .Close
.ConnectionString = “pro
-vider=Microsoft.Jet.OLEDB.4.0;
Data Source=” & App.path & “\数据库名.mdb;Mode=ReadWrite;Persist Security Info=False”
.Open
End With
查询记录
if rs.state<>adstateclosed then rs.close
rs.open “select * from 表名”,conn,adopenkeyset,adlockreadonly
set mshflexgrid1.datasource
=rs
rs.close
新增记录
conn.execute “insert into 表名(...) values(...)”
修改记录
conn.execute “update 表名 set ... where ...”
删除记录
conn.execute “delete from 表名 where...”等等,鉴于论文篇幅的限制本例数据库编程源代码略。
|
上一篇:关于地磅故障分析与处理的心得
下一篇:浅谈SCS数字式地磅安装与调试
|
|