LabVIEW论坛
直播中

zhihuizhou

13年用户 7005经验值
擅长:测试与测量
私信 关注
[文章]

属性节点和调用节点的使用教程

很多朋友对于属性节点的使用表示有些不明白,但是其作用又是相当强大的,所以必须明白怎么使用属性节点以及如何调用的问题,下面就来为大家解迷。
在获得对象的reference之后,就可以使用属性节点(Property Node)和调用节点(Invoke Node)来设定对象属性和调用对象提供的固有方法(Method)。
属性节点的一般形式如图1所示:
1.jpg
图1 属性节点
属性节点的最上面有两个输入参数和两个输出参数,输入参数reference用于接入对象的reference,输入的reference参数在被复制之后从reference out输出,可以再接入下一个使用reference作为输入参数的节点或函数。其他两个输入、输出参数用于错误处理。当接入某一个reference后,在class的位置会出现与该reference对应对象类别名称,比如App(Application)表示接入的是应用程序的reference,VI表示接入的是VI的reference等。reference输入参数一般有默认值,例如当类别(class)为Application时,其默认值为当前运行的应用程序的reference;当类别为VI时,其默认值为节点所在VI的reference。name1,name2等端子为属性端子,name1和name2代表属性名。
在属性端子上单击鼠标右键会弹出快捷菜单,在这个菜单里含有名为Properties的属性列表子菜单,在同样的快捷菜单里Change to Read和Change to Write选项将把端口在写端口和读端口之间转换,各个端子之间的读写状态互不影响。某些属性只能读不能写。在默认情况下类型名class和属性名name 1等采用的是“短名称”的表示方法,在属性节点上弹出右键快捷菜单,选择Name Format->Long Names将打开“长名称”的显示方式。如图2所示:
2.jpg
图2 新放置的属性节点
作为一个例子,为第一个端子选择Operation System.Name属性,该属性表示运行程序的操作系统名称。运行程序后,在字符串指示器里返回所选择属性的值Windows NT,如图3所示。Operation System.Name为只读属性。reference参数使用了默认值,即当前运行的应用程序的reference,这同使用空的machine name参数调用Open Application Reference参数返回的结果完全相同。

3.jpg
图3 使用当前程序的属性节点查询操作系统名称
调用节点的一般形式如图4所示,其组织方式同属性节点相似。class为reference所关联对象的类型名,method为方法名,param 1等为参数名。如果方法调用没有返回值,则method的位置仅仅显示方法名;如果方法调用有返回值,则method变为输出端子,在return value中输出方法调用的返回值。
4.jpg
图4 调用节点
在调用节点上单击鼠标右键会弹出快捷菜单,在这个菜单里含有名为Methods的方法列表子菜单。一个对象可以有很多方法供调用,但是一个调用节点只能为对象调用一个方法,这一点与属性节点不同,属性节点对在其中访问的属性个数没有限制。方法调用的某些参数有默认值,可以不连接,这些可选参数的调用节点端子底色为灰色,可以根据需要决定是否接入这些参数。
图5给出了调用节点的使用示例
5.jpg
图5 使用调用节点打开并最大化当前VI的前面板窗口
图中调用节点所关联的的对象的类别是VI,其输入参数reference为使用路径常量InvokeNode.vi作为vi path输入参数调用Open VI Reference函数的返回值,实际上该路径指向的VI就是调用节点所在的VI本身。因为该VI已经在labview系统中被打开,所以直接使用VI文件名即可,而不需要完整的磁盘路径。由于VI类别的调用节点的reference输入参数有默认值,即为节点所在VI本身,所以调用Open VI Reference函数实际上没有必要,可以删去。所选择的对当前VI进行调用的方法是Open FP的方法,该方法的功能是打开VI的前面板窗口(同时把前面板窗口设为当前窗口)。前面板窗口打开后,调用节点会根据接入可选参数Activate和State的值设置前面板窗口状态。图中State端口上选择Maximized值,运行程序时会看到程序自动切换到前面板窗口,而且前面板窗口被最大化。
下面对图5中的例子稍作修改,以实现远程的方法调用。首先,在ip为192.168.1.11的计算机A上运行的LabVIEW系统中选择“工具->选项...”菜单项,打开选项对话框,在上面的类别列表中选中“VI服务器:配置”项,选中协议下的TCP/IP复选框,以允许基于TCP/IP协议的网络访问。然后在类别列表中选中“VI服务器:机器访问”,在右边的文本框中输入计算机B的ip地址192.168.1.111,确认下面的单选列表选中了允许访问,单击添加按纽,把ip地址添加到机器访问列表中,如图6所示。这样就将允许计算机B上的LabVIEW实例通过计算机A上的LabVIEW实例的VI Server,实现A上运行着的LabVIEW资源的远程访问。
6.jpg
图6 添加TCP/IP访问许可
在计算机B上,把InvokeNode.vi修改为如图7所示。字符串192.168.1.11作为machine name参数输入给Open Application Reference函数,以获得计算机A上运行的LabVIEW实例的reference,把这个reference传给Open VI Reference函数,这样就可以从计算机B打开计算机A上的VI的reference。根据LabVIEW的习惯,打开LabVIEW系统后新建的第一个文件名为Untitled 1(未经保存的默认文件名),假设在计算机A的LabVIEW系统中建立了这样一个新文件,则在计算机B上运行图7代码的结果是,在计算机A上打开并最大化Untitled 1的前面板窗口。由于文件Untitled 1一定会处理打开状态(存在于内存中),所以直接指定文件名Untitled 1即可。
7.jpg
图7 使用调用节点远程访问方法
如前所述,控制器和指示器的属性节点和调用节点的建立方式有两种:一种是在控件或其框图端子上弹出快捷菜单,并选择Create->Property Node或Create->Invoke Node,直接建立与之关联的隐式连接的属性节点或调用节点;另一种是在快捷菜单里选择Create->Reference以建立其reference,然后接入从Application Control模板添加的属性节点或调用节点的reference输入端口。在图8中Numeric数值控制器采用两种方式建立属性节点,可以看到,隐式连接的属性节点具有与控制器相同的标签,而且没有reference输入端子。两段代码的运行结果完全相同。
8.jpg
图8 为控制器建立属性节点的两种方法
VI和应用程序本身的属性和方法必须通过reference接入相应节点的方式来访问,控件的属性和方法可以使用reference来访问,也可以使用隐式连接的方法直接访问。
图9给出了一段代码示例,示例完成的功能是在字符串数组Application:All VIs In Memory内显示内存中所有已经打开的VI的文件名,并且在路径数组Array中返回这些文件在磁盘上的路径。
9.jpg
10.jpg

图9 显示内存中的VI文件名及其磁盘路径
图9中,当前LabVIEW实例的App.AllVIs属性为字符串数组,每个元素都是内存中的一个VI文件名。VI文件名字符串数组通过自动索引逐个进入For循环,传给Open VI Reference函数的VI Path参数,打开文件名代表的VI的reference后,使用属性节点读取VI的Path属性,这个属性表示VI在磁盘上的存放路径。 对内存中每个VI读取一次Path属性后,通过自动索引在输出隧道上形成路径类型的数组,输入到Array中。

回帖(98)

沈振语

2012-2-13 23:00:48
本帖最后由 eehome 于 2013-1-5 10:09 编辑

cuo bucuo







举报

沈飞

2012-2-19 09:39:20
挺好,学习下~
举报

kidi

2012-7-19 16:36:30
学习下
举报

h1654155749.8516

2012-7-19 17:11:06
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分