labview的數(shù)據(jù)類型----無(wú)所不在的類型描述符 TYPE DESCRIPTOR
LABVIEW的連線顏色,線條粗細(xì)代表不同的數(shù)據(jù),差別很大的兩種類型是無(wú)法連接到一起的,可見,LV在任何時(shí)刻都知道正在流動(dòng)的數(shù)據(jù)類型,它是通過(guò)什么實(shí)現(xiàn)的那?
本文引用地址:http://m.butianyuan.cn/article/201701/337209.htm答案是:類型描述符.TYPE DESCRIPTOR
類型描述符包括那些內(nèi)容那,我們從最簡(jiǎn)單地BOOLEAN看一下
LABIEW隨時(shí)維護(hù)一個(gè)存儲(chǔ)結(jié)構(gòu),其中包括類型描述符,可以看出,BOOLEAN的存儲(chǔ)結(jié)構(gòu)是一個(gè)I16數(shù)組,目前共有四個(gè)元素,
0x08 0x4021 0x0343 0x4243
第一個(gè)I16是長(zhǎng)度字節(jié):4*2BYTE=8 BYTE
第二個(gè)I16是分成高位字節(jié)和低位字節(jié)兩部分:40和21(HEX),其中40是LV保留部分,21是BOOLEAN的類型碼,類型碼是一一對(duì)應(yīng)的(TYPE CODE)
第三個(gè)元素高位字節(jié)表示控件名字的長(zhǎng)度,低位字節(jié)是名字第一個(gè)字母的ASCII,接下來(lái)是第二個(gè)字母和第三個(gè)字母.
這里 把長(zhǎng)度和類型碼合在一起稱做類型描述符(TYPE DESCRIPTOR)
TYPE DESCRIPTOR:
所以類型描述符中包括了控件數(shù)據(jù)的類型和這個(gè)存儲(chǔ)結(jié)構(gòu)總長(zhǎng)度,可以看出,我們例子中的BOOLEAN名稱是ABC,對(duì)應(yīng)的ASCII分別是41,42,43.我們知道,BOOLEAN在內(nèi)存中占一個(gè)字節(jié),類型描述符中沒(méi)有它的值,它的值體現(xiàn)在它所占的內(nèi)存字節(jié)中,該字節(jié)為0,則為FALSE,該字節(jié)非0,則為TRUE.
在看看標(biāo)量數(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ù)值標(biāo)量也完全相似.它的存儲(chǔ)結(jié)構(gòu)包括類型描述符(長(zhǎng)度和類型碼),名稱長(zhǎng)度和名稱的ASCII串.
ENUM和RING本質(zhì)上也是數(shù)值數(shù)據(jù)類型,不過(guò)它包含了復(fù)雜的名稱,先看看ENUM.
可以看到,數(shù)據(jù)總長(zhǎng)度是0x16,類型碼是0x16,0x04表示ENUM共包括四個(gè)元素,0x0241中0X02表示第一個(gè)元素名稱長(zhǎng)度是2個(gè)字符,分別是0X41,0X41 (AA),依次,第二個(gè)元素是0X42 0X42(BB),第三個(gè)元素是0X43 0X43(CC),第四個(gè)元素是0X44,0X44(DD),最后0X0341中的高字節(jié)0X03表示枚舉的名稱字符傳長(zhǎng)度是3個(gè)字節(jié)(字符),分別是0X41,0X42,0X43,就是ABC.
評(píng)論