第7章LabVIEW调用操作系统功能IntelligentElectronicsInstituteHuazhongUniversityofScience&Technology引言任何一个应用程序开发平台都有其自身的优势与不足,LabVIEW也不例外。作为一个高级编程人员,在开发一个大的复杂应用程序时必须能够综合应用不同软件开发平台的功能,才能使项目更加完善。一个好的软件开发环境,也必然具备与其他应用程序的交互功能及必要的开发工具。本章将要讲到的读/写电子表格文件、读/写XML文件、读/写配置文件、读/写系统注册表、调用ActiveX控件、调用系统链接库及调用命令行程序等都是LabVIEW与其他应用程序的交互方式。读/写电子表格文件7.2读/写XML文件7.3读/写配置文件7.4读/写系统注册表7.5输入设备控制7.6调用动态链接库(DLL)7.7ActiveX7.8执行系统命令3读/写电子表格文件LabVIEW文件操作基本步骤4打开读写、操作关闭读/写电子表格文件电子表格写操作文件格式的要求保存电子表格格式文本文件5读/写电子表格文件保存电子表格文件6读/写电子表格文件电子表格文本文件和电子表格文件生产结果7读/写电子表格文件电子表格读操作数据读取类型和格式8读/写XML文件可扩展置标语言(XML)可扩展置标语言(XML)是一种用标记描述数据的格式化标准。与HTML标记不同,XML标记不是告诉浏览器如何按格式处理数据,而是使浏览器能识别数据。例如为每本书创建一个XML文件nonfictionTitleTouringGermany'sGreatCathedrals/TitleAuthorTonyWalters/AuthorPublisherDouglasDrivePublishing/PublisherPriceUS$29.99/PriceUS……/nonfiction9读/写XML文件XML文件写操作“平化至XML”(FlattenToXML)函数XML模版10读/写XML文件XML文件读操作“从XML还原”(UnflattenFromXML)函数XML格式转换成簇11读/写XML文件从XML文件中读取数据12读/写配置文件配置文件VI可读取和创建标准的Windows配置文件,其标准扩展名为.ini,但只要内容格式正确,配置文件VI也可操作以任何扩展名命名的文件。在.ini文件中,LabVIEW会将路径数据保存为独立于平台的格式。例如绝对路径/c/temp/data.dat解析为如下路径:Windowsc:\temp\data.dat;MacOSc:temp:data.dat;Linux/c/temp/data.dat。13读/写配置文件配置文件写操作Windows配置文件标准格式生成名为“Configuration.ini”的配置文件14读/写配置文件测试配置程序例程程序框图15读/写配置文件测试配置程序例程程序界面和生成文件16读/写配置文件配置文件读操作“读取键值”(ReadKey.vi)函数读取值数据类型设置17读/写配置文件测试配置程序例程初始化测试配置程序18读/写配置文件测试配置程序例程读取配置信息19读/写系统注册表所谓“注册表”,实际上是一个庞大的数据库,它包含了应用程序和系统软硬件的全部配置信息,这里所指的注册表仅针对于Windows操作系统。注册表系统组成和注册表结构本节首先以LabVIEW自带的三个例子,说明在LabVIEW中读/写注册表的一般方法,然后讲解自动配置ODBC(OpenDatabaseConnectivity,开放数据互连)数据源的应用实例。20读/写系统注册表注册表写操作创建注册表项21读/写系统注册表程序运行结果WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SOFTWARE\MyKey]MyString=LabVIEWMyBinary=hex:03,02,01,00MyDWORD=dword:0000010022读/写系统注册表注册表读操作23读/写系统注册表注册表删除操作24读/写系统注册表自动配置ODBC数据源ODBC是微软开发的服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。在应用程序开发中用到数据库时,需要手动配置ODBC数据源。一旦相关的文件路径发生改变,则需要再次手动配置,这给最终用户带来了极大的不便。将与手动配置相似的注册表信息写到注册表中,实现ODBC数据源的自动配置25读/写系统注册表LabVIEW中实现为应用程序自动地配置ODBC数据源26输入设备控制用来获取连接到计算机上的操纵杆、键盘和鼠标的信息输入设备控制VI位于“函数→互连接口→输入设备控制”子选板27输入设备控制实时获取鼠标键盘信息例程首先通过“查询输入设备”(QueryInputDevices.vi)查询按键和鼠标的信息分别初始化键盘和鼠标在While循环中获取键盘按键信息和鼠标位置及点击信息关闭输入设备28输入设备控制程序框图29输入设备控制程序界面30调用动态链接库(DLL)动态链接库动态链接库(DynamicLinkLibrary,DLL)是一个可以多方共享的程序模块,内部对共享的例程和资源进行了封装。动态链接库文件的扩展名一般为*.dll,也可能是*.drv,*.sys或者*.fon31调用动态链接库(DLL)DLL和可执行文件DLL和可执行文件(EXE)很相似,最大的区别在于DLL虽然包含了可执行代码却不能单独执行,必须由Windows应用程序直接或间接调用32调用动态链接库(DLL)动态链接库特点通用性DLL的编写、生成与具体编译器无关。使用较少的资源当多个程序使用同一个函数库时,DLL可以减少在磁盘和物理内存中加载的代码的重复量。33调用动态链接库(DLL)共享代码、资源和数据DLL中封装了一些可以被共享的例程和资源,不仅包含可执行的代码,还有数据和各种资源。简化部署和安装当DLL中的函数需要更新或修复时,部署和安装DLL不要求重新建立程序与该DLL的链接。34调用动态链接库(DLL)DLL使用注意为了使应用程序正常地使用动态链接库,DLL文件必须存放在下列任意一个子目录中:Windows\system目录中;应用程序所在的子目录;配置文件中定义的自动搜索的子目录。35调用动态链接库(DLL)DLL与API应用程序编程接口(ApplicationProgrammingInterface,API)是能用来操作组件、应用程序或者操作系统的一组函数一般情况下,API指的是WindowsAPI,包括构成Windows操作系统的各种DLL。每个Windows应用程序都直接或间接地与WindowsAPI互动36调用动态链接库(DLL)Windows中的API函数Windows的API函数位于Windows系统目录下的多个DLL文件中,其中最基本的三个组成模块如下:Kernel32.dll:Windows系统核心32位API基础库,如内存和文件管理;Gdi32.dll:图形设备接口库,如显示和打印等;User32.dll:用户接口库,如键盘、鼠标、声音、系统时间等37调用动态链接库(DLL)调用DLLLabVIEW中动态链接库的调用是通过调用库函数(CallLibraryFunction,CLF)节点实现节点位置“函数→互连接口→库与可执行程序”选板38调用动态链接库(DLL)配置CLF节点右键单击节点并选择“配置…”选项,或者直接双击节点39调用动态链接库(DLL)配置DLL的“函数”、“参数”、“回调”和“错误检查”具体步骤DLL“函数”页数据类型配置注意40调用动态链接库(DLL)调用WindowsAPIAPI函数位于DLL文件中,所以在LabVIEW中调用API函数和调用DLL的方法基本一样在函数配置时,需要把调用规范设置为stdcall(WINAPI)41调用动态链接库(DLL)查询当前可用的物理内存和虚拟内存信息实例利用系统目录下的User32.DLL库中的API函数GlobalMemoryStatus()来获得,函数声明如下:VOIDGlobalMemoryStatus(LPMEMORYSTATUSlpBuffer);typedefstruct_MEMORYSTATUS{//mstDWORDdwLength;//sizeof(MEMORYSTATUS)DWORDdwMemoryLoad;//percentofmemoryinuseDWORDdwTotalPhys;//bytesofphysicalmemoryDWORDdwAvailPhys;//freephysicalmemorybytesDWORDdwTotalPageFile;//bytesofpagingfileDWORDdwAvailPageFile;//freebytesofpagingfileDWORDdwTotalVirtual;//userbytesofaddressspaceDWORDdwAvailVirtual;//freeuserbytes}MEMORYSTATUS,*LPMEMORYSTATUS;4