虛擬儀器設(shè)計(jì)第4章條件結(jié)構(gòu)、順序公式節(jié)點(diǎn)和事件_第1頁
虛擬儀器設(shè)計(jì)第4章條件結(jié)構(gòu)、順序公式節(jié)點(diǎn)和事件_第2頁
虛擬儀器設(shè)計(jì)第4章條件結(jié)構(gòu)、順序公式節(jié)點(diǎn)和事件_第3頁
虛擬儀器設(shè)計(jì)第4章條件結(jié)構(gòu)、順序公式節(jié)點(diǎn)和事件_第4頁
虛擬儀器設(shè)計(jì)第4章條件結(jié)構(gòu)、順序公式節(jié)點(diǎn)和事件_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1上次課內(nèi)容復(fù)習(xí) 在VI中,結(jié)構(gòu)控制數(shù)據(jù)流執(zhí)行。While循環(huán)結(jié)構(gòu)控制程序反復(fù)執(zhí)行框內(nèi)程序,直到滿足其結(jié)束循環(huán)的條件。 For循環(huán)控制框內(nèi)程序段執(zhí)行指定的次數(shù), 循環(huán)次數(shù)由連接到計(jì)數(shù)端口的值確定。 在循環(huán)邊框可建立多個(gè)移位寄存器,使用移位寄存器可在循環(huán)體的循環(huán)之間傳遞數(shù)據(jù)。For循環(huán)和While循環(huán)都可以使用移位寄存器。波形圖表可以實(shí)時(shí)顯示數(shù)據(jù)變化趨勢(shì),具有三種不同顯示模式。在波形圖表或它的各個(gè)組成部分上彈出菜單, 可修改圖表顯示的屬性和參數(shù)。 控制循環(huán)時(shí)間最常用、最簡(jiǎn)單的方法。2 什么是結(jié)構(gòu)? 結(jié)構(gòu)用于控制 G程序的數(shù)據(jù)流向。 G語言常用5種結(jié)構(gòu)如下: While循環(huán)結(jié)構(gòu) For循環(huán)結(jié)構(gòu) C

2、ase(條件)結(jié)構(gòu) Sequence(順序)結(jié)構(gòu) 對(duì)數(shù)據(jù)流的執(zhí)行順序作出強(qiáng)制規(guī)定 事件結(jié)構(gòu) 用以對(duì)用戶操作作出響應(yīng)和處理3第4章 條件結(jié)構(gòu)、順序結(jié)構(gòu)、公式節(jié)點(diǎn)和事件結(jié)構(gòu) 授課內(nèi)容包括書本P114-126:6.2、條件結(jié)構(gòu)6.3、順序結(jié)構(gòu)6.4、公式節(jié)點(diǎn)6.5、事件結(jié)構(gòu)12/32學(xué)時(shí)4 1學(xué)習(xí)條件結(jié)構(gòu)、順序結(jié)構(gòu)、事件結(jié)構(gòu)和公式節(jié)點(diǎn)的基本概念。 2. 學(xué)習(xí)如何使用這三種結(jié)構(gòu)和公式節(jié)點(diǎn)。本次課的學(xué)習(xí)目標(biāo)54.1 條件結(jié)構(gòu)(也叫Case結(jié)構(gòu)) “條件結(jié)構(gòu)”是一種多分支程序控制結(jié)構(gòu),類似于 C 語言的 switch 多分支選擇結(jié)構(gòu)。switch(表達(dá)式) case 常量表達(dá)式1 : 語句組1 ; cas

3、e 常量表達(dá)式2 : 語句組2 ; case 常量表達(dá)式n : 語句組n ; default : 語句組n+1 ; 6switch(表達(dá)式) case 常量表達(dá)式1 : 語句組1 ; break; case 常量表達(dá)式2 : 語句組2 ; break; case 常量表達(dá)式n : 語句組n ; break; default : 語句組n+1 ; break語句必不可少!7對(duì)于情況A:執(zhí)行對(duì)于情況B:執(zhí)行.其他:執(zhí)行計(jì)算表達(dá)式值.語句1語句2語句n語句n+1表達(dá)式值= 時(shí)該開關(guān)合上,執(zhí)行語句184.1.1 條件結(jié)構(gòu)框圖的創(chuàng)建: 創(chuàng)建:在函數(shù)選板編程結(jié)構(gòu)中選擇“條件結(jié)構(gòu)”,在程序框圖上按住鼠標(biāo)左鍵

4、拖出條件結(jié)構(gòu)框圖,然后將在該條件下執(zhí)行的程序放入相應(yīng)的條件結(jié)構(gòu)框圖內(nèi)。94.1.2 條件結(jié)構(gòu)的組成: 分支選擇器減量按鈕增量按鈕選擇器標(biāo)簽在該分支下執(zhí)行的框圖程序 條件結(jié)構(gòu)有一個(gè)或多個(gè)子框圖。每個(gè)子框圖都是一個(gè)執(zhí)行分支,每一個(gè)執(zhí)行分支都有自己的選擇器標(biāo)簽。執(zhí)行條件結(jié)構(gòu)時(shí),與接入分支選擇器數(shù)據(jù)相匹配的標(biāo)簽對(duì)應(yīng)的框圖得到執(zhí)行。書:P114圖6-1510布爾型選擇結(jié)構(gòu) 枚舉型選擇結(jié)構(gòu) 字符串型選擇結(jié)構(gòu) 與C語言Switch語句相比,LabVIEW的選擇結(jié)構(gòu)更加靈活。分支選擇器端子的值可以為以下四種:布爾型、整型、字符串型或者枚舉型。整型選擇結(jié)構(gòu) 11LabVIEW中的枚舉類型: 與C語言中的枚舉類型

5、定義相同,可以認(rèn)為是一種受到約束或限制的字符串類型。它提供了一個(gè)選項(xiàng)列表,其中每一項(xiàng)都包含了一個(gè)字符串標(biāo)識(shí)和數(shù)字標(biāo)識(shí),數(shù)字標(biāo)識(shí)與每一選項(xiàng)在列表中的順序一一對(duì)應(yīng)。枚舉控件的值:0(n-1)的正整數(shù)12 分支選擇器端子的值的類型決定了選擇器標(biāo)簽的值的類型。當(dāng)分支選擇器端子的值為布爾型時(shí),選擇器標(biāo)簽的值為“真”或“假”。當(dāng)分支選擇器端子的值為整型時(shí),選擇標(biāo)簽的值為整數(shù)0,1,2選擇框架的個(gè)數(shù)可根據(jù)實(shí)際需要確定。當(dāng)分支選擇器端子的值為字符串型或者枚舉型時(shí),選擇器標(biāo)簽的值為由雙引號(hào)括起來的字符串。13 注意:在使用條件結(jié)構(gòu)時(shí),分支選擇器端子的數(shù)據(jù)類型必須與選擇器標(biāo)簽中的數(shù)據(jù)類型相一致,否則程序會(huì)報(bào)錯(cuò),無

6、法運(yùn)行。在 LabVIEW中,對(duì)于分支為整型的條件結(jié)構(gòu)必須包含處理超出范圍值的默認(rèn)分支(選擇器標(biāo)簽中必須包含“默認(rèn)”項(xiàng));對(duì)于其它類型的條件結(jié)構(gòu)可設(shè)可不設(shè),但必須明確地列出每一個(gè)可能的輸入值。 14選擇器標(biāo)簽可以按照 列表 和 范圍 指定。列表:項(xiàng)目之間用英文逗號(hào)(,)隔開。范圍:用兩個(gè)英文句號(hào)(.)表示。.-1:-1 7. :76,默認(rèn):當(dāng)分支選擇器端子的值為6以及其他未明確指出的數(shù)字(此處為0,2,5)1,3,4:當(dāng)分支選擇器端子的值為1或3或4時(shí)書:P115圖6-1615課堂小練習(xí):選擇器的標(biāo)識(shí)值的設(shè)定: 2016課堂小練習(xí)答案:選擇器的標(biāo)識(shí)值的設(shè)定: 20.910.2021.174.1

7、.3 條件結(jié)構(gòu)邊框上彈出的快捷菜單。(書:P115)18快捷菜單:重排分支重排之前重排之后對(duì)分支列表自動(dòng)排序19快捷菜單:將子框圖程序交換至分支A B C DD B C A將當(dāng)前分支內(nèi)容與目標(biāo)分支內(nèi)容對(duì)換,其他分支內(nèi)容不受影響。快捷菜單:將子框圖程序移位至分支(書本上的版本為:“將程序框圖轉(zhuǎn)換為分支”)P115將當(dāng)前分支內(nèi)容移動(dòng)到目標(biāo)分支內(nèi)容之后,其他分支內(nèi)容按照原來的順序做出相應(yīng)的移動(dòng)。例子見書:P116圖6-18A B C DB C D A注意二者之區(qū)別204.1.4 數(shù)據(jù)的輸入和輸出通道 當(dāng)由外部節(jié)點(diǎn)向結(jié)構(gòu)框架連線時(shí),在結(jié)構(gòu)邊框就創(chuàng)建了輸入通道,而當(dāng)由框內(nèi)節(jié)點(diǎn)與邊框連線時(shí),在結(jié)構(gòu)邊框就建

