LabView中的属性节点
很多朋友对于属性节点的使⽤表⽰有些不明⽩,但是其作⽤⼜是相当强⼤的,所以必须明⽩怎么使⽤属性节点以及如何调⽤的问题,下⾯就来为⼤家解迷。
在获得对象的reference之后,就可以使⽤属性节点(Property Node)和调⽤节点(Invoke Node)来设定对象属性和调⽤对象提供的固有⽅法(Method)。
属性节点的⼀般形式如图1所⽰:
图2 新放置的属性节点
作为⼀个例⼦,为第⼀个端⼦选择Operation System.Name属性,该属性表⽰运⾏程序的操作系统名称。
运⾏程序后,在字符串指⽰器⾥返回所选择属性的值Windows NT,如图3所⽰。Operation System.Name为只读属性。reference参数使⽤了默认值,即当前运⾏的应⽤程序的reference,这同使⽤空的machine name参数调⽤Open Application Reference参数返回的结果完全相同。
图3 使⽤当前程序的属性节点查询操作系统名称
调⽤节点的⼀般形式如图4所⽰,其组织⽅式同属性节点相似。class为reference所关联对象的类型名,method为⽅法
名,param 1等为参数名。如果⽅法调⽤没有返回值,则method的位置仅仅显⽰⽅法名;如果⽅法调⽤有返回值,则method 变为输出端⼦,在return value中输出⽅法调⽤的返回值。
图4 调⽤节点
在调⽤节点上单击⿏标右键会弹出快捷菜单,在这个菜单⾥含有名为Methods的⽅法列表⼦菜单。⼀个对象可以有很多⽅法供调⽤,但是⼀个调⽤节点只能为对象调⽤⼀个⽅法,这⼀点与属性节点不同,属性节点对在其中访问的属性个数没有限制。⽅法调⽤的某些参数有默认值,可以不连接,这些可选参数的调⽤节点端⼦底⾊为灰⾊,可以根据需要决定是否接⼊这些参数。图5给出了调⽤节点的使⽤⽰例
图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系统中选
write的返回值择“⼯具->选项...”菜单项,打开选项对话框,在上⾯的类别列表中选中“VI服务器:配置”项,选中协议下的TCP/IP复选框,以允许基于TCP/IP协议的⽹络访问。然后在类别列表中选中“VI服务器:机器访问”,在右边的⽂本框中输⼊计算机B的ip地址192.168.1.111,确认下⾯的单选列表选中了允许访问,单击添加按纽,把ip地址添加到机器访问列表中,如图6所⽰。这样就将允许计算机B上的LabVIEW实
例通过计算机A上的LabVIEW实例的VI Server,实现A上运⾏着的LabVIEW资源的远程访问。图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 使⽤调⽤节点远程访问⽅法
如前所述,控制器和指⽰器的属性节点和调⽤节点的建⽴⽅式有两种:⼀种是在控件或其框图端⼦上弹出快捷菜单,并选择Create->Property Node或Create->Invoke Node,直接建⽴与之关联的隐式连接的属性节点或调⽤节点;另⼀种是在快捷菜单⾥选择Create->Reference以建⽴其reference,然后接⼊从Application Control模板添加的属性节点或调⽤节点的reference输⼊端⼝。在图8中Numeric数值控制器采⽤两种⽅式建⽴属性节点,可以看到,隐式连接的属性节点具有与控制器相同的标签,⽽且没有reference输⼊端⼦。两段代码的运⾏结果完全相同。
图8 为控制器建⽴属性节点的两种⽅法
VI和应⽤程序本⾝的属性和⽅法必须通过reference接⼊相应节点的⽅式来访问,控件的属性和⽅法可以使⽤reference来访问,也可以使⽤隐式连接的⽅法直接访问。
图9给出了⼀段代码⽰例,⽰例完成的功能是在字符串数组Application:All VIs In Memory内显⽰内存中所有已经打开的VI的⽂件名,并且在路径数组Array中返回这些⽂件在磁盘上的路径。
图9 显⽰内存中的VI⽂件名及其磁盘路径
图9中,当前LabVIEW实例的App.AllVIs属性为字符串数组,每个元素都是内存中的⼀个VI⽂件名。VI⽂件名字符串数组通过⾃动索引逐个进⼊For循环,传给Open VI Reference函数的VI Path参数,打开⽂件名代表的VI的reference后,使⽤属性节点读取VI的Path属性,这个属性表⽰VI在磁盘上的存放路径。对内存中每个VI读取⼀次Path属性后,通过⾃动索引在输出隧道上形成路径类型的数组,输⼊到Array中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论