• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > Labview 虚拟仪器 > labview的数据类型----无所不在的类型描述符 TYPE DESCRIPTOR

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

录入:edatop.com    点击:
大家都知道,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*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. [p]

下面给出完整的类型描述符表:

Data Types

The following tables list numeric and nonnumeric data types, type codes, and type descriptors.

Data TypeType Code (numbers in hexadecimal)Type Descriptor (numbers in hexadecimal

8-bit Integer

01

0004xx01

16-bit Integer

02

0004xx02

32-bit Integer

03

0004xx03

64-bit Integer

04

0004xx04

Unsigned 8-bit Integer

05

0004xx05

Unsigned 16-bit Integer

06

0004xx06

Unsigned 32-bit Integer

07

0004xx07

Unsigned 64-bit Integer

08

0004xx08

Single-Precision Floating-Point Number

09

0004xx09

Double-Precision Floating-Point Number

0A

0004xx0A

Extended-Precision Floating-Point Number

0B

0004xx0B

Single-Precision Complex Floating-Point Number

0C

0004xx0C

Double-Precision Complex Floating-Point Number

0D

0004xx0D

Extended-Precision Complex Floating-Point Number

0E

0004xx0E

Enumerated 8-bit Integer

15

xx15

Enumerated 16-bit Integer

16

xx16

Enumerated 32-bit Integer

17

xx17

Single-Precision Physical Quantity

19

xx19

Double-Precision Physical Quantity

1A

xx1A

Extended-Precision Physical Quantity

1B

xx1B

Single-Precision Complex Physical Quantity

1C

xx1C

Double-Precision Complex Physical Quantity

1D

xx1D

Extended-Precision Complex Physical Quantity

1E

xx1E

n=length;x=reserved; k=number; k pstrs=number of Pascal strings; k base-exp=number ofbase-exponent pairs.


Data TypeType Code (numbers in hexadecimal)Type Descriptor (numbers in hexadecimal)

Boolean

21

0004xx21

String

30

0008xx30

Path

32

0008xx32

Picture

33

0008xx33

Array

40

xx40

Cluster

50

xx50

Waveform

54

xx54

Refnum

70

Variant

53

xx53

n=length;x=reserved; k=number; k pstrs=number of Pascal strings; k base-exp=number of base-exponent pairs. A dim is a 32-bit integer. The following sections provide examples of data and type descriptors.

OPENG中提供了大量的利用类型描述符的功能节点,并且源代码是完全开放的,仔细跟踪它的程序设计方法对我们更好地理解LABVIEW非常有帮助.

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:labview的深入探索----文件系列之数据记录文件
下一篇:labview的深入探索----如何实现类似C的函数指针调用

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图