<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > labview的數(shù)據(jù)類型----通過(guò)類型描述符提取控件名稱(LABEL)

          labview的數(shù)據(jù)類型----通過(guò)類型描述符提取控件名稱(LABEL)

          作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏

          先看看第一個(gè)CASE: 條件是:"I8".."CXT", "Boolean", "Variant" ,這說(shuō)明從I8--->"CXT",包括BOOLEAN VARIANT類型描述符的結(jié)構(gòu)都是類似的.看看I8 和BOOLEAN的類型描述符的內(nèi)容,我們分析一下.


          I8和BOOLEAN除了類型碼不同(0X01,0X21),其它結(jié)構(gòu)完全相同.第一個(gè)字(兩個(gè)字節(jié))表示存儲(chǔ)結(jié)構(gòu)的長(zhǎng)度,*2表示字節(jié)數(shù).

          0X40是LABVIEW保留的.第三個(gè)字的高位字節(jié)0X02表示名稱包括兩個(gè)字節(jié)(字符,ASCII).可以看出它的標(biāo)簽是aa.

          前4個(gè)字節(jié)(兩個(gè)字I16)是類型描述符的頭部信息,第5個(gè)字節(jié)0X02表示名稱的長(zhǎng)度是2個(gè)字符,這樣,通過(guò)把類型描述符的結(jié)構(gòu)轉(zhuǎn)換成U8數(shù)組或者16進(jìn)制字符串,就可以拆分出它的標(biāo)簽信息.



          左邊的圖通過(guò)鑄模函數(shù),把I16數(shù)組轉(zhuǎn)換成16進(jìn)制字符串,通過(guò)一個(gè)Get PString(有點(diǎn)類似C指針),提取出標(biāo)簽.

          右邊的圖是Get PString的程序框圖,因?yàn)橐院笠?jīng)常用到,重點(diǎn)解釋一下.

          我們前文談到過(guò),字符串和U8數(shù)組在內(nèi)存中的存儲(chǔ)形式是完全相同的,所以操作字符串和操作U8數(shù)組是等價(jià)的.

          表示名稱長(zhǎng)度信息在第5個(gè)字節(jié)中,所以首先用索引數(shù)組取出第5個(gè)字節(jié)(索引4,ARRAY?gòu)乃饕伴_(kāi)始)

          通過(guò)截取字符串函數(shù),字符串長(zhǎng)度參數(shù)是剛剛從數(shù)組中取出的,開(kāi)始位置是4+1(去掉長(zhǎng)度字節(jié)),至此,完成了

          提取標(biāo)簽信息.

          枚舉類型的類型描述符結(jié)構(gòu)是不同于I8,U8的,下一個(gè)CASE是用于提取ENUM的標(biāo)簽的.首先看看ENUM的類型描述符的組成結(jié)構(gòu).



          類型描述符號(hào)的頭部信息都是類似的,由長(zhǎng)度,類型碼組成.重點(diǎn)看第5個(gè)字節(jié),這里的0X03表示枚舉由3個(gè)元素組成,以下分別是第一個(gè)元素標(biāo)簽(這里稱名稱可能更合適)的長(zhǎng)度(字符個(gè)數(shù))和名稱的相應(yīng)的ASCII,分析可以得到,第一個(gè)元素名稱包括兩個(gè)字符,41,41,即AA,第二個(gè)元素包括兩個(gè)字符,42,42,即BB,第三個(gè)包括兩個(gè)字符43,43,既CC.值得注意的是接下來(lái)并不是標(biāo)簽的長(zhǎng)度,而是用00來(lái)填充補(bǔ)位,而下一個(gè)字的高位字節(jié)才表示標(biāo)簽的長(zhǎng)度,長(zhǎng)度為2,標(biāo)簽字符6D?。叮偶磎n.

          看看OPENG是如何提取ENUM標(biāo)簽的.


          頭部信息中的ELEMENTS表示一共三個(gè)元素,所以利用一個(gè)三次FOR循環(huán),計(jì)算出標(biāo)簽的索引,注意有一個(gè)加余數(shù)的過(guò)程,這個(gè)就是解決上面的填充0問(wèn)題,這個(gè)0不體現(xiàn)在長(zhǎng)度字節(jié)中的.然后再次調(diào)用Get PString就得到了枚舉的標(biāo)簽.實(shí)際上,上面的過(guò)程也可以得到枚舉中的每個(gè)元素的名稱.




          結(jié)構(gòu)基本相同,從第9個(gè)字符開(kāi)始是標(biāo)簽長(zhǎng)度,接下來(lái)是ASCII,所以與U8,BOOLEAN調(diào)用除了開(kāi)始索引位置不同,調(diào)用方法完全相同.


          其它的,比如數(shù)組,簇等,就不多介紹了.


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();