LabVIEW又稱為G語言,簡單易學、形象直觀,采用圖形化的編程方式,是專為測試、測量和控制應用而設計的系統工程軟件。
前面幾篇文章中依次講解了LabVIEW中順序順序結構、條件結構及循環結構的編程方法,下面再講一種與軟件界面響應有關的事件結構的編程方法。
事件結構框架特點在程序設計中,我們經常需要對用戶界面的各種操作(如單擊鼠标、按下鍵盤、改變控件的值等)作出響應,在早期的LabVIEW版本中,是采用輪詢方式來檢測的,其缺點是不夠靈活,占用CPU資源較多,而且操作頻率較快時可能會檢測不到變化,從而漏掉某個事件的發生。
在LabVIEW6系列版本後,引入了事件結構,這種程序處理結構克服了輪詢方式結構的缺點,極大改善了界面處理的運行效率,同時也降低了CPU的占用,提高了軟件用戶的使用體驗。嚴格意義上來說,事件結構不是純粹的程序運行控制結構,它是一種監測GUI界面上各種事件發生并采取相應處理措施的一種機制。
事件結構的框架樣式如下圖所示:
上圖中,事件結構框架中包括了事件類型、超時端口、事件附加數據及事件框等要素信息。
下面通過簡單的例子,演示LabVIEW中事件結構的編程方法。
示例說明本例運行界面如下圖所示:
實現的功能是,在軟件運行過程中監測鍵盤、鼠标等事件,在“事件信息”字符串顯示控件中顯示當前的各種運行信息。本例包括了如下事件處理:
1. “鍵按下”事件:當按下鍵盤時在界面上顯示當前按下的字符。
2. “鼠标按下”事件:當鼠标按下時在界面上顯示當前按下的是左、中、右哪個鍵及當前的鼠标位置信息。
3. “值改變”事件:當點擊退出按鈕時程序退出運行。
4. “超時”事件:每隔1s顯示一次當前的日期時間信息。
程序框圖實現過程本例中涉及到了多種類型事件,主框架采用事件結構配合while循環的方式實現。在事件結構分支中添加各種事件,每響應一次事件執行一次while循環,直到執行退出按鈕的值改變事件時退出整個程序,且在while循環中添加了一個移位寄存器,用以保存前面的提示信息。
在程序開始運行時可以作一些初始化工作,本例中在最外層順序結構的第一幀中初始化“事件信息”的值,其代碼如下圖所示:
在順序結構的第2幀中對各種事件分别進行處理,下面依次給出4個事件的處理程序框圖代碼。
(1)“超時”事件
程序框圖代碼如下圖所示:
“超時”事件中實現每隔1s顯示一次當前的日期時間信息,超時時間設置為1000ms,使用“獲取日期/時間字符串”函數得到當前的日期時間,使用“連接字符串”函數與移位寄存器中已有的提示信息相連接,送到“事件信息”控件中顯示即可。
注意,若超時時間設置為-1,則永不執行該分支代碼,這也是其默認值。
(2)“鍵按下”事件
程序框圖代碼如下圖所示:
“鍵按下”事件中,當鍵盤上有按鍵按下時,可在其附加數據中得到當前按鍵的“I16”類型字符值,其對應的是該按鍵的ASCII碼,将其轉換為U8類型的變量,然後使用LabVIEW内置函數“強制轉換類型”将其轉換為字符串類型,就可得到該按鍵對應的具體字符。
(3)“鼠标按下”事件
程序框圖代碼如下圖所示:
“鼠标按下”事件中,當鼠标在窗口主界面上按下時,其附加數據中的“按鈕”值包含了當前按下了哪個鍵的信息,其中1、2、3分别代表了按下了左鍵、右鍵及中鍵。附加數據中的“坐标”則給出了當鼠标按下時當前其所在窗口上的位置信息。
(4)“值改變”事件
程序框圖代碼分别如下圖所示:
“值改變”事件中實現了當按下前面闆上的“退出”按鈕時,退出該程序。
總結本文舉了一個很簡單的例子演示LabVIEW中事件結構的編程方法,當然,在實際軟件編程中,不同的事件源(如控件、VI本身等)會産生不同類型的事件,每種事件類型中又會給出其對應的附加數據,根據這些附加數據信息,就可以實現我們的處理目的,其編程方式完全是類似的。
需要注意的是,不同于其它高級編程語言,在LabVIEW平台中事件結構一般不會單獨出現,它通常是與while循環結構進行結合使用的。
本文由編碼那些事原創,請關注 轉發 收藏 點贊,帶你一起長知識!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!