8、立了輸出通道。 輸出通道不正確連接對(duì)所有Case分支來說對(duì)于輸入通道的數(shù)據(jù)可以使用,也可以不使用。只要有一個(gè)分支提供輸出數(shù)據(jù),所有分支Case都必須與輸出通道連接。當(dāng)輸出通道連接不正確時(shí),為空心方框。連接正確時(shí),為實(shí)心方框。 214.1.5 條件結(jié)構(gòu)應(yīng)用舉例 目的:求一個(gè)數(shù)的平方根,若該數(shù)0,計(jì)算該值平方根并將計(jì)算結(jié)果輸出;若該數(shù)0時(shí),則用彈出式對(duì)話框報(bào)告錯(cuò)誤,同時(shí)輸出錯(cuò)誤代碼“-999.99”。 應(yīng)該如何寫程序?22程序框圖:23運(yùn)行結(jié)果:244.2 順序結(jié)構(gòu) 在VI中,程序的運(yùn)行是靠數(shù)據(jù)流來驅(qū)動(dòng)的,利用數(shù)據(jù)流機(jī)制可以實(shí)現(xiàn)很多順序執(zhí)行的功能。但是只有數(shù)據(jù)流控制的順序執(zhí)行還不夠,在某些復(fù)雜的情

9、況下,需要更強(qiáng)的順序執(zhí)行控制結(jié)構(gòu)。引入了“順序結(jié)構(gòu)”的概念。如上圖,當(dāng)且僅當(dāng)A、B、C個(gè)節(jié)點(diǎn)執(zhí)行完,使得D節(jié)點(diǎn)的個(gè)輸入數(shù)據(jù)都到達(dá)D節(jié)點(diǎn)后,D節(jié)點(diǎn)才執(zhí)行。但要注意,這里并沒有規(guī)定A、B、C個(gè)節(jié)點(diǎn)的執(zhí)行順序。在LabVIEW中這種情況下,A、B、C的執(zhí)行順序是不確定的。如果你需要對(duì)它們規(guī)定一個(gè)確定的順序,那就需要使用 “順序結(jié)構(gòu)”。 ADCB254.2.1 順序結(jié)構(gòu)的創(chuàng)建:順序結(jié)構(gòu)分為層疊式順序結(jié)構(gòu)和平鋪式順序結(jié)構(gòu)。二者功能完全相同,其區(qū)別僅為表現(xiàn)形式的不同。層疊式順序結(jié)構(gòu)節(jié)省框圖程序空間平鋪式順序結(jié)構(gòu)方便程序閱讀函數(shù)選板編程結(jié)構(gòu)26利用鼠標(biāo)左鍵拖拽出第0幀順序結(jié)構(gòu)之后,在結(jié)構(gòu)邊框上右擊鼠標(biāo),選擇

