LabVIEW虛擬儀器技術基礎教程 課件 第5、6章 LabVIEW程序結構、變量和屬性節(jié)點_第1頁
LabVIEW虛擬儀器技術基礎教程 課件 第5、6章 LabVIEW程序結構、變量和屬性節(jié)點_第2頁
LabVIEW虛擬儀器技術基礎教程 課件 第5、6章 LabVIEW程序結構、變量和屬性節(jié)點_第3頁
LabVIEW虛擬儀器技術基礎教程 課件 第5、6章 LabVIEW程序結構、變量和屬性節(jié)點_第4頁
LabVIEW虛擬儀器技術基礎教程 課件 第5、6章 LabVIEW程序結構、變量和屬性節(jié)點_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第5章LabVIEW程序結構循環(huán)結構條件結構順序結構事件結構

5.1

5.2

5.4

5.3

5.5公式節(jié)點LabVIEW程序結構5.1.1While循環(huán)5.1.2For循環(huán)5.1.4移位寄存器和反饋節(jié)點5.1.3循環(huán)結構內(nèi)外的數(shù)據(jù)交換與自動索引

任何計算機語言都離不開程序結構,LabVIEW作為一種圖形化的高級程序開發(fā)語言也不例外。除了Goto語句,所有C語言中的程序結構都能在LabVIEW中找到對應的實現(xiàn)方法。此外,LabVIEW中還有一些獨特的程序結構,例如事件結構,使能結構,公式節(jié)點和數(shù)學腳本節(jié)點等,因此通過LabVIEW可以非常方便快速地實現(xiàn)任何復雜的程序結構。由于LabVIEW是圖形化編程語言,它的代碼以圖形的形式表現(xiàn),因此無論是循環(huán)結構、Case結構還是公式節(jié)點,它們都表現(xiàn)為一個方框包圍起來的圖形代碼。這個方框就類似于C語言中的兩個花括號{}。5.1.1While循環(huán)

While循環(huán)用于將某段程序循環(huán)執(zhí)行,可實現(xiàn)使循環(huán)在滿足某種條件時退出或繼續(xù)運行。它是LabVIEW中最經(jīng)常使用的一種程序結構。它位于程序框圖“函數(shù)”選板→“結構”中。單擊選板中對應的“While循環(huán)”圖標,將光標移動到程序框圖界面合適的位置,按下鼠標左鍵向任意方向拖動至合適的大小后,放開鼠標左鍵,程序框圖界面中可出現(xiàn)相應的While循環(huán)結構。可以在放置While循環(huán)結構之后向其中添加程序代碼,也可以在拖曳生成While循環(huán)結構時直接用虛線框住已有的程序代碼?!敖Y構”子選板和While循環(huán)模塊

“循環(huán)條件”端子:用于在每次循環(huán)后判斷循環(huán)是否還繼續(xù)執(zhí)行循環(huán)是否繼續(xù)的條件有兩種,即“真時停止”(默認的條件)和“真時繼續(xù)”,具體采用哪種方式,可在條件端子上彈出的快捷菜單里指定;也可以使用操作工具在端子上單擊,以切換兩種不同的條件。對應不同的循環(huán)條件,該端子的圖標也不同。

“循環(huán)計數(shù)”端子:它可在每次循環(huán)中提供當前循環(huán)次數(shù)的計數(shù)值;i的初始值為0。While循環(huán)結構矩形區(qū)域除上述兩端子之外的其他空白區(qū)域,都可以放置程序代碼。While循環(huán)結構說明

While循環(huán)的執(zhí)行流程:首先“循環(huán)計數(shù)”端子輸出數(shù)值,循環(huán)內(nèi)部的子框圖開始執(zhí)行。子框圖的所有代碼都執(zhí)行完后,循環(huán)計數(shù)器的值加1,根據(jù)流入“循環(huán)條件”端子的布爾類型數(shù)據(jù)判斷是否繼續(xù)執(zhí)行循環(huán)。條件為“真時停止”時,如果流入的布爾數(shù)據(jù)為真值,則停止循環(huán),否則繼續(xù)循環(huán);條件為“真時繼續(xù)”時,情況相反。While循環(huán)中的代碼至少執(zhí)行一次。While循環(huán)被放置在框圖上之后,仍然可以改變其尺寸大小While循環(huán)結構說明在很多情況下我們沒有必要讓While循環(huán)以最大的速度運行,所以最好給While循環(huán)加上時間間隔。有兩種方法:一種是在每個循環(huán)中添加一個等待時間,只有在等待完畢后才運行下一個循環(huán)。另一種方法是使用定時循環(huán)(TimedLoop)。While循環(huán)添加等待時間5.1.2For循環(huán)

For循環(huán)用于將某段程序循環(huán)執(zhí)行指定的次數(shù)??梢酝ㄟ^兩種方法指定循環(huán)次數(shù),一種是直接給定,一種是通過輸入數(shù)組的大小給定。它位于程序框圖“函數(shù)”選板→“結構”中。當單擊選板中對應的“For循環(huán)”圖標后,將光標移動到程序框圖界面合適的位置,按下鼠標左鍵向任意方向拖動至合適的大小后,釋放鼠標左鍵,即可出現(xiàn)相應的For循環(huán)結構,其中N表示循環(huán)總數(shù),i表示當前進行到的循環(huán)次數(shù)。“結構”子選板和For循環(huán)模塊

For

