新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > LabVIEW程序設(shè)計(jì)模式(三)—用戶界面事件模式

LabVIEW程序設(shè)計(jì)模式(三)—用戶界面事件模式

作者: 時(shí)間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
針對(duì)基本狀態(tài)機(jī)模式的第(4~5)個(gè)問題,需要對(duì)模式進(jìn)行改進(jìn)。本節(jié)將一一分析這些問題對(duì)應(yīng)的解決方案,并最終形成一種新的狀態(tài)機(jī)模式——用戶界面事件模式。
  1. 程序一直在占用CPU資源。
  2. 無法響應(yīng)更多的前面板事件。
熟悉LabVIEW的工程師應(yīng)該能夠很容易地解決這兩個(gè)問題,在LabVIEW 7.0以后的版本中提供的事件結(jié)構(gòu)(Event Structure)能夠讓我們非常便捷地處理這兩類問題。
在LabVIEW中事件結(jié)構(gòu)的使用并不是一件難事,根據(jù)事件的發(fā)出源,事件可以抽象地分為用戶界面事件和用戶自定義事件。相關(guān)的基本知識(shí)可以參考有關(guān)的書籍,這里不再闡述事件結(jié)構(gòu)的使用方法。
圖 14所示的結(jié)構(gòu)稱為用戶界面事件模式,它能夠很便捷地響應(yīng)各種事件并且不占用CPU的資源,這是由LabVIEW中事件結(jié)構(gòu)本身的特性決定的。


圖 14 用戶界面事件模式
【應(yīng)用3】
本例要模擬一個(gè)簡單的畫圖板功能。它有4個(gè)功能選項(xiàng):點(diǎn)(point)、線(line)、圓(circle)和橢圓(oval),一次完成的繪畫過程是:在畫布上單擊鼠標(biāo)開始繪制→按住鼠標(biāo)的同時(shí)在畫布上拖動(dòng)鼠標(biāo)→在畫布上放開鼠標(biāo)結(jié)束繪制。
程序的前面板如圖 15所示,由上下兩大部分組成。上面用于選擇需要畫圖的樣式,下面是畫布,右上方的X表示程序的結(jié)束。


圖 15 畫圖板前面板
由于系統(tǒng)需要響應(yīng)鼠標(biāo)在畫布上單擊、移動(dòng)和釋放事件,因此使用狀態(tài)機(jī)模式是無法解決的,只能通過事件結(jié)構(gòu)。因此本例將使用用戶界面事件模式實(shí)現(xiàn)上述的畫圖板功能。
程序的背面板如圖 16所示。共有4個(gè)事件。
  1. Panel Close?:響應(yīng)前面板的X動(dòng)作,這是一個(gè)過濾性事件,當(dāng)事件發(fā)生時(shí)并不真正關(guān)閉前面板而只是停止程序的運(yùn)行。
  2. Picture :表示繪畫的開始。
  3. Picture :表示繪畫的路徑和軌跡。
  4. Picture :表示繪畫的結(jié)束,此時(shí)一定要加入事件,因?yàn)楫?dāng)鼠標(biāo)移動(dòng)到畫布的外面時(shí)就可以認(rèn)為是繪畫結(jié)束了,并不需要一定要求鼠標(biāo)在畫布中釋放。


圖 16 畫圖板背面板
Picture 事件如圖 17所示,這個(gè)步驟表示繪制的開始,每次的繪制都必須從這個(gè)步驟開始。事件分支左側(cè)的Button參數(shù)表示單擊鼠標(biāo)的鍵位,只有在單擊鼠標(biāo)左鍵時(shí)才被認(rèn)為是合理的和有效的,當(dāng)單擊其它的鍵位時(shí)并不開始繪制。在有效繪制中,需要將畫筆移動(dòng)到鼠標(biāo)當(dāng)前單擊的位置。當(dāng)選擇的畫圖模式是Line、和Point時(shí),使用Draw point.vi函數(shù)可以在當(dāng)前的位置上畫一個(gè)點(diǎn)并且將畫筆移動(dòng)到當(dāng)前位置。

上一頁 1 2 下一頁

評(píng)論


技術(shù)專區(qū)

關(guān)閉