当前位置:文档之家› LabWindows CVI教程

LabWindows CVI教程

LabWindows CVI教程
LabWindows CVI教程

第一章 : LabWindows/CVI

1.1 LabWindows/CVI

1.1.1 LabWindows/CVI概述

LabWindows/CVI是美国NI(National Instruments)公司开发的面向计算机测控领域的虚拟仪器软件开发平台,可以在多种操作系统(WindowsXP/Vista/7、Mac OS和Unix)下运行。

LabWindows/CVI 是为C 语言程序员提供的集成开发环境(IDE),在此开发环境中可以利用C语言及其提供的库函数来实现程序的设计、编辑、编译、链接、调试。使用LabWindows/CVI 可以完成以下但不限于以下工作:

·交互式的程序开发;

·具有功能强大的函数库,用来创建数据采集和仪器控制的应用程序;

·充分利用完备的软件工具进行数据采集、分析和显示;

·利用向导开发IVI 仪器驱动程序和创建ActiveX 服务器;

·为其它程序开发C 目标模块、动态连接库(DLL)、C 语言库。

图 1‐1 LabWindows/CVI界面

LabWindows/CVI 的功能强大在于它提供了丰富的函数库。利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。

数据采集。IVI库、GPIB/GPIB 488.2库、NI-DAQmx库、传统的NI-DAQ库、RS-232库、VISA库、VXI库以及NI-CAN库。

数据分析。格式化IO库、分析库以及可选的高级分析库。

GUI库。使用LabWindows/CVI 的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用LabWindows/CVI 的用户界面库函数可以在程序中创建并控制GUI。此外,LabWindows/CVI为GUI 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、

表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。

网络和进程间通信库。动态数据交换(DDE)库、TCP库、ActiveX库、Internet 库、DIAdem连接库、DataSocket库等。

除此之外,用户可以在CVI中使用ANSI C库中的全部标准函数。

正式因为有了强大的库支持,所以在CVI中,完成绘制图 1‐2所示正弦函数波形的功能,只需要在main()函数中写三行代码:

图 1‐2 CVI程序运行结果

一旦提及NI公司,大家可能最先联想到的是NI公司推出的LabVIEW软件。LabWindows/CVI与LabVIEW相比,主要应用在各种测试、控制、故障分析及信息处理软件的开发中,其更适合中、大型复杂测试软件的开发,是工程技术人员开发建立监测系统、自动测量环境、数据采集系统、过程监测系统的首选工具。

1.1.2 LabWindows/CVI安装

要安装CVI,只需要根据CVI安装包里的“Release Notes.pdf”和“说明.txt”一步步完成安装即可。

安装完CVI后,我们有必要看一下,安装程序在我们计算机的磁盘中丢下了哪些东西。

表 1‐1 LabWindows/CVI主要目录及其内容

目录名说明

\bin LabWindows/CVI的库文件

\extlib外部编译器使用的CVI库文件(只在Windows95/NT中使用)

\fonts字体文件

\include头文件

\instr仪器模块

\samples CVI开发例程

\sdk SDK库文件(只在Windows95/NT中使用)

\toolslib开发工具包和库文件

\tutorial使用手册

\vxd VXD实例开发模板

\wizard CVI开发环境中的向导程序

其中,samples文件夹中的例程可以使初学者迅速掌握CVI编程开发基本步骤。bin 文件夹下的cvi.chm(也可以通过CVI开发环境中按F1打开)是学习CVI之路必不可少的参考文档。

1.2 寻根问底:开发环境

对于一门学问的初学者来说,最希望搞懂的就是学的东西的本质是什么。在前一小节中我们提到了,LabWindows/CVI是NI推出的一个基于C语言的集成开发环境(IDE,Integrated Development Environment)。那么什么是开发环境呢,开发环境是怎么工作的呢?

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland 的C++ Builder系列等。

但我们自从学习C语言开始就与集成开发环境建立了不解之缘。似乎在我们心中,C 语言就是VC/VS、VC/VS就是C语言、VC/VS就是编译器、编译器就是VC/VS。虽然不可否认的是,IDE的出现大大的降低了软件开发的门槛,曾经帮助我们快速入门,但IDE过于友好的界面让人无需思考程序编译、运行的原理即可开始写自己的第一个HelloWorld程序。

所以,我们有必要了解IDE的工作模式,有必要了解IDE是怎么通过命令行去工作的。命令行,看似简陋,却能让人专心于自己的事物,并搞清楚一个程序的来龙去脉。

Keil下的命令行工作方式已经在创新中心的《SST单片机实践教程》的“汇编语言工具链”一节中有了详细的介绍,下面通过一个实例介绍最常用的VC6.0的命令行工作方式。

在此之前,我们假设你至少已经用VC写过C语言,编译过工程,并对Windows下的命令行至少略知一二。当然,如果你现在还不懂,赶紧利用Google等一切现代化的工具解除自己的疑惑。

例1 使用命令行完成用VC对下面简单的C语言程序的编译。

实验步骤

(1) 将这段代码保存为.c文件(此处保存为main.c),并讲这段代码放在VC安装路径下的“VC98\Bin\”文件夹下。

启动命令行窗口,并将地址修改为当前地址

(2) 敲入cl.exe main.c命令执行编译。

此时可能会弹出窗口,提示缺少文件“mspdb60.dll”,编译失败。毕竟当前的命令行窗口没有标准VC的环境变量,所以编译程序cl.exe无法从当前的环境变量中找到mspdb60.dll。

(3) 在VC安装路径的“Common\MSDev98\Bin”目录中找到此DLL并复制

到“VC98\Bin”文件夹下之后,按键盘方向键↑重新运行cl.exe main.c。此时会提示找不到stdio.h文件。在VC安装路径的“VC98\Include”目录中找到stdio.h之后,复制

到“VC98\Bin”文件夹下。

图 1‐3 命令行编译main.c-提示找不到stdio.h

(4) 同理,程序会依次提示找不到文件LIBC.lib、OLDNAMES.lib、

kernel32.lib。这些库文件都可以在VC安装目录下的“VC98\Lib”路径中找到。

(5) 再次运行,命令行提示编译成功。

图 1‐4 命令行编译main.c-编译成功

(6) 在命令行中敲入main.exe。“Hello,world!”是否显示出来了呢?

图 1‐5 运行main.exe

至此,聪明的你应该已经知道VC的IDE是如何依赖于安装包内的编译器CL.exe程序实现编译的功能了吧。

本小节旨在通过对大家熟悉的VC的IDE改用命令行进行编译的方式引导大家接触一个新的事物首先应该搞清楚其本质的思想,养成搞学问时喜欢刨根问底的好习惯。除了编译器的功能外,集成开发环境IDE应该还带有调试器的功能。限于篇幅,此处不再多过多探索,大家可以自行研究。若对IDE感兴趣,大家还可以调用现有的编译器程序、调试器程序编写自己的IDE!

1.3 C语言的魅力

是不是在大家的印象里,C语言只能做那种char后面跟几个*,故意把人绕晕之后运行的时候还会弹出一个黑乎乎的窗口的程序?

是不是在大家的印象里,C语言不能访问网络、不能播放声音、不能显示图片、不能跟硬件设备打交道、不能做GUI,即便做出来GUI也丑的很或者慢的很,更不能搞多线程之类的高端一点的玩意儿?

是不是在大家的印象里,为了使用一个串口库,我们就必须丢掉C语言然后让C++甚至MFC闪亮登场?

是不是在大家的印象里,C语言能做的事情,C++、Java、C#或者Python等等编程语言通通都能做到?而这些编程语言能做到的事情C语言就很难做到?

如果一定要这么认为,那就大错特错了。即便在编程语言更新换代如此之快的今天,我们也很难找出一个智能设备或者商业软件在开发的过程中未曾使用C语言过。

借助CVI以及CVI自带的丰富的函数库,C语言不仅能够做C++、C#、Java等可以做的事,有时还可以做的更快更好,甚至还可以做这些编程语言所不能做的事。

我们学校(华中科技大学)的论坛“白云黄鹤”的服务器端程序就是采用C语言开发的,没有使用现成的Web服务程序或者数据库管理程序(当时没什么IIS也没MySQL可以用),因此数据库通过不断对文件进行fread或者fwrite实现的。

第一次听说C语言还可以用来开发服务器程序,大家肯定不敢相信。不过下面我们将以一个简单的实例来向大家证明,C语言真的可以写服务器端的程序,而且简单的超乎想

象。

例2 使用C语言完成简单的Web服务器的功能。