循環(huán)的執(zhí)行流程:在開始執(zhí)行For循環(huán)之前,從“循環(huán)總數(shù)”端子讀入循環(huán)需要執(zhí)行的次數(shù)(注意,即使以后連入“循環(huán)總數(shù)”端子的值發(fā)生改變,循環(huán)次數(shù)仍然為循環(huán)執(zhí)行前讀入的數(shù)值)。然后“循環(huán)計數(shù)”端子輸出當前值,即當前已經(jīng)執(zhí)行的循環(huán)次數(shù)。接下來執(zhí)符For循環(huán)內(nèi)部的子框圖代碼。子框圖代碼執(zhí)行完成后,如果執(zhí)行循環(huán)次數(shù)沒有達到預設次數(shù),則繼續(xù)循環(huán);否則退出循環(huán)。如果“循環(huán)總數(shù)”端子的初始值設為0,則For循環(huán)內(nèi)的程序一次都不執(zhí)行。5.1.3循環(huán)結構內(nèi)外的數(shù)據(jù)交換與自動索引

循環(huán)結構可以與外界代碼交換數(shù)據(jù),方法是直接把其外部對象與內(nèi)部對象用連線連接起來。這時,連線在循環(huán)結構邊框上將出現(xiàn)一個稱為隧道的小方格。隧道小方格的顏色取決于流過其中數(shù)據(jù)的類型。如圖所示,數(shù)值輸入控件輸入的數(shù)值通過While循環(huán)邊框上的隧道傳入循環(huán)中,在每次循環(huán)時,都把這個數(shù)值與一個隨機數(shù)相加,其結果被送到While循環(huán)的顯示控件中。While循環(huán)邊框上的數(shù)據(jù)隧道

循環(huán)的所有輸入數(shù)據(jù)都是在循環(huán)之前讀取完畢的,即循環(huán)開始之后,就不再讀取輸入。輸出數(shù)據(jù)只有在循環(huán)完,全退出后才輸出。例如圖中中“數(shù)值”輸入數(shù)據(jù)只在循環(huán)運行讀入一次,在執(zhí)行循環(huán)時,即使該控件中的值發(fā)生改變也不影響程序運行結果,每一次與隨機數(shù)函數(shù)相加的都是最初讀入的那個值。所以,如果想在每一次循環(huán)中都檢查某個端子數(shù)據(jù),就必須把這個端子放在循環(huán)內(nèi)部,即作為子框圖的一部分。在圖中,左圖里“停止”按鈕位于循環(huán)內(nèi)部,并以此作為循環(huán)結束的條件。于是,在每一次循環(huán)中都可以從該按鈕端子讀到最新值,從而可以正確判斷按鈕是否被按下。而在右圖中,“停止”按鈕位于循環(huán)外部,通過底邊框上的輸入隧道與循環(huán)條件端子連接在一起。這種情況下,對“停止”按鈕的值將僅在循環(huán)開始前讀取一次,然后就把這個值用于每一次循環(huán)?!巴V埂蔽恢脤ρh(huán)執(zhí)行的影響

While循環(huán)和For循環(huán)均具有一種特殊的自動索引功能。當把一個數(shù)組連接到循環(huán)結構的邊框上生成隧道后,可以選擇是否打開自動索引功能。如果自動索引功能被打開,則數(shù)組將在每次循環(huán)中按順序流過一個值,該值在原數(shù)組中的索引與當次循環(huán)的端子值相同。也就是說,數(shù)組在循環(huán)內(nèi)部將會降低一維,如二維數(shù)組變?yōu)橐痪S數(shù)組,一維數(shù)組變?yōu)闃肆吭氐?。對于For循環(huán),自動索引被默認打開,而對于While循環(huán),該功能被默認關閉。

圖(a)中給出了For循環(huán)結構自動索引功能打開和關閉的兩種實例。左圖中For循環(huán)結構自動索引功能打開,循環(huán)次數(shù)為5,這時隧道小方格的標志為“”,表明將在這個隧道上生成數(shù)組;而關閉索引功能的隧道小方格標志為“”,說明輸出的這個數(shù)組的最后一個值。圖5.7中,兩個循環(huán)的輸人數(shù)據(jù)相同,都是整型常量數(shù)。在打開索引通道的時候,輸出是這個循環(huán)的所有值,關閉索引通道的時候,輸出的是最后一個值4,如圖(b)所示。(a)For循環(huán)自動索引打開和關閉兩種情況背景框圖(b)For循環(huán)自動索引打開和關閉兩種情況前面板5.1.4移位寄存器和反饋節(jié)點

1.移位寄存器

為了將當前循環(huán)完成時的某個數(shù)據(jù)傳遞至下一次循環(huán)的開始,LabVIEW在循環(huán)結構中引入了移位寄存器。移位寄存器的功能是將i-l,i-2,i-3,…次循環(huán)的計算結果保存在循環(huán)的緩沖區(qū)中,并在第i次循環(huán)時將這些數(shù)據(jù)從循環(huán)框架左側的移位寄存器中送出,供循環(huán)框架內(nèi)的節(jié)點使用。循環(huán)結構移位寄存器

在循環(huán)結構中創(chuàng)建移位寄存器的方法是:在循環(huán)框圖的左邊或右邊右擊,從彈出的快捷菜單中選擇“添加移位寄存器”命令,為循環(huán)結構創(chuàng)建一個移位寄存器,如圖所示。5.1.4移位寄存器和反饋節(jié)點

新添加的移位寄存器由左、右兩個端子組成,左、右兩個端子分別有一個向下和向上的箭頭,顏色都為黑色,這表明移位寄存器沒有接入任何數(shù)據(jù)。當輸入數(shù)據(jù)時,移位寄存器的顏色與輸入數(shù)據(jù)類型的顏色相同,以反映輸入數(shù)據(jù)的類型。

