久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 測試測量 > 設計應用 > LabVIEW的數據類型、存儲格式

LabVIEW的數據類型、存儲格式

作者: 時間:2017-01-06 來源:網絡 收藏
先了解控件和數據類型的關系。LV控件面板上的圖標都是典型的控件,說通俗一些,控件就是一個包含很多屬性的容器,值是控件的一個屬性,如下圖所示的數字輸入控件,值的數據類型就是控件所代表的數據類型,描述一個控件是通過類型描述符實現的,包括控件的名稱、控件類型及控件所代表的數據類型等等。了解LV的數據類型是非常有必要的。特別是使用DLLs(shared libraries)、CINs(code interface nodes)或需要利用文件I/O往文件寫入/讀取二進制數(binary data)的用戶,更有必須了解數據結構類型及在內存中存儲格式

本文引用地址:http://cqxgywz.com/article/201701/336641.htm

數據類型之一——數字(Numeric)

包括:byte、word、long、SGL、DBL等

數據類型之二——數值型數組(Array)

存儲為一個句柄(handle,指針的指針),指向的結構包括一個數值(I32)和一個數組,數值表達數組的大小,數組的元素表達每一個數字,這些數字在內存中連續存儲。

提示:為了正確對齊數字,在第一個數字前可能需要附加一些字節數。當句柄為0,則是空數組。下列兩圖分別描述一維單精度(SGL)浮點數組、四維字整數(I16)數組,左邊的數字代表偏移(offset)數組在內存起始存儲位置的字節數。

其他數據類型

布爾、字符串、字符串數組、簇、路徑

布爾(Boolean)型數據是字節型數據,存儲為8位數值(一個字節),數值0表示False,其余數值代表True。布爾數組的存儲格式如下圖所示:

字符串(string)是一個字符型數組,存儲為一個句柄(handle),指向的結構包括一個數值和一個數組(與數值型數組相同)。數組每個成員表達一個字符,數值表達數組長度。

字符串數組(Array of Strings)是非常特殊的數據類型,這也是CLF和CIN的難點。字符串在內存中是連續存儲的,但是,字符串數組卻與一般連續存放的二維數組不同,其元素(字符串)是以長度開頭連續存儲的,而字符串數組本身是存儲在內存中另外位置的。(通過句柄與字符串建立聯系)

提示:

1:和其他類型的數組一樣,字符串數組也是以I32長度開頭的,接下是每個字符串的首地址指針(句柄)——U32數值,表示字符串在內存中的地址(第一個字符)。由于字符串數組需要從內存的不同區域訪問字符串(連續存儲),會耗費更多的時間,因此,用一個長的字符串代替字符串數組,程序會更加高效。

2:LV是以句柄(Handle)描述數組和字符串,Handle本身是U32,占四個字節,它包含的內容是指向一個數據結構的指針,因為數據結構在內存中是可以重新分配的,所以它的地址會經常發生變化,而Handle的地址是不會變化的,通過Handle就可以跟蹤數據結構。另外,對于每個數組和字符串,在長度信息之前還有一個16個字節的頭部信息,(LV內部使用,類型描述符),因此一個最簡單的數組至少占24個字節:HANDLE(U32)+HEADER(16Byte)+SIZE(I32)=24 BYTE。

簇是一種數據類型,一個簇是一個由若干數據類型的成員組成的集合體,類似于C語言中的結構體和Pascal語言中的記錄。簇的成員有一種邏輯上的順序,這是由它們放進去的先后順序決定的,與它們在簇中擺放的位置無關。前面的成員被刪除時,后面的成員會遞補。改變簇成員邏輯順序的方法是在簇上彈出快捷菜單,選Reorder Controls In Cluster…彈出一個對話框,為簇成員設置新的邏輯順序。

在內存中,簇直接存放標量數據(numeric)。對于數組、字符串或路徑,簇只是存儲這些數據類型的的首地址指針。不同操作平臺(OS)在數據對齊有所差異,為確保存儲數據的第一個元素對齊,可能需要往這個元素前添加一些字節數。下列圖形顯示一個簇(元素包括單精度浮點數、擴展精度浮點數和一個指向一維無符號字整型數組的首地址指針)在不同操作系統下的存儲格式。

提示:簇可以直接嵌套簇,簇間接存儲的數據(指針)只有數組、字符串或路徑這三種數據類型。下圖顯示簇(元素兩個標量數字加一個數組)和簇(元素為一個帶兩個標量數字的簇和一個數組)具有相同的存儲方式。

路徑

路徑:使用標準的Windows語法,可以使用相對路徑和絕對路徑。存儲為路徑類型、路徑成員數和路徑成員。



評論


技術專區

關閉