产品列表
联系方式

杭州易测计量设备有限公司

地 址:杭州市余杭区北沙西路152号

联系人:王经理

电 话:0571-85108155

传 真:0571-85105122

手 机:18094712401

行业资讯
 

VB编程技术在地磅管理软件上的应用

本文通过对一个地磅管理系统软件的编程过程,介绍了用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数字式地磅安装与调试
精品推荐 更多…
网站首页汽车衡地磅电子磅秤电子秤电子吊秤电子叉车秤建筑工地产品联系我们关于我们公司动态

联系人:王经理 电话:0571-85108155  传真:0571-85105122

邮编:310006 手机:18094712401 地址:杭州市余杭区北沙西路152号

Copyright © 杭州易测计量设备有限公司 All rights reserved.