移位寄存器的執(zhí)行過程如下:每次循環(huán)結束時,移位寄存器的右端子保存?zhèn)魅肫渲械臄?shù)據(jù),并在下一次循環(huán)開始前傳給左端子,這樣就可以從左端子得到前一次循環(huán)結束的輸出值,該值可用于下一次的循環(huán)。

可以為移位寄存器的左端子指定初始值,其初始化值將在循環(huán)開始前讀入一次,循環(huán)執(zhí)行后就不再讀取該初始值。一般情況下,為了避免錯誤,建議為移位寄存器左端子明確提供一個初始值。移位寄存器的值也可以通過右端子輸出到循環(huán)結構外,輸出發(fā)生在循環(huán)結束后,因此,輸出的值是移位寄存器右端子的最終值。循環(huán)結構移位寄存器

一個移位寄存器可以有多個左端子,但只能有一個右端子。右擊移位寄存器,從彈出的快捷菜單中選擇“添加元素”命令,就可以添加一個元素;或用鼠標將左端子向下拖動,也可以添加多個元素,如圖5.9所示。在快捷菜單中選擇“刪除元素”命令,即可刪除一個左端子;選擇“刪除全部”命令,則將整個移位寄存器刪除。

添加移位寄存器左端子元素

2.反饋節(jié)點

反饋節(jié)點和只有一個左端子的移位寄存器的功能完全相同,同樣用于在兩次循環(huán)之間傳遞數(shù)據(jù),它是一種更簡潔的表達方式。

在圖中給出的例子中,左、右兩者的程序功能完全相同,都是在數(shù)字顯示控件x+1中每間隔100ms輸出一個不斷累加的正整數(shù)值??梢钥吹?,反饋節(jié)點也可以有自己的初始化端子,即右邊While循環(huán)的左邊框上的邊框為藍色(表明接入了整型數(shù)據(jù))且中間帶有菱形的端子。反饋節(jié)點的箭頭方向是向左還是向右無關緊要。數(shù)據(jù)在本次循環(huán)結束前從反饋節(jié)點的箭尾端進入,在下一次循環(huán)開始后從反饋節(jié)點的箭頭流出。

移位寄存器和反饋節(jié)點之間的轉換非常容易。在移位寄存器的左或右端子上右擊,從彈出的快捷菜單中選擇“替換為反饋節(jié)點”命令,即可轉變?yōu)橥瑯庸δ艿姆答伖?jié)點;在反饋節(jié)點本身或者其初始化端子上右擊,從彈出的快捷菜單中選擇“替換為移位寄存器”命令,即可轉變?yōu)橥瑯庸δ艿囊莆患拇嫫鳌R莆患拇嫫骱头答伖?jié)點

反饋節(jié)點一般不需要手動添加。在循環(huán)結構里,當把子VI、函數(shù)或者子VI、函數(shù)組合的輸出接入同一子VI、函數(shù)或組合的輸入時,將自動建立反饋節(jié)點和初始化端子。

如果從沒有初始化的移位寄存器轉化生成反饋節(jié)點,或者從函數(shù)選板上添加反饋節(jié)點,則新生成的反饋節(jié)點沒有初始化端子??梢栽诜答伖?jié)點上右擊,從彈出的快捷菜單中選擇“初始化接線端”命令,以為其添加初始化端子。5.2條件結構

條件結構位于“函數(shù)選板”→“編程”→“結構”子選板上。條件結構放置在框圖上的方法與循環(huán)結構相同。條件結構的組成如圖所示。其左邊框上有一個輸入端子,該端子中心有一個問號,稱為“分支選擇器”,上邊框上有“選擇器標簽”。條件結構的組成

條件結構有一個或者多個子框圖,每個子框圖都是一個執(zhí)行分支,每一個執(zhí)行分支都有自己的選擇器標簽。執(zhí)行條件結構時,與接入分支選擇器數(shù)據(jù)相匹配的標簽對應的框圖得到執(zhí)行。分支選擇器端子的值可以是布爾型、字符串型、整型或者枚舉類型,其顏色會隨連接的數(shù)據(jù)類型而改變,同時根據(jù)分支選擇接入的數(shù)據(jù)類型不同,選擇器標簽的設置也有差異,其默認數(shù)據(jù)類型為布爾型,同時自動生成兩個選擇器標簽分別為“真”和“假”的子框架。

條件結構子框圖是堆疊在一起的,單擊標簽左邊和右邊的減量、增量按鈕,將使當前顯示框圖在堆疊起來的多個框圖中進行一次前、后切換。單擊選擇器標簽右端的向下黑色箭頭將彈出所有已定義的標簽列表,可以利用這個列表在多個子框圖之間實現(xiàn)快速跳轉。當前顯示的框圖分支對應的標簽前有“√”標記。對于LabVIEW的條件結構,要么在選擇器標簽中列出所有可能的情況,要么必須給出一種默認情況。(1)

布爾型:

如選擇器接線端的數(shù)據(jù)類型是布爾值型,其選擇器標簽只能設置為“真”和“假”,該結構只包含“真”和“假”分支。(2)

整型:如果分支選擇器接線的是整型數(shù)值,條件結構可以包含任意個分支。

