新闻中心

EEPW首页 > 测试测量 > 设计应用 > labview的数据类型----无所不在的类型描述符 TYPE DESCRIPTOR

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

作者:时间:2017-01-09来源:网络收藏
大家都知道,LV是基于数据流的图形编程语言.我们在单步监视LV的运行时,在连线的任何一处查看的它的数据都是相同的,确实有点数据流动的意思.

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

本文引用地址:http://www.eepw.com.cn/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 下一页

评论


技术专区

关闭