LabVIEW使用多个事件结构来处理同一个事件

简介: LabVIEW使用多个事件结构来处理同一个事件

LabVIEW使用多个事件结构来处理同一个事件


想根据应用程序的两个不同的状态,用一个事件来触发两个不同的操作。比如,当第一次按下某个按钮时,配置测试。当第二次按下时,测试开始运行。创建了两个不同的事件结构,把每一个结构都配置了一个处理“value changed”的事件,但是它们由数据线或者顺序结构隔开,然后运行VI。当程序运行的时候,整个应用程序会在第一个事件结构上等待,但是当第一个事件发生,代码执行后,第二个事件结构也会同样响应。如果处理的是“mouse down”的事件,第一个事件结构会响应,但是第二个事件结构永远不会响应(即使让这一事件重复多次发生,第二个事件结构永远不会响应)。为什么“value changed"的事件能够导致两个事件结构都响应,但是"mouse down"事件只能够让第一个事件结构响应并且第二个事件结构永远不会响应呢?应当如何创建事件才能使第二个事件结构响应第二个事件的发生呢?


解答: 事件结构和LabVIEW中别的结构和函数不同,它并不是按照LabVIEW中的数据流操作的概念的。“value changed”和“mouse down”事件之间的区别是前者是一个"通报事件"("notify event")而后者是一个"过滤事件"("filter event")。


对于通报事件,当为相同的通报事件配置两个事件结构时,当事件发生时,每一个结构会分别注册该事件,然后他们会被放在事件队列中。然后他们会响应并且处理事件。这个是期待的结果,因为两个事件结构都会响应。然而,第二个事件结构直到数据流到达它才会响应。

df40f4480dd7adce2f314f892ce9407d.png

编辑


添加图片注释,不超过 140 字(可选)



对于过滤事件,当为相同的过滤事件配置两个事件结构时,只有第一个事件结构会被注册来处理这个过滤事件,这个是预料中的结果,因为不能够把一个事件过滤两次。永远不要在不同的,独立的事件结构中注册同一个过滤事件。


如果想通过一个按钮来响应两个不同的事件结构,需要考虑使用通报事件,或者把两个按钮放在前面板的同一个地方,然后通过程序改变它们的可见性。这样的话用户不会在同一个地方看到两个按钮,因此能够触发相对应的事件。


如果想在两个不同的结构中处理相同的过滤事件(“mouse down”), 妥协的方法是用一个事件结构来处理两个情况。一个简单的例子是把一个单一事件结构放在一个for循环中.然后把一个case结构放在事件结构内.根据循环的次数来决定执行哪一个case。因此一个事件结构能够处理这个事件并且结合事件改变操作。


LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序


上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系们。

相关文章
|
22天前
|
传感器 人工智能 算法
掌握C++中的状态-事件回调矩阵:打造强大的有限状态机
掌握C++中的状态-事件回调矩阵:打造强大的有限状态机
48 0
|
8月前
|
监控 Java
并发编程 - 利用Event Bus模式实现目录文件变化捕捉
并发编程 - 利用Event Bus模式实现目录文件变化捕捉
27 0
|
8月前
|
消息中间件 定位技术 调度
《移动互联网技术》第八章 消息与服务:掌握不同类型广播监听方式,以及创建通知的方法
《移动互联网技术》第八章 消息与服务:掌握不同类型广播监听方式,以及创建通知的方法
21 0
|
9月前
[虚幻引擎插件介绍] DTGlobalEvent 蓝图全局事件, Actor, UMG 相互回调,自由回调通知事件函数,支持自定义参数。
本插件可以在虚幻的蓝图 Actor, Obiect,UMG 里面指定绑定和执行消息,可带自定义参数。 参数支持 Bool,Byte,Int,Int64,Float,Name,String,Text,Vector,Rotator,Transform,Object,Actor。
49 0
|
物联网
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
297 0
STM32:TIM输入捕获硬件部分(内含:1.输入捕获简介+2.频率测量+3.通用/高级定时器的输入捕获电路分析(重点)+4.主从触发模式+5.输入捕获基本结构(重点)+6.PWM基本结构)
|
12月前
|
开发者
驱动开发:基于事件同步的反向通信
在之前的文章中`LyShark`一直都在教大家如何让驱动程序与应用层进行`正向通信`,而在某些时候我们不仅仅只需要正向通信,也需要反向通信,例如杀毒软件如果驱动程序拦截到恶意操作则必须将这个请求动态的转发到应用层以此来通知用户,而这种通信方式的实现有多种,通常可以使用创建Socket套接字的方式实现,亦或者使用本章所介绍的通过`事件同步`的方法实现反向通信。
171 0
|
JavaScript
浅谈同步、异步、回调函数之间的关系?
同步:发出一个调用时,在没有得到结果之前,该调用就不返回;一旦调用返回,就得到返回值。换句话说,就是由调用者主动等待这个调用的结果。
424 0
|
JavaScript 前端开发
测理论--异步与回调的关联和区别
异步与回调的关联和区别
158 0
FreeRTOS事件组之事件组的创建(xEventGroupCreate())
FreeRTOS事件组之事件组的创建(xEventGroupCreate())
408 0
|
JavaScript 前端开发
如何找到一个前端事件对应的事件处理函数
如何找到一个前端事件对应的事件处理函数
315 0
如何找到一个前端事件对应的事件处理函数

热门文章

最新文章