單元11: 事件結構 主題: a. 事件結構概述 b. 如何使用事件結構 c. 使用事件結構須注意的事項.

Slides:



Advertisements
Similar presentations
新目标初中英语 七年级下册. Unit 8 I’d like some noodles. Section B Period Two.
Advertisements

allow v. wrong adj. What’s wrong? midnight n. look through guess v. deal n. big deal work out 允许;准许 有毛病;错误的 哪儿不舒服? 午夜;子夜 快速查看;浏览 猜测;估计 协议;交易 重要的事.
高考短文改错专题 张柱平. 高考短文改错专题 一. 对短文改错的要求 高考短文改错的目的在于测试考生判断发现, 纠正语篇中 语言使用错误的能力, 以及考察考生在语篇中综合运用英 语知识的能力. 二. 高考短文改错的命题特点 高考短文改错题的形式有说明文. 短文故事. 书信等, 具有很 强的实用性.
智慧老伯的一席話 原稿 : 溫 Sir 中譯 : 老柳 A man of 92 years, short, very well- presented, who takes great care in his appearance, is moving into an old people’s.
英语中考复习探讨 如何写好书面表达 宁波滨海学校 李爱娣. 近三年中考试题分析 评分标准 试卷评分与练习 (2009 年书面表达为例 ) 影响给分的因素: 存在问题 书面表达高分技巧 建议.
第七课:电脑和网络. 生词 上网 vs. 网上 我上网看天气预报。 今天早上看了网上的天气预报。 正式 zhèngshì (报告,会议,纪录) 他被这所学校正式录取 大桥已经落成,日内就可以正式通车 落伍 luòw ǔ 迟到 chídào 他怕迟到,六点就起床了.
2014 年上学期 湖南长郡卫星远程学校 制作 13 Getting news from the Internet.
Unit 9 Have you ever been to an amusement park? Section A.
-CHINESE TIME (中文时间): Free Response idea: 你周末做了什么?
专题八 书面表达.
广德二中2006届高考 英语专题复习 单项填空 答题指导.
Operating System CPU Scheduing - 3 Monday, August 11, 2008.
Homework 4 an innovative design process model TEAM 7
Unit 4 I used to be afraid of the dark.
Reading Do you remember what you were doing? 学习目标 1、了解几个重要历史事件。
Been During the Vacation?
Module 5 Shopping 第2课时.
mas動機評量表 藍詩縈 潘若綺 曾昱烝 何嘉敏
初二英语写作课 课件 福建省闽清县第一中 王国豪
Creating Animated Apps (I) 靜宜大學資管系 楊子青
課務組 Curriculum Section
第4章(2) 空间数据库 —关系数据库 北京建筑工程学院 王文宇.
Dì二十課 看bìng Dì二十课 看bìng
XBRL未來發展趨勢 2009年12月 For information on applying this template onto existing presentations, refer to the notes on slide 3 of this presentation. The Input.
Remember the five simple rules to be happy 快樂的五個簡單常規
The Wise Old Man 智慧老伯的一席話 原稿: 溫Sir 中譯 : 老柳 中譯潤稿:風刀雨箭
SpringerLink 新平台介绍.
Lesson 28 How Do I Learn English?
簡易 Visual Studio 2005 C++ 使用手冊
Unit 4.
第十五课:在医院看病.
Remember the five simple rules to be happy 快樂的五個簡單常規
Mechanics Exercise Class Ⅰ
Guide to a successful PowerPoint design – simple is best
Good Karma 善因緣 This is a nice reading, but short. Enjoy! This is what The Dalai Lama has to say for All it takes is a few seconds to read and think.
Good Karma 善業 原稿:牛Sir 配楽:懺悔經 捕頭恭製 按鍵換頁.
BORROWING SUBTRACTION WITHIN 20
虚 拟 仪 器 virtual instrument
The Wise Old Man 智慧老伯的一席話 原稿: 溫Sir 中譯 : 老柳
中央社新聞— <LTTC:台灣學生英語聽說提升 讀寫相對下降>
True friendship is like sound health;
想想看: 長方體體積.
中考英语阅读理解 完成句子命题与备考 宝鸡市教育局教研室 任军利
Transformational Leadership
SpringerLink 新平台介绍.
Checking in 入住模块.
Good Karma 善因緣 This is a nice reading, but short. Enjoy! This is what The Dalai Lama has to say for All it takes is a few seconds to read and think.
取材 Tommy’s Window slideshow
Remember the five simple rules to be happy 快樂的五個簡單常規
Remember the five simple rules to be happy 快樂的五個簡單常規
冀教版 九年级  Look into Science!.
计算机问题求解 – 论题1-5 - 数据与数据结构 2018年10月16日.
Remember the five simple rules to be happy 快樂的五個簡單常規
磁共振原理的临床应用.
M; Well, let me check again with Jane
Create and Use the Authorization Objects in ABAP
Good Karma 善因緣 This is a nice reading, but short. Enjoy! This is what The Dalai Lama has to say for All it takes is a few seconds to read and think.
立足语境,放眼词块,螺旋上升 年温州一模试卷题型分析 及相应的二轮复习对策 by Sue March 14,2013.
英语单项解题思路.
动词不定式(6).
Prepare for Cozy & Lazy HOME Life
The Wise Old Man 智慧老伯的一席話 原稿: 溫Sir 中譯 : 老柳
怎樣把同一評估 給與在不同班級的學生 How to administer the Same assessment to students from Different classes and groups.
Race Conditions and Semaphore
高考英语短文改错答题技巧 砀山中学 黄东亚.
Hospitality English 酒店商务英语 讲师:罗云利 工商与公共管理学院.
Introduction to Computer Security and Cryptography
以分为镜知对错 以卷为鉴晓得失 —邯郸市一模得与失
Train Track and Children
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

