调用毕业论文(设计)-基于DLL 的虚拟仪器系统开发32248

ocget dll  时间:2021-01-29  阅读:()

基于DLL的虚拟仪器系统开发

汤晓安

湖南长沙国防科技大学电子科学与工程学院405教研室

摘 要 本文在介绍最新技术─虚拟仪器及其开发环境LabVIEW的特点的基础上分析并实现了将LabVIEW与外部代码进行连接的高级技术之一—动态链接库机制。实践表明此机制高效、易行是增强LabVI EW与其它Windows应用程序之间的数据共享能力的一条很好的途径。

关键词 虚拟仪器 LabVIEW动态链接库 DLL

1 引言

美国国家仪器公司的创新产品─基于G语言的开发环境LabVIEW的出现使得“虚拟仪器”的思想为工业界所接受。 所谓虚拟仪器就是在通用计算机平台上用户根据自己的需求定义和设计仪器的测试功能其实质是将传统仪器硬件和最新计算机软件技术充分结合起来以实现并扩展传统仪器的功能。与传统仪器相比虚拟仪器在智能化程度、处理能力、性能价格比、可操作性等方面均具有明显的技术优势。

LabVIEW Laboratory Virtual Instrument Engineering Workbench─实验室虚拟仪器工程平台是目前国际上首推应用最广的虚拟仪器开发环境之一主要应用于仪器控制、数据采集、数据分析、数据显示等领域并适用于Windows 3. 1/95/98、 Windows NT、Macintosh、UNIX等多种不同的操作系统平台。与传统程序语言不同 LabVIEW采用强大的图形化语言G语言编程面向测试工程师而非专业程序员编程非常方便人机交互界面直观友好具有强大的数据可视化分析和仪器控制能力等特点。

使用LabVIEW开发环境用户可以创建32位的编译程序从而为常规的数据采集、测试、测量等任务提供了更快的运行速度。 LabVIEW是真正的编译器用户可以创建独立的可执行文件能够脱离开发环境而单独运行。

对于大多编程任务 LabVIEW通常能产生高效的代码。但LabVIEW亦存在不足如不适于或不擅长于完成大量数据处理的任务不能进行系统调用实现底层操作如访问物理地址等。在虚拟仪器系统开发中若遇到这类问题就可利用LabVIEW所提供的与外部代码进行连接的机制如动态链接库机制将其自身无法或不易实现的任务通过能够或更适于完成此类任务的外部代码来实现。

2 LabVIEW调用外部程序代码的途径之一─动态链接库机制

2. 1 动态链接库机制概述

LabVIEW是一个功能强大的虚拟仪器开发环境它完整地集成了与GPIB、 VXI、 RS-232、RS-485和内插式数据采集卡等硬件的通讯。 LabVIEW还具有内置程序库提供了大量的连接机制通过DLLs、共享库、 ActiveX等途径实现与外部程序代码或软件系统的连接。

LabVIEW提供了4种调用外部程序代码的途径其中动态链接库Dynamic Link Library─DLL机制是从LabVIEW调用标准共享库和用户自定义库函数的通用方法。具体实现时是使用LabVIEW功能模板中“Advanced”子模板里的“调用库函数Call Library Function”结点。

“调用库函数结点”包括大量的数据类型和调用规范使用它可调用大多数标准共享库和用户自定义库中的函数包括 Windows 3. 1/95/98/NT下的动态链接库Dynamic Link

1

Library、 Macintosh下的代码段Code Fragment、 UNIX下的共享库函数Shared LibraryFunction等。

当用户需要调用的代码已经存在或者用户比较熟悉Windows中动态链接库、Macintosh中代码段、 UNI X中共享库的创建过程时 “调用库函数结点”非常有用此时使用它也最为合适恰当 因为库使用了对几个开发环境都适用的格式标准故用户可以使用几乎任何开发环境去创建LabVIEW能够调用的库。

2.2 动态链接库机制实现步骤

设此处要实现在Windows 98下利用LabVIEW 5. 1 (for Windows 95/98/NT)中的“动态链接库机制”调用一个DLL此DLL返回机器的名称。

1) 建立“调用库函数结点”

新建LabVIEW程序“hostname.vi”存至新建目录“d:\temp”下其前面板如下

框图程序如下

其中 “Call Library Function”结点是通过选择功能模板中“Advanced”子模板里的 “CallLibrary Function”功能模块而产生的。

此LabVIEW程序通过“调用库函数结点”调用一个DLL此DLL将返回机器的名称返回结果存至字符串指示量“Machine Name”中而后将字符串常量“LabVIEW is running on ”与“Machine Name”相拼接拼接之结果在字符串指示量“Message”中显示。

2) 配置“调用库函数结点”

双击框图程序窗口的“Call Library Function”结点在弹出的对话框中对此“调用库函数结点”进行配置。其中

在“Library Name or Path”一项中键入“d:\temp\hostname.dll” 即指明此结点所链接的DLL文件名它由C源代码“hostname.c”编译而来

在“Function Name”一项中键入“MachineName” 即指明与此结点相链接的DLL文件中的函数的名称

参数“return type”的类型选择“Void”所增加的另一个参数“arg1”的类型选择“String”、字符串格式选择“String Handle”

2

3) 编辑C源文件

编辑C源文件“hostname.c” 存至目录“d:\temp”下其内容如下

/* include extcode.h which contains the prototypes for the LabVIEW functions */#include <extcode.h>