對于每個分支,可使用標簽工具在條件結構上部的選擇器標簽中輸入值、值列表或值范圍。如使用列表,數(shù)值之間用逗號隔開。如使用數(shù)值范圍,指定—個類似10..20的范圍可用于表示10~20的所有數(shù)字(包括10和20)。也可以使用開集范圍,例如,..100表示所有小于或等于100的數(shù),100..表示所有大于或等于100的數(shù)。(3)字符串型:如果分支選擇器接線的是字符串,條件結構同樣可以包含任意個分支。對于每個分支,使用標簽工具在條件結構上部的條件選擇器標簽中輸入值、值列表或值范圍。用字符型選項值表示范圍時,不包含最后一個字符。例如,“a”..“h”不包括h開頭的字符選項值,..“a”和“a”..表示開集范圍,..“a”表示以小于a(ASCI1碼小于97)開頭的字符選項值;“a”僅表示單個字符a,如要表示以a開頭的字符選項值,須定義標簽為“a”..“b”。

需要注意的是,默認情況下,連接至選擇器接線端的字符串區(qū)分大小寫。如要讓選擇器不區(qū)分大小寫,將字符串連接至選擇器接線端后,在條件結構的快捷菜單中選擇“不區(qū)分大小寫匹配”選項即可,所有小寫字母轉換為大寫后再進行范圍比較。如果分支接線端是字符串,在選擇器標簽中輸入的值將自動加上雙引號。(4)枚舉型:對于分支選擇器接線端接入枚舉型數(shù)據(jù),條件結構能自動將枚舉選項識別為分支標簽的值,若枚舉選項列表中的某些選項值沒有與其對應的分支子框圖,可在條件結構的右鍵快捷菜單中選擇“為每個值添加分支”選項,LabVIEW根據(jù)枚舉選項的數(shù)量自動添加相應的分支子框圖。和接入字符串類型一樣,接入組合框數(shù)據(jù)時,選擇器標簽的值自動加上雙引號。

分支程序子框圖用來放置不同分支對應的程序,LabVIEW中條件結構的分支程序與C語言的switch語句的不同之處是:C語言switch語句的default分支是可選項,在沒有default分支時,如果沒有任何和case后面的表達式匹配的條件,則任何case后面的程序都不會執(zhí)行;而LabVIEW中的條件結構,必須指定一種默認情況或者列出所有可能的情況。設置默認分支的方法是,在該分支程序的標簽上右擊,在彈出的快捷菜單中選“本分支設置為默認分支”即可。

條件結構內(nèi)部與外部之間的數(shù)據(jù)也是通過隧道來交換傳遞的。向條件結構輸入數(shù)據(jù)時,各個子框圖程序可以不連接這個數(shù)據(jù)隧道。從條件結構向外輸出數(shù)據(jù)時,各個子框圖程序都必須為這個隧道連接數(shù)據(jù),否則隧道圖標是空的,工具欄“運行”按鈕也是斷開的。當各個子程序框圖都為這個隧道連接好數(shù)據(jù)以后,隧道圖標才成為實心的,程序才可以運行,如圖(1)所示。如果允許沒有連線的子框圖程序輸出默認值,可以在數(shù)據(jù)隧道的快菜單中選擇“未連線時使用默認”命令,在這種情況下,程序執(zhí)行到?jīng)]有為輸出隧道連線的子程序時,就輸出相應數(shù)據(jù)類型的默認值,如圖(2)所示。(1)條件結構的輸出隧道連接數(shù)據(jù)(2)輸出隧道的默認處理

在LabVIEW中,可將條件結構上的輸入隧道轉換為分支選擇器。右擊隧道,從快捷菜單中選擇“替換為分支選擇器”,LabVIEW將把該隧道轉換為分支選擇器。此時,新分支選擇器的數(shù)據(jù)將改變選擇器標簽的值(不改變原分支程序);原分支選擇器轉換為輸入隧道,如圖所示。隧道轉換為分支選擇器示例5.3順序結構

LabVIEW作為一種圖形化的編程語言,有其獨特的程序執(zhí)行順序—數(shù)據(jù)流執(zhí)行方式,數(shù)據(jù)流經(jīng)節(jié)點的動作決定了程序框圖上VI和函數(shù)的執(zhí)行順序。雖然數(shù)據(jù)流編程方式給用戶帶來了許多方便,但在某些復雜的情況下,這種方式也有不足之處。例如,如果有多個節(jié)點同時滿足節(jié)點執(zhí)行條件,那么這些節(jié)點會同時執(zhí)行,而在實際中希望這些節(jié)點按一定的次序執(zhí)行,這就需要引入順序結構。順序結構的功能是強制程序按一定的順序執(zhí)行。LabVIEW提供了兩種順序結構:平鋪式順序結構和層疊式順序結構,這兩種結構的功能相同,只是外觀和用法略有差別。其中,平鋪式順序結構位于“函數(shù)”→“編程”→“結構”子選板中,如圖所示。順序結構包含一個或多個按順序執(zhí)行的子程序框圖(即幀)。

平鋪式順序結構1、平鋪式順序結構

新建的平鋪式順序結構只有一幀,為單框順序結構,它只執(zhí)行一步操作,可以通過右鍵快捷菜單添加或者刪除幀。通過拖動幀四周的方向箭頭可以改變其大小,如圖所示。改變幀的大小

平鋪式順序結構將所有的幀按照0,1,2,…的順序自左至右平鋪,并按從左至右的順序執(zhí)行,能夠確保子程序框圖按一定順序執(zhí)行。平鋪式順序結構的數(shù)據(jù)流不同于其他結構的數(shù)據(jù)流,當所有連線至幀的數(shù)據(jù)都可用時,平鋪式順序結構的幀按從左至右的順序執(zhí)行。每幀執(zhí)行完畢后會將數(shù)據(jù)通過連線直接穿過幀壁(隧道)傳遞至下一幀,即幀的輸入,可能取決于另一幀的輸出。如圖5.17所示,程序運算結果依次為A+B、(A十B)/2和(A十B)*2。平鋪式順序結構數(shù)據(jù)通道2、層疊式順序結構

