《ie工业工程_labview调用操作系统功能》由会员分享,可在线阅读,更多相关《ie工业工程_labview调用操作系统功能(69页珍藏版)》请在金锄头文库上搜索。
1、第7章 LabVIEW调用操作系统功能,Intelligent Electronics Institute Huazhong University of Science & Technology,引言,任何一个应用程序开发平台都有其自身的优势与不足,LabVIEW也不例外。作为一个高级编程人员,在开发一个大的复杂应用程序时必须能够综合应用不同软件开发平台的功能,才能使项目更加完善。一个好的软件开发环境,也必然具备与其他应用程序的交互功能及必要的开发工具。 本章将要讲到的读/写电子表格文件、读/写XML文件、读/写配置文件、读/写系统注册表、调用ActiveX控件、调用系统链接库及调用命令行程序
2、等都是LabVIEW与其他应用程序的交互方式。,本章内容,7.1 读/写电子表格文件 7.2 读/写XML文件 7.3 读/写配置文件 7.4 读/写系统注册表 7.5 输入设备控制 7.6 调用动态链接库(DLL) 7.7 ActiveX 7.8 执行系统命令,3,7.1 读/写电子表格文件,LabVIEW文件操作基本步骤,4,打开,读写、操作,关闭,7.1 读/写电子表格文件,电子表格写操作 文件格式的要求 保存电子表格格式文本文件,5,7.1 读/写电子表格文件,保存电子表格文件,6,7.1 读/写电子表格文件,电子表格文本文件和电子表格文件生产结果,7,7.1 读/写电子表格文件,电子
3、表格读操作 数据读取类型和格式,8,7.2 读/写XML文件,可扩展置标语言(XML) 可扩展置标语言(XML)是一种用标记描述数据的格式化标准。与HTML标记不同,XML标记不是告诉浏览器如何按格式处理数据,而是使浏览器能识别数据。 例如为每本书创建一个XML文件 Touring Germanys Great Cathedrals Tony Walters Douglas Drive Publishing $29.99 ,9,7.2 读/写XML文件,XML文件写操作 “平化至XML”(Flatten To XML)函数 XML模版,10,7.2 读/写XML文件,XML文件读操作 “从XM
4、L还原”(Unflatten From XML)函数 XML格式转换成簇,11,7.2 读/写XML文件,从XML文件中读取数据,12,7.3 读/写配置文件,配置文件VI可读取和创建标准的Windows配置文件,其标准扩展名为.ini,但只要内容格式正确,配置文件VI也可操作以任何扩展名命名的文件。 在.ini文件中,LabVIEW会将路径数据保存为独立于平台的格式。 例如绝对路径/c/temp/data.dat解析为如下路径: Windows c:tempdata.dat; Mac OS c:temp:data.dat; Linux /c/temp/data.dat。,13,7.3 读/写
5、配置文件,配置文件写操作 Windows配置文件标准格式 生成名为“Configuration.ini”的配置文件,14,7.3 读/写配置文件,测试配置程序例程 程序框图,15,7.3 读/写配置文件,测试配置程序例程 程序界面和生成文件,16,7.3 读/写配置文件,配置文件读操作 “读取键值”(Read Key.vi)函数 读取值数据类型设置,17,7.3 读/写配置文件,测试配置程序例程 初始化测试配置程序,18,7.3 读/写配置文件,测试配置程序例程 读取配置信息,19,7.4 读/写系统注册表,所谓“注册表”,实际上是一个庞大的数据库,它包含了应用程序和系统软硬件的全部配置信息,
6、这里所指的注册表仅针对于Windows操作系统。 注册表系统组成和注册表结构 本节首先以LabVIEW自带的三个例子,说明在LabVIEW中读/写注册表的一般方法,然后讲解自动配置ODBC(Open Database Connectivity,开放数据互连)数据源的应用实例。,20,7.4 读/写系统注册表,注册表写操作 创建注册表项,21,7.4 读/写系统注册表,程序运行结果 Windows Registry Editor Version 5.00 HKEY_LOCAL_MACHINESOFTWAREMyKey “My String“=“LabVIEW“ “My Binary“=hex:0
7、3,02,01,00 “My DWORD“=dword:00000100,22,7.4 读/写系统注册表,注册表读操作,23,7.4 读/写系统注册表,注册表删除操作,24,7.4 读/写系统注册表,自动配置ODBC数据源 ODBC是微软开发的服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。 在应用程序开发中用到数据库时,需要手动配置ODBC数据源。一旦相关的文件路径发生改变,则需要再次手动配置,这给最终用户带来了极大的不便。 将与手动配置相似的注册表信息写到注册表中,实现ODBC数据源的自动配置,25,7.4 读/写系统注册表,LabVIEW中实现
8、为应用程序自动地配置ODBC数据源,26,7.5 输入设备控制,用来获取连接到计算机上的操纵杆、键盘和鼠标的信息 输入设备控制VI位于“函数互连接口输入设备控制”子选板,27,7.5 输入设备控制,实时获取鼠标键盘信息例程 首先通过“查询输入设备”(Query Input Devices.vi)查询按键和鼠标的信息 分别初始化键盘和鼠标 在While循环中获取键盘按键信息和鼠标位置及点击信息 关闭输入设备,28,7.5 输入设备控制,程序框图,29,7.5 输入设备控制,程序界面,30,7.6 调用动态链接库(DLL),动态链接库 动态链接库(Dynamic Link Library,DLL)
9、是一个可以多方共享的程序模块,内部对共享的例程和资源进行了封装。 动态链接库文件的扩展名一般为*.dll,也可能是*.drv,*.sys或者*.fon,31,7.6 调用动态链接库(DLL),DLL和可执行文件 DLL和可执行文件(EXE)很相似,最大的区别在于DLL虽然包含了可执行代码却不能单独执行,必须由Windows应用程序直接或间接调用,32,7.6 调用动态链接库(DLL),动态链接库特点 通用性 DLL的编写、生成与具体编译器无关。 使用较少的资源 当多个程序使用同一个函数库时,DLL可以减少在磁盘和物理内存中加载的代码的重复量。,33,7.6 调用动态链接库(DLL),共享代码、
10、资源和数据 DLL中封装了一些可以被共享的例程和资源,不仅包含可执行的代码,还有数据和各种资源。 简化部署和安装 当DLL中的函数需要更新或修复时,部署和安装DLL不要求重新建立程序与该DLL的链接。,34,7.6 调用动态链接库(DLL),DLL使用注意 为了使应用程序正常地使用动态链接库,DLL文件必须存放在下列任意一个子目录中: Windowssystem目录中; 应用程序所在的子目录; 配置文件中定义的自动搜索的子目录。,35,7.6 调用动态链接库(DLL),DLL与API 应用程序编程接口(Application Programming Interface,API)是能用来操作组件
11、、应用程序或者操作系统的一组函数 一般情况下,API指的是Windows API,包括构成Windows操作系统的各种DLL。每个Windows应用程序都直接或间接地与Windows API互动,36,7.6 调用动态链接库(DLL),Windows中的API函数 Windows的API函数位于Windows系统目录下的多个DLL文件中,其中最基本的三个组成模块如下: Kernel32.dll:Windows系统核心32位API基础库,如内存和文件管理; Gdi32.dll:图形设备接口库,如显示和打印等; User32.dll:用户接口库,如键盘、鼠标、声音、系统时间等,37,7.6 调用动
12、态链接库(DLL),调用DLL LabVIEW中动态链接库的调用是通过调用库函数(Call Library Function,CLF)节点实现 节点位置“函数互连接口库与可执行程序”选板,38,7.6 调用动态链接库(DLL),配置CLF节点 右键单击节点并选择“配置”选项,或者直接双击节点,39,7.6 调用动态链接库(DLL),配置DLL的“函数”、“参数”、“回调”和“错误检查”具体步骤 DLL “函数”页数据类型配置注意,40,7.6 调用动态链接库(DLL),调用Windows API API函数位于DLL文件中,所以在LabVIEW中调用API函数和调用DLL的方法基本一样 在函数
13、配置时,需要把调用规范设置为stdcall(WINAPI),41,7.6 调用动态链接库(DLL),查询当前可用的物理内存和虚拟内存信息实例 利用系统目录下的User32.DLL库中的API函数GlobalMemoryStatus()来获得,函数声明如下: VOID GlobalMemoryStatus (LPMEMORYSTATUS lpBuffer); typedef struct _MEMORYSTATUS / mst DWORD dwLength; / sizeof(MEMORYSTATUS) DWORD dwMemoryLoad; / percent of memory in use
14、 DWORD dwTotalPhys; / bytes of physical memory DWORD dwAvailPhys; / free physical memory bytes DWORD dwTotalPageFile; / bytes of paging file DWORD dwAvailPageFile; / free bytes of paging file DWORD dwTotalVirtual; / user bytes of address space DWORD dwAvailVirtual; / free user bytes MEMORYSTATUS, *L
15、PMEMORYSTATUS;,42,7.6 调用动态链接库(DLL),程序框图和运行结果,43,7.7 ActiveX,ActiveX是Microsoft推出的基于组件对象模型(Component Object Model,COM)的一个技术集的统称。它可实现代码重用,并且与具体的编程语言无关。 ActiveX的主要组成部分包括ActiveX自动化(Automation)、ActiveX控件(ActiveX Control)、ActiveX文档(ActiveX Documents)和ActiveX脚本(ActiveX Scripting),44,7.7 ActiveX,ActiveX自动化(A
16、utomation) ActiveX自动化是ActiveX最重要的功能之一,它可以使一个应用程序通过ActiveX操纵另一个应用程序的对象;并可以使一个应用程序提供一些对象及对象的方法和属性来允许另外一个应用程序调用。 LabVIEW既可以作ActiveX客户端,又可以作ActiveX服务器。作为客户端时,LabVIEW可以访问现有的ActiveX对象来增强LabVIEW的功能,如访问Excel、Web、Access等;作为服务器时,它允许其他程序访问它提供的ActiveX自动化服务,如调用VI、控制LabVIEW等,45,7.7 ActiveX,ActiveX相关函数位于“函数互连接口ActiveX”选板,46,7.7 ActiveX,ActiveX主要函数功能 打开自动化:打开ActiveX对象,获得对象的Reference; 关闭引用:关闭Reference; 转换为变体:把LabVIEW数据转换成变体型; 变体至数据转换:把变体型数据转换成LabVIEW数据; 属