天天看點

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

本節書摘來自華章計算機《arduino開發實戰指南:labview卷》一書中的第3章,第3.4節,作者:餘崇梓著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

3.4.1 資料類型

labview的控件按其傳遞的資料類型可分為字元串型、數值型、布爾型、數組、簇、枚舉等;按作用範圍又可分為局部變量和全局變量。

1.字元串型

字元串控件是字元串資料的容器,字元串控件的值屬性是字元串。如同其他類型控件一樣,labview的字元串控件也分為輸入控件和顯示控件。輸入控件的值可以由使用者通過滑鼠或者鍵盤來改變,而顯示控件則不允許使用者直接輸入,隻能通過資料流的方式,顯示字元串資訊。字元串及路徑(string & path)控件選闆如圖3-16所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

一些常用的字元串應用包括:

1)建立簡單的文本資訊。

2)發送文本指令至儀器,以ascii碼或二進制字元串的形式傳回資料,然後轉換為數值,進而實作儀器控制。

3)将數值資料存盤。要将數值資料存入ascii碼檔案,必須在将資料寫入磁盤檔案之前将這些數值資料轉換成字元串。

4)以對話框訓示或提示使用者。

在前面闆上,字元串以表格(table)、文本輸入框(text entry box)和标簽(label)的形式出現。labview包含内置vi和函數,可用來操作字元串,如将字元串格式化、解析字元串及其他編輯操作。字元串函數選闆如圖3-17所示。labview中的字元串以粉色表示。

2.數值型

labview以浮點數、定點數、整數、無符号整數以及複數表示數值資料。雙精度和單精度以及複數數值資料在labview中以橙色表示。藍色則代表所有整數的數值資料。數值資料類型控件選闆如圖3-18所示,數值函數選闆如圖3-19所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算
《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

某些資料類型也提供擴充的配置選項。例如,可為浮點資料包括複數使用實體測量機關,還可為定點資料配置編碼和範圍。

一般來說,數值存儲所占位數(位元組)越長,表示的數值範圍就越大,精度也越高,但計算速度越慢,占用存儲空間越大,是以要根據程式的需要合理地選擇合适的資料類型。

3.布爾型

labview中布爾值可以代表0或1、true或false。布爾資料常見的應用有:表示布爾值資料、作為前面闆控制開關、控制執行結構,如條件結構。布爾控件通常用于退出while循環。在labview中,用綠色代表布爾型資料。布爾控件選闆如圖3-20所示。布爾函數選闆如圖3-21所示。

4.數組

在labview中使用數組和簇将相關資料歸為一組。數組将相同類型的資料組合成一個資料結構,簇将多個資料類型的資料組合成一個資料結構。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算
《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算
《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

數組由元素和次元組成。元素是組成數組的資料。而次元是數組的長度、高度或深度。 數組可以是一維或多元的。可以建立數值、布爾型、路徑、字元串、波形和簇等資料類型的數組。在對一組類似資料進行操作并重複計算時,可以考慮使用數組。數組對于用來存儲從波形中收集的或在循環中生成的資料(每次循環生成數組中的一個元素)是比較理想的。

數組控件選闆如圖3-22所示,數組函數選闆如圖3-23所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算
《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

labview中的數組索引以零為起點。無論是具有幾個次元的數組,其索引的第一個元素均為零。數組元素是有序的。數組使用索引,便于友善地通路數組中任一個特定的元素。索引是基于零開始的,也就是說索引的範圍是0~n-1,其中n是數組中元素的個數。比如,對于一年中的12個月,n = 12,是以索引的範圍是0~11,三月份的索引就為2。

如試圖在數組外框中放入一個無效的輸入控件或顯示控件,該操作将無法實作。在使用程式框圖中的數組之前,必須先在數組外框中插入一個對象。否則,數組接線端會顯示為一個黑的空括号,數組中沒有和它相關聯的資料類型。

(1)二維數組

如需在前面闆上添加一個多元數組控件,可右鍵單擊索引框,并從快捷菜單中選擇添加次元。 也可以改變索引顯示框的大小,直至出現所需維數。

(2)初始化數組

數組可以進行初始化,或者不初始化。數組初始化時,需要定義每個次元的元素個數和每個元素的内容。一個未初始化的數組包含固定的維數,但不包含任何元素。

