VB6.0

2024-06-08

VB6.0(共7篇)

VB6.0 篇1

在工业控制系统中, 当数据采集完成后, 往往需要更直观的显示与控制。利用VB6.0编程实现实时数据曲线的绘制与显示, 可动态地监视某些关键参数值的变化情况与走向趋势, 以便观测。

1.绘制实时曲线的思路

实时数据曲线是数据轴和时间轴的关系曲线, 反映实时数据的大小, 并随时间变化实时更新。选择PictureBox作为绘制实时曲线的容器, 采用Line方法将各数据点绘制成首尾相接的直线, 就可实现数据曲线的绘制。

一屏数据显示完后, 结合PictureBox的CLS方法, 自动清屏, 重新绘制曲线, 即可实现数据曲线的连续显示问题。通常当前点在曲线的最右端显示, 当数据曲线到达图片框的右边缘时, 整个曲线动态地向左移动。对于显示较长的数据曲线可添加水平滚动条控件, 通过滚动条来查看数据曲线的其它部分。

2.实时数据曲线的绘制

要实现实时数据曲线的绘制, 首先应进行数据采样, 借助Timer控件, 定期将串口或其他仪器中监测到的数据送往PictureBox, 定时器定时时间到, 触发定时器事件, 进行数据点的采集, 具体实现如下:

2.1设置界面

打开VB6.0中文版, 新建一个工程, 在窗体中添加pictureBox控件。修改PictureBox的一些属性参数, 其中必须将pictureBox的atuoredraw属性设置成True, 才可以在图片框内绘制曲线。然后添加Timer控件及其它所需控件, 界面就基本设置好了。

2.2重新建立坐标系

图片框的默认坐标系, 是以其左上角为坐标原点的, 不符合我们的画线要求。采用Scale方法在PictureBox中建立合适的坐标系, 其语法如下:

Picture.scale (x1, y1) - (x2, y2)

其中 (x1, y1) 为PictureBox的左上角坐标, (x2, y2) 为右下角坐标。根据实际需要确定左上角和右下角的坐标值, 得到合适的坐标系。

绘制曲线前需将绘图范围及坐标轴刻度设定好, 然后根据测量数据及采样时间绘制实时数据曲线。为了降低绘图的复杂性, 并能控制图片背景, 可利用shape控件, 选取该控件的矩形作为绘图范围, 以矩形的左边线为纵坐标, 下边线为横坐标。用line方法绘制坐标系中的网格线, 并标记好刻度, 界面将更为美观且读数方便。

另外, 可在曲线图的中间设置一条基准线, 用一个过程

PicMidleLine () 来实现:

Private Sub PicMidleLine (picX As PictureBox)

picX.Line (0, 0) - (picX.ScaleWidth, 0) '画基准线

End Sub

2.3采用line方法绘制曲线

用VB6.0提供的line方法, 在PictureBox中画出连续的实时曲线。使用line方法的语法格式如下:

picture.line (x1, y1) - (x2, y2)

其中 (x1, y1) 为所画曲线的起点坐标, (x2, y2) 为终点坐标。

定义好变量, 在PictureBox中将此次采集的数据点与上次采集的数据点用Line方法连起来。程序代码如下:

For i=1 To num-1

X1= (i-1) :Y1=datatemp (i-1)

X2=i:Y2=datatemp (i)

Picture1.Line (X1, Y1) - (X2, Y2) '绘制数据曲线

Next i

3.结束语

在VB6.0中, 可以用PictureBox结合Timer定时器控件, 将从硬件电路通过串口传输来的数据绘制成一条实时曲线。改变Timer控件的interval值就可改变数据的采样周期。如果计算机上没有和串口相连的设备, 还可用Timer控件来模拟从串口读取的数据。

参考文献

[1]刘炳文.Visual Basic程序设计教程[M].北京:清华大学出版社, 2006.

[2]隋晏, 张学胜, 姚伟力等.VB环境中平面曲线的绘制与坐标轴刻度的标注[J].福建电脑, 2008, 5:70-71.

[3]关维娟, 陈清华.利用VB编程实现实时数据曲线绘制[J].信息技术, 2005, 10:76-78.

[4]沈祥玖.VB程序设计 (第2版) [M].北京:高等教育出版社, 2009.

VB6.0 篇2

以上这些限制都是可以方便安全地绕过的。实际上,从可能性上说,利用MSFlex Grid控件进行数据库或二维表编辑浏览能使程序员对数据实现比标准数据控件更灵活的控制,只是要付出更大的编程工作量罢了。

1 利用MSFlex Grid控件显示数据

从一开始微软就没有要将MSFlex Grid控件当作标准数据库浏览编辑控件。提供这个控件的目的是为了让程序员有一种方便灵活的手段显示所有能以二维表形式组织起来的数据,因此“数据连接(Data Bound)”功能实际上相当于“免费赠品”,难怪只支持ADO数据对象了。明白这一点就可以知道,理论上只要是VB程序能够读/写的数据库数据,都可利用MSFlex Grid控件来显示、编辑。

MSFlex Grid控件中显示的数据都存放在属性“Text Matrix”中,这个属性是一个二维字符串数组,利用两个参数:行号(Row Index)和列号(Col Index)来访问数组中的数据,数组的大小由属性“Rows”和“Cols”指定,只要正确地设定了数组大小并填上数据,MSFlex Grid控件就能按要求显示数据。