10、“在后面添加幀”。順序結(jié)構(gòu)會(huì)按框圖標(biāo)識(shí)符0,1,2的順序,從第0幀開始,一幀一幀按順序執(zhí)行每一幀框圖程序。 274.2.2 順序結(jié)構(gòu)的組成:平鋪式順序結(jié)構(gòu):第0幀第1幀第2幀層疊式順序結(jié)構(gòu):減量按鈕增量按鈕選擇器標(biāo)簽當(dāng)前為第0幀28 4.2.3 層疊式順序結(jié)構(gòu)局部變量的創(chuàng)建 層疊式順序結(jié)構(gòu)有一種稱為“順序局部變量”的機(jī)制,用在不同幀之間實(shí)現(xiàn)數(shù)據(jù)傳遞。而平鋪式順序結(jié)構(gòu)由于各幀都是可見的,無需借助“順序局部變量”來傳遞數(shù)據(jù)。 添加“順序局部變量”的方法:添加“順序局部變量”后29有三個(gè)幀的順序結(jié)構(gòu)局部變量 順序結(jié)構(gòu)的輸出通道僅能有一個(gè)數(shù)據(jù)源 數(shù)據(jù)源能被后續(xù)所有幀使用, 但在源幀前面的幀中不能使用(

11、為實(shí)心方框) 源幀順序結(jié)構(gòu)對(duì)編寫代碼很有幫助,但是不能濫用!書本:P119304.2.4 順序結(jié)構(gòu)應(yīng)用舉例 將一隨機(jī)數(shù)發(fā)生器產(chǎn)生的數(shù)字(0-100之間的整數(shù))與前面板輸入的整數(shù)(0-100之間)進(jìn)行比較,計(jì)算當(dāng)兩個(gè)數(shù)匹配時(shí)所執(zhí)行的次數(shù)以及所耗時(shí)間。任務(wù)如何進(jìn)行分解?31任務(wù)分解:產(chǎn)生0-100整數(shù)隨機(jī)數(shù),并與指定數(shù)相比較。相等則停止,不等則繼續(xù)循環(huán)。 產(chǎn)生0-100隨機(jī)數(shù) 取整 比較是否相等計(jì)算循環(huán)次數(shù)。上述兩個(gè)問題可以用While循環(huán)可以解決。計(jì)算耗費(fèi)時(shí)間。我們面對(duì)的新問題,從“函數(shù)”“編程”“定時(shí)”中去尋找答案。32利用While循環(huán)來實(shí)現(xiàn):利用順序結(jié)構(gòu)來實(shí)現(xiàn)什么?開始計(jì)時(shí)、運(yùn)行、結(jié)束計(jì)時(shí)

12、這3個(gè)狀態(tài)。33利用順序結(jié)構(gòu)來實(shí)現(xiàn):34平鋪式層疊式順序結(jié)構(gòu):354.3 公式節(jié)點(diǎn)引入公式節(jié)點(diǎn)的必要性: LabVIEW為G語言,通常為圖形化編程。但是,一些復(fù)雜的算法(數(shù)學(xué)公式)無法完全依賴圖形代碼來實(shí)現(xiàn),或者實(shí)現(xiàn)起來太麻煩。比如:36 使用算數(shù)功能函數(shù)實(shí)現(xiàn) 使用公式節(jié)點(diǎn)計(jì)算方程式 簡(jiǎn)單明了公式節(jié)點(diǎn)的優(yōu)點(diǎn)374.3.1 公式節(jié)點(diǎn)的創(chuàng)建:函數(shù)選板編程結(jié)構(gòu)38 添加輸入輸出端子 394.3.2 公式節(jié)點(diǎn)語法 公式節(jié)點(diǎn)中代碼的語法與C語言非常接近,但是只能實(shí)現(xiàn)基本的邏輯流程和運(yùn)算,不能對(duì)文件或設(shè)備進(jìn)行操作或通信,沒有輸入輸出語句。主要有以下幾種語句:1)變量聲明:float a;2)賦值語句:a+

13、=b;3)條件語句:if語句;ifelse語句4)循環(huán)語句:dowhile語句;while語句;for語句5)switch語句可以對(duì)語句進(jìn)行注釋。注釋方法為/或/*/40注意:1.輸入、輸出端子不是以在公式節(jié)點(diǎn)的邊框上的位置來決定的。左=輸入;右=輸出。輸出端子的邊框線比輸入端子粗。2.輸入、輸出端子的數(shù)量無限制,且可以在邊框上隨意拖動(dòng)。3.輸入、輸出端子的名稱必須與公式節(jié)點(diǎn)文本代碼中的輸入、輸出變量名稱相同。4.各輸入端子之間名稱不可相同;各輸出端子之間名稱也不可相同;但是輸入端子與輸出端子之間名稱可以相同(但應(yīng)盡量避免)。41注意:5.公式節(jié)點(diǎn)文本代碼中的每一個(gè)變量(包括中間變量)都必須有

14、一個(gè)輸入或輸出端子與之對(duì)應(yīng)。y雖然為一個(gè)中間變量,也必須要有一個(gè)輸出端子與之對(duì)應(yīng)!424.3.3 公式節(jié)點(diǎn)應(yīng)用實(shí)例 使用公式節(jié)點(diǎn)創(chuàng)建一個(gè)VI,完成下面公式計(jì)算,并將結(jié)果顯示在同一個(gè)屏幕上。 y1 = m*x*3 b*x*2 + 5 y2 = m * x + b 此處,x取值為0 10。前面板用哪個(gè)循環(huán)呢?43框圖程序:444.4 事件結(jié)構(gòu)4.4.1. 引入事件結(jié)構(gòu)的意義:考慮如下程序目的:當(dāng)用戶單擊“Hit me”按鈕時(shí),計(jì)數(shù)器“Hit Counter” 加1。45Hit Counter:局部變量,只是在同一程序內(nèi)部使用,每個(gè)局部變量都對(duì)應(yīng)前面板上的一個(gè)控件。一個(gè)空間可以創(chuàng)建多個(gè)局部變量。上述

15、While循環(huán)+case結(jié)構(gòu)的缺點(diǎn):1. 當(dāng)用戶沒有單擊“Hit me”按鈕時(shí)處于“空轉(zhuǎn)”狀態(tài),浪費(fèi)了大量的計(jì)算機(jī)資源。2. 當(dāng)事件發(fā)生速度太快時(shí),事件有可能會(huì)被忽略。46為解決上述問題,LabVIEW提供了“事件結(jié)構(gòu)”。僅當(dāng)事件發(fā)生時(shí),程序才做出相應(yīng)的響應(yīng),類似于VC或VB編程中的事件。通過事件結(jié)構(gòu):程序變得簡(jiǎn)單,降低CPU利用率;當(dāng)多個(gè)事件發(fā)生時(shí)會(huì)形成事件隊(duì)列,直到每個(gè)事件對(duì)應(yīng)的代碼都被執(zhí)行為止,因此不會(huì)有時(shí)間被遺漏的情況。474.4.2. 事件結(jié)構(gòu)的創(chuàng)建:函數(shù)選板編程結(jié)構(gòu)484.4.3. 事件結(jié)構(gòu)的組成:事件超時(shí)事件數(shù)據(jù)節(jié)點(diǎn)選擇器標(biāo)簽49選擇器標(biāo)簽:標(biāo)識(shí)當(dāng)前顯示的子框圖所處理事件的事件源

16、。事件數(shù)據(jù)節(jié)點(diǎn):為子框圖提供所處理事件的相關(guān)數(shù)據(jù)。 類型:觸發(fā)事件的類型 時(shí)間:觸發(fā)時(shí)間事件超時(shí):接入超時(shí)時(shí)間(ms),超過超時(shí)時(shí)間將觸發(fā)超時(shí)事件。-1用不超時(shí)。事件結(jié)構(gòu)的組織方式是把多個(gè)子框圖堆疊在一起,根據(jù)所發(fā)生的事件的不同,每次只有一個(gè)子框圖得到執(zhí)行,并且該子框圖執(zhí)行完后,事件結(jié)構(gòu)隨之退出。504.4.4. 事件結(jié)構(gòu)邊框上彈出的快捷菜單:書:P123514.4.5. “編輯事件”對(duì)話框:具體介紹詳見書P124。52LabVIEW的事件分為通知事件和過濾器事件兩種。 通知事件(綠色箭頭):當(dāng)事件發(fā)生時(shí)通知程序運(yùn)行該事件所對(duì)應(yīng)的代碼。大部分情況下使用這種事件。 過濾器事件(紅色箭頭,后帶?):當(dāng)事件發(fā)生時(shí)可以選擇是不是過濾該事件(亦即:可以定制自己的事件處理辦法)。 事件結(jié)構(gòu)必須放在While循環(huán)中,否則沒有意義。因?yàn)楫?dāng)一個(gè)事件完成以后,程序需要等待下一個(gè)事件的發(fā)生。53例子:用事件結(jié)構(gòu)編寫按鈕按下計(jì)數(shù)程序。要求:由Hit Counter 計(jì)數(shù)按下Hit Me的次數(shù)。當(dāng)5秒內(nèi)沒有按下Hit Me按鈕時(shí),出現(xiàn)超時(shí)提示。當(dāng)按下“停止”按鈕后,程序結(jié)束運(yùn)行。5-1 事件結(jié)構(gòu)之按鈕計(jì)數(shù)(657).wmv54小 結(jié) 條件結(jié)構(gòu)(Case 結(jié)構(gòu))是一種多分支程序控制結(jié)構(gòu),執(zhí)行哪個(gè)分支由選擇

溫馨提示

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

評(píng)論

0/150

提交評(píng)論