tft每日頭條

 > 科技

 > labview編程詳解

labview編程詳解

科技 更新时间:2024-09-30 22:25:25

LabVIEW又稱為G語言,簡單易學、形象直觀,采用圖形化的編程方式,是專為測試、測量和控制應用而設計的系統工程軟件。

前面幾篇文章中依次講解了LabVIEW中順序順序結構、條件結構及循環結構的編程方法,下面再講一種與軟件界面響應有關的事件結構的編程方法。

事件結構框架特點

在程序設計中,我們經常需要對用戶界面的各種操作(如單擊鼠标、按下鍵盤、改變控件的值等)作出響應,在早期的LabVIEW版本中,是采用輪詢方式來檢測的,其缺點是不夠靈活,占用CPU資源較多,而且操作頻率較快時可能會檢測不到變化,從而漏掉某個事件的發生。

在LabVIEW6系列版本後,引入了事件結構,這種程序處理結構克服了輪詢方式結構的缺點,極大改善了界面處理的運行效率,同時也降低了CPU的占用,提高了軟件用戶的使用體驗。嚴格意義上來說,事件結構不是純粹的程序運行控制結構,它是一種監測GUI界面上各種事件發生并采取相應處理措施的一種機制。

事件結構的框架樣式如下圖所示:

labview編程詳解(手把手以實例教你學LabVIEW編程)1

上圖中,事件結構框架中包括了事件類型、超時端口、事件附加數據及事件框等要素信息。

下面通過簡單的例子,演示LabVIEW中事件結構的編程方法。

示例說明

本例運行界面如下圖所示:

labview編程詳解(手把手以實例教你學LabVIEW編程)2

實現的功能是,在軟件運行過程中監測鍵盤、鼠标等事件,在“事件信息”字符串顯示控件中顯示當前的各種運行信息。本例包括了如下事件處理:

1. “鍵按下”事件:當按下鍵盤時在界面上顯示當前按下的字符。

2. “鼠标按下”事件:當鼠标按下時在界面上顯示當前按下的是左、中、右哪個鍵及當前的鼠标位置信息。

3. “值改變”事件:當點擊退出按鈕時程序退出運行。

4. “超時”事件:每隔1s顯示一次當前的日期時間信息。

程序框圖實現過程

本例中涉及到了多種類型事件,主框架采用事件結構配合while循環的方式實現。在事件結構分支中添加各種事件,每響應一次事件執行一次while循環,直到執行退出按鈕的值改變事件時退出整個程序,且在while循環中添加了一個移位寄存器,用以保存前面的提示信息。

在程序開始運行時可以作一些初始化工作,本例中在最外層順序結構的第一幀中初始化“事件信息”的值,其代碼如下圖所示:

labview編程詳解(手把手以實例教你學LabVIEW編程)3

在順序結構的第2幀中對各種事件分别進行處理,下面依次給出4個事件的處理程序框圖代碼。

(1)“超時”事件

程序框圖代碼如下圖所示:

labview編程詳解(手把手以實例教你學LabVIEW編程)4

“超時”事件中實現每隔1s顯示一次當前的日期時間信息,超時時間設置為1000ms,使用“獲取日期/時間字符串”函數得到當前的日期時間,使用“連接字符串”函數與移位寄存器中已有的提示信息相連接,送到“事件信息”控件中顯示即可。

注意,若超時時間設置為-1,則永不執行該分支代碼,這也是其默認值。

(2)“鍵按下”事件

程序框圖代碼如下圖所示:

labview編程詳解(手把手以實例教你學LabVIEW編程)5

“鍵按下”事件中,當鍵盤上有按鍵按下時,可在其附加數據中得到當前按鍵的“I16”類型字符值,其對應的是該按鍵的ASCII碼,将其轉換為U8類型的變量,然後使用LabVIEW内置函數“強制轉換類型”将其轉換為字符串類型,就可得到該按鍵對應的具體字符。

(3)“鼠标按下”事件

程序框圖代碼如下圖所示:

labview編程詳解(手把手以實例教你學LabVIEW編程)6

“鼠标按下”事件中,當鼠标在窗口主界面上按下時,其附加數據中的“按鈕”值包含了當前按下了哪個鍵的信息,其中1、2、3分别代表了按下了左鍵、右鍵及中鍵。附加數據中的“坐标”則給出了當鼠标按下時當前其所在窗口上的位置信息。

(4)“值改變”事件

程序框圖代碼分别如下圖所示:

labview編程詳解(手把手以實例教你學LabVIEW編程)7

“值改變”事件中實現了當按下前面闆上的“退出”按鈕時,退出該程序。

總結

本文舉了一個很簡單的例子演示LabVIEW中事件結構的編程方法,當然,在實際軟件編程中,不同的事件源(如控件、VI本身等)會産生不同類型的事件,每種事件類型中又會給出其對應的附加數據,根據這些附加數據信息,就可以實現我們的處理目的,其編程方式完全是類似的。

需要注意的是,不同于其它高級編程語言,在LabVIEW平台中事件結構一般不會單獨出現,它通常是與while循環結構進行結合使用的。

本文由編碼那些事原創,請關注 轉發 收藏 點贊,帶你一起長知識!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved