用VB实现核数据采集功能编程方法
- 格式:pdf
- 大小:96.90 KB
- 文档页数:3
第22卷 第4期核电子学与探测技术V ol.22 N o.4 2002年 7月N uclear Electronics &Detection T echnolo gyJuly 2002 用V B 实现核数据采集功能编程方法赵艳辉1,赵修良2,邹其洪1,徐 寅2(南华大学1电气工程学院,2核科学技术学院,湖南衡阳 421001) 摘要:阐述了一个基于PC 的核辐射水平数据采集系统中,在V isual Basic 不能直接访问I/O 端口的情况下,用VC ++创建数据采集动态连接库(DL L )和用V B 调用D LL 的方法。
关键词:V B;核数据采集;程序设计;I /O 操作;D LL 运用中图分类号:T L 822.6;T P 274.2 文献标识码:A 文章编号:0258-0934(2002)04-0371-03收稿日期:2002-01-12作者简介:赵艳辉(1974-),女,湖南湘潭人,南华大学电气工程学院助理工程师,从事电子电工与计算机技术工作;赵修良(1968-),男,湖南湘潭人,南华大学核科学技术学院副教授,从事核电子学与探测技术方面的研究。
0 引言实时数据采集系统过去在DOS 操作系统下一般是采用汇编语言开发制作。
.随着Win-dow s 操作系统的普及应用,数据采集软件的开发也上升到W indo w s 环境下。
可视化软件开发平台的出现,为软件开发提供了强大的图形界面动画功能,使得开发出来的各种软件具有良好的人机交互功能.。
Visual Basic 是Window s 环境下简单、易学、高效的可视化编程语言开发系统,以其所见即所得可视化界面设计风格和32位面向对象的程序设计等特点,已广泛用于各个领域[1],V isual Basic 虽然有丰富的用户界面设计能力,但是VB 不具有直接对硬件I/O 地址进行访问的函数,即没有提供直接的I/O 操作功能[2]。
测控系统有较多的输入输出操作,当用户使用诸如AD 板、图像采集卡等的即插即用的功能板时,这就需要用户利用其丰富的用户控件VBX,动态连接库DLL,动态数据交换DDE ,即对象的连接与嵌入技术OLE 来对其功能进行扩展,运用这些技术实现I/O 操作[3]。
1 核辐射水平数据采集系统系统由核辐射探测器获得的随机脉冲信号,由前置放大器预放大后,经过放大器、脉冲幅度甄别器、成形电路后,转换为T TL 电平的脉冲,再由ISA 脉冲计数板卡计数。
插在PC 机ISA 槽的脉冲计数卡由PC 机通过I /O 端口控制计数的启动、停止、清零、预置计数值等,实现数据采集功能。
PC 机接收计数板卡的数字信号后,再进行数据处理,数据处理包括数字滤波、标度变换、图形显示、数据和曲线的动态显示、数据记录、定时功能和打印功能等。
在该系统中,计数接口板作为输入硬件,使用Visual Basic 编制人机交互界面。
为了实现动态数据采集和处理,用VC 或汇编语言编制对硬件端口访问的DLL 函数,然后由VB 主程序调用,从而实现对I/O 口的访问和控制。
2 用DLL 技术实现数据采集2.1 DLL 简介动态连接库DLL 是一种基于Windo ws 的程序模块,它是在运行时刻被装入和链接的。
动态连接库只包含供应用程序运行时装入该371DLL的有关信息,并非是源代码的复制,因此在Windo ws下使用动态连接库可以使用多个应用程序之间共享代码和资源,从而提高运行效率。
2.2 DLL的建立动态连接库DLL类似于运行函数库,在程序运行期间被连接进来,是组成Window s系统的重要元素之一,DLL程序一般采用C或C++语言(FOR Windo ws版本)进行编程。
它主要有模块定义文件(.DEF)、动态连接函数头文件(.H)、动态连接库文件(.C)三部分组成。
下面用我们编制的数据采集程序来示例动态连接库的各部分结构。
2.2.1建立DLL的C++源程序(.CPP)DLL源程序包括以下三个部分:1)LibM ain函数。
它是Window s95DLL 文件的主入口函数,负责对DLL模块的初始化,即当DLL第一次被装入时,Window s将调用它。
2)出口函数WEP()。
它是DLL的终止函数。
在DLL完成装入以及初始化以后,便可以提供给其他函数调用。
当所有调用这个DLL程序结束或者要释放它的时候,Window s95它就会调用DLL的WEP函数来进行必要的清除工作(如释放系统资源)。
3)自己定义输出的库函数My-function ()。
每个函数必须用FAR声明。
这一部分是整个程序的核心,执行本程序DLL特定的任务。
2.2.2建立模块定义函数(.DEF)在V isual C++中,模块定义文件向LIN K 提供定义库属性DLL的标志、DLL信息、版权声明、库代码段属性、库数据段属性、局部堆属性和引出函数等输入信息。
DLL的模块定义文件与W indo w s应用程序的模块定义文件不同,其主要区别在第一项LIBRARY。
它说明此模块为一个DLL而非应用程序,其后跟着库名,它必须和DLL文件名相同。
此外,所有输出函数及WEP出口函数,需用EXPORT语句将其引出。
2.2.3生成新的项目文件(.M AK)在Visual C++集成开发环境下选择File 菜单下New子项创建工程文件.mdp,项目类型选为Window s dynamic-link library(. DLL),并把以上的DLL源文件.CPP和模块定义文件.DEF加入到该项目中,经过编译后即自动生成动态连接库文件.DLL。
然后将此文件存放到\SYST EM子目录中,这样就可以在编写应用程序时调用它。
2.3 DLL的调用Visual Basic通过Declare(声明)来访问DLL。
其编程器根据声明确定参数,检查数据类型,VB在运行期间也根据声明处理参数,进行参数的压栈、出栈的管理工作。
程序在FROM 声明部分或者共用模块中声明了DLL过程,用户就可以像使用V B关键字或用户定义的VB 过程一样,方便地使用DLL中的函数[4]。
声明存储在DLL中的过程(子程序)格式如下:[P ublic¯P rivat e]Declare Sub U ser F unc L ib"DL L-N ame.DL L"[A lias"DL LF unc"]([Pa ramet er s])如果是函数,其格式则为:[P ublic¯Pr iv ate]Declare F unctio n U ser Func[DA T A t ype suffix]L ib"DL L N ame.DL L"[A lias"D LL F unc"]([Pa rameter s])[A s type]3 采集分析程序设计在VB中,大多数应用程序的基础是窗体模块(文件扩展名为.FRM)。
本系统的采集分析程序就是在一个多文档界面(M DI)的若干个子窗体上建立起来的。
下面就以其中窗体为例,简述采集分析程序的设计。
3.1 建立模块文件打开多文档界面,调出其中一个窗体FORM I,再从INSERT菜单中选择M odule菜单项,以建立模块文件moudell.bas。
3.2 选择窗体FROM1)其的属性设置:Caption:新式计数器; Border style:3-Fix ed;Linkm ode:1-Source; LinkT opic:Forml;Heig ht:8970;Width: 12000。
2)对程序设计中的菜单设计:在V B6.0的工具栏中选择菜单编辑器,为此窗体设置“文件”菜单、“帮助”菜单。
“文件”菜单依次设有打开、保存、打印等选项。
当然,为了菜单的可操作性,加入了Com monDialog控件,这样在一些基本的操作方面会有很大的简化,而不必去设置那些复杂的程序操作。
在“帮助”菜单设有说明选项。
3723)为界面设计加入T abStrip控件[5],并设置其选项卡的数量为4张,依次为计数页、参数设置、绘出波形、历史记录这4大类。
计数页上,设置了Pro gessBar控件、M onthview控件、StautsBar控件等几个主要控件。
在参数设置上,设置了几个fram e控件,很多OptionBut-to n控件。
在绘出波形中,采用PictureBox控件来作图。
对于历史记录页上,只设置了一些tex tbo x控件和Comm onButton控件。
4)在设计中,为了使程序设计不太呆板,也不使form l窗体很孤立,加入了上面几个子窗体,Dialog.frm子窗体是作为程序退出时提醒操作者的对话框,frmAbout.frm子窗体是本程序作者对程序应用系统的简介。
而splash. fr m子窗体是为本程序做版本的声明。
5)加入定时器Timer1作为采样定时器,其参数可设置。
定时器T im e2作为采样周期控制器。
3.3 声明在工程中加入一个全局模块MODU LEI. BAS,在其的说明部分(Declaration Section)中,声明所要使用的x x x.dll中的函数以及全局变量,并放入inputport和intiport函数的过程定义代码。
程序清单如下:Public Declar e F unctio n int ipo r t L ib"x x x.dll" (By Va l x l A s I nt eg er,By Va l x2As Integ er,ByV al x3 A s I nt eger)A s Integ erPublic Declar e Functio n inputdata"xx x.dll"(By-V al x l A s Integer,ByV al x2A s Integer)As Integ er 3.4 生成可执行文件保存工程项目文件*.vbp,编译生成*. ex e文件。
4 结语在基于计数板卡和PC机的核辐射水平监测系统中,以探测器、计数板卡和PC机作为硬件,软件用VB编写数据采集界面,在VB的可视化编程中,菜单和窗口是提供好的用户界面的一般方法,很容易设计出漂亮和实用简便的菜单和界面,用VC++创建数据采集动态连接库,VB调用DLL访问底层I/O硬件的编程方法,使得系统优先充分发挥PC机的数据处理功能,又简化了软件设计,扩展了VB在数据采集系统中的应用。
参考文献:[1]黄华江,等.用V B开发基于W indo ws的数据采集软件[J].微型机与应用,1998,17(6):52.[2]Eva ng elo s P etro utsos,et al.Visual Basic6D eveloper's Handboo k.[3]于复生,等.基于V B的实时测控软件设计[J].微型电脑应用,2000,16(2):33.[4]曲延滨,等.在V B中利用D LL实现硬件端口访问[J].计算机应用,1999,19(3):62.[5]李玉东.Visual Basic6.0中文版控件大全[M].北京:电子工业出版社,2000.Program's method of VB to carry out nuclear data collectionZHAO Yan-hui,ZHAO Xiu-liang,ZOU Qi-hong,XU Yin(N anhua U niv er sity,Hengy ang o f Hunan Pr ov.421001,China)Abstract T he paper ex pat iat e Program's met hods of V B t o carry out nuclear data collect ion in t he case of t hat VB can't direct ed t o call on hardw are,and had to using C or assemble language to compile DL L funct ion of call on hardware,and then,using by V B main rout ine t o realize to call on and control I/O port in VB environment.Key words:V B;dat a collect ion;program design;I/O operat ion;call on DL L f uct ion373。