labview的数据类型----无所不在的类型描述符 TYPE DESCRIPTOR

2015-08-26 10:10:48   来源:eefocus   

关键字: labview  数据类型  类型描述符

大家都知道,LV是基于数据流的图形编程语言.我们在单步监视LV的运行时,在连线的任何一处查看的它的数据都是相同的,确实有点数据流动的意思.

LABVIEW的连线颜色,线条粗细代表不同的数据,差别很大的两种类型是无法连接到一起的,可见,LV在任何时刻都知道正在流动的数据类型,它是通过什么实现的那?

答案是:类型描述符.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*2B   CODE=05 2 CAHR  55->U 38->8

U16:0X0008 0X4006 0X355 0X3136

 8*2B   CODE=06 3 CAHR  55->U 31->1 36->6

DBL: 0X0008 0X400A 0X0344 0X424C

      8*2B   CODE=0A 3 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]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

推荐阅读

编辑:什么鱼
本文引用地址: http://www.eeworld.com.cn/Test_and_measurement/2015/0826/article_12939.html
[发表评论]
[加入收藏]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
每日新闻
最热点击
本周热门资源推荐
EEWORLD独家
论坛精华
精选博文