labview的數(shù)據(jù)類型----無所不在的類型描述符 TYPE DESCRIPTOR
LABVIEW的連線顏色,線條粗細代表不同的數(shù)據(jù),差別很大的兩種類型是無法連接到一起的,可見,LV在任何時刻都知道正在流動的數(shù)據(jù)類型,它是通過什么實現(xiàn)的那?
本文引用地址:http://www.ex-cimer.com/article/201701/337209.htm答案是:類型描述符.TYPE DESCRIPTOR
類型描述符包括那些內(nèi)容那,我們從最簡單地BOOLEAN看一下
LABIEW隨時維護一個存儲結(jié)構(gòu),其中包括類型描述符,可以看出,BOOLEAN的存儲結(jié)構(gòu)是一個I16數(shù)組,目前共有四個元素,
0x08 0x4021 0x0343 0x4243
第一個I16是長度字節(jié):4*2BYTE=8 BYTE
第二個I16是分成高位字節(jié)和低位字節(jié)兩部分:40和21(HEX),其中40是LV保留部分,21是BOOLEAN的類型碼,類型碼是一一對應的(TYPE CODE)
第三個元素高位字節(jié)表示控件名字的長度,低位字節(jié)是名字第一個字母的ASCII,接下來是第二個字母和第三個字母.
這里 把長度和類型碼合在一起稱做類型描述符(TYPE DESCRIPTOR)
TYPE DESCRIPTOR:
所以類型描述符中包括了控件數(shù)據(jù)的類型和這個存儲結(jié)構(gòu)總長度,可以看出,我們例子中的BOOLEAN名稱是ABC,對應的ASCII分別是41,42,43.我們知道,BOOLEAN在內(nèi)存中占一個字節(jié),類型描述符中沒有它的值,它的值體現(xiàn)在它所占的內(nèi)存字節(jié)中,該字節(jié)為0,則為FALSE,該字節(jié)非0,則為TRUE.
在看看標量數(shù)值類型
U8: 0X0008 0X4005 0X0255 0X3800
8*2BCODE=052 CAHR 55->U 38->8
U16:0X0008 0X4006 0X355 0X3136
8*2BCODE=063 CAHR 55->U 31->1 36->6
DBL: 0X0008 0X400A 0X0344 0X424C
8*2BCODE=0A3 CAHR 44->D 42->B 4C->L
其他數(shù)值標量也完全相似.它的存儲結(jié)構(gòu)包括類型描述符(長度和類型碼),名稱長度和名稱的ASCII串.
ENUM和RING本質(zhì)上也是數(shù)值數(shù)據(jù)類型,不過它包含了復雜的名稱,先看看ENUM.
可以看到,數(shù)據(jù)總長度是0x16,類型碼是0x16,0x04表示ENUM共包括四個元素,0x0241中0X02表示第一個元素名稱長度是2個字符,分別是0X41,0X41 (AA),依次,第二個元素是0X42 0X42(BB),第三個元素是0X43 0X43(CC),第四個元素是0X44,0X44(DD),最后0X0341中的高字節(jié)0X03表示枚舉的名稱字符傳長度是3個字節(jié)(字符),分別是0X41,0X42,0X43,就是ABC.
評論