LabVIEW学习笔记九:捕捉由程序修改控件值产生的“值改变”事件

遇到个问题,我把这个问题简化了成了一个vi,里面是有2个确定按钮(机械动作:单击后触发),分别用事件结构(值改变)控制了一个灯亮起。

我希望能实现:我点一个按钮a后控制一个灯a亮起(代表了一些数据计算),这些计算的结果来判断,判断后让另一个按钮b也实现触发(另一个按钮的事件结构也是值改变),然后b灯亮起。这个过程中我只点了按钮a,看起来就是点了按钮a后又点了按钮b(实际上没点按钮b)
ps:因为一些原因,不能把a,b的值改变放到同一个事件分支中去,也不能把两个灯放到同一个事件结构里去。

 当时没想明白,被迫换了一个程序写法,后来偶然在网上看到了一个大佬的系列,简直如同醍醐灌顶。

LabVIEW 无法捕捉由程序修改控件值产生的“值改变”事件_LabVIEW开发的博客-CSDN博客_labview输出值改变触发事件

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

解答:

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

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

参考下图的图片以及附件中的VI。

上例中,事件结构用来捕捉要连接到输入控件Numeric的Event Source 显示控件的“值改变”事件。

在事件结构的Numeric“值改变”分支中将Numeric的新值赋值给Event Source ,而不是在事件结构外直接将Numeric连线到Event Source,这样就可以避免每次Event Source 的值改变产生的“值改变”事件。一旦Numeric值改变了,对应的事件分支就会响应,通过 Event Source 的值(信号)属性节点便可产生 Event Source 的“值改变”事件,他对应的事件分支也执行了,如下图所示。


————————————————
版权声明:本文为CSDN博主「LabVIEW开发」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bjcyck/article/details/124519385

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值