labview深入探索----xcontrol
将立即退出循环。
这和一般的事件结构使用方法完全不同,一旦循环退出,整个事件检测就结束了,不会再响应其他事件了。而在XCONTROL中,这显然是不能这样做的,因为XCONTROL肯定要不断响应事件,按常规想法,它应该连接的是-1,循环永远不退出。即使永远不退出,持续检测事件,这样也是有问题的,如果有大量的XCONTROL,这将导致数量庞大的事件结构循环,这样会极大地影响程序性能。
仔细分析后,我得出结论,上面的事件结构实际上是个回调函数。
CVI的回调函数是这样定义的:
int CVICALLBACK PlotData (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2);
VC也是类似的。
它的目的是,如果面板或者面板上某个控件发生的事件,比如鼠标按下,值改变等等,将自动调用这个函数,注意是操作系统自动调用这个函数,不是用户调用的。
FACADE.VI正是这个功能,一旦XCONTROL发生任何事件,LABVIEW将自动调用这个回调函数,回调函数响应事件后,因为没有其它事件发生,会立即触发超时,导致循环结束,回调函数退出。具体过程是这样的:
XCONTROL 发生事件----》labview调用FACADE.vi--->响应事件---》超时退出
下次发生事件时重复上面的过程。
LABVIEW除了超时事件外,还自动生成了其它几个事件,可以把它们称做系统事件,对于任何的XCONTROL,这几个事件都是必须存在的。
2:Data Change事件
Data Change 事件是指前面自定义数据类型DATA的值改变了所发生的事件。
事件是如何发生的那,当你用数据流,或者局部变量以及VALUE属性节点改变了XCONTROL的值,则触发该事件。
这一点和一般的事件结构也是不同的,对于一般地控件,用局部变量或者Value属性节点是不会产生事件的,如果改变了同时需要触发事件,我们不得不用VALUE(SIGNAL)事件来人为触发。
当我们在前面板生成这个控件时,DATA CHANGE事件自动触发,尽管我们此时并未改变它的值。
3:DISPLAY STATE CHANGE----显示状态改变事件。
当你在前面板拖入(生成)这个XCONTROL的实例时,或者复制控件,以及用自定义的属节点改变控件时触发这个事件。我们可以利用这个事件来改变XCONTROL的外观特性。
4:方向改变事件
当一个XCONTROL从控制器改变成指示器或者从指示器改变成控制器时产生该事件。
利用这个结构,我们可以把指示器和控制器显示成完全不同的形状。
对于常规的控件,我们可以用鼠标右键的CAHNGE TO CONTROL和CHANGE TO INDICATOR来改变,XCONTROL也是如此。
5:Exec State Change-----执行状态改变
左侧传入的RUN MODE?为真表示运行状态,为假表示编辑状态,这个事件的基本做用是,指示器在编辑状态下是可以更改它的值的,而在运行状态下是不允许用户直接修改的,只能通过数据流或者局部变量来修改,这样,我们必须知道当前是运行还是编辑状态。
另外经过实际测试,当一个XCONTROL被拖入前面板(生成控件实例)的时候,将按照下面的次序产生事件:
调用INIT.VI---->DATA CHANGE EVENT--->STATE CHANDE EVENT
需要注意的是左侧共有四个严格类型的数据传入循环:
DATA IN---它是上面定义的DATA.CTL
DISPLAY STATE IN----它是上面定义的STATE.CTL
Container state-----包容器状态
Action--------------动作
我们看看Container State 和Action的定义
Container State 是一个严格类型定义的簇,有三个元素组成:
.Indicator ? ,boolean 用来表示当前的XCONTROL是控制器还是指示器
.Run Mode? boolean 用来表示当前的XCONTROL是处于运行状态还是编辑状态.
.RefNum refnumxcontrol自身的控件参考.
Action 也是一个严格类型的簇,有三个元素组成:
.Data Changed boolean 如果该项给定TRUE,则触发DATA CHANGE事件
.State Changed boolean 如果该项给定为TRUE,则触发Display StateCHANGE事件.
.Action Name 用户可以自己定义的字符串信息,比如我们可以指明是哪个要求触发DATA CHANGE事件的 .
接下来,我们来制作这个XCONTROL的属性和方法
我们在状态中已经定义了四个属性:1.进入标题,2.离开标题 3.进入颜色 4.离开颜色
这四个属性是子定义的属性,完成后,LV自动在属性节点中增加四个项目.属性节点一般都定义成可读可写的,根据需要,也可以定义成单向的.
当我们打开一个VI,包含XCONTROL时,XCONTROL是不允许编辑的,在调试XCONTROL的过程我们需要频繁切换XCONTROL的设计窗口和使用窗口,用上面的UNLOCK LIBARAY FOR EDITING,可以暂时启动XCONTROL的编辑,这是使用XCONTROL的窗口处于错误中断状态.
编辑完毕后,用APPLAY CHANGES TOI
labviewxcontro 相关文章:
- 频宽、取样速率及奈奎斯特定理(09-14)
- 为什么要进行信号调理?(09-30)
- IEEE802.16-2004 WiMAX物理层操作和测量(09-16)
- 为任意波形发生器增加价值(10-27)
- 基于PCI 总线的高速数据采集系统(09-30)
- 泰克全新VM6000视频测试仪助力数字电视等产品测试 (10-06)