您的位置 首页 系统

labview的数据类型—-经过类型描述符提取控件称号(LABEL)

通过分析类型描述符结构,我们已经得到的类型描述符的头部信息,我们知道,LV的存储结构中同时包括了控件的标签信息,看看如何能通过描述符得到

经过剖析类型描绘符结构,咱们现已得到的类型描绘符的头部信息,咱们知道,LV的存储结构中一起包含了控件的标签信息,看看怎么能经过描绘符得到控件的标签.OPENG中供给了这个功用,咱们盯梢一下看看它完成的办法:

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

先看看榜首个CASE: 条件是:”I8″..”CXT”, “Boolean”, “Variant” ,这阐明从I8—>”CXT”,包含BOOLEAN VARIANT类型描绘符的结构都是相似的.看看I8 和BOOLEAN的类型描绘符的内容,咱们剖析一下.

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,标签字符6D 6E即mn.

看看OPENG是怎么提取ENUM标签的.

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

头部信息中的ELEMENTS表明总共三个元素,所以使用一个三次FOR循环,计算出标签的索引,留意有一个加余数的进程,这个便是处理上面的填充0问题,这个0不体现在长度字节中的.然后再次调用Get PString就得到了枚举的标签.实际上,上面的进程也能够得到枚举中的每个元素的称号.

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

经过剖析类型描绘符结构,咱们现已得到的类型描绘符的头部信息,咱们知道,LV的存储结构中一起包含了控件的标签信息,看看怎么能经过描绘符得到控件的标签.OPENG中供给了这个功用,咱们盯梢一下看看它完成的办法:

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/211687.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部