实验步骤

(1) 若您的计算机尚未安装Apache,请先安装Apache服务器。若已安装Apache,请确保Apache程序处于运行状态。

(2) 在VC6.0中新建C语言工程,输入以下代码。

(3) 编译,并将编译后生成的可执行文件main.exe复制到Apache程序的cgi-bin 目录下。

(4) 在浏览器地址栏中输入http://localhost/cgi-bin/main.exe?HelloWorld

图 1‐6 在浏览器中访问编译的程序并传入HelloWorld参数

是不是见识到了C语言在网络开发中“初见端倪”的一面?上述例子其实是

CGI(Common Gateway Interface,通用网关接口)的一个最简单的例子。稍微详细一些的例子将会在第6 章“综合实例:远程环境参数检测系统”中见到。如果你对C语言在开发CGI 程序感兴趣,也可以自行查找资料,编写一个更具实际价值的网络应用程序。

1.4 CVI开发环境初接触

1.4.1 三步创建自己的Hello,world

不管是学习一门新的语言,还是学习一个新的开发工具,大家的第一个程序都是Hello world。所以,下面我们一步一步来,实现我们的Hello,world!

1. 建立/保存工程

运行LabWindows/CVI,初始状态的CVI会自动为我们建好一个新的工作空间Untitled.cws以及新的工程Untitled。.cws文件是CVI工作空间文件(CVI WorkSpace),

而.prj(project)是CVI的工程文件。点击菜单File-New-Source(*.c),新建一个C文件。

图 1‐7 打开CVI并新建C文件

2. 输入代码保存代码文件

在新建的C文件中输入下列代码,点击菜单File-Save Untitled1.c(或者按

Ctrl+S、或者点击工具栏中的保存按钮),将新建的C文件保存在自己想要保存的位置中。

3. 编译运行

此时若点击菜单Run-Debug Project(或者点击工具栏中的绿色三角形按钮),则CVI会弹出如下所示提示。说明刚刚保存的C语言文件必须添加到一个工程中才能继续编译过程。此时点击Yes会自动将C文件添加到工程中,若点击Cancel也可以右击Untitled工程之后选择Add File…添加C文件到工程中。

由于我们只保存了C文件,并未保存工程.prj文件,所以右击Untitled工程之后选择Save,将工程文件保存。

此时若再点击菜单Run-Debug Project(或者点击工具栏中的绿色三角形按钮),Hello,world成功运行!

总结起来,完成一个HelloWorld程序只需要“建立/保存工程”-“输入代码保存代码文件”-“编译运行”简单的三步。

大家若感兴趣,也可以将以前在VC中写的C语言程序代码复制到CVI中,看看在CVI 中是否也能正确的运行。

其实,CVI是支持ANSI C(American National Standards Institute,美国国家标准协会)的,只要是ANSI C的代码,在CVI中一样可以运行。

1.4.2 阅读官方的samples

学习或提升一门编程语言的水平,最快速有效的是阅读大量优质的代码。NI在CVI 安装目录的samples下提供了大量的参考例程。大家可以将samples例程中的.cws文件拖动到CVI中打开.cws文件,运行并查看官方的代码。

初次接触CVI的同学可能对CVI的“工作空间”与“工程”并不熟悉。一个工作空间中可能存在一个或多个工程。

CVI每次编译的时候一般只对“当前”工程进行编译。需要注意的是当前工程不是指的当前打开的文件所在的工程,而是被设置为“Active Project”的工程。设置一个工程为当前工程,可以通过右击工程-Set Active Project来完成,被设置为当前工程的工程名会被加粗显示,如下图所示。

图 1‐8 被设置为当前工程的Rtfileio

CVI也可以批量编译,即同时对一个工作空间下的多个工程进行编译。批量编译可以通过菜单Build-Batch Build…来实现。

1.5 探索与实验

1.5.1 实验

安装CVI开发环境,并实现类似图 1‐2 CVI程序运行结果所示的应用程序,要求产生高斯噪声波形。

1.5.2 探索

通过查看NI帮助文档或查找资料,探究LabWindows/CVI的命令行编译方式。

第二章 :六步构建简单的GUI程序

2.1 六步构建简单的GUI程序

在本节中,我们要做的例子很简单,是创建一个如下图所示的应用程序。

图 2‐1 程序运行效果

2.1.1 创建工程文件

运行LabWindows/CVI,单击菜单File-New-Project(*.prj)…,将会出现新建工程的选项对话框。在对话框中可以选择是否同时新建一个工作空间,是否保持跟上个工程同样的配置。

图 2‐2 创建新的工程

2.1.2 创建用户界面文件

单击菜单File-New-User Interface(*.uir)…,将会弹出用户界面编辑器。用户界面编辑器是一个利用交互式拖放控件的方法来设计图形用户界面的编辑器。对于一个新建的用户界面文件,编辑器将自动产生一个空面板,如下图所示。

图 2‐3 用户界面编辑器窗口

双击面板 ,弹出属性编辑框。在属性编辑框中可以修改程序的标题、窗口位置、窗口按钮/菜单、窗口风格等特性。

图 2‐4 属性编辑框

初始状态下,面板属性对话框的Callback Function(回调函数)留空。此处可以填写回调函数的名称(此示例填写“MainCallBack”),以方便后面添加窗口关闭、窗口激活或者失活的响应代码。

2.1.3 在用户界面文件中添加控件

在该窗口中Untitled Panel的灰色区域中单击鼠标右键,便会弹出一个如图 2‐5所示的控件选择的快捷菜单。LabWindows/CVI 的控件种类见表 2‐1。

图 2‐5 控件菜单

从该菜单中选择所需的控件,并摆放到面板的适当位置(也可通过Create 菜单项来实现上述操作)。每个控件通过一系列属性设置对话框来设定,可以通过设置控件的属性来改变其外观、设置、热键和标签等。

在此,我们选择添加两个Numeric菜单下的Numeric控件,添加一个Text菜单下的String控件,Command Button菜单下的Square Command Button控件。添加完毕后,双击控件(或者右击-Edit Control)修改控件的相关属性。

分别在属性编辑框中,将两个Numeric控件的Constant Name属性修改

为“PARA_A”、“PARA_B”,Label Appearance的Label属性修改为“参数A”、“参数B”。将String控件的Constant Name属性修改为“RESULT”,Label Appearance的Label属性修改为“A+B”。将Command Button控件的Constant Name属性修改为“CALCULATE”,Callback Function属性修改为“Calculate”,以方便后面生成回调函数。

图 2‐6 修改控件的属性

当然,为了美观,可以在Quick Edit Window中修改按钮等控件的背景颜色,在Label Appearance中修改按钮中文字的颜色。上图中OK按钮即普通按钮修改颜色之后的效果。

2.1.4 生成框架源代码

在用户界面编辑窗口中,选择菜单Code-Generate-All Code,此时将会弹出一个提示存储.uir文件的对话框,在此我们存为1.uir(CVI将会生成同名的.h文件。不建议大家像示例一样起无意义的命名)。保存后CVI会弹出生成代码的对话框,一般情况下直接点击OK,框架源代码会自动保存在跟.uir同名的C文件中。

图 2‐7 生成所有代码

至此,我们点击菜单Run-Debug Project之后,程序UI已经可以运行了。运行结果如下图所示。当然了,因为尚未编写按钮的回调函数的响应代码,此时点击任何按钮都不会执行对应的操作。

图 2‐8 程序UI运行结果

2.1.5 添加回调函数

生成框架代码之后,我们应该可以在uir同名的C文件中看到CVI为我们生成了如下代码:

我们可以在CVI为我们生成的框架中添加或修改代码,以实现具体的功能。在添加或修改代码之前,我们先来逐一分析CVI生成的框架代码做了什么。

cvirte.h、userint.h分别是CVI运行时库(CVI Run-Time Engine)、CVI用户界面库(CVI User Interface)的头文件,分别包含了CVI框架运行、CVI用户界面运行所需要的基本函数的声明与定义。1.h是界面文件1.uir的头文件库,包含了界面中的控件的定义与声明。而panelHandle为面板的全局句柄,当对面板或者面板上的控件进行操作时经常用到。

main函数是用户程序运行时首先被执行的函数。main函数实现的功能分别是CVI运行引擎初始化(InitCVIRTE函数)、加载面板(LoadPanel函数)、显示面板(DisplayPanel函数)、开始消息队列循环(RunUserInterface函数)。其中RunUserInterface会不断的检查面板的消息或者操作系统发送的消息,永远不会返回,除非用户主动调用QuitUserInterface函数中止消息循环。所以,正常运行状态下,main函数中的DiscardPanel永远不会被执行,main函数永远不会退出,直到程序被关闭。