層疊式順序結構與平鋪式順序結構一樣,能夠確保子程序框圖按一定順序執(zhí)行。但層疊式順序結構沒出現(xiàn)在選板上。如果要創(chuàng)建層疊式順序結構,先在程序框圖上創(chuàng)建平鋪式順序結構,然后右擊該結構并選擇“替換為層疊式順序”菜單項。在大多數(shù)情況下,需要按照順序執(zhí)行多步,因此需要在單框架的基礎上創(chuàng)建多框架順序結構。當層疊式順序結構的幀超過兩個時,所有幀的程序框圖會堆疊在一起,如圖5.18所示,它由順序框架、選擇器標簽和遞增/遞減按鈕組成。在層疊式順序結構上右擊結構邊框,可選擇“在后面添加幀”“在前面添加幀”“復制幀”及“刪除本幀”來在當前幀上添加、復制或刪除幀。多框架層疊式順序結構當程序運行時,順序結構會按照選擇器標簽0,1,2,…的順序逐步執(zhí)行各個框圖中的程序。在程序的編輯狀態(tài)中,單擊“遞增/遞減”按鈕可將當前編號的幀切換到前一幀或后一幀;在選擇器標簽的下拉菜單中可以選擇切換到任一編號的幀,如圖所示。3.順序結構之間的轉換

層疊式順序結構的優(yōu)點是節(jié)省程序框圖窗口空間,但用戶在某一時刻只能看到一幀代碼,這會給程序代碼的閱讀和理解帶來一定的難度。平鋪式順序結構比較直觀,方便代碼的閱讀,但它占用的窗口空間較大。平鋪式順序結構可以通過右鍵快捷菜單中的“替換”→“替換為層疊式順序”選項轉換到層疊式順序結構,層疊式順序結構可以通過右鍵快順序結構可以通過右鍵快捷菜單中的“替換”→“替換為平鋪式順序”選項轉換到平鋪式順序結構。由平鋪式順序結構能替換為層疊式順序結構,轉換結果如圖所示。層疊式順序結構的多幀圖4.順序結構內(nèi)部與外部的數(shù)據(jù)交換

順序結構內(nèi)部與外部之間的數(shù)據(jù)傳遞是通過在結構邊框上建立隧道實現(xiàn)的。隧道有輸入隧道和輸出隧道,輸入隧道用于從外部向內(nèi)部傳遞數(shù)據(jù),輸出隧道用于從內(nèi)部向外部傳遞數(shù)據(jù)。在順序執(zhí)行前,輸入隧道上得到輸入值,在執(zhí)行過程中,此值保持不變,且每幀都能讀取此值。輸出隧道上的值只能在整個順序結構執(zhí)行完后才會輸出,如圖所示。順序結構內(nèi)部與外部數(shù)據(jù)的交換示例5.4事件結構事件結構事件結構包含如下幾個基本的組成部分:

上方邊框中間是選擇器標簽,用于標識當前顯示的子框圖所處理事件的事件源;

事件數(shù)據(jù)節(jié)點為子框圖提供所處理事件的相關數(shù)據(jù);

事件超時端子隸屬于整個事件結構,用于為超時事件提供超時時間參數(shù)。

對用戶操作的響應和處理是構建圖形用戶界面時的重要內(nèi)容。事件結構的運行方式與Windows操作系統(tǒng)的事件處理非常相似。

事件結構位于“函數(shù)選板”→“編程”→“結構”子選板上。向框圖添加事件結構的方法和添加其他程序結構相似。新添加到框圖上的事件結構如圖5.21所示。

事件數(shù)據(jù)節(jié)點由若干個事件數(shù)據(jù)端子組成,使用操作工具單擊事件數(shù)據(jù)節(jié)點的某個端子將打開數(shù)據(jù)列表,可以在其中選擇所要訪問的數(shù)據(jù)。使用定位工具拖曳事件數(shù)據(jù)節(jié)點的上下邊沿,可以增減數(shù)據(jù)端子。

事件超時端子接入的以毫秒為單位的整數(shù)值指定了超時時間,本結構在等待其他類型事件發(fā)生的時間超過超時時間后將自動觸發(fā)超時事件。為超時端子接入值-1,表示不產(chǎn)生超時事件。

事件結構的組織方式是把多個子框圖堆疊在一起,根據(jù)所發(fā)生事件的不同,每次只有一個子框圖得到執(zhí)行,并且該子框圖執(zhí)行完后,事件結構隨之退出。例如在圖中,程序執(zhí)行到事件結構時暫時停止運行,進入事件等待狀態(tài),直到某個已經(jīng)注冊的事件(這里只有一個超時事件:超時)發(fā)生時,程序繼續(xù)執(zhí)行事件的子框圖代碼,執(zhí)行完畢后,事件結構退出。顯然,在構建用戶界面時,需要處理任意多的事件,這就導致了事件結構往往被放置在While循環(huán)內(nèi)部,與循環(huán)結構搭配使用。事件結構邊框快捷菜單

