新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > labview的數據類型----無所不在的類型描述符 TYPE DESCRIPTOR

        labview的數據類型----無所不在的類型描述符 TYPE DESCRIPTOR

        作者: 時間:2017-01-09 來源:網絡 收藏
        大家都知道,LV是基于數據流的圖形編程語言.我們在單步監視LV的運行時,在連線的任何一處查看的它的數據都是相同的,確實有點數據流動的意思.

        LABVIEW的連線顏色,線條粗細代表不同的數據,差別很大的兩種類型是無法連接到一起的,可見,LV在任何時刻都知道正在流動的數據類型,它是通過什么實現的那?

        本文引用地址:http://www.104case.com/article/201701/337209.htm

        答案是:類型描述符.TYPE DESCRIPTOR

        類型描述符包括那些內容那,我們從最簡單地BOOLEAN看一下



        LABIEW隨時維護一個存儲結構,其中包括類型描述符,可以看出,BOOLEAN的存儲結構是一個I16數組,目前共有四個元素,

        0x08 0x4021 0x0343 0x4243

        第一個I16是長度字節:4*2BYTE=8 BYTE

        第二個I16是分成高位字節和低位字節兩部分:40和21(HEX),其中40是LV保留部分,21是BOOLEAN的類型碼,類型碼是一一對應的(TYPE CODE)

        第三個元素高位字節表示控件名字的長度,低位字節是名字第一個字母的ASCII,接下來是第二個字母和第三個字母.

        這里 把長度和類型碼合在一起稱做類型描述符(TYPE DESCRIPTOR)

        TYPE DESCRIPTOR:


        所以類型描述符中包括了控件數據的類型和這個存儲結構總長度,可以看出,我們例子中的BOOLEAN名稱是ABC,對應的ASCII分別是41,42,43.我們知道,BOOLEAN在內存中占一個字節,類型描述符中沒有它的值,它的值體現在它所占的內存字節中,該字節為0,則為FALSE,該字節非0,則為TRUE.

        在看看標量數值類型


        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


        其他數值標量也完全相似.它的存儲結構包括類型描述符(長度和類型碼),名稱長度和名稱的ASCII串.

        ENUM和RING本質上也是數值數據類型,不過它包含了復雜的名稱,先看看ENUM.


        可以看到,數據總長度是0x16,類型碼是0x16,0x04表示ENUM共包括四個元素,0x0241中0X02表示第一個元素名稱長度是2個字符,分別是0X41,0X41 (AA),依次,第二個元素是0X42 0X42(BB),第三個元素是0X43 0X43(CC),第四個元素是0X44,0X44(DD),最后0X0341中的高字節0X03表示枚舉的名稱字符傳長度是3個字節(字符),分別是0X41,0X42,0X43,就是ABC.


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 中卫市| 安庆市| 庆安县| 冕宁县| 安阳市| 台东市| 望谟县| 岚皋县| 嵩明县| 天气| 忻州市| 烟台市| 胶州市| 深圳市| 四川省| 镇原县| 开江县| 彭阳县| 都匀市| 鹤峰县| 乌海市| 林芝县| 东安县| 山阴县| 遵义县| 锦屏县| 颍上县| 富蕴县| 安仁县| 灵寿县| 平武县| 新巴尔虎右旗| 调兵山市| 沾益县| 收藏| 仙居县| 梓潼县| 会东县| 天等县| 都兰县| 紫云|