MainCallBack是我们在面板属性编辑框中填写的Callback Function的名字,负责执行主程序面板消息的响应代码。在switch语句中,我们可以看到,CVI已经事先为我们生成好了三个面板最常用的事件:EVENT_GOT_FOCUS、EVENT_LOST_FOCUS以及EVENT_CLOSE。分别在对应的case中添加代码,即可在窗口被激活、窗口失活、以及点击窗口右上角“关闭”按钮时执行的代码。

CVI初学者可能会被MainCallBack前面的从未见过的CVICALLBACK吓倒。其实我们只需要选中CVICALLBACK之后右击,选择Go To Defination即可看到:

CVICDECL仍然不是我们的C语言关键字。继续选中CVICDECL之后右击,选择Go

To Defination查看CVICDECL的原型:

至此,CVICALLBACK真相大白。其实CVICALLBACK只是__cdecl的宏定义。什么?不懂__cdecl是什么意思?赶紧拿起手中的手机,访问Google搞清楚它们的神奇功效吧!

CVI初学者也可能被MainCallBack后面跟着的一堆参数吓倒,不知道他们是做何用,“不管他们行不行”。panel好理解,就是消息发生所在的面板的句柄。callbackData 表示消息发出时所附带的数据。可是eventData1以及eventData2却容易让初学者云里雾里。其实我们只需要选中任意case语句中的事件(此处可以选择EVENT_GOT_FOCUS),右击选择Go To Defination之后即可发现,CVI User Interface的事件定义全在这里。对eventData1以及eventData2的说明,也在定义的注释中有所说明。

在此,为了让用户点击程序右上角的关闭按钮时,程序可以顺利关闭,在case EVENT_CLOSE语句后面添加QuitUserInterface函数:

Calculate函数是我们在面板中创建的按钮(Command Button)控件的消息响应函数,函数框架跟前面的主面板的消息响应函数类似。我们需要在此添加按钮按下之后需要执行的代码。Calculate函数添加响应之后的代码如下:

需要提醒大家的是,作为CVI的初学者,请在对照示例进行实际操作时,不要直接Copy+Paste上面的代码。自己对照着上面的代码一个字母一个字母的敲进去,会对扎实、牢固的学习掌握CVI具有很大的帮助的。

GetCtrlVal是获取控件的当前值的函数,其函数声明如下:

其中value为控件的当前值变量的指针。panelHandle参数为函数面板的句柄,之前已经提到。可是控件的句柄controlID如何获得呢?

最简单的方法就是,控件的句柄即[控件所在的面板的Constant Name]_[控件的Constant Name]。若控件所在面板的Constant Name为PANEL,控件的Constant Name为NAME,那么控件的句柄即为PANEL_NAME。其中,面板或者控件的Constant Name都可以通过双击面板或者双击控件来进行设置。

另外一种方法即打开.uir同名的.h文件,查找对应的控件的定义。我们在1.h文件中发现如下代码:

即可得知,“参数A”控件的句柄为PANEL_PARA_A。

SetCtrlVal是设置控件的当前值的函数,其函数声明如下:

同GetCtrlVal一样,调用SetCtrlVal并填入面板、控件句柄之后即可设置控件的值。

GetCtrlVal、SetCtrlVal、GetCtrlAttribute以及SetCtrlAttribute四个函数,是对几乎所有控件都适用的函数,在CVI的GUI程序中,使用极其频繁,是学习CVI的GUI编程必须掌握的四个函数。

2.1.6 运行、调试

点击菜单Run-Debug Project(或点击工具栏的绿色三角形按钮)即可直接编译并运行当前工程,同时也可以在工程所在目录下生成exe文件。

右击工程名并选择Build(或点击菜单Build-Create Debuggable Executable)即可编译并生成exe文件。

在CVI代码编辑窗口中单击代码前空白部分或者按F9按键,则可以在对应的C语言语句处设置断点。

在程序中断时,单击菜单Window即可控制开启或关闭Memory(内存)、

Variables(变量)、Watch(监控)窗口,通过查看或者修改对应的参数的值来方便的调试程序。

