【VB开源代码栏目提醒】:网学会员在VB开源代码频道为大家收集整理了“基于VB的数据采集软件的开发 - 项目管理“提供大家参考,希望对大家有所帮助!
工场经验基于VB的数据采集软件的开发唐昌松石油大学研究生院山东东营257O62DevelopmentofataCollectionSoftBasedonVBTANG0hggraduateScoolUniversityofPetroleumonyin257O62CinaD摘要介绍了VB在计算机测控系统中对硬件I/端口访问的两种方法并给出了用VB开发数据采集软件的实例关键词VB数据采集LL中图分类号P274文献标识码B文章编号1OO1-22572OO2DO2-OO59-O2AbisarticleintroducestWometodsofusinVBtovisitI/portsofardWareincomputermeasurementandcontrolsystemandprovidesanexampleofusinVBtodevelopdatacollectionsoft.KwVBdatacollectionLL收稿日期2OO1-11-13O引言VBvisualasicD是基于indoWs环境下的一种可视化面向对象采用事件驱动的编程工具它具有高效简单易学及功能强大的特点但是VB不具备直接对硬件I/端口进行访问的能力而在一些工业测控系统中需要计算机从现场获取实际数据或发出控制命令这就需要计算机实现对I/端口的控制与访问因此对VB的数据采集软件进行了开发很好地解决了这一问题1VB访问硬件I/端口的两种方法.调用外部应用程序VB中提供有调用外部应用程序的函数Sell用来执行一个可执行性文件可先用汇编或其它语言编写出对端口访问的可执行文件然后由Sell函数调用Sell函数的语法为SellpatnameWindoWstyleD其中patname是要执行的程序名可能还包括目录或文件夹及驱动器WindoWstyle表示在程序运行时窗口的样式Sell是以异步方式执行其它程序的即用Sell启动的程序可能还没有完成执行过程就已经执行到Sell语句的后续语句为此可通过调用indoWsPI函数监视外部程序的运行状态来解决这个问题.调用动态链接库DLL类似运行函数库是在运行期间被链接进来的它是一种基于indoWs的应用程序模块只包括供应用程序运行时装入LL的有关信息并非是源代码的复制因此在indoWs下使用LL可以使多个应用程序之间共享代码和资源从而提高运行效率目前常用的LL开发工具为VisualC用户可自己创建满足需要的LL也可直接利用第三方提供的LL在VB程序中只要对LL进行正确的声明便可象使用VB本身的函数一样使用LL中的函数2数据采集软件的开发在此采用调用动态链接库的方法并利用C1O57数据采集卡提供的LL来进行数据采集软件的开发.数据采集卡简介C1O57是一款通用12位/板具有16路多种量程输入24路可编程数字I/8255D可方便地构成模拟信号采集系统C1O57可提供双极性输入输入幅度-5V5VD和单极性输入输入幅度O1OVD并可分别通过跳线器选择121O倍3种放大倍率和I/地址952OO22D2.2VB调用DLL技术AC1O57专为提供了实现I/0端口操作的动态链接库acio3.dll包括如下函数.datavbinpadr8位数据读入操作.datavbinpwadr16位数据读入操作.vboutadrdata8位数据写入操作.vboutwadrdata16位数据写入操作其中adrI/0端口地址dataI/0数据在中调用时文件必须拷贝到WindowS的yStem目录下或在声明文件中加入所在文件的路径全名而且应在全局模块或窗体层的说明部分中用eclare语句声明所要使用的中的函数例如eclareFunctionvbinpibacio3.dlly-alportASIntegerASInteger其中vbinp是从I/0端口完成数据读入的函数名acio3.dll是所调用的动态联接库名对于中无返回值的函数应用ub代替Function同时声明语句中的参数返回值的类型必须与中相应的参数返回值的类型一致2.利用定时器实现定时采集在中可利用定时器的Interval属性设置每秒钟采集的次数把采集段程序放在定时器的Timer事件中来实现数据采集对于一般计算机来讲由于受系统硬件能力的限制定时器每秒钟最多只能产生18个事件若时间间隔设置得过小将达不到预期效果在实时性要求较高需要精确定时的场合可采用的方法有.对Timer控件的定时进行校准.利用WindowS内部函数CreateyS-temTimer与KillyStemTimer.调用WindowAPI函数timeetEent和timeKillEvent2.4应用实例下面给出数据采集软件程序中部分主要源代码以采集某O5OO的温度信号为例设定A/板为单极性输入方式I/0端口基地址为O放大器放大倍率为1在module1中声明eclareubvboutibacio3.dllyalportASIntegeryaldataASIntegereclareFunctionvbinpibacio3.dlly-alportASIntegerASInteger文件已拷贝到WindowS的yStem目录下采集程序部分PrivateubTimerWTimerchwd1设定温度通道号为1vboutOchwd输入通道号vboutO启动A/转换J1oWhileJO判断A/转换是否结束JvbinpOAnd1oopadwhvbinpA/结果高8位送入变量adwhadwlvbinp5A/结果低位送入变量adwladwdataadwh16adwl/161位A/转换结果vWadwdata1O/O95对应的电压W5OOvW/5标度变换为实际温度0penwd.datForAppendAS1Write1W将温度写入数据文件以便后续处理CloSe1Endub3结束语笔者将上述方法应用于某试验机数据采集系统中为数据处理及试验结果分析提供了原始数据其人机交互界面友好程序运行稳定可靠系统功能组态方便取得了良好的效果参考文献1邵钟武等.数据采集系统M.山东石油大学出版社1998.ThayerRob.iSualaSic6揭密M.曾湘宁译.北京电子工业出版社1999.作者简介唐昌松1977男四川省仪陇县人硕士研究生研究方向为机电一体化O6机械与电子OO