通过编写一个能读取和编辑一个Accesss2000格式数据库的程序作为说明示例。由于VB6.0是在1998年推出的,所以没有提供支持Access 2000数据格式的DAO驱动控件,因此无法用标准的Data Bound Grid控件显示和编辑Access 2000数据库。但VB6.0中提供了通用ADO数据控件,利用它6.0版的VB程序仍然能读取Access 2000数据库。只要可以获得数据,显示数据的工作MSFlex Grid控件是胜任愉快的。

图1是本例程序主窗口Form的布局。在实现中,使用了一个标准ADO数据控件(名称为ADODC1)来负责数据库数据的读取。数据读入之后就将它们填写到MSFlex Grid控件中显示,按照惯例,这些处理在窗口的Load事件中进行。

窗口Load事件的处理代码如下:

说明:

(1)程序要读取的数据库名称为“AUDIT.MDB”,位于路径“E:FMBASICAUDIT_PRJTEST”中。在上面代码中直接用ADO数据控件来读取Access 2000数据库,为此首先要设定ADODC1控件的Connection String属性和Recordset属性,然后在调用它的Refresh方法,数据读入后包含在名为rst SSPHB的ADO Recordset对象中。关于使用ADO数据控件操纵数据库的具体方法,可参考VB 6.0在线帮助系统中的相关部分。

(2)在填写数据之前要预先设置MSFlex Grid控件的Rows(总行数)和Cols(总列数)两个属性,这个动作确定了Text Matrix二维表的大小。上面代码中因为第一列要用来显示字段名所以需要有一个固定行,同时在本程序中MSFlex Grid控件还包含两个固定行。这些设定可以通过为属性Fixed Rows和Fixed Cols社定相应值来完成。

(3)上面的代码只适用于字符型和数值性的数据库数据,并且这些数据都不能为“空”。对于逻辑型的数据需要特殊处理。

(4)变量b Flag是一个标志,它的作用将在后面说明。

2 编辑数据

经过上面的处理,Access 2000数据库中的数据能够显示在MSFlex Grid控件中了,这还不够,程序还要为用户提供编辑这些数据的功能。MSFlex Grid控件不允许编辑修改显示的数据,但可以通过特殊的技术处理来绕过这个限制。想法是当用户用鼠标选择了MSFLex Grid控件中的某个单元格(Cell)时,将一个编辑控件(Text Control或Check Box)移动到这个单元格中,装入相应的数据让用户编辑;用户改变“输入焦点”时再将被修改的数据写回到MSFlex Grid控件中以保证显示的正确性。MSFlex Grid控件提供的事件使这样的控制成为可能。当用户选中某个单元格时会引发一个Enter Cell事件,在这个事件中可以为编辑控件装入初始数据并将它移动到MSFlex Grid控件中;当用户改变选中的单元格时会引发一个Leave Cell事件,这时将被修改的数据写回MSFlex Grid控件中。为了满足编辑文本和数值数据的需要,引入一个文本编辑控件(Text Control)到程序的主界面中,控件的名称为Text1,默认它的Visible属性为FALSE(不可见)。

图2是添加了编辑控件之后的程序主界面。

事件Enter Cell的处理代码:

说明:

(1)移动到MSFlex Grid控件中的编辑控件在不需要编辑时是不可见的,因此它们的Visible属性的初始值应该是FALSE。

(2)移动文本编辑控件是通过改变文本控件左上角的位置坐标来实现的,同时还需要调整文本控件的大小使它能精确地放入MSFlex Grid控件的单元格中。MSFlex Grid控件的“当前选中单元格”的宽度和高度分别由属性Cell Height和Cell Width记录,这个单元格相对于MSFlex Grid控件左上角的坐标分别由属性Cell Left和Cell Top记录。

(3)MSFlex Grid控件的“当前选中单元格”中的数据在MSFlex Grid控件的Text属性中保存。

(4)Leave Cell事件中的代码负责将编辑控件从“当前选中单元格”中移出,同时将被修改的数据写回MSFlex Grid控件中,然后隐藏文本编辑控件。

(5)由于文本编辑控件是程序员移动到MSFlex Grid控件中的,所以在MSFlex Grid控件滚动时这些文本编辑控件的位置不会自动调整,必须要程序员手工调整,因此还要处理Scroll事件。但是通过实验发现没有办法在滚动后获得MS-Flex Grid控件“当前选中单元格”的最新相对位置,所以程序只是简单地将文本编辑控件“移出”MSFlex Grid控件。

(6)请特别注意标志b Flag,这个标志的作用是保证初始化时上面三个事件的处理代码都不执行。为什么要这么做呢?原因是在实践中发现当赋值那些位于显示范围之外的单元格时也会引发Enter Cell和Leave Cell事件,不知这是不是VB 6.0版的一个bug。这时候执行这两个事件中的代码会引起错误,为此要在MSFlex Grid控件初始化时禁止Enter Cell和Leave Cell中的代码运行。

3 逻辑字段的处理

数据库中的文本或数值数据MSFlex Grid控件可以直接显示,但逻辑字段就不行。MSFlex Grid控件只能直接显示数据库中用来记录逻辑值的数值“0”或“1”,另外逻辑字段应该用单选按钮(Check Box控件)而不是文本控件来编辑,如果可能的话最好也用单选按钮的形式来显示。

可以用在MSFlex Grid控件的单元格中显示图片的方法实现以单选按钮形式显示逻辑值的要求。MSFlex Grid控件可以为每个单元格指定在其中显示的图片,当然,在显示图片的时候单元格中应该不显示文字,否则就冲突了。

本例中使用的图片是通过对屏幕硬拷贝结果进行剪切获得的,最少需要两个:“真值”和“假值”,复杂情况下需要包括“被禁止的真值”和“被禁止的假值”。图片可以是任何VB能够识别的格式,采用最通用的“位图(Bit Map)”格式。

这些位图可以用分立文件的形式保存,对此可使用LoadPicture函数来装入图片,但更好的方法是通过一个“资源文件(Resource file)”来集中相关的图片用Load Res Picture函数读入它们。资源文件VB 6本身无法生成,但可以用VC的集成开发界面生成,注意保存时一定要存为“32-bit resource file(32位资源文件)”格式,否则VB 6无法识别。资源文件要通过“Add file(添加文件)”的方式加入到工程中。

以“单选按钮”形式显示逻辑字段的代码段如下:

在主窗口的Load事件中:

移动编辑控件到MSFlex Grid的单元格中,新的Enter Cell事件处理代码:

MSFlex Grid控件的滚动事件(Scroll)有些奇怪,理论上当输入焦点在单元格中时,滚动之前应该先有一个Leave Cell事件,但实际证明没有,因此在滚动事件中要进行一些特殊处理。

说明:

(1)为了实现对逻辑字段的编辑,在主窗口Form中加入了一个单选按钮,它的名称为Check1。这是主窗口的设计图参见图3。

(2)主窗口load事件中的代码用来以单选按钮形式显示逻辑字段的值。首先判断当前显示字段是否是逻辑字段,如果是就根据值装入相应图片。程序中用函数Load Res Picture来装入图片,代码中使用的resource id(资源标示)是在VC中生成资源文件时设定的。在MSFlex Grid控件的某个单元格中显示图片只要对属性Cell Picture正确赋值就行了,要注意这个属性指出的是“当前选中单元格”中显示的图片,当前选中单元格是MSFlex Grid控件的属性Col和Row指出的单元格。

(3)Enter Cell事件中的代码用来移动编辑控件到“当前选中单元格中”,做法大致类似于移动文本控件时的做法。给单选按钮控件的左上角坐标加上常数10是因为单选按钮控件无法同当前选中单元格严格对齐。

(4)Leave Cell事件中的代码用来从MSFLex Grid中移出编辑控件以和进行其他善后工作。注意,对应于逻辑字段的Text Matrix分量中保存的是空字符串""(必须这样做,否则会破坏输出显示),因此逻辑字段的数据直接从数据库中取得并且直接写回数据库。

4“固定列”和“固定行”

图4是实用固定列和固定行显示数据的情况。

MSFlex Grid控件中可以显示“固定行”和“固定列”。固定行总是显示在最上面,固定列总是显示在最左边,固定行适合显示数据库字段名称,固定列可以用来显示记录标记。固定行和固定列不会因为横向滚动和纵向滚动而隐藏,这个特性使它们非常有用,在许多实际应用中要求表格中某些数据不会随列滚动而隐藏,这些数据就很适合显示在固定列上,如图4所示。

MSFlex Grid控件中显示多少固定行和多少固定列是由属性Fixed Rows和Fixed Cols来确定的。

5 列宽度的调整

像上面那样使用MSFlex Grid控件是不能够允许用户调整列宽度的。原因是由于无法捕获列宽度调整事件和相应信息,所以不能正确地调整相应编辑控件的位置和大小。在禁止用户手动调整列宽度时就需要通过程序来调整列宽度,使其达到最佳。这可以通过操纵属性Col Width来做到,注意,这个属性是用一维数组的形式组织的。

6 注意事项

如果用户首先选中一个单元格后将输入焦点切换到除MSFlex Grid控件之外的其他控件时不会引起Leave Cell事件。因此应该考虑在每一个可接受输入控件的Click事件中都加入保存编辑控件(文本编辑控件和单选按钮)中数据到MSFL ex Grid中的代码。

摘要:VB 6.0企业版提供的MSFlexGrid控件能够大大提高VB程序的数据显示能力。本文结合数据库编程的实例详细解释了这个功能强大的控件的使用,对数据库编程具有实际应用意义。

VB6.0 篇3

随着计算机的快速发展, 在当前各高校普遍推行的学分制条件下, 学生上课教室的流动性使得班级概念相对弱化, 班主任、辅导员、班干部对学生的上课情况的了解和掌握较非学分制条件下有所削弱, 同时部分教师淡化课堂考勤, 导致一些学生利用学分制条件下课堂考勤监控不严而长期旷课。学分制课堂教学的新特点使传统的课堂考勤制度遇到严峻的挑战。

我院的学生考勤工作还是原始的操作, 但平时考勤, 都是由主任或任课老师在教室按照班级点名簿逐个点名。教务部门要想了解学生准确的出勤情况, 往往需要各任课老师或班主任将出勤情况进行统计汇总, 时间很长;同时, 由于文、理、工、管、经济、艺术等专业不同, 初中起专、高起专和初中起中专等层次不同, 班级多、人数多, 学生出勤记录数据检索也比较困难;而且纸质点名簿的保存也很不方便。