在本节中,我们已经通过编写并运行一个GUI的实例,了解了在CVI下用C语言开发GUI程序的基本过程。至此,大家已经算是对CVI入门了,大家已经可以尝试着自行开发一些有用、好玩的程序了。

2.2 借助帮助文档使用更多控件更多功能

一般软件在设计时都会遵循二八定律,即80%的人通常只使用一个软件20%的功能,但是另外80%的功能却对20%的人来说很重要。对于CVI初学者也一样,任何教程只会告诉初学者20%的功能如何去使用,而剩下的80%的功能只能由使用者根据CVI软件提供的帮助文档或者自行查找相关的资料来使用/实现。

授之以鱼不如授之以渔,下面我们将针对CVI初学者经常遇到的几个问题,提供解决问题的方法。

2.2.1 随心使用更丰富的CVI控件

CVI具有丰富的控件,从一般的按钮、界面到图表、开关。在使用CVI提供的丰富、强大的控件之前,我们必须先对CVI提供了哪些控件有一个大致的了解。

CVI控件的类型列举如表 2‐1所示。

表 2‐1 CVI的控件类型

数值型控件(Numeric)文本型控件(Text )

命令按钮(Command Button)双态按钮(Toggle Button)

指示灯(LED)二值开关(Binary Switch)

列表控件(Ring)列表框(List Box)

装饰控件(Decoration)图形控件(Graph)

图片控件(Picture)表格控件(Table)

定时器控件(Timer)画布控件(Canvas)

分隔线控件(Splitter)标签页控件(Tab)

ActiveX控件(ActiveX)经典样式控件(Classic-Style…)

自定义控件(Custom Controls)

常用控件的功能如下:

(1) 数值型(Numeric)控件可作为用户参数输入窗或程序参数回显窗;

(2) 字符串(Text )控件用来输入或显示一个字符串;

(3) 文本型控件包括文本框控件(Text Box Control)和信息框控件(Text Message Control),用于显示大量的文本信息;

(4) 命令按钮(Command Button)控件用于出发一个事件,用于仪器的控制。命令按钮一般必须定义回调函数功能的名称;

(5) 双态按钮(Toggle Button)控件包括双态按钮、文本/图形双态按钮和单选/复选按钮,它们都有两种状态,分别为“0”和“1”。

(6) 二值开关(Binary Switch)控件可以在两种状态(On/Off)下工作,并为两种状态设置控件值和标题,与触发按钮类似;

(7) 列表(Ring)控件用于在一组值中进行选择,既可以用鼠标单击控件框或单击控件的上下箭头选择,也可以用键盘的Up和Down键来选择;

(8) 时钟(Timer)控件用来设置特定的时间段内触发事件,它可以在无限长的时间里等间隔地重复执行给定的操作;

(9) 图形(Graph)控件分为曲线图Graph控件和带状图Strip Charts控件。带状图用来实时显示图形数据。

(10)标签页(Tab)控件用来给程序添加多个可以切换的标签页。

(11)经典样式控件(Classic-Style…)罗列了早期版本中CVI的控件。

在.uir文件中添加控件之后,右击控件,都会弹出类似图 2‐9所示的菜单:

图 2‐9 右击控件弹出菜单

选择“Control Help”,则CVI会自动打开帮助文档的该控件的帮助部分。如图

2‐10所示。点击Programming… Controls 链接即可查看操作该控件所需要的一些函数。

图 2‐10 控件的帮助文档

2.2.2 使用丰富的CVI函数库

在第一章中,我们提到了CVI的强大之处在于它提供了丰富的函数库支持。利用CVI 的库,我们可以轻松的实现数据采集、数据分析、GUI交互、通信以及多线程等功能。

如何使用CVI丰富的函数库呢?细心的同学可能已经注意到了,在CVI开发环境的左下角有一个Libraries Tree窗口(如图 2‐11),提供了CVI提供的函数库(fp,Function Tree)的浏览功能。

图 2‐11 CVI提供的函数库窗口

例如,若想实现以下弹窗(Popup)的功能。则可在函数库浏览窗口的User Interface Library中打开Pop-up Panels,然后在 Message/Prompt Popups中找到ConfirmPopup函数,右击该函数,选择Function Help,即可获得使用该函数的相关帮助。如果直接双击该函数,还会在右侧出现函数面板,辅助大家填写函数的参数。

相关主题
文本预览
相关文档 最新文档