2011年8月23日,第1稿
6.6 VI 脚本(VI Scripting)
VI脚本是LabVIEW中非常重要、且又十分强大的一个功能,VI脚本借助于LabVIEW中的VI Server技术,可以让用户创建、修改以及了解VI中的一些信息。
VI中的所有东西都可以被认为是一种VI对象,包括前面板和程序框图上的任何对象、连线板、图标以及几乎所有保存在VI中信息。所有对VI对象的修改都可以在编辑时期利用属性节点和调用节点来完成,并且这些都可以在编辑时期得到应用或修改。
通过前面几章的内容中,我们已经初步认识、使用了一些属性节点和调用节点。而现在我们所要介绍的VI脚本则提供了更丰富的内容。实质上,是拓宽了属性节点和调用节点的应用范围。
在LabVIEW8.6之前,VI脚本是不提供给用户使用的,它只作为NI内部员工的开发使用工具。此后NI对用户的使用权进行了有限度开放,即获得NI许可的用户才可以使用VI脚本。在LabVIEW2010中,NI已经对所有用户开放了VI脚本的使用。如果你已经是LabVIEW2010版以后的用户,现在就可以使用VI脚本的功能了。
为了更好的了解VI脚本,我们将同一控件在没有启用VI脚本时的属性节点和启用VI脚本后的属性节点展示给大家。参见下图。
VI中的所有东西都可以被认为是一种VI对象,包括前面板和程序框图上的任何对象、连线板、图标以及几乎所有保存在VI中信息。所有对VI对象的修改都可以在编辑时期利用属性节点和调用节点来完成,并且这些都可以在编辑时期得到应用或修改。
通过前面几章的内容中,我们已经初步认识、使用了一些属性节点和调用节点。而现在我们所要介绍的VI脚本则提供了更丰富的内容。实质上,是拓宽了属性节点和调用节点的应用范围。
在LabVIEW8.6之前,VI脚本是不提供给用户使用的,它只作为NI内部员工的开发使用工具。此后NI对用户的使用权进行了有限度开放,即获得NI许可的用户才可以使用VI脚本。在LabVIEW2010中,NI已经对所有用户开放了VI脚本的使用。如果你已经是LabVIEW2010版以后的用户,现在就可以使用VI脚本的功能了。
为了更好的了解VI脚本,我们将同一控件在没有启用VI脚本时的属性节点和启用VI脚本后的属性节点展示给大家。参见下图。
6.6.1 启动VI脚本
并不是安装了LabVIEW2010就可以使用VI脚本的功能,通常它还需要进行少许设置后才能够启动。设置方法很简单,就是在开发环境中选择工具拦中:
》工具
》选项
》VI服务器
参见下图。
》工具
》选项
》VI服务器
参见下图。
点击上图中的[确定]按键,就完成了VI脚本的设置。当然,如果你不希望使用VI脚本的功能在这里也可以取消这些设置。
设置完成后,我们在程序框图中,鼠标右键单击空白处,选择:
》函数
》编程
》应用程序控制
》VI脚本
就可以看到它的5个函数,参见下图。
设置完成后,我们在程序框图中,鼠标右键单击空白处,选择:
》函数
》编程
》应用程序控制
》VI脚本
就可以看到它的5个函数,参见下图。
6.6.2 使用VI脚本新建VI
我们过去所知道的新建VI是在开发环境的启动界面选择:新建VI,或者在文件菜单中选择:新建VI,实现创建一个新的VI。
现在利用VI脚本的功能,我们可以通过编程的方法来新建一个VI。该程序被命名为:VI脚本-新建VI.vi,参见下图。
现在利用VI脚本的功能,我们可以通过编程的方法来新建一个VI。该程序被命名为:VI脚本-新建VI.vi,参见下图。
这里我们做了如下工作(包括对新建VI做了一些设置):
现在我们运行VI脚本-新建VI.vi后,就会在屏幕的中央看到一个居中的新界面。界面名称与上图中的字符串内容一样,参见下图。
- 使用新建VI创建了一个新VI的引用(因为我们是通过VI服务器来管控新VI的)
- 通过引用属性节点使前面板打开、给定前面板的标题、禁用前面板菜单栏、禁用前面板工具栏、禁止调节前面板大小。
- 通过引用调用节点使打开后的前面板居中显示
- 运行该VI
- 关闭引用
现在我们运行VI脚本-新建VI.vi后,就会在屏幕的中央看到一个居中的新界面。界面名称与上图中的字符串内容一样,参见下图。
因为打开这个VI后,该VI不是连续的运行,所以我们根本看不到属性设置情况执行。如果我们点击“连续运行”按钮,该VI连续运行后我们就会看到属性节点的管控结果,参见下图。
现在我们再用VI脚本编程的方法让这个VI能够连续运行起来。
6.6.3 使用VI脚本新建VI对象
我们需要新设计一个VI,将其命名为:VI脚本-新建-While循环.vi。具体操作我们就不表述了,程序框图参见下图。
这里:
我们只是在原来的“VI脚本-新建.vi”基础上做了些添加,添加了一个While循环和一个停止按键,看起来还是相当复杂的。主要注意关闭所有打开的引用。
运行“VI脚本-新建-While循环.vi”,我们在屏幕上看到一个新的连续运行的前面板图,点击停止按键,该程序会停下来。下图是它的运行情况。
- 新建一个VI包括它的引用,前面部分与“VI脚本-新建.vi”相同
- 新建一个停止按键对象包括它的引用
- 新建一个While循环对象包括它的引用
- 通过属性节点设置While循环“T”停止
- 通过按键的属性节点创建接线端的引用控制按键开关的位置
- 通过While循环的属性节点创建接线的尾端的引用,控制按键与While循环停止端的连线
- 关闭所有打开的引用
我们只是在原来的“VI脚本-新建.vi”基础上做了些添加,添加了一个While循环和一个停止按键,看起来还是相当复杂的。主要注意关闭所有打开的引用。
运行“VI脚本-新建-While循环.vi”,我们在屏幕上看到一个新的连续运行的前面板图,点击停止按键,该程序会停下来。下图是它的运行情况。
VI脚本-新建-While循环.vi的前面板和程序框图参见下图。
6.6.4 VI脚本的用途
请注意在上面的程序中,我们使用了新建VI对象的函数,仅仅新建了两个对象(按键和While循环),并通过各自对象的引用将按键和While循环的停止端连线在一起。
这样简单的程序用VI脚本实现起来确如此的复杂,甚至是十分难以读懂。如果使用LabVIEW设计这样一个VI,分分种种就可以实现,简直是手到擒来,根本无需费这样的劲,为何非要采用VI脚本来设计实现呢?它究竟对我们有什么用?
实际上,VI脚本并不是提供给初学者使用的,从它的复杂度就可以看出这点。VI脚本的使用者应该是较高级的开发者,比如象OpenG、MGI社团等等。对我们来说这是一门高级开发技术,需要在实践中慢慢去掌握和渐渐的应用。
如果我们需要设计多个相似的VI,采用VI脚本技术相对就比较合理。特别是容易风格统一和批量改动,这对团队开发无疑好处是巨大的。回顾过去我们在开发过程中所采用VI的模板来拷贝生成多个类似的VI,其实道理是一样的。不同之处,要想批量修改实现起来可就困难的多了。
即便我们永远都不会使用VI脚本来设计程序,但是VI脚本中所提供那些丰富的、开放的属性和方法也不会去使用吗?
VI脚本的作用域:
这样简单的程序用VI脚本实现起来确如此的复杂,甚至是十分难以读懂。如果使用LabVIEW设计这样一个VI,分分种种就可以实现,简直是手到擒来,根本无需费这样的劲,为何非要采用VI脚本来设计实现呢?它究竟对我们有什么用?
实际上,VI脚本并不是提供给初学者使用的,从它的复杂度就可以看出这点。VI脚本的使用者应该是较高级的开发者,比如象OpenG、MGI社团等等。对我们来说这是一门高级开发技术,需要在实践中慢慢去掌握和渐渐的应用。
如果我们需要设计多个相似的VI,采用VI脚本技术相对就比较合理。特别是容易风格统一和批量改动,这对团队开发无疑好处是巨大的。回顾过去我们在开发过程中所采用VI的模板来拷贝生成多个类似的VI,其实道理是一样的。不同之处,要想批量修改实现起来可就困难的多了。
即便我们永远都不会使用VI脚本来设计程序,但是VI脚本中所提供那些丰富的、开放的属性和方法也不会去使用吗?
VI脚本的作用域:
- 创建若干类似的VI
- 对齐和布局控件
- 显示和隐藏控件的标签
- 连接程序框图对象
6.6.5 VI脚本的第三方应用
其实上我们可以看到许多第三方应用的实例。似乎应用比较成功的、范围比较广泛的是OpenG社团[14],这是有目共睹的事实。
OpenG社团除了提供了VIPM软件之外,还设计开发了适用于LabVIEW编程处理的“右键单击框架”(Right-Click Framework for LabVIEW)。它的特点是:
我们在LabVIEWpro网站[15]看到fine11网友提出的这样一个问题:
“請問除了在物件上點右鍵選擇reference外,還有其他辦法可以建造出reference嗎?因為有大量物件需要建立reference,想說有沒有辦法簡單右快速建立。
不然要點右鍵點到手酸...”
解决的方法就是使用“右键单击框架”,详细内容可参考上面的参考文献[15]。遗憾的是我的电脑目前还无法使用“右键单击框架”这个功能,所以只能在日后补上这部分内容。
OpenG社团除了提供了VIPM软件之外,还设计开发了适用于LabVIEW编程处理的“右键单击框架”(Right-Click Framework for LabVIEW)。它的特点是:
- 扩展和自动执行重复性的LabVIEW开发环境中的任务
- 下载并安装由其他人创建的LabVIEW功能
- 根据自己的需要创建新的LabVIEW功能
- 享受积极和充满活力的LabVIEW Scripting社团的支持
- 使用VI软件包管理器(VIPM),快速,轻松地安装框架(和许多插件)
我们在LabVIEWpro网站[15]看到fine11网友提出的这样一个问题:
“請問除了在物件上點右鍵選擇reference外,還有其他辦法可以建造出reference嗎?因為有大量物件需要建立reference,想說有沒有辦法簡單右快速建立。
不然要點右鍵點到手酸...”
解决的方法就是使用“右键单击框架”,详细内容可参考上面的参考文献[15]。遗憾的是我的电脑目前还无法使用“右键单击框架”这个功能,所以只能在日后补上这部分内容。