指定事件結構中事件的事件源和事件類型的過程稱為注冊事件。注冊事件有兩種方法:一種是靜態(tài)事件注冊;另一種是動態(tài)事件注冊。在事件結構邊框上右擊,彈出圖中所示的快捷菜單。其中,“刪除事件結構”命令用于刪除事件結構,僅僅保留當前事件分支的代碼,“編輯本分支所處理的事件…”命令用于編輯當前事件分支的事件源和事件類型;“添加事件分支…”命令用于在當前事件分支后面增加新的事件分支;“復制事件分支…”命令用于復制當前事件分支,并且把復制結果放置在當前分支后面;“刪除本事件分支”命令用于刪除當前分支;“顯示動態(tài)事件接線端”命令則用于顯示動態(tài)事件端子。

“編輯事件“對話框

對于事件結構,無論執(zhí)行編輯、添加還是復制等操作,都會打開如圖所示的“編輯事件”對話框。每個事件分支都可以配置為處理多個事件,當這些事件中的任何一個發(fā)生時,對應事件分支的代碼都會得到執(zhí)行。在“編輯事件”對話框中,“事件分支”下拉列表中列出所有事件分支的序號和名稱,在這里選擇某個分支時,“事件說明符”列表會列出為這個分支配置好的所有事件?!笆录f明符”列表的組成結構如下:每一行是一個配置好的事件,每行都分為左右兩部分,左邊列出事件源(為應用程序、VI、動態(tài)、窗格、分隔欄和控件這六個可能值之一),右邊給出該事件源產(chǎn)生的事件名稱。圖中,為分支0指定了一個事件,事件源是應用程序,事件名稱是超時,即它是由應用程序本身產(chǎn)生的超時事件。

“編輯事件“對話框

“事件說明符”列表的組成結構如下:每一行是一個配置好的事件,每行都分為左右兩部分,左邊列出事件源(為應用程序、VI、動態(tài)、窗格、分隔欄和控件這六個可能值之一),右邊給出該事件源產(chǎn)生的事件名稱。圖中,為分支0指定了一個事件,事件源是應用程序,事件名稱是超時,即它是由應用程序本身產(chǎn)生的超時事件。

對于事件結構,無論執(zhí)行編輯、添加還是復制等操作,都會打開如圖所示的“編輯事件”對話框。每個事件分支都可以配置為處理多個事件,當這些事件中的任何一個發(fā)生時,對應事件分支的代碼都會得到執(zhí)行。在“編輯事件”對話框中,“事件分支”下拉列表中列出所有事件分支的序號和名稱,在這里選擇某個分支時,“事件說明符”列表會列出為這個分支配置好的所有事件。

改變已有事件的方法,是先在“事件說明符”列表中選中該事件,然后在“事件源”列表中選擇新的事件源,這時“事件”列表給出該事件源可能產(chǎn)生的所有事件列表,在其中選擇所要處理的事件,即可完成對已有事件的修改操作。

為當前事件分支添加事件的方法是,單擊“事件說明符”列表下側的“添加事件”按鈕,這時在“事件說明符”的事件列表最下面出現(xiàn)新的一行,事件源和事件名都為待定,用“-”表示。在“事件源”列表中選擇合適的事件源,然后在“事件”列表給出的該事件源所能夠產(chǎn)生的所有事件中選擇所需要的事件,即可完成添加事件的操作。選中“事件說明符”列表中的某個事件,然后單擊下側的“刪除”按鈕,將刪除這個事件。

[例5.1]在前面板放置兩個確認按鈕,分別取名為“按鈕1”和“按鈕2”,再放置一個停止按鈕,然后放置兩個數(shù)值顯示控件,取名為“計數(shù)器1”和“計數(shù)器2”。程序實現(xiàn)以下功能:(1)單擊按鈕1時,計數(shù)器1中的值增加l。(2)單擊按鈕1或按鈕2時,計數(shù)器2中的值均增加1。(3)單擊停止按鈕時,程序自動退出運行。

分支0:響應“按鈕1”控件上“鼠標按下”的通知事件,當單擊按鈕1時,計數(shù)器1加1,實現(xiàn)對單擊操作進行計數(shù)。

分支1:同時響應“按鈕1”和“按鈕2”控件的“值改變”通知事件,即分支1同時處理了兩個事件,當單擊這兩個按鈕中的任何一個以改變按鈕的取值,則計數(shù)器2加1以實現(xiàn)計數(shù)。

(a)按鈕1鼠標按下通知事件(b)按鈕1、按鈕2值改變通知事件

分支2:響應“停止”按鈕控件的“鼠標按下?”過濾事件,該分支放置了一個雙按鈕對話框,并將對話框的輸出取反接入事件過濾節(jié)點中的“放棄?”。

分支3:響應“停止”按鈕控件的“鼠標按下”通知事件,該分支放入了一個真常量,并將其連接至While循環(huán)條件接線端。當程序運行時,按下“停止”按鈕,則彈出對話框,如果選擇“是”,“鼠標按下”事件得以發(fā)生,分支3中的程序得以執(zhí)行,循環(huán)結束,VI停止運行,若選擇“否”,“鼠標按下”事件被屏蔽,分支3中的程序不運行,VI繼續(xù)執(zhí)行。

(c)停止按鈕鼠標按下過濾事件

(d)停止鼠標按下通知事件利用事件結構實現(xiàn)的單擊計數(shù)器5.5公式節(jié)點

公式節(jié)點是一種便于在程序框圖上執(zhí)行數(shù)學運算的文本節(jié)點,適用于含有多個變量或較為復雜的方程。

公式節(jié)點使用算術表達式實現(xiàn)算法過程,C語言的If語句、While循環(huán)和For循環(huán)等都可以在公式節(jié)點中使用。公式節(jié)點可以通過復制、粘貼的方式將已有的文本代碼移植到公式節(jié)點中,不必通過圖形化編程方式再次創(chuàng)建相同的代碼。