由于传统的学生考勤是人工记录和操作, 需要大量的人力与大量的纸张, 为了方便学生管理, 使用Visual Basic 6.0编写的一个应用程序, 节约资源, 提高学生管理工作效率。研究一种学生考勤系统的实现方法。

2、设计思路

先写出系统设计的需求分析图, 根据需求进行系统功能设计, 系统的核心是与数据库中各个表联系, 每个表的修改都将影响其他的表, 当完成对数据库的操作系统自动完成数据库的修改。

学生考勤管理系统是用Visual Basic6.0+A-DO+ACCESS2000来开发的整个系统, 在系统主要实现以下功能, 用户管理, 分为4个等级用户, 超级管理, 教师, 学生管理人员, 学生。

超级管理员的权限设置, 数据库的恢复与备份, 查看数据库修改记录情况, 添加删除普通用户, 更改普通用户的权限等级。

教师的查看学生考勤基本纲领情况, 分为详细的学年、学期和学科等的查询, 快速的实现学生考勤查询, 登记与修改学生考勤情况, 打印输出班级, 年级和专业等的考勤情况, 统计考勤的一个学期的情况并计算出相关课程的平时成绩。

学生管理人员, 能够浏览学生考勤的所有信息, 对学生的信息添加与修改管理, 查询学生的所有课程的考勤成绩, 查询条件为学生的学号、姓名、课程、年级、专业、学期、任课教师等, 实现学生信息查询, 添加、修改和删除考勤情况, 处理学生的异动情况, 能够进行学生考勤分类查询与统计, 生成统计表, 打印输出所需的考勤情况结果。

学生的功能为, 查询本人的考勤情况, 查询条件分为, 学年, 学期, 考勤成绩。

数据库设计如下21张表的设计:

2.1班级表:班级编号 (自动编号2) , 班级 (字符型20) , 班级代码 (字符型6) 。

2.2班主任姓名表:班主任编号 (自动编号2) , 班主任姓名 (字符型20) , 班主任姓名代码 (字符型6) 。

2.3教师表:教师编号 (自动编号2) , 教师姓名 (字符型20) , 教师姓名代码 (字符型6) , 系别 (字符型20) , 职称 (字符型20) , 教龄 (数字型2) , 电话 (字符型20) 。

2.4课程类型表:编号 (自动编号2) , 课程类型 (字符型30) , 课程类型代码 (字符型6) 。

2.5课程名称表:编号 (自动编号2) , 课程名称 (字符型30) , 课程名称代码 (字符型6) , 课程类型 (字符型20) 。

2.6年份表:编号 (自动编号2) , 年份 (字符型10) , 年份代码 (字符型6) 。

2.7年级表:编号 (自动编号2) , 年级 (字符型10) , 年级代码 (字符型6) 。

2.8年份表:编号 (自动编号2) , 年份 (字符型10) , 年份代码 (字符型6) 。

2.9缺勤记录人表:编号 (自动编号2) , 缺勤记录人 (字符型10) , 缺勤记录人代码 (字符型6) 。

2.10缺勤节数表:编号 (自动编号2) , 缺勤第几节数 (字符型10) , 备注 (备注) 。

2.11缺勤年份表:编号 (自动编号2) , 缺勤年份 (字符型10) , 缺勤年份代码 (字符型6) 。

2.12缺勤情况表:编号 (自动编号2) , 学号 (字符型10) , 姓名 (字符型6) , 系别 (字符型20) , , 专业 (字符型20) , 班级 (字符型20) , 学期 (字符型10) , 缺勤课程名称 (字符型20) , 缺勤年份 (字符型20) , 缺勤月份 (数字型2) , 缺勤节数 (数字型2) , 缺勤周数 (数字型2) , 缺勤类型 (字符型20) , 缺勤的任课老师 (字符型20) , 缺勤原因 (字符型20) , 学生班主任 (字符型20) , 上课地点 (字符型20) , 缺勤记录人 (字符型20) , 年级 (字符型2) , 缺勤情况备注 (备注) 。

2.13缺勤原因表:编号 (自动编号2) , 缺勤原因 (字符型10) , 缺勤原因代码 (字符型6) 。

2.14上课地点表:编号 (自动编号2) , 上课地点 (字符型10) , 上课地点代码 (字符型6) 。

2.15系别表:编号 (自动编号2) , 系别 (字符型10) , 系别代码 (字符型6) 。

2.16学期表:编号 (自动编号2) , 学期 (字符型10) , 学期代码 (字符型6) 。

2.17学生库表:编号 (自动编号2) , 学号 (字符型10) , 姓名 (字符型20) , 系别 (字符型20) , , 专业 (字符型20) , 班级 (字符型20) , 入学时间 (字符型20) , 联系电话 (字符型20) 。

2.18用户表:编号 (自动编号2) , 用户 (字符型10) , 密码 (字符型6) , 权限 (字符型6) 。

2.19月份表:编号 (自动编号2) , 月份 (字符型10) , 月份代码 (字符型6) 。

2.20周数表:编号 (自动编号2) , 周数 (字符型10) , 周数代码 (字符型6) 。

2.21专业表:编号 (自动编号2) , 专业 (字符型10) , 专业代码 (字符型6) 。

系统功能结构图:

3、程序的实现

4、程序打包

经过反复调试无错误的情况下, 在WindowsXP系统中进行程序的安装与卸载测试, 具有界面友好、易于操作、简便实用的特点。通过学院的学生考勤工作地实际运用, 系统运行良好, 稳定可靠。

5、最后总结

由于本人的水平有限, 设计的程序还存在很多的不足, 例如网络功能没能完善, 但是在今后的时间中不断完善本程序, 使程序成为安全可靠, 实现了学生考勤的无纸化、自动化和科学化的管理, 大大的提高了工作效率。

参考文献

[1]秦乐乐, 蒋佳, 崔连生.基于VB的学生信息管理系统的设计与实现[J].河北工业科技, 2006, 23 (4) :206—209.

[2]Microsoft《VB.NET程序设计语言》, 高等教育出版社, 2004

[3]孔长征, VB.NET编程实例教程, 北京希望电子出版社, 2002

VB6.0 篇4

钢管水压实验机是对钢管进行密封性检验的专用设备, 该设备配备一套水压实时监控系统, 该系统能自动出具水压检验动态过程电子检验报告, 每一根钢管都有一份检测报告备案, 以备追溯钢管质量。

水压实时监控系统是在IPC (工控机) 上使用Visual Basic 6.0 Windows编程工具开发的软件系统, 它具有1) 实时监测压力并绘制增压和保压曲线;2) 实时记录采样数据;3) 记录钢管参数信息、操作者信息;4) 保存和打印压力曲线和压力数据等多种功能。该文拟介绍该实时监控系统软件的曲线绘制、文件保存、曲线打印等部分功能。

当计算机和PLC通讯正常时, 计算机按照设定的频率从PLC读出实时压力数据并绘制增压曲线, 并判断实时压力是否已经达到设定压力。当实时压力小于设定值时继续从PLC读出压力值并绘制曲线, 反之当实时压力大于或等于该值时结束增压曲线的绘制, 跳转到另外一个窗口, 进行保压曲线的绘制。

保压曲线的绘制时间由保压时间控制, 当到达保压时间后, 程序会自动产生一个以钢管管号为名称的文件, 将采样数据保存下来。

2 软件模块编制介绍

2.1 增压曲线绘制程序的框图如图1

钢管的增压曲线描绘了钢管内的压力从小到大的变化过程, 直观地显示出实时压力是否达到了设定压力。在该阶段, 程序会把钢管的各种信息、设定压力、保压时间等内容保存在变量中, 待保压阶段使用。

2.2 保压曲线绘制程序的框图如图2

在增压阶段, 当实时压力达到设定压力时, 程序会自动跳转到保压窗口, 进行保压阶段的工作。首先根据保压时间 (一般是10到20秒) 计算出保压开始和结束的时间;再调用过程绘制坐标系, 该过程有三个参数:图形控件、设定压力和保压时间。图形控件控制曲线描绘的范围;设定压力控制Y轴的取值范围, 最小值是“设定压力-0.5”兆帕, 最大值是“设定压力+0.5”兆帕;保压时间确定X轴的取值范围, 最小值是0秒, 最大是“保压时间”秒。

程序在绘制保压曲线的同时, 会把每一组采样时刻和实时压力保存在文件中, 并把最大压力值、最小压力值、实时压力保存在三个变量中。

当保压工作完成时, 程序会把钢管的各种信息、最小压力、最大压力、平均压力都写入文件中, 这个文件将是这根钢管对应的电子文档, 以后可以根据这个文件打印出这根钢管的保压曲线图。

2.3 保压曲线绘制实例

如图3。

2.4 坐标系绘制程序的框图如图4

该项工作是在图形控件中完成的, 通过ScaleLeft、ScaleTop、ScaleWidth、ScaleHeight属性, 控制坐标系的尺寸;通过DrawWidth、DrawStyle属性, 控制不同的线宽和线型。

2.5 打印增压曲线程序的框图如图5

把文件中的变量保存在数组变量中, 根据这些变量绘制的曲线和保压时的曲线完全相同。为了提高曲线的打印质量, 不采用图形控件中的打印功能, 而是先传送正文和图形给Printer对象, 再用NewPage和EndDoc方法打印。

3 结语

该程序由三部分组成, 曲线在屏幕上的绘制;曲线数据在文件中的保存;曲线从打印机的输出。绘制曲线时主要通过图形控件和计数器控件的功能来完成;保存曲线可以通过新建、打开、读出、写入、关闭等文件功能来实现;打印曲线使用Printer对象来完成, Printer对象是一个与设备无关的图片空间, 支持用Print、PSet、Line、PaintPicture和Circle等方法来创建文本和图形, 当完成在Printer对象中放置信息后, 用NewPage和EndDoc方法将输出传送到打印机, 就可以完成曲线的打印。限于篇幅不能写出具体的程序代码, 只能用程序框图来表示。该文介绍的方法已经在水压机水压监控系统程序中得到应用, 已经在产品中正常使用。

参考文献

[1]程胜利.Visual Basic语言程序设计教程[M].北京:中国水利水电出版社, 2007.

VB6.0 篇5

关键词:煤矿,瓦斯监测,报警,界面,串行通信,数据库,VB6.0

0 引言

目前, 由于瓦斯造成的煤矿灾害事故占到煤矿总事故的70%~80%, 因此各种瓦斯报警器应运而生, 与之对应的瓦斯监控界面也相继产生。一般的监控界面是由组态软件完成的, 鉴于组态软件的成本较高, 本文介绍一种基于VB6.0开发的瓦斯监测报警界面的设计。

1 界面的组成结构及基本功能

瓦斯监测报警界面主要由2个部分组成:串行通信模块和瓦斯浓度处理模块。瓦斯浓度处理模块包括瓦斯数据的数据库保存、实时曲线显示、历史曲线显示、预警曲线显示和数据报表显示。其结构如图1所示。

瓦斯监测报警界面的主要功能:首先利用VB6.0的串口通信控件MSComm通过某种瓦斯报警器对现场的瓦斯数据进行采集并保存在Access数据库中;其次将现场的瓦斯数据以实时曲线的形式显示当前一定时间内的瓦斯浓度, 以便于随时监测当前矿井中的瓦斯浓度, 同时可以历史曲线的形式显示过去一段时间内的瓦斯浓度, 以便于查询以往矿井中的瓦斯含量进行研究分析;提供数据报表显示以及预警曲线, 实现一定的预警功能。

2 界面的实现

2.1 Visual Basic简介

Visual Basic (以下简称VB) 是美国微软公司1991年推出的, 它提供了开发Microsoft Windows应用程序的最迅速、最简捷的方法。VB是以结构化BASIC语言为基础, 以事件驱动作为运行机制的新一代可视化程序设计语言。其中, Visual指的是开发图形用户界面 (GUI) 的方法, 它不需要编写大量代码去描述界面元素的外观和位置, 既具有Windows所特有的优良性能和图形工作环境, 又具有编程的简易性。本文所介绍的界面就是基于VB6.0开发设计的。

2.2 串行通信

瓦斯监测报警界面开发的关键在于采集到的现场瓦斯数据的准确度, 除了所用的瓦斯报警器是其中一个影响因素外, 另一个重要的影响因素就是报警器与监测界面之间的桥梁即串行通信的准确度。

硬件电路采用标准的RS232接口, 可直接将计算机和瓦斯报警器相连。信号的传输速率设定为4 800 bps。

软件主要由MSComm控件实现。MSComm控件是Microsoft提供的扩展控件, 用于支持VB程序对串口的访问, 该控件“隐藏”了大部分串口通信的底层运行过程和许多烦琐处理过程, 同时支持查询方法和事件驱动通信的机制。事件驱动通信是交互方式处理串口事务一种非常有效的方法, 通过设置MSComm控件的属性, 利用其方法和事件可以用很少的程序代码轻松实现串口的访问和数据通信。

另外需要特别注意的是:由于VB中有Byte类型变量, 但没有字节的位处理语句, 符号字节的位处理要判断符号字节的值是否大于127, 如果大于127则为负数;压缩的BCD码存入Byte类型变量, VB系统只按十进制数处理, 这要通过一个简单的算法换算, 解压BCD码才能还原成十进制表示数值。假如a是Byte类型变量, D是Single类型变量, 将一个压缩的BCD码存入a中, 则算法是:

2.3 数据库

按数据的组织方式不同, 数据库可以分为3种类型:网状数据库、层次数据库和关系数据库。其中, 关系数据库是应用最多的数据库。本文所用的数据库是Microsoft提供的Access数据库。VB中提供了DAO数据访问对象与数据库接口。应用它, 需要先把“工程”→“引用”中的“Microsoft DAO 3.6 Object Library ”选中。前提是首先在Access中建立一个数据库WSDATA.mdb。

2.4 曲线显示和数据报表显示

实时曲线、历史曲线、预警曲线均是应用MsChart控件实现的, 不同的是实时曲线采用的数据是串行端口传送的当前一段时间内的数据, 而历史曲线采用的是数据库中的数据, 用于显示过去一段时间内的瓦斯变化情况, 而预警曲线是根据现场瓦斯浓度的变化利用一定的算法实现的预测报警曲线。数据报表保存了所有采集的瓦斯数据。

瓦斯报警监测界面如图2所示, 其中显示的是实时曲线界面。

3 结语

本文基于VB6.0开发了一种能够进行瓦斯监测并报警的可视化界面。该界面具有结构简单、成本低、运行可靠等特点, 适用于矿井预防瓦斯爆炸事故。

参考文献

[1]程建军, 程绍仁.浅析瓦斯爆炸与气候变化[J].煤炭科学技术, 2002 (3) .

[2]李锋, 曾德良.基于VB6.0的串口通讯程序设计[J].现代电子技术, 2002 (1) .

[3]黄淼云, 张学忠, 王福成.Visual Basic Programming-Master[M].北京:希望电子出版社, 2001.

VB6.0 篇6

关键词:窗体,标签,框架,命令按钮,组合框

