使用事件結構可以快速定位響應界面的操作事件,如按下,拖動,雙擊的事件。基本上我們所要實現的所有功能,都可以通過條件結構+事件結構去實現,比如后面進階篇將會講到的狀態機就是通過條件結構和事件結構組成的。一個好的狀態機可以幫助我們搭建一個好的程序框架,這將非常有利於我們以后寫一些大型程序。在此前,我們先用之前的加減乘除運算熟悉一下事件結構。
1、同樣的,按上一章節的操作,或者直接拷貝上一章的程序。新建工程->新建calc主VI->新建子VI,這里把主VI打回原型,把之前的條件結構減掉(其實就是用事件結構代替里面的條件結構,但只是介紹事件結構的使用,不是說事件結構可以取代條件結構)。
2、添加事件結構
我們可以看到事件結構的第一個默認事件是超時事件(目前只有一個事件),左上角那個沙漏狀的是超時時間設定,相當於單片機里面的定時中斷,我們后面可以右鍵新建一個數值常量用於設定超時時間。如果沒設定超時時間,則在沒有其他事件產生或觸發前,整個while循環就卡在超時事件這邊等待超時事件的發生,因為沒有設定超時時間,所以程序一直等待,不響應事件之外的其他操作。
只有一個超時事件
3、添加“布爾”按鍵的事件,鼠標移到事件結構上方的事件顯示圖標,右鍵選擇“添加事件分支”。
選擇布爾,選擇值改變,點擊確定就添加了我們的布爾按鍵的事件了。
鼠標點擊事件結構上方的黑下三角,顯示有超時和布爾值改變兩個事件分支,我們選中布爾值改變的事件分支,在該分支添加相關的程序邏輯。
4、將上一次章條件結構中的程序直接拷貝或者重新編寫至事件分支中
5、運行程序試一下功能(后面會出一章講程序調試操作,我們到時候可以用調試工具查看事件功能的響應情況)。我們發現基本功能和上一章的一致,但是會發現一個問題,點擊退出按鍵的時候界面不響應退出的功能。這時因為while循環中我們添加的是事件結構,也就是程序只有識別到事件發生時,才會執行一次while循環,沒事件發生的話,則不會運行其他操作,也就不響應按鍵的執行了。大家是否還記得那個超時事件呢?
當其他事件不發生時,我們又希望程序繼續執行事件結構之外或事件之外的邏輯的話,我們可以在事件機構左側輸入超時時間,一旦超過這個時間程序沒有執行其他操作的話,則執行一次超時事件,這樣在事件響應超時的情況下就可以執行一次while循環了。
現在再試一下,退出功能是不是恢復了呢!