1、公式節(jié)點的建立公式節(jié)點位于“函數(shù)”“編程”“結構”子選板及“函數(shù)”“數(shù)學”“腳本與公式”子選板中,在程序框圖中放置公式節(jié)點的方法以及公式節(jié)點邊框大小的調整與循環(huán)結構的操作相同。公式節(jié)點中參數(shù)的輸入、輸出利用創(chuàng)建輸入變量和輸出變量的方法實現(xiàn),通過在邊框上右鍵快捷菜單中選擇“添加輸入”或“添加輸出”并輸入相應的變量名即可添加輸入、輸出變量,如圖所示。公式節(jié)點的輸入和輸出變量

輸入變量和輸出變量可以互相轉換,方法如下:在變量上右擊,在彈出的快捷菜單中選擇“轉換為輸出”或“轉換為輸入”即可。要刪除變量,可在相應變量上右擊,在彈出的快捷菜單中選擇“刪除”。一個公式節(jié)點可以包含多個變量,變量數(shù)目根據(jù)具體情況而定,但要注意的是,變量名稱對大小寫字母很敏感。2、公式節(jié)點的語法

每個賦值語句中,賦值運算符(=)的左側僅可有一個變量,且必須以分號(;)結束。注釋內(nèi)容可通過/*…*/封閉起來。在公式節(jié)點中輸入公式時,必須確保使用正確的公式節(jié)點語法。

LabVIEW公式節(jié)點主要有以下幾種語句:變量聲明語句、賦值語句、條件語句、循環(huán)語句、Switch語句、控制語句。

[例5.2]利用公式節(jié)點完成表達式y(tǒng)1=2x2+3x+1,y2=a*x+b的運算,其中,x的取值為0~20的整數(shù)值。利用公式節(jié)點應用示例本章習題5.1用條件結構編寫VI,實現(xiàn)兩個數(shù)的加、減、乘、除四則運算,要求用組合框作為分支選擇器。5.2編寫VI,實現(xiàn)百分制成績向五分制成績的轉換。要求:90分以上為A,80~89分為B,70~79分為C,

60~69分為D,60分以下為E。5.3將隨機產(chǎn)生的數(shù)值與給定的數(shù)值比較,計算達到兩數(shù)相等時所需時間。5.4利用事件結構實現(xiàn)界面上的數(shù)值自動累加。5.5使用公式節(jié)點實現(xiàn)y=cos(x),并將輸出用圖形顯示。5.6設計VI計算Z值:THANKYOU第6章變量和屬性節(jié)點局部變量全局變量屬性節(jié)點

6.1

6.3

6.2

6.4控件通用屬性6.1局部變量

局部變量是對前面板控件數(shù)據(jù)的一個引用??梢詾橐粋€前面板控件建立任意多的局部變量。從任何一個局部變量都可以讀取該控件中的數(shù)據(jù);向其中的任何一個局部變量中寫入數(shù)據(jù),都會改變包括控件本身和其他局部變量在內(nèi)的所有數(shù)據(jù)備份。局部變量是在同一個VI之間的數(shù)據(jù)傳遞。

使用局部變量,可以在一個VI的多個位置實現(xiàn)對前面板控件的訪問,也可以在無法連線的框圖區(qū)域傳遞數(shù)據(jù)。另外,輸入控件在框圖上的端子作為數(shù)據(jù)源使用,不能向其中輸入數(shù)據(jù);顯示控件在框圖上的端子作為數(shù)據(jù)輸出目標使用,不能從其中讀出數(shù)據(jù)。使用局部變量則可打破這些限制,實現(xiàn)對輸入控件的寫操作和對顯示控件的讀操作。

創(chuàng)建局部變量的方法:在“函數(shù)選板”“編程”“結構”子選板上選中“局部變量”,拖置到框圖窗口合適位置上,此時,局部變量中間有一個問號,表明還沒有關聯(lián)到任何控件上,如圖6.1(a)所示。使用操作值工具單擊局部變量,或者在局部變量上右擊彈出的快捷菜單中選擇“選擇項”命令,可以看到前面板所有控件的標簽列表。在列表中選擇合適的標簽,即可完成局部變量與標簽對應的前面板控件的關聯(lián)。另外一種更快捷的創(chuàng)建局部變量的方法,是在面板控件或者它們的框圖端子上右擊彈出的快捷菜單中選擇“創(chuàng)建”“局部變量”命令,此時不僅僅建立了局部變量,還自動完成了局部變量與控件的關聯(lián),如圖6.1(b)所示。

默認情況下,新創(chuàng)建的局部變量都是寫入端子,在局部變量上右擊彈出的快捷菜單中選擇“轉換為讀取”命令,可將其變?yōu)樽x端子。圖6.1(a)圖6.1(b)

[例6.1]

圖6.2給出了局部變量的應用示例框圖。該程序的功能是對從標簽為“數(shù)值”的數(shù)值輸入控件中輸入的數(shù)值進行判斷,如果小于零,則彈出內(nèi)容為“錯誤:小于0!”的消息框,并且使用局部變量把“數(shù)值”的內(nèi)容設為0;如果不小于零,則計算其平方根,同樣把計算結果返回到“數(shù)值”輸入控件中。

復制局部變量時需要特別注意,如果直接使用“編輯”“復制”(或Ctrl十C)和“編輯”“粘貼”(或Ctrl+V)命令完成復制,則會復制生成新的前面板控件和與之關聯(lián)的新的局部變量。不生成新控件的復制局部變量的方法是:按住Ctrl鍵的同時,用鼠標拖曳局部變量,松開鼠標后,完成局部變量的復制。圖6.2

