首先新介绍一个 Function 叫做 Call By Reference Node,他透过 VI Reference 来执行该 VI,但是使用方式类似一般的SubVI 的接线方法而不是像上次使用 Invoke Node 来设定 Control Set 以及 Run VI,Call By Reference Node 的位置如下图所示。
使用 Call By Reference Node 有一个规则就是必须将该 VI Reference 的接脚型态给设定好,步骤如下图,首先在 Open VI Ref 的上方有一个接脚可以设定 VI 的结构,在该端点按下滑鼠右键选择 Create => Constant。
接着在该 VI Reference Constant 上点选右键选择 Select VI Server Class => Browse,选择你想要执行的 VI,就会将该 VI 的接脚结构给定义起来,如下图画面所示。
接着就可以接上 Call By Reference Node,就会发现它象是一般 SubVI 的使用方式,已经将该 VI 的接脚显示出来,让我们可以去将 Control 与 Indicator 给连接上去来执行。
比较一下上一次的范例,上次的 Control Value 是透过该 Control 的 Label 来做设定,而 Call By Reference Node 是透过 SubVI 所设定好的接脚来做接线动作。
除了使用 Open VI Reference,另一种取得 VI 的 Reference 的方法就是使用 Static VI Reference,他的优点是使用起来比 Open VI Reference 更简单,缺点就是会将 VI 的存储器直接载入主程序中,这样就无法透过 Plug In 的方式来节省程序运行的存储器。Static VI Ref 函式的位置如下图所示。
使用的方法如下,将 Static VI Ref 放置到 Block Diagram 上面,如下图所示,可以点选鼠标右键选择 Browse for Path 选择 VI 的档案,labview 就会将该 VI 的 Reference 载入。
我们来实际的比较看看,实际上程序的 Block Diagram,下图是使用 Static VI Ref载入 Reference 并且使用的范例,简单的去执行该 VI 的,另一个是使用 Open VI Ref 来透过路径取得 Reference。
例外若是想要使用 Call By Reference Node,必须将 Static VI Ref 设定成 Strict Typed VI Reference,在 Ref 上方按下滑鼠右键来选择即可,便会连该 VI 的接脚配置结构都定义好。
上述的一些知识就先暂时讲解到这边,若是继续讲解更多的Function怕大家会越来越混乱,先在这边直接讲解使用VI Server的范例好了,举一些简单的应用。
范例一:使用VI Server将VI Front Panel变成透明状
首先选择 VI Server Ref,预设就是This VI,接到 Property Node 上面。
在 Property Node 上面寻找 Front Panel Window => Run Transparently以及Transparence,在 Run Transparently 给予 Boolean 的 True,Transparence 给予你想要的透明度 0~100,然后就可以执行 VI 看看,在执行状态下就会让 VI 的 Front Panel 变成半透明状态(后方是我的桌面)。
范例二:抓取VI Front Panel的图片
首先选择 VI Server Ref,接到 Invoke Node 上面,在 Invoke Node 选择 Front Panel => Get Image,再使用 Picture 的 Function 来储存成 Png 档。
1