在一個二維數組中,在一列中的某個元素初始化後,那一列中的其餘元素都将自動初始化,并被賦予相應資料類型的預設值。

(3)建立數組常量

如需在程式框圖中建立數組常量,可先從函數選闆上選擇數組常量,将數組外框放置于程式框圖上,然後将字元串常量、數值常量、布爾常量或簇常量放入數組外框。數組常量用于存儲常量資料或用于同另一個數組進行比較。

(4)自動索引數組輸出

将數組連線到for循環或者while循環時,通過自動索引可将每次疊代與數組中的一個元素相連。隧道圖示從方形變為該圖像,這表示已使用自動索引。右鍵單擊隧道,從快捷菜單中選擇啟用索引或禁用索引,可以切換隧道的狀态。

(5)數組輸入

如果使連接配接到for循環輸入接線端的數組自動索引有效,labview會将計數接線端設定為數組大小。這樣,使用者就可以不必進行計數接線端連線了,因為for循環一次可以處理數組中的一個元素,是以,在預設情況下,labview對連接配接到for循環的每個數組均啟用自動索引。如不需要一次處理數組中的一個元素,可以禁用自動索引。

如果有多個隧道啟用自動索引,或對計數接線端進行連線,實際的循環次數将取其中較小的值。例如,如果兩個啟用自動索引的數組進入循環,分别含有10個和20個元素,同時将值15連接配接到總數接線端,這時該循環仍将隻執行10次,并且對第一個數組的所有元素建立索引,對第二個數組中的前10個元素建立索引。

(6)數組輸出

當自動索引數組輸出隧道時,數組将在循環的每一次重複中接收一個新元素。是以,自動索引輸出數組的大小等于循環的次數。

從輸出隧道到數組顯示控件的連線将随着連到循環邊框的數組而變粗,同時,輸出隧道内包含的方括号代表數組。

用滑鼠右鍵點選循環邊框上的隧道,并從快捷菜單中選擇啟用自動索引或禁用自動索引,可以使自動索引有效或無效。while循環預設為禁用自動索引。

例如,如果隻需隧道輸出最後一個值,可禁用自動索引。

(7)建立二維數組

使用兩個for循環,一個嵌套在另一個内部,可建立一個二維數組。外部的for循環建立了行元素,内部的for循環建立了列元素。

5.簇

簇将不同類型的資料元素分組。labview錯誤簇是簇的一個例子,它包含一個布爾值、一個數值和一個字元串。簇類似于文本程式設計語言中的記錄或結構體。

簇控件選闆如圖3-24所示,簇函數選闆如圖3-25所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

将幾個資料元素捆綁成簇可以消除程式框圖上連線的混亂,減少子vi所需連接配接器接線端的數目。連接配接器最多可以有28個接線端。如果前面闆上要傳送給另一個vi的輸入控件和顯示控件多于28個,應将其中的一些對象分組成為一個簇,然後将該簇配置設定到連接配接器上 的一個接線端。

程式框圖上的絕大多數簇都含有一個粉紅色的接線模型和資料類型接線端。錯誤簇的連線模型和資料類型接線端顯示為深黃色;數值簇,有時也稱為點,就含有一個褐色的接線模型和資料類型接線端。褐色的數值簇可以連接配接到數值函數,例如,“加”或“平方根”函數可用于對簇中所有元素同時進行相同的運算。

(1)簇元素順序

簇和數組元素都是有序的,必須使用解除捆綁函數一次取消捆綁的所有元素。也可使用按名稱解除捆綁函數,按名稱解除捆綁簇元素。如使用按名稱解除捆綁函數,則每個簇元素都必須帶有标簽。簇不同于數組的地方還包括簇的大小是固定的。與數組一樣,一個簇裡面要麼全是輸入控件要麼全是顯示控件。簇不能同時含有輸入控件和顯示控件。

(2)建立簇控件

可以通過以下方式在前面闆上建立一個簇輸入控件或簇顯示控件:在前面闆上添加一個簇外框,再将一個資料對象或元素拖曳到簇外框中,資料對象或元素可以是數值型、布爾型、字元串、路徑、引用句柄、簇輸入控件或簇顯示控件。

放置簇外框時,通過拖曳光标可以改變簇的大小。

(3)建立簇常量

