VB实验报告.docx
《VB实验报告.docx》由会员分享,可在线阅读,更多相关《VB实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
VB实验报告
西南石油大学
专业技术实习报告
数据采集与接口技术
专业年级:
08测控技术与仪器
姓名:
李林
学号:
0807010325
指导老师:
石明江张禾
实习时间:
2011-12-26至2012-01-06
基于VB的数据采集程序设计
一、引言
随着Windows98的推出,越来越多的微机用户已习惯于Windows操作系统。
不过Windows应用软件的开发对于一般工程技术领域的技术人员来说并非易事,然而使用微软的VisualBasic6.0(简称VB6)来开发这些方面的Windows应用软件就十分方便,编程工作量相对较小,只需进行主要应用功能的编程和少量界面控制的编程。
VB6提供了许多供用户选择的控件(Customcontrol),这些控件以.OCX为文件后缀名,其中MSCOMM.OCX即是用于串行通信的控件。
如果需要使用该控件,可将该控件添加到工具箱(toolbox)内,这样就可以利用该控件进行串行通信程序的设计。
二、设计内容:
1.设计背景:
VisualBasic(简称VB)是Windows环境下简单、易学、高效的编程语言开发系统,以其所见即所得的可视化界面设计风格和32位面向对象的程序设计等特点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。
VB不但提供了良好的界面设计能力,而且在微机串口通信方面也有很强的功能。
实时数据采集系统过去在DOS操作系统下一般是采用汇编语言开发制作。
Windows操作系统的普及应用,尤其是可视化软件开发平台的出现,为软件开发提供了强大的图形界面功能,使得开发出来的应用程序具有良好的人机交互功能。
汇编语言的特点是难调试,而高级语言具有良好的可读性及方便的调试手段。
采用VB开发Winodws下的数据采集和工业控制应用软件十分方便,尤其软件界面设计非常便捷,编程工作量较小,开发周期短,特别适合非计算机专业的工程技术人员掌握和使用。
2.设计项目:
a.(VB编程)WINXP下数字量输出实验(PCI总线)
b.(VB编程)WINXP下程控循环灯实验(PCI总线)
3.设计思想:
在WINDOWS环境下利用VB6.0实现开关量输出实验、程控循环灯试验,并给出程序代码,对其稍加改动便可以改变循环的快慢和背景色以及其它视图效果。
下面通过图文的形式给予说明
a.(VB编程)WINXP下数字量输出实验(PCI总线)
首先,将PCI-7483数据采集卡插入至PC总线工控机内一个空PCI插槽中,再把10芯连接电缆的DB37头插入PCI7438数据采集卡侧的插座上,把另一头插入BH5105-PCI7483实验板的SX1中;最后把20芯连接线的DB37头插入PCI7483数据采集卡的另一插座上,将另一头插入自制的BH5105-PCI7483实验板上的XS2中,此时XS3不能插入连接电缆。
最后,开机进入WINXP状态,再进入VB,运行实验程序将看到实验程序的主界面窗口,用鼠标点击“数字量输出”按钮,将看到数字量输出实验界面窗口。
在此窗口的两个数据输入框中输入数字量,再点击“确定”按钮,观察自制的BH5105-PCI7483实验板上16个LED发光二极管(D1-D16)DE亮/灭状态是否与预期相同(“1”亮,“0”灭)。
以下为数字量输出实验的主程序:
'do_data
(2)为DO输出数据
Dimdo_data
(2)AsByte
'改变DO量显示区函数
PrivateSubdiodata_Click(IndexAsInteger)
'改变开关量显示区
Ifdiodata(Index).Caption="关"Then
diodata(Index).ForeColor=RGB(255,0,0)
diodata(Index).Caption="开"
Else
diodata(Index).ForeColor=RGB(0,0,255)
diodata(Index).Caption="关"
DimX(16)AsInteger
Fori=0To15
Ifdiodata(i).Caption="开"Then
X(i)=1
Else
X(i)=0
EndIf
Nexti
do_data(0)=0
do_data
(1)=0
Fori=0To7
do_data(0)=X(i)*2^i+do_data(0)
Nexti
Fori=8To15
do_data
(1)=X(i)*2^(i-8)+do_data
(1)
Nexti
doedit(0)=Hex(do_data(0))
doedit
(1)=Hex(do_data
(1))
EndIf
EndSub
PrivateSubDoCom_Click()
'根据开关量显示区确定DO转换数据
Fori=0To1
X=0
Forj=0To7
Ifdiodata(i*8+j).Caption="开"Then
X=X+2^j
EndIf
Nextj
do_data(i)=X
Nexti
X1=do_data(0)
X2=do_data
(1)
Callpci7483do(hplx,False,0,X1)
Callpci7483do(hplx,False,1,X2)
EndSub
'DO数据编辑函数
PrivateSubDoEditCom_Click()
j=1
Fori=0To1
'判断DO输入数据是否为空
Ifdoedit(i)=""Then
k=MsgBox("DO数据为空,请重新输入,范围在(0--FFH)!
",vbQuestion,"DO数据输入")
j=0
i=3
Else
k=Val("&h"&doedit(i))
'判断DO输入数据是否有错
Ifk<0Ork>&HFFThen
k=MsgBox("DO数据输入错误,请重新输入,范围在(0--FFH)!
",vbQuestion,"DO数据输入")
j=0
i=3
EndIf
EndIf
Nexti
'输入DO数据正确
Ifj=1Then
'根据输入DO数据更新开关量显示区
Fori=0To1
X=Val("&h"&doedit(i))
Forj=0To7
If(XMod2^(j+1))=2^jThen
X=X-2^j
diodata(i*8+j).ForeColor=RGB(255,0,0)
diodata(i*8+j).Caption="开"
Else
diodata(i*8+j).ForeColor=RGB(0,0,255)
diodata(i*8+j).Caption="关"
EndIf
Nextj
Nexti
EndIf
EndSub
PrivateSubExit_Click()
Ifhplx<>1Then
hplx=pci7483close(hplx)
EndIf
UnloadDoForm
主界面.Show
EndSub
'开关量输出初始化函数
PrivateSubForm_Load()
'设置为DO方式
doedit(0)=0
doedit
(1)=0
DoCom.Enabled=True
DoInput.Enabled=True
hplx=0
hplx=pci7483check(0,0,False,1)
EndSub
'开关量输出操作帮助函数
PrivateSubHelpCom_Click()
DoHelpForm.Show
EndSub
图片见下
b.(VB编程)WINXP下程控循环灯实验(PCI总线)
首先,将PCI-7483数据采集卡插入至PC总线工控机内一个空PCI插槽中,再把10芯连接电缆的DB37头插入PCI7438数据采集卡侧的插座上,把另一头插入BH5105-PCI7483实验板的SX1中;最后把20芯连接线的DB37头插入PCI7483数据采集卡的另一插座上,将另一头插入自制的BH5105-PCI7483实验板上的XS2中,此时XS3不能插入连接电缆。
最后,开机进入WINXP状态,再进入VB,运行实验程序将看到实验程序的主界面窗口,用鼠标点击“程控循环灯”按钮,将看到程控循环灯实验界面窗口。
再点击“开始”按钮,观察自制的BH5105-PCI7483实验板上16个LED发光二极管(D1-D16)LDE亮/灭状态。
①运行软件启动程序
②双击界面在其中输入下列程序循环灯界面对应的代码:
Dimdt0AsInteger,dt1AsInteger,jAsInteger‘定义变量
PrivateSubCommand1_Click()‘对应于“开始”
Timer1.Enabled=True‘定时器启动
EndSub
PrivateSubCommand2_Click()对应于“停止”
Timer1.Enabled=False
'dt0=&H1
'dt1=&H0
EndSub
PrivateSubCommand3_Click()‘对应于“返回”
Ifhplx<>1Then
hplx=pci7483close(hplx)
EndIf
Timer1.Enabled=False
Unload走马灯
主界面.Show
EndSub
PrivateSubForm_Load()‘在窗口调入时执行
hplx=0
hplx=pci7483check(0,0,False,1)‘选择板卡
dt0=&HFF
dt1=&HFF
Callpci7483do(hplx,False,0,dt0)‘赋值给通道
Callpci7483do(hplx,False,1,dt1)
dt0=&H1‘赋初值
dt1=&H0
EndSub
PrivateSubTimer1_Timer()‘在定时时间到时执行
Fori=1To16
Label(i).BackColor=&HFF00&
Nexti
Callpci7483do(hplx,False,0,dt0)'0组输出dt0
Callpci7483do(hplx,False,1,dt1)'1组输出dt1
Ifdt0<>0Then
SelectCasedt0
Case1
Label
(1).BackColor=&HFF&
Case2
Label
(2).BackColor=&HFF&
Case4
Label(3).BackColor=&HFF&
Case8
Label(4).BackColor=&HFF&
Case16
Label(5).BackColor=&HFF&
Case32
Label(6).BackColor=&HFF&
Case64
Label(7).BackColor=&HFF&
Case128
Label(8).BackColor=&HFF&
EndSelect
EndIf
Ifdt1<>0Then
SelectCasedt1
Case1
Label(9).BackColor=&HFF&
Case2
Label(10).BackColor=&HFF&
Case4
Label(11).BackColor=&HFF&
Case8
Label(12).BackColor=&HFF&
Case16
Label(13).BackColor=&HFF&
Case32
Label(14).BackColor=&HFF&
Case64
Label(15).BackColor=&HFF&
Case128
Label(16).BackColor=&HFF&
EndSelect
EndIf
Ifdt1=0Then
dt0=dt0*2‘右移循环
Else
dt1=dt1*2
EndIf
Ifdt0=256Then‘达到FF清零开始下次循环
dt0=0
dt1=1
EndIf
Ifdt1=256Then
dt0=1
dt1=0
EndIf
EndSub
如图所示:
编辑再运行。
通过此程序可以实现走马灯的效果,还可以通过子界面改变走马灯的循环时间以及灯的背景色。
程序运行效果
③退出程序,改变Timer1_Timer()函数可以来改变循环时间
点击图中时钟符号,再其右侧出现一个任务框在里面改动Interval对应的数字,该数字是毫秒级的如图为500表示从第一个开始循环到第二个需要0.5秒,如果改为2000那循环时间变为2s,
④还可以改变灯的背景色
点击灯在右侧出现选择框,可以随便改变自己喜欢的颜色设置为灯的背景色,还可以改变背景色,字的颜色,按钮的颜色等等。
⑤如要实现一次多盏灯的亮灭,比如三盏灯的循环亮灭,修改后的程序如下:
Ifdt0<>0Then
SelectCasedt0
Case1
Label
(1).BackColor=&HFF&
Case2
Label
(2).BackColor=&HFF&
Label
(1).BackColor=&HFF&
Case4
Label(3).BackColor=&HFF&
Label
(2).BackColor=&HFF&
Label
(1).BackColor=&HFF&
Case8
Label(4).BackColor=&HFF&
Label(3).BackColor=&HFF&
Label
(2).BackColor=&HFF&
Case16
Label(5).BackColor=&HFF&
Label(4).BackColor=&HFF&
Label(3).BackColor=&HFF&
Case32
Label(6).BackColor=&HFF&
Label(5).BackColor=&HFF&
Label(4).BackColor=&HFF&
Case64
Label(7).BackColor=&HFF&
Label(6).BackColor=&HFF&
Label(5).BackColor=&HFF&
Case128
Label(8).BackColor=&HFF&
Label(7).BackColor=&HFF&
Label(6).BackColor=&HFF&
EndSelect
EndIf
Ifdt1<>0Then
SelectCasedt1
Case1
Label(9).BackColor=&HFF&
Label(8).BackColor=&HFF&
Label(7).BackColor=&HFF&
Case2
Label(10).BackColor=&HFF&
Label(9).BackColor=&HFF&
Label(8).BackColor=&HFF&
Case4
Label(11).BackColor=&HFF&
Label(10).BackColor=&HFF&
Label(9).BackColor=&HFF&
Case8
Label(12).BackColor=&HFF&
Label(11).BackColor=&HFF&
Label(10).BackColor=&HFF&
Case16
Label(13).BackColor=&HFF&
Label(12).BackColor=&HFF&
Label(11).BackColor=&HFF&
Case32
Label(14).BackColor=&HFF&
Label(13).BackColor=&HFF&
Label(12).BackColor=&HFF&
Case64
Label(15).BackColor=&HFF&
Label(14).BackColor=&HFF&
Label(13).BackColor=&HFF&
Case128
Label(16).BackColor=&HFF&
Label(15).BackColor=&HFF&
Label(14).BackColor=&HFF&
EndSelect
End
修改前:
Ifdt0<>0Then
SelectCasedt0
Case1
Label
(1).BackColor=&HFF&
Case2
Label
(2).BackColor=&HFF&
Case4
Label(3).BackColor=&HFF&
Case8
Label(4).BackColor=&HFF&
Case16
Label(5).BackColor=&HFF&
Case32
Label(6).BackColor=&HFF&
Case64
Label(7).BackColor=&HFF&
Case128
Label(8).BackColor=&HFF&
EndSelect
EndIf
Ifdt1<>0Then
SelectCasedt1
Case1
Label(9).BackColor=&HFF&
Case2
Label(10).BackColor=&HFF&
Case4
Label(11).BackColor=&HFF&
Case8
Label(12).BackColor=&HFF&
Case16
Label(13).BackColor=&HFF&
Case32
Label(14).BackColor=&HFF&
Case64
Label(15).BackColor=&HFF&
Case128
Label(16).BackColor=&HFF&
EndSelect
EndIf
程序运行截图:
三、实验总结:
通过这几天的专业技术学习,能够掌握VB的一般语法、简单应用、能够编写简单的程序。
通过学些发现VB语言有他的优点也有他的缺点。
优点就是编辑环境简洁、学习起来比较容易,能够即时编译较比c++简单一些。
缺点就是程序较大、运行时需要进行动态链接。
移植性能也没C++好。
但在工业上,VB已成为Windows系统开发的主要语言,VB具有良好的图形用户接口并支持面向对象的程序设计和具有结构化的事件驱动编程模式,使编程效率提高,应用功能增强,采用VB开发工业测控系统的应用软件,只要处理好实时串口通信部分,就能在短时间内开发出交互界面友好的、功能易扩展的、面向对象的工业测控系统。
虽然学习VB语言比较枯燥,但是经过这次学习,也锻炼了我的意志,磨练了我的耐性,更重要的是让我学习到了一种新的编程知识,让我受益匪浅。
附:
参考文献
[1]李罡.VisualBasic5.0编程实例详解.电子工业出版社,1998
[2]王章瑞.数据采集与接口技术实验指导书西南石油大学,2011
通过此次的专业技术实习,自己或多或少的了解到了VB语言的知识与其魅力。
尤其是它的控件用起来很方便,功能很强大,队界面开发十分方便强大。
VB学习简单,在电脑上运行速度快,效率高。
VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。
程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
在工业上VB已成为Windows系统开发的主要语言,VB具有良好的图形用户接口并支持面向对象的程序设计和具有结构化的事件驱动编程模式,使编程效率提高,应用功能增强,交互界面友好、功能易扩展。