#include <stdio.h>

#include <windows.h>

BOOL WINAPI DllMain (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved) {return TRUE;

}

/* This functions gets the computer name and returns it to LabVIEW */

__declspec (dllexport) void MachineName(void *LVHandle) {char computerName[MAX_COMPUTERNAME_LENGTH+1] ;int compNameLength = MAX_COMPUTERNAME_LENGTH+1 ;

/* Get computer name */

GetComputerName(computerName, &compNameLength) ;

/* Size LabVIEW handle to the correct size */

DSSetHandleSize(LVHandle, compNameLength + 5) ;

/* Copy the string size to the LabVIEW handle */

**(int32 **)LVHandle = compNameLength ;

/* Copy the string to the LabVIEW handle */sprintf( (*(char **)LVHandle)+4, "%s",computerName) ;

}

此程序首先了调用Windows的API函数“GetComputerName”获取机器名然后调用LabVIEW的函数“DSSetHandleSize”来设置LabVIEW句柄之大小最后将机器名长度32位整型、机器名字符串型依次写入句柄中。

4) 编译C源代码

将C源代码“d:\temp\ hostname.c”编译成一个DLL文件“d:\temp\hostname.dll”。

可使用VC++ 6.0 (for Windows 95/98/2000/NT) 完成此编译工作。

5) 运行VI

运行LabVIEW程序“hostname.vi”结果如下

3

3.结束语

本文着重阐述并实现了将LabVIEW与外部代码进行连接的高级技术之一─动态链接库机制并给出了应用实例。由于在LabVI EW中引入了C语言的强大功能从而提高了LabVIEW的整体性能。

本方法已在LabVIEW 5.1 for Windows 95/98/NT及Visual C++ 6.0 for Windows95/98/2000/NT环境下实现。实践证明此方法高效、易行是增强LabVIEW与其它Window s应用程序之间的数据共享能力的一条很好的途径。

参考文献

1 LabVIEW User M anual National Instruments Corporation 1998

2 G Programming Reference M anual National Instruments Corporation 1998

3 LabVIEW Advanced Course M anual National Instruments Corp oration 1997

Development of DLL-Based Virtual Instrument System

Tang Xiao An

College of Electronic Science And Engineering,

National Univ of Defence Technolo gy,Chang Sha,Hunan,410073

Abstra ct This p ap er introduces virtual instrument and its development environment─LabVI EW discussesand realizes the advanced technologyDynamic Link Library(DLL)  which is one of the general methods forcalling external code from LabVIEW。 It has been proved that this method is efficientpracticable and it is a goodway improving the LabVIEW’s cap acity sharing data with other applications in Windows。

Key words virtual instrument LabVIEW Dynamic Link Library(DLL)

邮编: 410073

电话 0731-4576434(O)

Email: xatang@public cs hn cn

4

5

6

7

virmach:AMD平台小鸡,赌一把,单车变摩托?$7.2/年-512M内存/1核/10gSSD/1T流量,多机房可选

virmach送来了夏季促销,价格低到爆炸,而且在低价的基础上还搞首年8折,也就是说VPS低至7.2美元/年。不过,这里有一点要说明:你所购买的当前的VPS将会在09/30/2021 ~ 04/30/2022进行服务器转移,而且IP还会改变,当前的Intel平台会换成AMD平台,机房也会变动(目前来看以后会从colocrossing切换到INAP和Psychz),采取的是就近原则,原来的水牛城可能...

Sharktech:美国/荷兰独立服务器,10Gbps端口/不限流量/免费DDoS防护60G,319美元/月起

sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。此文只整理他们家10Gbps专用服务器,此外该系列所有服务器都受到高达 60Gbps(可升级到 100Gbps)的保护。...

DiyVM独立服务器:香港沙田服务器,5M带宽CN2线路,L5630*2/16G内存/120G SSD硬盘,499元/月

diyvm怎么样?diyvm商家VPS主机均2GB内存起步,三个地区机房可选,使用优惠码后每月69元起;DiyVM独立服务器开设在香港沙田电信机房,CN2线路,5M带宽,自动化开通上架,最低499元/月,配置是L5630*2/16G内存/120G SSD硬盘。DiyVM是一家成立于2009年的国人主机商,提供的产品包括VPS主机、独立服务器租用等,产品数据中心包括中国香港、日本大阪和美国洛杉矶等,...

ocget dll为你推荐
手机管家哪个好手机管理软件哪个好用雅思和托福哪个好考托福、雅思哪个好考?雅思和托福哪个好考托福好考还是雅思好考?辽宁联通网上营业厅我进入到的中国联通微信营业厅,该如何进入到人工服务啊?qq网盘在哪里QQ网盘在哪??????360云盘怎么用360云盘怎么用最好广东联通网络传真免费网络传真广东联通炫铃在客户端酷音铃声(个性化铃音业务)里面设置广东联通炫铃需要开通的业务及资费?10个比1688便宜的拿货网推荐几个淘宝网上买东西便宜,东西又好的网站。。。占便宜人们经常说‘吃亏就是占便宜’到底是什么意思呢?
成都主机租用 西部数码vps mediafire 2017年黑色星期五 华为云主机 云图标 html空间 息壤代理 1美金 新睿云 东莞服务器托管 实惠 中国联通宽带测试 镇江高防服务器 windowssever2008 服务器是什么 性能测试工具 赵蓉 电脑主机配置 监控主机 更多