labview事件結(jié)構(gòu)學(xué)習(xí) 作者: 時間:2017-01-06 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 編程的主要目的是為了實現(xiàn)用戶的某種功能,用戶通過用鼠標(biāo)、鍵盤、程序內(nèi)部等觸發(fā)某種程序動作,從而達(dá)到某種結(jié)果,這些操作都被稱作為事件,LabVIEW中相應(yīng)這些事件最常用的結(jié)構(gòu)就是“事件結(jié)構(gòu)”。事件結(jié)構(gòu)內(nèi)容豐富,基本上大的程序結(jié)構(gòu)都需要用到事件結(jié)構(gòu),下面將詳細(xì)介紹事件結(jié)構(gòu)。事件結(jié)構(gòu)在程序不能夠單獨(dú)響應(yīng)各種事件,必須與循環(huán)結(jié)構(gòu)一同使用,如下圖事件添加方式很簡單,鼠標(biāo)右鍵事件框彈出菜單如上圖,有添加、刪除、復(fù)制、編輯事件等選項,按照操作即可。如下圖,為事件結(jié)構(gòu)添加Stop事件,布爾控件觸發(fā)事件的方式有多種,鼠標(biāo)按下、經(jīng)過、離開、進(jìn)入等,這里我們選擇“值改變”。確定后,stop事件就被添加進(jìn)去了,如下圖,當(dāng)我們運(yùn)行程序后,點(diǎn)擊前面板的stop按鈕,觸發(fā)事件使while循環(huán)停止而后程序也停止。同一事件分支只能添加一種事件嗎?當(dāng)然不是!有的時候有很多不同操作卻會執(zhí)行相同代碼,怎么編程才不會讓代碼冗余呢?看個例子,如下圖2個按鈕stop1,stop2點(diǎn)擊后都可以讓程序停止,我們怎么為其添加事件呢?我們先添加一個事件stop1的,方法上面已經(jīng)描述了。由于stop2的執(zhí)行代碼和stop1一樣,我們在事件stop1上右鍵->彈出菜單->編輯本事件分支(Edit Event Handled by This Case)會彈出已添加事件stop1的編輯框,這是左側(cè)有2個按鈕如下截圖我們點(diǎn)擊Add Event左側(cè)事件列表會出現(xiàn)如下變化選中這個后,右側(cè)列表選中stop2的Value Change事件后,點(diǎn)擊確定在看該事件分支如下,2個事件就添加在同一個分支當(dāng)中了,運(yùn)行程序后,點(diǎn)擊stop1或stop2均可讓程序停止。超時超時是事件結(jié)構(gòu)特有的,看名字就知道是怎么回事,即超過一定時間沒有觸發(fā)事件則執(zhí)行超時事件。如果超時時間設(shè)置<=-1,則永遠(yuǎn)也不執(zhí)行超時事件,循環(huán)處于空閑等待狀態(tài)。如下圖,如果設(shè)置超時時間為100,則超過100ms無任何事件觸發(fā),則執(zhí)行超時事件。所以如果程序事件功能不多,又需要定時執(zhí)行一段代碼,可以考慮用此方式來完成;如果程序操作頻繁,則不建議用此事件來定時執(zhí)行代碼。添加事件方法學(xué)會了,有的人在編程時發(fā)現(xiàn)點(diǎn)擊按鈕下去后,發(fā)現(xiàn)前面無法響應(yīng)其他事件了,似乎前面被鎖住了一樣,這是為什么呢?我們知道添加事件是會有個事件編輯框,上面已經(jīng)截圖了,那你有沒有注意在框體下邊有個選項呢這個選項的意思是:如果本事件框沒有執(zhí)行完畢前鎖定前面板。看到這你就應(yīng)該明白上述問題所在了吧,所以有的時候我們果斷去掉這個選項。OK,問題解決了。
評論