labview大神为你解读Picture Control 物件(5)
今天要介绍的主题是Dynamic Events ,在介绍如何使用之前我们先来看一张图片:
上面图片相信大家不会太陌生,大部分的人只要开始会用Event Structure后,就会疯狂地将所有的触发事件塞入,我举二十个触发事件当作例子只是一个小case ,大一点的程式塞个四五十个都不为过。[size=+0]另外,以上的这个范例都只是单纯的按钮触发,若是有类似之前Picture Control的滑鼠判断、多个Waveform的Curser的触发等比较复杂的事件, Event Structure的Case会多到爆表。所以如何去做到Event Structure的分类以及维护是很重要的。
先介绍如何使用Dynamic Event 。如左下图所示,在Event Structure的边框上按右键,选择Show Dynamic Event Terminals ,此时会看到Event Structure的边框上出现一个绿色的雷达,如右下图所示。在这个绿色的雷达上可以接上你所设定好的Dynamic Event。
接着介绍如何去设定Dynamic Event ,如下图,在Block Diagram 中点选右键,选择Function=> Programming => Dialog & User Interface 选择左下角的Events ,在视窗中会看到一些Event 的Icon。
今天会使用的两个Function 分别是Register For Events 和Unregister For Events ,一个是对Dynamic Event 做注册、另一个则是取消注册。
我们先来做一个基本的范例,在Front Panel 上拉出一个Boolean Button ,接着在Button 上面按右键选择Create => Reference ,接着将Reference 接在Register For Events 上面,就可以在Register For Events 上面选择众多的Event Case ,如下图。选择Value Change 。
当我们把Register For Event 拉线到Event 的雷达上时,再去点选Add Event Case ,就可以发现在Event Sources 的选项中多出了一个Dynamic 的子项,当我们在Event 中加入Dynamic Event Case 后,就可以像一般的Event 使用方式来使用。
在看完以上的介绍后,相信大家都会有一个疑惑,明明就可以直接在Event中加入事件,为什么我们要绕一个圈,先建立物件的Reference ,再去使用Reference 来注册Dynamic Event ,最后再去使用?在这边说明一下,最主要的差别是Dynamic Event 是透过Reference 来设定触发事件的,因此你可以将Event 的事件给收纳整理,以下是我的一个实际案例。
在这个范例中,因为我有六个Waveform Graph ,里面有很多Cursor ,让使用者可以自由地做一些控制,因此光是用Event 来触发这些事件就已经相当的复杂,如果让这些触发全部都在主程式的Event 内,会让Event Case 太过庞大,因此我把跟Waveform Graph 中的所有人机介面触发全部封装在一个SubVI 中,利用Control Reference 把主程式的事件给传递进SubVI ,就可以达到Event 封装的功能。
好厉害!学习了!
很好的功能!
多谢小编分享,又学习了一点知识
学习了。。谢谢。。
很厉害,虽然没看懂