基于VB的数据采集软件的开发

基于VB的数据采集软件的开发


2024年5月24日发(作者:)

维普资讯

基于VB的数据采集软件的开发 

工场经验 

唐昌松 

(石油大学研究生院,山东东营257062) 

Development of Data Collection Soft Based on VB 

TANG Chang—song 

(Graduate School,University of Petroleum,Dongying 257062,China) 

摘要:介绍了VB在计算机测控系统中对硬件 

Shell函数的语法为:Shell(pathname[,win— 

I/O端口访问的两种方法,并给出了用VB开发数 

dowstyle]),其中,pathname是要执行的程序名,可 

据采集软件的实例。 

能还包括目录或文件夹及驱动器;windowstyle表 

关键词:VB;数据采集;DLL 

示在程序运行时窗口的样式。 

中图分类号:TP274 

Shell是以异步方式执行其它程序的,即用 

文献标识码:B 

Shell启动的程序可能还没有完成执行过程,就已经 

文章编号:lOOl一2257(2002)02—0059—02 

执行到Shell语句的后续语句。为此,可通过调用 

Abstract:This article introduces two methods 

Windows API函数监视外部程序的运行状态来解 

of using VB to visit I/O ports of hardware in com— 

决这个问题。 

puter measurement and control system,and pro— 

1.2调用动态链接库(DLL) 

vides an example of using VB to develop data col— 

DLL类似运行函数库,是在运行期间被链接进 

lection soft. 

来的。它是一种基于Windows的应用程序模块,只 

Key words:VB;data collection;DI I 

包括供应用程序运行时装人DI I 的有关信息,并非 

是源代码的复制。因此,在Windows下使用DI I 可 

以使多个应用程序之间共享代码和资源,从而提高 

0 引言 

运行效率。 

VB(visual basic)是基于Windows环境下的一 

目前常用的DI L开发工具为Visual C++。 

种可视化,面向对象,采用事件驱动的编程工具,它 

用户可自己创建满足需要的DI I ,也可直接利用第 

具有高效、简单易学及功能强大的特点。但是,VB 

三方提供的DI I 。在VB程序中,只要对DI I 进行 

不具备直接对硬件I/O端口进行访问的能力。而在 

正确的声明,便可象使用VB本身的函数一样使用 

些工业测控系统中,需要计算机从现场获取实际 

DLI 中的函数。 

数据或发出控制命令,这就需要计算机实现对I/O 

2数据采集软件的开发 

端口的控制与访问。因此对VB的数据采集软件进 

行了开发,很好地解决了这一问题。 

在此,采用调用动态链接库的方法,并利用 

AC1057数据采集卡提供的DI I 来进行数据采集 

1 VB访问硬件I/O端口的两种方法 

软件的开发。 

1.1调用外部应用程序 

2.1数据采集卡简介 

VB中提供有调用外部应用程序的函数 

AC1057是一款通用12位A/D板,具有16路 

“Shell”,用来执行一个可执行性文件。可先用汇编 

多种量程输入,24路可编程数字I/O(8255),可方 

或其它语言编写出对端口访问的可执行文件,然后 

便地构成模拟信号采集系统。AC1057可提供双极 

由Shell函数调用。 

性输入(输入幅度:一5V~+5V)和单极性输入(输 

入幅度O~10V),并可分别通过跳线器选择1、2、1O 

收稿日期:2001…11 13 

倍3种放大倍率和I/O地址。 

《机械与电子92002(2) 

・59。 

维普资讯

2.2 VB调用DLL技术 

AC1057专为VB提供了实现1/O端口操作的 

动态链接库adoS2.dU。包括如下函数: 

a.data=vbinp(adr):8位数据读入操作。 

b.data=vbinpw(adr):16位数据读人操作。 

c.、bout adr,data:8位数据写入操作。 

d.vboutw adr,data:16位数据写入操作。 

其中,adr:I/O端口地址,data:I/O数据。 

在VB中调用DI I 时,DI L文件必须拷贝到 

Windows的System目录下,或在声明文件中加入 

DI I 所在文件的路径全名。而且,应在全局模块或 

窗体层的说明部分中,用Declare语句声明所要使 

用的DI I 中的函数。例如: 

Declare Function vbinp Lib acio32.dll (By— 

Val port As Integer)As Integer 

其中,vbinp是从I/O端口完成数据读人的函 

数名,acio32.dll是所调用的动态联接库名。对于 

DI L中无返回值的函数,应用Sub代替Function。 

同时,声明语句中的参数、返回值的类型必须与 

DI I 中相应的参数、返回值的类型一致。 

2.3利用定时器实现定时采集 

在VB.中,可利用定时器的Interval属性设置 

每秒钟采集的次数,把采集段程序放在定时器的 

Timer事件中来实现数据采集。对于一般计算机来 

讲,由于受系统硬件能力的限制,定时器每秒钟最多 

只能产生18个事件,若时间间隔设置得过小,将达 

不到预期效果。 

在实时性要求较高,需要精确定时的场合,可采 

用的方法有: 

a.对Timer控件的定时进行校准。 

b.利用Windows内部函数CreateSys— 

temTimer()与KillSystemTimer()。 

c.调用Window API函数timeSetEVent()和 

timeKillEvent()。 

2.4应用实例 

下面给出数据采集软件程序中部分主要源代码 

(以采集某0 ̄500 C的温度信号为例)。设定A/D 

板为单极性输入方式,I/O端口基地址为240H,放 

大器放大倍率为1。 

mOdu e1中声日月. 

ec1are Sub Vbout Lib”aci

。 

o32・dll (ByVa1 

・6O・ 

port As Integer。ByVal data As Integer) 

Declare Function vbinp I ib”acio32.dll”(By— 

Val port As Integer)As Integer 

、DI I 文件已拷贝到Windows的System目录 

下 

采集程序部分: ’ 

Private Sub TimetWD Timer() 

chwd一1、设定温度通道号为1 

vbout&H240,chwd、输入通道号 

vbout&H244,0、启动A/D转换 

J一1 

Do whi1e J<>0、判断A/D转换是否结束 

J—vbinp( ̄H240)And 1 

Loop 

adwh—vbinp(&H244)、A/D结果高8位送 

人变量adwh 

adwl—vbinp( ̄H245)、A/D结果低4位送 

人变量adwl 

adwdata—adwh 16+adwl/16、12位A/D 

转换结果 

vWD=adwdata。10/4095、对应的电压 

WD---500 vWD/5、标度变换为实际温度 

Open”wd.dat”For Append As#1 

write#1,WD、将温度写入数据文件以便 

后续处理 

Close#1 

End Sub 

3 结束语 

笔者将上述方法应用于某试验机数据采集系统 

中,为数据处理及试验结果分析提供了原始数据。其 

人机交互界面友好,程序运行稳定可靠,系统功能组 

态方便,取得了良好的效果。 

参考文献: 

[1]邵钟武,等.数据采集系统[M].山东:石油大学出版 

社,1 998. 

[2]Thayer Rob.Visual Basic 6揭密EM].曾湘宁,译.北 

京:电子工业出版社,1999. 

作者简介:唐昌松 (1

二 化 

977 男'

研 机 

~一……… …~ 

四川省仪陇县人'硕士研究 

《机械与电子}2002(2) 


发布者:admin,转转请注明出处:http://www.yc00.com/web/1716524334a2728163.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信