LabVIEW学习笔记十一:用值(信号)实现,捕捉由程序修改控件值产生的“值改变”事件

本文探讨了在LabVIEW中使用事件结构时遇到的问题,即程序无法响应非用户输入导致的显示控件值改变事件。解释了事件结构仅捕获直接用户交互,而非程序内部更改控件值的情况。并提出了解决方案,通过属性节点模拟用户操作触发值改变事件。
摘要由CSDN通过智能技术生成

这个笔记回答了笔记九提出的那个问题,并成功实现,程序图和面板图在下面。

原本的设想是:

点一个按钮a后控制一个灯a亮起(代表了一些数据计算) 

点一个按钮b后控制一个灯b亮起(代表了一些数据计算)

使用了这个值(信号)后,点了按钮a之后,按钮a的值改变触发了事件结构,这个事件结构里有一个按钮b的值(信号),这个时候,程序会认为按钮b的值改变,从而触发了下面的事件结构。

效果:

b灯可以由按钮b控制(b按键可以发送b指令),a灯可以由按钮a控制(a按键可以发送a指令),如果在a指令里加一些计算(比如让本指令a完成后执行下一条指令b),那么按下按键a就能发送指令a,并且发送指令b,简化程序结构。

注意:

按键只能设置成转换,不能设置成触发,否则会报错

 

在使用事件结构的时候,在事件分支中响应前面板中的一个显示控件的值改变事件,该显示控件在程序的其他部分动态改变其值。VI运行的时候,可以观察到显示控件值已经被改变了,但是对应事件分支却没有执行。为什么事件结构里没有响应显示控件的值改变事件呢?

解答:

事件结构仅仅注册由直接的前面板用户输入产生的事件,而在问题中,显示控件的值非用户输入而是程序更改的,所以这样的“值改变”LabVIEW不会去捕捉,因此也无法响应对应的事件分支。而且,即使你在程序中利用VI服务器,全局变量,局部变量等来改变VI和前面板控件,“值改变”事件都不会被LabVIEW捕捉。

有一个例外,输入控件和显示控件的事件可以通过调用值(信号)的属性节点产生。该属性是只写的,每次写入该属性节点就像是用户在前面板操作产生值的改变。要注意的是,在循环中使用该属性时,如果在循环迭代每一次都写入该属性,不管控件实际是否有值变化,程序将会产生一组的值改变事件。

属性节点

属性节点:可用于访问对象的属性。当某些应用中可能需要通过编程改变前面板对象外观,以响应特定输入时,通过编辑属性节点进行设置。
创建方法:在程序框图的控件上右键,创建属性节点。需要设置多个属性时可以在边框上下拖动添加属性,属性节点按照由上而下的顺序执行。
严格属性节点:右键控件创建属性节点的方法为隐含属性节点;通过控件引用创建严格属性节点(右键创建属性节点,控件右键创建引用,二者相连即可创建严格属性节点)。在多个VI涉及同一个控件的属性时,会使用严格属性节点传递。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值