插件能够丰富一种工具的功能,使之能够被应用于更多的领域。对LabVIEW而言,它既是一种程序设计语言,同时也是一个程序设计环境。从后者的角度来看,LabVIEW提供了一系列接口供第三方的插件调用。NI通常把这种用于专业的附加于LabVIEW开发环境的插件称为工具包(Toolkits),并且往往价格不菲。如Report Generation Toolkit就是将LabVIEW与Microsoft Office结合起来,使程序员能够使用它更方便地生成doc或者xls格式的报表。由于LabVIEW并没有完全的开放,NI对第3方开发的工具包(插件)也进行了比较严格的管制,只有经过NI核查并且认证的工具包才能够在NI的产品目录中发布出去。
尽管目前还没有一种统一的平台管理和发布各个各样的LabVIEW插件(如同Apple的App Store一样),但是国内外一些组织也在通过自己的方式努力着。例如JKI团队(介绍)建立的VI Package Manager(下载)就是一个专门用于管理和发布JKI撰写的插件,全球的程序员都可以免费下载并使用其中包含的各种插件,如图 1所示。
图 1 VI Package Manager
一般而言,插件的目的是为了解决某一个特定的问题而编写的某一独立的应用程序。通常有2种调用方式:
通过函数选板或控件选板调用。也就是插件以VI的方式供程序员直接使用,就如同使用LabVIEW自带的子VI函数一样。
通过LabVIEW的菜单栏调用。也就是在现有的LabVIEW菜单栏中增加一个菜单项用来调用插件。
目前,除了NI发布的收费的插件之外,最好的插件提供者就是JKI团队了。它会通过VI Package Manager应用程序自动向全球的程序员分发,程序员直接可以免费使用。
1.1使用模板集成插件VI
LabVIEW允许将一些反复使用的VI保存成模板供反复调用,单击LabVIEW菜单栏的“File>>New…”菜单项,弹出如图 2所示的对话框。在图中的列表框左侧的“From Template”文件夹中,列出了系统预定义的若干个模版VI。这相当于定义了一个VI开发的起点,不用总是从一个空的VI开始。
图 2 New对话框
例如,可以把一些常用的程序设计模式vi另存为VI模板的格式(File>>Save As…,选择vit后缀),并保存在硬盘中。当需要调用某一个模板时,打开图 2所示的对话框,选择VI>>From Template>>User>>Browse…按钮,则系统会自动从该模板新建一个VI。
程序员可以提供一些VI并以vit格式发布,使用者只需要调用时选择就可以了。很明显,这种基于vit格式的插件发布方式特别适合于LabVIEW程序设计模式的要求。因此,可以建立一些常用的LabVIEW程序设计模式的VI,并以vit模板的方式调用。
1.2使用函数选板或控件选板集成插件VI
在NI提供的工具包中,绝大部分是以VI或控件的方式发布的。也就是说,插件的发布者希望使用者能够直接在LabVIEW的背面板中调用插件提供的子VI以完成某一特定的功能。
为了调用方便,可以将插件中的VI和控件直接嵌入到函数选板和控件选板中,这样不会改变LabVIEW程序开发者的使用习惯,如同使用LabVIEW自带的子VI一样。
选择Tools>>Advanced>>Edit Palette Set…菜单项,将弹出选板编辑对话框,如图 3所示。程序员可以在此处新建一个图标,并将该图标与某一个vi或llb关联起来。
图 3 Edit Palette Set
这种发布方式是常见的工具包/插件发布方式,它相当于增加了LabVIEW本身的内部VI,以扩展完成某些特殊的功能。
1.3使用LabVIEW菜单栏集成插件
能否将某一小工具嵌入到LabVIEW中呢?如独立的exe应用程序,或者设计某一个VI用来统计某个文件夹VI所占用的空间。LabVIEW也提供了将独立的应用程序集成到菜单栏的接口。
【应用(下载)】
本例将Windows的计算器、记事本等作为独立的应用程序导入到LabVIEW中,并将《LabVIEW程序设计模式》系列中的“可乐贩卖机”VI嵌入到LabVIEW中。
LabVIEW只能够嵌入以vi结尾的文件,因此需要新建两个VI调用Windows系统的计算器和记事本工具。如图 4所示,新建一个VI命名为calc.vi,调用System Exec.vi函数,并在VI运行结束后退出。
图 4 calc.vi背面板
为了使得该VI被调用时就自动运行,因此按下Ctrl + I键,在VI Properties属性对话框中的Execution页勾选“Run when opened”项,如图 5所示。
图 5 calc.vi属性Execution页
设置“Windows Appearance”页中VI的标题栏为“计算器”,如图 6所示。
图 6 calc.vi属性Windows Appearance页
同理,新建一个名为notepad.vi的VI以调用Windows记事本应用程序,如图 7所示。此外,将VI的标题修改为“记事本”,并设置VI属性“Run when opened”。
图 7 notepad.vi背面板
新建文件夹Tools,并将上面的两个VI和自动贩卖机程序(VendingMachine.llb)放入到Tools文件夹中,如图 8所示。
图 8 Tools文件夹中的文件
在VendingMachine.llb,主VI被设置为Top Level,而其它的子VI没有被设置,如图 9所示。
图 9 VendingMachine.llb文件组织结构
打开LabVIEW安装目录下的<…National InstrumentsLabVIEW 8.6project>目录,并将Tools文件夹拷贝到projects目录中。关闭LabVIEW,并再次打开LabVIEW。选择Tools 菜单,可以看到此时Tools菜单中已经加入了Tools项和“计算器”、“记事本”、“自动贩卖机”等菜单项,如图 10所示。
图 10 Tools菜单项
单击“计算器”菜单,可以看到此时LabVIEW已经调用了Windows的计算器功能。事实上,LabVIEW会根据project中文件的VI自动调整Tools中的部分菜单项,如图 11所示(图中的红色区域菜单项)。
图 11 可自定义的Tools菜单
projects目录中的每一个子目录都是一个独立的菜单项(除了以“_”开头命名的目录)。其中子目录中的每一个VI就是一条指令,而文件夹又是子菜单项。主要遵循以下的方式:
projects目录中的每一个目录都是一个独立的菜单项,菜单项的命名与文件夹的命名相同,如“A”;
目录中的每一个VI都是一个独立的菜单项,菜单项的命名与VI的Windows Title相同(注意:不是VI的名字,而是VI的Windows Title的名字);
对llb而言,每一个Top Level的VI都是一个独立的菜单项,而非Top Level的VI不作为菜单项,但是可以作为子VI。
以上的3条中需要把以“_”开头命名的文件夹和VI除外。
例如,如果只希望把Tools目录中的“记事本”和“自动贩卖机”加入到菜单项中,不希望把“计算器”加入,则只需要把“calc.vi”命名修改为“_calc.vi”即可。
由于LabVIEW会自动对添加的菜单项排列其位置,如图 10中,排序依次是“计算器”、“记事本”和“自动贩卖机”,那么如何将这种顺序自定义为所示的样式呢?将自动贩卖机放在第1个,并且与其它的两个应用程序使用分隔线分隔。
图 12 修改了排序之后的Tools菜单
在projects目录中新建一个txt文本文件命名为“Tools.txt”(重要,需要与上层的文件夹命名保持一致)。键入图 13所示的文字,可以看出每一行代表着一个菜单项,而菜单项使用菜单所代表的VI名字描述(注意:是VI的名字,而不是Windows Title),分隔符使用“-”短划线表示。
图 13 Tools.txt
关闭LabVIEW,并再次打开LabVIEW,可以看出此时菜单项的排序已经发生了变化。
这种插件的发布方式比较适合具备用户界面的插件,主要是用来完成独立的功能,不需要与LabVIEW进行交互,特别适合独立exe应用程序的调用。