如需在程式框圖中建立一個簇常量,可從函數選闆中選擇一個簇常量,将簇外框放置于程式框圖上,再将字元串常量、數值常量、布爾常量或簇常量放置到該簇外框中。簇常量用于存儲常量資料或用于同另一個簇進行比較。

如果需要在前面闆視窗中放置一個簇輸入控件或者簇顯示控件,并且在程式框圖中建立一個包含同樣元素的簇常量,使用者可以從前面闆視窗中将該簇拖曳到程式框圖中,或者在前面闆視窗中右鍵單擊該簇,從快捷菜單中選擇create→constant。

(4)使用簇函數

使用簇函數建立簇并對其進行操作。比如,可以執行以下操作:

從簇中提取單個資料元素。

向簇添加單個資料元素。

将簇分裂成單個資料元素。

“捆綁”函數用于集合一個簇;“捆綁”和“按名稱捆綁”函數用于修改一個簇;而“解除捆綁”和“按名稱解除捆綁”函數用于分解一個簇。

在程式框圖中右鍵單擊簇接線端,從快捷菜單中選擇簇、類和變體選闆,可以在程式框圖上放置“捆綁”、“按名稱捆綁”、“解除捆綁”和“按名稱解除捆綁”函數。“捆綁”和“解除捆綁”函數自動包含正确的接線端數字。“按名稱捆綁”和“按名稱解除捆綁”函數随簇中的第一個元素同時出現。使用定位工具可以調整“按名稱捆綁”和“按名稱解除捆綁”函數的大小,顯示簇中的其他元素。

(5)集合簇

“捆綁”函數用于将單個元素集合成簇,或者在不必為所有元素指定新值的情況下,改變現有簇中單個元素的值。使用定位工具或者右鍵單擊一個元素輸入,從快捷菜單中選擇添加輸入,可調整函數的尺寸大小。

(6)修改簇

如果要對簇輸入進行連線,使用者隻須對需要改變的元素進行連線。

“按名稱捆綁”函數也可替換或者通路現有簇中帶标簽的元素。“按名稱捆綁”函數的工作方式同“捆綁”函數類似,但是它以自身标簽為引用,而不是其在簇中的順序。隻能根據自身标簽對元素進行通路。輸入的個數不需要與輸出簇中元素的個數相比對。

使用操作工具單擊一個輸入接線端并在下拉菜單中選擇一個元素。也可以右鍵單擊輸入端,從選擇項快捷菜單中選擇元素。

“按名稱捆綁”函數用于在開發過程中可能會出現的需要改變資料結構的情況。如果為簇添加一個新元素或者改變元素的順序,無須對“按名稱捆綁”函數重新連線,因為這些名稱仍然有效。

(7)分解簇

“解除捆綁”函數用于将簇分解為單個元素。

“按名稱解除捆綁”函數用于根據指定的元素名稱傳回單個簇元素。輸出接線端的個數不依賴于輸入簇中的元素個數。

使用操作工具單擊一個輸入接線端,從下拉菜單中選擇一個元素。也可以右鍵單擊輸出接線端,從選擇項快捷菜單中選擇元素。

6.枚舉

labview中的枚舉類型和c語言中的枚舉類型定義相同。它提供了一個選項清單,其中每一項都包含一個字元串辨別和數字辨別,數字辨別與每一選項在清單中的順序一一對應,枚舉類型控件選闆如圖3-26所示,枚舉類型編輯界面如圖3-27所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算
《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

枚舉型資料非常有用,因為在程式框圖上處理數字要比處理字元串簡單得多。

3.4.2 資料運算

labview中有非常豐富的資料運算功能,如數值運算、關系運算、邏輯運算等,還有許多功能強大的函數可供使用。

1.數值運算

labview提供了非常多的資料運算函數,除了基本的數值運算外,還有類型轉換、複數、定點數、數學和科學常數等,如圖3-28所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

2.關系運算

關系運算也稱為比較運算,用來判斷并進行資料比較,判斷資料間的大小關系等。關系運算函數選闆如圖3-29所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算

3.邏輯運算

邏輯運算也稱為布爾運算,用于進行資料間的邏輯運算,比如資料間的“與”、“或”、“非”、“同或”、“異或”等,labview中邏輯運算符的圖示和數字電路中邏輯運算符的圖示非常相似。邏輯運算函數選闆如圖3-30所示。

《Arduino開發實戰指南:LabVIEW卷》——3.4 LabVIEW的資料類型及運算