新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > labview的數據類型----通過類型描述符提取控件名稱(LABEL)

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

        作者: 時間:2017-01-09 來源:網絡 收藏

        先看看第一個CASE: 條件是:"I8".."CXT", "Boolean", "Variant" ,這說明從I8--->"CXT",包括BOOLEAN VARIANT類型描述符的結構都是類似的.看看I8 和BOOLEAN的類型描述符的內容,我們分析一下.


        I8和BOOLEAN除了類型碼不同(0X01,0X21),其它結構完全相同.第一個字(兩個字節)表示存儲結構的長度,*2表示字節數.

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

        前4個字節(兩個字I16)是類型描述符的頭部信息,第5個字節0X02表示名稱的長度是2個字符,這樣,通過把類型描述符的結構轉換成U8數組或者16進制字符串,就可以拆分出它的標簽信息.



        左邊的圖通過鑄模函數,把I16數組轉換成16進制字符串,通過一個Get PString(有點類似C指針),提取出標簽.

        右邊的圖是Get PString的程序框圖,因為以后要經常用到,重點解釋一下.

        我們前文談到過,字符串和U8數組在內存中的存儲形式是完全相同的,所以操作字符串和操作U8數組是等價的.

        表示名稱長度信息在第5個字節中,所以首先用索引數組取出第5個字節(索引4,ARRAY從索引0開始)

        通過截取字符串函數,字符串長度參數是剛剛從數組中取出的,開始位置是4+1(去掉長度字節),至此,完成了

        提取標簽信息.

        枚舉類型的類型描述符結構是不同于I8,U8的,下一個CASE是用于提?。牛危眨偷臉撕灥模紫瓤纯矗牛危眨偷念愋兔枋龇慕M成結構.



        類型描述符號的頭部信息都是類似的,由長度,類型碼組成.重點看第5個字節,這里的0X03表示枚舉由3個元素組成,以下分別是第一個元素標簽(這里稱名稱可能更合適)的長度(字符個數)和名稱的相應的ASCII,分析可以得到,第一個元素名稱包括兩個字符,41,41,即AA,第二個元素包括兩個字符,42,42,即BB,第三個包括兩個字符43,43,既CC.值得注意的是接下來并不是標簽的長度,而是用00來填充補位,而下一個字的高位字節才表示標簽的長度,長度為2,標簽字符6D 6E即mn.

        看看OPENG是如何提?。牛危眨蜆撕灥模?p>

        頭部信息中的ELEMENTS表示一共三個元素,所以利用一個三次FOR循環,計算出標簽的索引,注意有一個加余數的過程,這個就是解決上面的填充0問題,這個0不體現在長度字節中的.然后再次調用Get PString就得到了枚舉的標簽.實際上,上面的過程也可以得到枚舉中的每個元素的名稱.




        結構基本相同,從第9個字符開始是標簽長度,接下來是ASCII,所以與U8,BOOLEAN調用除了開始索引位置不同,調用方法完全相同.


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


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 枣阳市| 大新县| 淮北市| 柳州市| 隆回县| 连江县| 宁城县| 新兴县| 甘泉县| 河北省| 奉化市| 鱼台县| 衡阳市| 甘德县| 井研县| 汝南县| 电白县| 大余县| 宁阳县| 定安县| 蓬莱市| 浑源县| 隆昌县| 肇源县| 格尔木市| 沐川县| 舒兰市| 石门县| 怀宁县| 武隆县| 邯郸县| 霞浦县| 比如县| 宁安市| 昭觉县| 高陵县| 扶风县| 板桥市| 桓仁| 通州市| 营口市|