《Visual Basic6.0 程序设计 》 课程是学习面向对象程序设计语言的基础入门课程, 学好这门课程可以为以后学习Flash脚本编程和Dreamweaver网页脚本编程打基础。 这门课程较其他计算机专业课程来说, 学生觉得比较枯燥无味, 学生不愿意学, 教师教学过程中也很费劲, 基于这种情况在开始讲这门课之前, 先从网上找了些使用VB开发的小游戏程序让学生体验并了解学习VB课程后能够做什么, 激发学生们的求知欲望。 在讲课的过程中, 每学习完一个新控件对象后, 就从日常生活中寻找、 发掘能用VB编程解决的小实例, 引导学生分析问题, 研究解决问题的办法。 本实例就是在学习完列表框控件与组合框控件后, 从我们在各种编辑软件中都经常使用的 “字体设置对话框” 入手, 用VB开发一个程序让这个对话框能够单独地起作用。 如图1 为在Visual Basic6.0 集成开发环境中字体设置对话框, 选择字体、 字形、 大小、 效果后, 单击 “确定” 按钮, 将在示例栏中查看到所设置的效果; 单击“取消” 按钮后, 关闭字体设置对话框。 在字符集下面的列表中如果选择 “CHINESE_GB2312”, 在示例栏中看到的是中文;如果选择 “西方”, 则在示例栏中看到的英文。 下面将介绍这个对话框的制作过程。

1 “字体设置”对话框的各组成部分所使用的控件

( 1) 窗体最上面是标题栏, 通过设置窗体的Caption属性、 Min Button属性、 Max Button属性、 Whatsthis Button属性去显示。

(2) 窗体显示区中字体 (F) : 字形 (Y) : 大小 (S) : 字符集 (R) : 这些内容的显示是通过标签控件的Caption属性设置实现。

(3) 字体、 字形、 大小下面的列表框是通过组合框控件的Text属性、 Style属性、 List属性的设置实现。

(4) 效果、 示例文字是通过框架控件的Caption属性设置实现。

(5) 效果栏中内容是通过复选框控件的Caption属性设置实现。

(6) 示例栏中显示的内容是通过文本框控件的Text属性设置实现。

(7) 字符集下面显示的内容也是通过组合框控件的Text属性、 Style属性、 List属性设置实现的。

(8) 确定、 取消按钮的显示是通过命令按钮控件的Caption属性设置实现。

2 界面设计

通过上面的分析, 我们已经知道在这个实例中所用的控件对象都有哪些, 下面就可以进行界面的设计了。

(1) 在窗体上添加4 个标签控件, 参照图1 进行摆放。

(2) 添加4个组合框控件。

(3) 添加两个框架控件。 在框架1 中添加两个复选框控件。 在框架2 中添加一个文本框控件。

(4) 在窗体右侧添加两个命令按钮控件。

3 属性设置

依次选择各控件对象, 按表1 所示设置各控件对象的属性。

属性设置完成之后, 将组合框控件Combo1, Combo2, Combo3 的大小参照图1 进行调整。 其中, Combo1, Combo3的List属性根据需要可以增加或减少一些内容。

4 代码实现

为了使各项设置在单击 “确定” 按钮后能在文本框中看到效果, 必须给命令按钮添加单击事件代码。

4.1“确定”按钮的单击事件代码

4.2“取消”按钮单击事件代码

4.3组合框控件4添加单击事件代码

5 调试保存

代码输入完成后, 可以按 【F5】 键运行程序。 先在字体、字形、 大小、 效果栏中选择相应的内容, 单击确定按钮后, 在示例栏中可以看到文本框1 中的文字进行相应效果的显示。当在字符集下面的列表中进行选择后, 在示例栏中的文本框1中的文字改变为中文或西文。 在实际的教学过程中, 可以在文本框中用学生的名字来显示, 当选择 “CHINESE_GB2312”后显示学生的中文名字, 当选择 “西方” 后, 显示学生名字的拼音字母。

6 结语

实例主要是学习运用标签控件、 组合框控件、 命令按钮控件、 框架控件、 复选框控件、 文本框控件制作了一个字体设置对话框。 通过设置组合框控件的Text属性、 List属性、Style属性制作同时具有文本框功能和列表框功能的组合式下拉列表框, 在代码中通过条件语句的判断, 对文本框中内容进行各种修饰。 需要注意的是, 在输入代码的过程中, 所有的标点符号都必须是英文状态下的标点符号, 并且代码要实现的功能与指定的命令按钮作用相一致。 在实际应用过程中, 可以根据需要对相关的属性进行修改。

参考文献

VB6.0 篇7

根据国家电监会关于电力系统二次防护的5号令的要求,通过配置单向隔离装置,将实时数据库(SIS系统)与辅助网络系统(水网、煤网、灰网)隔离。控制系统与接口机相连,数据只通过单向隔离装置指定端口单向通过数据接收工作站传送至实时数据库服务器。用户对实时数据的应用和分析访问实时数据库服务器,不对生产管理区造成安全威胁。基于此项安全要求,必须要有新的接口软件来代替原有的接口通讯模式(OPC方式),即:数据发送采用UDP协议,辅网系统接口将获取或接收的控制系统原始数据发送到指定的地址和端口,实时数据库系统接口需要接收UDP数据包并解析即可获得标签点的实际数据,如图1所示。

2 Winsock网络通信控件

Winsock控件提供了访问TCP和UDP网络服务非常简便的途径,只通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。

WinSock主要支持两种类型的套接字:(1)流式套接字(Stream Socket)也称面向连接方式,该方式对应的是TCP协议,其传输特点是通信可靠性高,可以保证数据流的传输是可靠的、有序的、无重复的,可提供双向的数据流,数据被看作字节流,无长度限制。(2)数据报套接字(Datagram Socket)又称无连接方式,对应的是UDP协议,这种方式不提供数据传输的正确性、有序性和无重复性。因为它支持面向记录的数据流,因此传输的数据可能丢失和重复,并且接收顺序混乱,报文长度是有限的。本系统选用数据报套接字方式。

3 辅助网络系统接口

本系统采用GE公司的iFix4.0作为辅助网络系统监控软件,iFix4.0具有可靠性高,稳定性好,功能强大的特点,尤其是iFix数据访问开发工具包(iFix DataBase Access Toolkit),该工具包允许应用程序编程人员访问iFix的实时和历史数据,该工具包主要包括了实时数据访问接口EDA,历史数据访问接口HDA。开发工具包中所提供的编程接口函数,是针对于Visual Basic语言所开发。

4 UDP方式发送协议简介

UDP方式发送协议简介如表1所示。

5 通讯软件具体实现

(1)在创建的VB应用程序项目中应该首先添加2个模块(Module)

这2个模块都是由iFix数据访问开发工具包提供的,其中一个模块是用于EDA编程接口使用的vdba.bas,另外一个模块是用于HDA编程接口使用的fixtools.bas,在vdba.bas模块中主要是基于VB格式的EDA接口函数、数据结构、常数的声明,而在fixtools.bas模块中主要是实现对fixtools.dll动态链接库的声明,基于VB格式的HDA接口函数、数据结构、常数的声明,此外还提供了其他函数声明,如iFix软件的安装路径,iFix是否正在运行。在添加了编程接口的声明模块后,就可以在VB应用程序中调用这些函数了。

(2)执行VB工具栏“工程/部件”命令,将Winsock控件添加到工程中,并命名为“UDP”

程序采用UDP协议进行通信,其主要属性设定如下:

With UDP UDP协议参数设置

.Protocol=sckUDPProtocol采用UDP协议

.RemoteHost=IP_REMOTE远程计算机IP

.RemotePort=PORT_REMOTE远程计算机端口

.LocalPort=PORT_LOCAL本地端口号

.Bind PORT_LOCAL,IP_LOCAL绑定本地端口、IP地址End With

UDP协议设定完后,判断iFix软件是否运行及从配置文件中读出iFix数据库中的数据点的标签名,并把所有标签名按顺序存在(TagName)数组中。初始化工作完成。

(3)创建读取开关量数据函数

G=eda_define_group(1,0)

根据读取的iFix标签名(DI_TagName)数组,定义读取的一组标签的实时值“A_CV”

For i=0 To DI_TagName-1

DI(i)=eda_define_ntf(G,"FIX",

DI_dataname(i),"A_CV",0)

DI_datavalue(i)=0

Next i

Call eda_lookup(G)

Call eda_wait(G)

Call eda_read(G)

Call eda_wait(G)

For i=0 To DI_TagName-1

将读取到的每个标签的实时数据读出赋值给变量

eda_err=eda_get_ascii(G,

DI_TH(i),Value,79)

DI_datavalue(i)=Trim(Format(Value,""))

Next i

Call eda_delete_group(G)

将Timer控件添加到工程中,在属性中设置3000ms循环执行。

(4)创建发送开关量数据函数

Private Sub DI_send()

……

Dim DI_send()As Byte

ReDim DI_send(LenB(DI_senddata(i)))

CopyMemory DI_b(0),DI_senddata(i),LenB

(DI_senddata(i))

……

UDP.SendData DI_send

……

End Sub

(5)创建读取模拟量数据函数

Private Sub AI_read_IFIX()

G=eda_define_group(1,0)

根据读取的iFix标签名(AI_TagName)数组,定义读取的一组标签的实时值“F_CV”

For i=0 To AI_TagName-1

AI_TH(i)=eda_define_ntf(G,"FIX",AI_tagname

(i),"F_CV",0)

AI_datavalue(i)=0

Next i

Call eda_lookup(G)

Call eda_wait(G)

Call eda_read(G)

Call eda_wait(G)

For i=0 To AI_TagName-1

将读取到的每个标签的实时数据读出赋值给变量

eda_err=eda_get_float(G,AI_TH(i),fvalue)

AI_datavalue(i)=Format(FVALUE,"####0.00")

Next i

Call eda_delete_group(G)

End Sub

(6)创建发送模拟量数据函数

Private Sub AI_send()

……

Dim AI_send()As Byte

ReDim AI_send(LenB(AI_senddata(i)))

CopyMemory AI_send(0),AI_senddata(i),LenB(AI_senddata(i))

……

UDP.SendData AI_send

……

End Sub

(7)执行VB工具栏“工程/部件”命令,将Timer控件添加到工程中,并在属性设置中设置3000ms循环执行。编辑代码调用读取及发送程序。

Private Sub Timer1_Timer()

读取模拟量数据并发送

AI_read_IFIX

AI_send

读取数字量数据并发送

DI_read_IFIX

DI_send

End Sub

系统参数画面如图2所示。

6 结束语

采用Winsock控件实现的UDP发送数据程序,已成功应用于某电厂辅助网络系统中,程序简单稳定,很容易实现辅助网络系统向SIS系统发送实时数据的功能,达到了理想的效果。

掌握并灵活应用iFix软件的EDA,HDA编程接口,我们就可以用VB6.0语言开发出符合不同SIS系统的应用程序。本文的论述对解决这类问题具有一定参考价值。

参考文献

[1]GE.iFix Database Access Toolkit Help.

【VB6.0】推荐阅读:

上一篇:文化改革试验区下一篇:抗干扰处理

本站热搜

    相关推荐