您好、欢迎来到现金彩票网!
当前位置:秒速快三 > 数据类型 >

labview的数据类型----通过类型描述符提取控件名称(LABEL)

发布时间:2019-06-11 22:32 来源:未知 编辑:admin

  labview的数据类型----通过类型描述符提取控件名称(LABEL)

  通过分析类型描述符结构,我们已经得到的类型描述符的头部信息,我们知道,LV的存储结构中同时包括了控件的标签信息,看看如何能通过描述符得到控件的标签.OPENG中提供了这个功能,我们跟踪一下看看它实现的方法:

  首先根据类型描述符头部信息中的类型码对LV的数据类型进行分类,每个CASE中的数据存储结构都是类似的.

  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是用于提取ENUM的标签的.首先看看ENUM的类型描述符的组成结构.

  类型描述符号的头部信息都是类似的,由长度,类型码组成.重点看第5个字节,这里的0X03表示枚举由3个元素组成,以下分别是第一个元素标签(这里称名称可能更合适)的长度(字符个数)和名称的相应的ASCII,分析可以得到,第一个元素名称包括两个字符,41,41,即AA,第二个元素包括两个字符,42,42,即BB,第三个包括两个字符43,43,既CC.值得注意的是接下来并不是标签的长度,而是用00来填充补位,而下一个字的高位字节才表示标签的长度,长度为2,标签字符6D6E即mn.

  CASE的条件是ENUM8..ENUM64说明,ENUM8,16,32,64结构都是相同的

  头部信息中的ELEMENTS表示一共三个元素,所以利用一个三次FOR循环,计算出标签的索引,注意有一个加余数的过程,这个就是解决上面的填充0问题,这个0不体现在长度字节中的.然后再次调用Get PString就得到了枚举的标签.实际上,上面的过程也可以得到枚举中的每个元素的名称.

  在看string,path 和picture(本质是一系列二进制数据),它们的类型描述符的结构是相同的.

  通过分析类型描述符结构,我们已经得到的类型描述符的头部信息,我们知道,LV的存储结构中同时包括了控件的标签信息,看看如何能通过描述符得到控件的标签.OPENG中提供了这个功能,我们跟踪一下看看它实现的方法:

  首先根据类型描述符头部信息中的类型码对LV的数据类型进行分类,每个CASE中的数据存储结构都是类似的.

http://starnet-france.com/shujuleixing/232.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有