單元11: 事件結構 主題: a. 事件結構概述 b. 如何使用事件結構 c. 使用事件結構須注意的事項

什麼是事件導向程式語言 Event-driven是一個在其他如LabWindows CVI、Visual Basic等程式語言環境中早就是一個普遍的範例。有了Event-driven的功能您的應用程式可以休息到有一件您有興趣的事件發生在Front Panel為止,所以作業系統可在這一段時間內將CPU交給其他的程式使用。 執行的順序由事件(event)決定 執行的程式碼反應相對應的事件 不需要輪詢系統的狀態有否改變 不可能會漏失事件或不依順序執行 事件(Event)是非同步的觸發動作 使用者介面事件(User interface events) 程式事件(Programmatic events)

什麼是事件結構(Event Structure)? 一個事件結構(Event Structure)就好像一個〝Wait on Qccurrence〞function與一個Case structure的混合物。就好像Case structure一樣它也具備多層subdiagram,每一層都可規劃來Handle一個或多個事件(event),例如滑鼠移動或某個鍵被按下等事件,當您放入一個事件結構(Event Structure)在您的Diagram當中就好像其他的物件一般,它的執行流程規則跟一般的沒有什麼不一樣 當LabVIEW執行到事件結構(Event Structure)時,將使得這個VI進入睡眠狀態,直到有一個被設定的事件(event)發生,這個時候事件結構(Event Structure)就會自動醒過來並且依照使用者設定的條件執行相關的動作 每一個subdiagram的內側的左邊都有一個Event Data node,提供使用者來定義或使用有關這個事件(event)的相關訊息。這個node看起來與功能就好像一個Unbundle by Name function,所以使用者可以改變它的大小並選擇自己需要的資料欄位來使用。 事件結構(Event Structure)是怎麼一回事呢? 事件結構(Event Structure)是自從LabVIEW 1.0以後第一個新的Structure Node,它使LabVIEW進入了事件導向(event-driven)的世界。Event-driven是一個在其他如LabWindows CVI、Visual Basic等程式語言環境中早就是一個普遍的範例。有了Event-driven的功能您的應用程式可以休息到有一件您有興趣的事件發生在Front Panel為止,所以作業系統可在這一段時間內將CPU交給其他的程式使用。  簡單的說一個事件結構(Event Structure)就好像一個〝Wait on Qccurrence〞function與一個Case structure的混合物。就好像Case structure一樣它也具備多層subdiagram,每一層都可規劃來Handle一個或多個事件(event),例如滑鼠移動或某個鍵被按下等事件,當您放入一個事件結構(Event Structure)在您的Diagram當中就好像其他的物件一般,它的執行流程規則跟一般的沒有什麼不一樣。當LabVIEW執行到事件結構(Event Structure)時,將使得這個VI進入睡眠狀態,直到有一個被設定的事件(event)發生,這個時候事件結構(Event Structure)就會自動醒過來並且依照使用者設定的條件執行相關的動作。每一個subdiagram的內側的左邊都有一個Event Data node,提供使用者來定義或使用有關這個事件(event)的相關訊息。這個node看起來與功能就好像一個Unbundle by Name function,所以使用者可以改變它的大小並選擇自己需要的資料欄位來使用。

LabVIEW6i之前的版本 在LabVIEW6i之前,沒有事件結構,當要寫一個與人機介面有互動的程式是相對較複雜的,而使用while loop來不斷掃描人機介面的結果也造成系統效能低落等問題

過去與現在 過去 現在 缺點: 造成效能低落 容易漏失事件 解決了左邊的缺點 ,效能提升,而且 不會漏失事件

LabVIEW6.1後,才有Event Structure 可以觸發的事件列舉 Menu被選取的事件 變更控制元的值 關閉視窗 條整視窗尺寸 The Event Structure, which was the first new structure node since LabVIEW 1.0, made it possible to build event-driven programming applications in LabVIEW. With event-driven programming, your application can sleep until something "interesting" happens on the front panel, rather than having to repeatedly poll for such activity yourself like we did previous to LabVIEW 6.1. LabVIEW takes advantage of features in the operating system to be notified when user interface activity occurs, so the OS can give the CPU to other programs running on your computer while your application is idle. This overcomes one of the limitations we discussed with the queued message handler implementation. Of course, what qualifies as interesting is up to you, and you can configure the Event Structure to listen only for the events that are important for your application. An Event Structure is kind of like a cross between a Wait on Occurrence function and a Case Structure. Like a Case Structure, the Event Structure contains multiple subdiagrams, each of which is configured to handle one or more events, which are user actions such as Key Down or Mouse Move. You drop an Event Structure on your block diagram the same way you would any other G object, and it executes according to the normal data-flow rules. When LabVIEW executes the Event Structure, it puts the VI to sleep until one of the events it is configured to listen for occurs, just as a Wait on Occurrence sleeps until an occurrence is fired. When an event of interest happens, the Event Structure automatically wakes up and executes the appropriate subdiagram to handle that event. Each subdiagram has an Event Data node affixed to its inside left border that allows access to specific information about the event that occurred. The node looks and works like an Unbundle by Name function, so you can resize it and select only the data fields you need. Advantages over old way: Primarily, all events are queued, even if the Event Structure is not presently waiting on them. This means you do not miss any state changes. Also, event handling is synchronous. The events are guaranteed to be processed in the order they are received (unless two Event Structures are executing in parallel). 滑鼠點擊 滑鼠從上方經過某元件 滑鼠從否元件上方離開

基本Event Structure使用 通常Event Structure會與While Loop搭配使用 每一個while loop的執行都會使用到一個Event Event structure的左邊有一個Event Data node,提供使用者來定義或使用有關這個事件(event)的相關訊息 可以設定多種觸發方式,例如,當人接介面的元件一或元件二任何之一有觸發動作時,就會觸發Event You normally use the Event Structure by placing it in a While Loop, which executes until a stop button is pressed or some other terminating condition occurs. Each iteration of the loop, the Event Structure sleeps until it is woken by some user interaction (or an optional timeout expires), then wakes up, executes code to handle the event, and then repeats the loop. Each Event Structure sub-diagram has an Event Data node affixed to its inside left border that allows access to specific information about the event that occurred. The node looks and works much like an Unbundle by Name function, so you can resize it and select only the data fields you need. Or not; shown fields do not have to be wired.

事件結構(Event Structure)的組成 Event Selector Label – 此事件結構的名稱標籤 Timeout – 單位為ms,意思是經過多少時間及認定逾時,並執行Time Out內的程式碼。如果沒有接Time Out值,就是永不逾時的意思。 Event Data Node -提供使用者來定義或使用有關這個事件(event)的相關訊息 Event Filter Node – 提供使用 者可以取消此事件的繼續進行, 如:取消關閉視窗 Defaulted Tunnels – 當沒有值 傳出Event Structure通道時,就 以預設值來代替

Notify Events與Filter Events Notify Events 提醒LabVIEW:使用者已經做了一個觸發動作。發生事件之後執行程式,因事件已發生不能取消。 Filter Events 在使用者觸發的事件尚未執行前先讓Filter Event觸發,以進行判斷。甚至可以中止這個使用者事件的繼續進行。發生事件之後先確認再執行,事件可取消。有Event Filter Node與Event Data Node可以使用。 Before we move on, I would like to discuss two last features of the LabVIEW 6.1 Event Strucutre. LabVIEW events are divided into two types: Notify Events, and Filter Events. A Notify Event is a simple after-the-fact notification that something happened on the front panel. For example, the Value Changed event is a very commonly used Notify Event. You can take action in response to a Value Change, but you can’t prevent it from happening altogether. Filter Events, on the other hand, allow you to programmatically affect the outcome of the action that triggered the event. You can either discard the event entirely or modify the data for the event before LabVIEW finishes processing it. You can use these to perform all sorts of input filtering, such as changing the case of characters as you type them, mapping your keyboard layout to Dvorak, or bringing up “Are you sure?” dialogs when the user tries to close a VI’s panel.

練習11.1 – 熟悉Event Structure 開啟檔案「<CD>\Ch11\Event Tracking.vi」 執行此程式 點選人機介面上的按鈕,看看程式有什麼反應 切換到程式區,觀察事件結構的運作方式

練習11.2 – 寫一個事件導向程式 寫一個事件導向的程式,這個程式包含一個按鈕與一個數字的接收器。 當你按下按鈕時,數字的接收器就「加1」

使用事件結構須注意的事項 假設event1與event2都放在同一個Event Structure中,當觸發event1時,LabVIEW預設值是鎖定人機介面,當event1執行完畢後,才會開放人機介面的互動。解決方法為取消「 」的核取方塊,即可避免 取消了上述的核取方塊,如果event1要執行很久,那麼雖然event2會被觸發,也必須要等到event1執行完畢後,才會開始執行event2。解決方法為把需要長時間進行的event獨立出來單獨放在一個While Loop中,把需要短時間的event集中在一起。

把長、短時間的Event分離 善用LabVIEW的多執行緒的特性,可以令迴圈分別進行 迴圈之間的參數傳遞可以使用Local Variable或是Global Variable 花費較短時間 的Event 需花費較長時間 的Event

本章重點回顧 事件結構在撰寫使用者互動頻繁的應用程式時,十分常用,時常與While Loop搭配使用 使用使建結構可以節省花費在偵測使用者較面改變的系統資源,並且能在使用者觸發事件後,以最快方式觸發程式內部 事件結構有兩種,Notify Events與Filter Events, Filter Events可以阻止觸發的繼續進行,如終止關閉視窗的動作。 使用多執行緒的觀念,把event分類為需要花費長時間的與短時間的事件,並放在不同的event structure