局部變量的應用示例6.2全局變量

使用全局變量,可以在同時運行的幾個VI之間傳遞數(shù)據(jù)。全局變量在LabVIEW里的形式為只有前面板而沒有框圖的特殊VI。全局變量的建立方法:在LabVIEW啟動界面的“新建”列表中選擇“更多”其他文件”“全局變量”命令,然后單擊“確定”按鈕,即可打開新全局變量的窗口。如圖6.3所示。選擇“文件”“保存”命令,把全局變量保存成擴展名為vi的磁盤文件。這樣建立的全局變量文件實際上是一個全局變量的“容器”,還需要向全局變量文件添加控件,添加方法與向普通VI中添加控件方法相同。全局變量中的每個控件都同時擁有讀和寫的權限。一個全局變量文件中可只包含一個控件,但更好的組織方式是把整個程序中用到的全局數(shù)據(jù)都放在一個全局變量文件中,并按照功能分別組織。

6.3(b)中,全局變量文件被保存為全局1.Vi,并且添加了標簽分別為“全局數(shù)值”和“全局布爾”的數(shù)值和布爾類型輸入控件。圖6.3(b)全局變量vi界面圖6.3(a)創(chuàng)建全局變量

要使用創(chuàng)建好的全局變量時,選擇“函數(shù)選板”“選擇VI…”命令打開“選擇需打開的VI”對話框,如圖6.4所示,選擇保存了的全局變量文件并打開,鼠標指針下出現(xiàn)了全局變量的圖標,拖曳到合適位置后,單擊鼠標將其放置在框圖。出現(xiàn)在全局變量圖標中的變量標簽是在全局變量文件中添加的第一個控件的標簽,使用操作值工具單擊全局變量,會打開全局變量文件中包含的所有控件標簽的列表,在其中選擇適當?shù)臉撕?,即可完成對全局變量中具體控件的選擇,如圖6.5所示。每個全局變量只能用來訪問全局變量文件中的一個控件。圖6.4

選擇需要打開的全局變量vi圖6.5

選擇全局變量控件

選擇“函數(shù)選板”“編程”“結構”“全局變量”并放置在框圖上時,如圖6.1(a)所示。會建立帶有問號的全局變量圖標,此時,該全局變量還沒有與任何全局變量文件相關聯(lián)。雙擊全局變量圖標將打開新建窗口,添加適當控件并保存新全局變量文件,回到原VI,用操作工具可以選擇關聯(lián)全局變量中的控件。

在默認情況下,新建立的全局變量都是寫端子,在全局變量上右擊彈出的快捷菜單中選擇“轉換為讀取”命令,將把全局變量變?yōu)樽x端子。圖6.6全局變量舉例【例6.2】第一個VI用來產(chǎn)生隨機數(shù),并將隨機數(shù)寫入全局變量“數(shù)值”中。第二個VI用來顯示數(shù)據(jù),數(shù)據(jù)來自于全局變量的“數(shù)值”,并通過波形圖表進行顯示。同時運行兩個VI,則第一個VI產(chǎn)生數(shù)據(jù),通過全局變量傳遞到第二個VI并顯示出來。6.3屬性節(jié)點

LabVIEW中的每一個對象(包括輸入控件、顯示控件、VI和應用程序本身等)都具有屬性,屬性描述了對象本身的特征。例如,數(shù)值輸入控件具有一個稱為“可見”的布爾類型屬性,如果這個屬性被設置為“假”,控件在前面板上不可見;如果這個屬性被設置為“真”,則數(shù)值輸入控件可見。除了對這個屬性進行設置外,還可以讀取它的值,以確認數(shù)值輸入控件是否可見。同時,數(shù)值輸入控件還有名為“重新初始化為默認值”的方法,其功能是把數(shù)值輸入控件的值設置為默認值。

訪問輸入控件和顯示控件屬性的操作都是通過屬性節(jié)點完成的。為控件建立屬性節(jié)點的方法,是在控件或者它的框圖端子上右擊,從彈出的快捷菜單中選擇“創(chuàng)建”“屬性節(jié)點”命令,如圖6.7所示。屬性節(jié)點具有和輸入控件相同的標簽“數(shù)值”,表明了它們之間的關聯(lián)關系。圖中選中了“可見”(Visible)屬性,該屬性表明“數(shù)值”輸入控件是否處于可見狀態(tài)。使用操作值工具單擊Visible屬性端子會彈出屬性列表,可在其中進行選擇,以改變該端子所對應的屬性。Visible屬性右側的黑色箭頭表示這個屬性是讀屬性,在屬性節(jié)點的Visible屬性端子上右擊,從彈出的快捷菜單中選擇“轉換為寫入”命令,可把該屬性端子變?yōu)閷懚俗?。圖6.7“數(shù)值”輸入控件的屬性節(jié)點

在同一個屬性節(jié)點中可以建立多個屬性端子,以訪問同一對象的多個屬性。添加新屬性的方法是使用定位工具拖曳節(jié)點的下邊沿,如圖6.8所示。也可以在屬性端子上右擊,從彈出的快捷菜單中選擇“添加元素”命令增加屬性端子;選擇“刪除元素”命令刪除屬性端子。每個屬性端子的讀寫狀態(tài)可單獨設置。具有多個端子的屬性節(jié)點中的端子讀寫操作,按照從上到下的順序執(zhí)行。在屬性節(jié)點上右擊會彈出快捷菜單,“鏈接至”子單下列出了當前VI中的所有輸入控件和顯示控件,可以在其中選擇,以改變

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論