LabVIEW的数据类型、存储格式

2015-10-19 10:08:34来源: eefocus
先了解控件和数据类型的关系。LV控件面板上的图标都是典型的控件,说通俗一些,控件就是一个包含很多属性的容器,值是控件的一个属性,如下图所示的数字输入控件,值的数据类型就是控件所代表的数据类型,描述一个控件是通过类型描述符实现的,包括控件的名称、控件类型及控件所代表的数据类型等等。了解LV的数据类型是非常有必要的。特别是使用DLLs(shared libraries)、CINs(code interface nodes)或需要利用文件I/O往文件写入/读取二进制数(binary data)的用户,更有必须了解数据结构类型及在内存中存储格式

 

数据类型之一——数字(Numeric)

包括:byte、word、long、SGL、DBL等

 

 

 

数据类型之二—— 数值型数组(Array)

存储为一个句柄(handle,指针的指针),指向的结构包括一个数值(I32)和一个数组,数值表达数组的大小,数组的元素表达每一个数字,这些数字在内存中连续存储。

提示:为了正确对齐数字,在第一个数字前可能需要附加一些字节数。当句柄为0,则是空数组。下列两图分别描述一维单精度(SGL)浮点数组、四维字整数(I16)数组,左边的数字代表偏移(offset)数组在内存起始存储位置的字节数。

 

其他数据类型

布尔、字符串、字符串数组、簇、路径

布尔(Boolean)型数据是字节型数据,存储为8位数值(一个字节),数值0表示False,其余数值代表True。布尔数组的存储格式如下图所示:

字符串(string)是一个字符型数组,存储为一个句柄(handle),指向的结构包括一个数值和一个数组(与数值型数组相同)。数组每个成员表达一个字符,数值表达数组长度。

 

  字符串数组(Array of Strings)是非常特殊的数据类型,这也是CLF和CIN的难点。字符串在内存中是连续存储的,但是,字符串数组却与一般连续存放的二维数组不同,其元素(字符串)是以长度开头连续存储的,而字符串数组本身是存储在内存中另外位置的。(通过句柄与字符串建立联系)

提示:

1:和其他类型的数组一样,字符串数组也是以I32长度开头的,接下是每个字符串的首地址指针(句柄)——U32数值,表示字符串在内存中的地址(第一个字符)。由于字符串数组需要从内存的不同区域访问字符串(连续存储),会耗费更多的时间,因此,用一个长的字符串代替字符串数组,程序会更加高效。

2:LV是以句柄(Handle)描述数组和字符串,Handle本身是U32,占四个字节,它包含的内容是指向一个数据结构的指针,因为数据结构在内存中是可以重新分配的,所以它的地址会经常发生变化,而Handle的地址是不会变化的,通过Handle就可以跟踪数据结构。另外,对于每个数组和字符串,在长度信息之前还有一个16个字节的头部信息,(LV内部使用,类型描述符),因此一个最简单的数组至少占24个字节:HANDLE(U32)+HEADER(16Byte)+SIZE(I32)=24 BYTE。

簇是一种数据类型,一个簇是一个由若干数据类型的成员组成的集合体,类似于C语言中的结构体和Pascal语言中的记录。簇的成员有一种逻辑上的顺序,这是由它们放进去的先后顺序决定的,与它们在簇中摆放的位置无关。前面的成员被删除时,后面的成员会递补。改变簇成员逻辑顺序的方法是在簇上弹出快捷菜单,选Reorder Controls In Cluster…弹出一个对话框,为簇成员设置新的逻辑顺序。

在内存中,簇直接存放标量数据(numeric)。对于数组、字符串或路径,簇只是存储这些数据类型的的首地址指针。不同操作平台(OS)在数据对齐有所差异,为确保存储数据的第一个元素对齐,可能需要往这个元素前添加一些字节数。下列图形显示一个簇(元素包括单精度浮点数、扩展精度浮点数和一个指向一维无符号字整型数组的首地址指针)在不同操作系统下的存储格式。

提示:簇可以直接嵌套簇,簇间接存储的数据(指针)只有数组、字符串或路径这三种数据类型。下图显示簇(元素两个标量数字加一个数组)和簇(元素为一个带两个标量数字的簇和一个数组)具有相同的存储方式。

路径

路径:使用标准的Windows语法,可以使用相对路径和绝对路径。存储为路径类型、路径成员数和路径成员。

关键字:LabVIEW  数据类型  存储格式

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/1019/article_13569.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LabVIEW
数据类型
存储格式

小广播


Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /Data/webapps/cms/phpcms/libs/functions/global.func.php on line 2075

Warning: file_get_contents(http://training.eeworld.com.cn/shareCourseAPI/measure?count=5&csfl=no) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /Data/webapps/cms/phpcms/libs/functions/global.func.php on line 2075

Warning: array_values() [function.array-values]: The argument should be an array in /Data/webapps/cms/SSI/show_training_SSI.php on line 16

大学堂最新课程更多


Warning: Invalid argument supplied for foreach() in /Data/webapps/cms/SSI/show_training_SSI.php on line 23

独家专题更多

迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved