LabVIEW如何在内存中保存数据
布尔数据
LabVIEW用8位二进制数保存布尔数据。如值为零,则布尔值为FALSE。所有非零的值都表示TRUE。
单字节整型
单字节整数(有符号和无符号)为8位二进制格式。
双字节整型
双字节整数(有符号和无符号)为16位二进制格式。
长整型
长整数(有符号和无符号)为32位二进制格式。
64位整型
64位整数(有符号和无符号)为64位二进制格式。
定点
定点数(有符号和无符号)为64位二进制格式。
单精度
单精度浮点数为32位二进制IEEE单精度格式。
双精度
双精度浮点数为64位二进制IEEE双精度格式。
扩展精度
扩展精度浮点数为IEEE 80位扩展格式。
注:  在某些情况下,扩展精度浮点数可能为64位、96位或128IEEE扩展精度格式。具体情况因计算机处理器而异。最常见的是80位。
单精度复数
单精度浮点复数由32位二进制IEEE单精度的实数和虚数组成。
双精度复数
双精度浮点复数由64位二进制IEEE双精度的实数和虚数组成。
扩展精度复数
扩展精度浮点复数由IEEE扩展精度的实数和虚数组成。
扩展精度浮点数为IEEE 80位扩展格式。
在浮点数和复数中,s为符号位(0代表正,1代表负),指数为偏移指数(底数为2),而尾数为[0,1]范围内的数。
时间标识
LabVIEW将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64位二进制)表示自1904年1月1日周五凌晨[01-01-1904 00:00:00]以来无时区影响的所有秒数。后两个不带符号整数(64位二进制)表示小数秒部分。
关于时间标识的更多信息,请访问niNI开发者园地
数组
LabVIEW将数组保存为句柄(即指向指针的指针),包含以32位二进制整数表示的维度大小,随后是数组数据本身。 如句柄为0,则数组为空。由于某些平台具有对齐约束条件,维度大小后可能会有如干字节的填充符以使数据的首个元素准确对齐。如写了一个使用LabVIEW数组的共享库,可能需要调整指针的大小
下图为单精度浮点数的一维数组。其左侧的十进制数表示在内存中数组起始处的字节偏移。
下图为16位整数的四维数组。
在LabVIEW中,一维和二维数组均在内存中对齐。这有助于提高线性代数运算及矩阵数据类型相关运算的性能。
字符串
LabVIEW将字符串保存为指向某个结构的指针,该结构包含一个长度为4个字节的值和一个一维单字节整数(8位二进制字符)数组。如下图所示。如句柄或指向某个结构的指针为NULL,LabVIEW将字符串视为空字符串,即字符串的长度值为0。由于LabVIEW以长度值而不是终结字符来判断字符串的结束,因此可将带有NULL字符或ASCII字符0在内的任意字符嵌入字符串的任何位置。当发送LabVIEW字符串到期望C字符串的外部代码时,嵌入的NULL字符将导致外部代码将字符串解释为于第一个NULL字符处终止。
路径
LabVIEW路径是指向不透明数据结构的一个指针,不透明数据结构中包含路径类型和路径的组成部分。路径类型为0代表绝对路径,为1代表相对路径,为3代表通用命名约定(UNC)路径。UNC路径仅限于Windows环境且以\\<机器名>\<共享名>而不是盘符作为其首个路径组件。任何其他的路径类型均为无效路径。
使用下列函数获取关于路径的信息:
FDepth()
FDirName()
FIsAPath()
FIsAPathOfType()
FIsEmptyPath()
FNamePtr()
FVolName()
使用下列函数添加元素至路径:
FAddPath()
FAppendName()
使用下列函数创建一个新的路径:
FNotAPath()
FPathCpy()
FEmptyPath()
FMakePath()
FRelPath()
使用FDestroyPath()函数删除路径。
使用下列函数实现路径和文本格式之间的转换:
FFileSystemStringToPath()
FPathToFileSystemDSString()
FPathToText()
FTextToPath()
ConvertPathToPlatformIndependentText()
ConvertPlatformIndependentTextToPath()
使用下列函数比较两个路径:
FPathCmp()
FPathCmpLexical()
LabVIEW根据簇元素顺序将不同数据类型的元素保存在一个簇中。右键单击簇边框,在快捷菜单中选择重新排序簇中控件可查看和修改簇顺序。LabVIEW直接将标量数据存储在簇中,将数组、字符串和路径间接存储在簇中。由于某些平台有对齐限制,LabVIEW可能会在数组中簇的结尾填充若干字节,以保证下一个簇的开始位置准确对齐。如写了一个使用簇数组的共享库,如将指针的大小按照数组进行调整,必须同时考虑这些填充内容。
簇在内存中的存储结构取决于运行的平台。LabVIEW可能在簇元素之间填充,以保证这些元素与特定的地址范围对齐。地址范围与自然对齐概念相关。如某个数据的开始位置是数据大小的整数倍,则该数据自然对齐。例如,如一个4字节的整数的开始地址是4的倍数,则该数据是自然对齐。多数编译器在范围上有一个上限。例如,8字节整数可在4字节范围上对齐。根据LabVIEW运行范围的不同,对齐限制如下:
(Windows)数据只与1字节范围对齐。
(Mac OS X, Linux)数据与4字节范围自然对齐。
(VxWorks PowerPC)数据与8字节范围自然对齐。
在所有平台上,簇按照最严格最齐元素的标准进行对齐。
下表显示了一个簇,其中包含:1个16位整数、1个扩展精度浮点数、1个数组、1个8位不带符号整数。每行都包括内存地址以及相应元素和元素大小。
(Windows)因为数据只与1字节范围对齐,所以下一个簇的内存地址是17
内存地址
元素
大小(字节)
0:
I16整数
2
2:
EXT浮点数
10
12:
处理为数组
4
16:
U8整数
1
(Mac OS X, Linux)因为数据自然对齐至4字节范围,LabVIEW8位不带符号整数后填充3个字节。所以,下一个簇的内存地址是24
内存地址
元素
大小(字节)
0:
I16整数
字符串截取20位
2
2:
填充
2
4:
EXT浮点数
10
14:
填充
2
16:
处理为数组
4
20:
U8整数
1
21:
填充
3
(VxWorks PowerPC)因为数据自然对齐至8字节范围,LabVIEW8位不带符号整数后填充3个字节。所以,下一个簇的内存地址是24
内存地址
元素
大小(字节)
0:
I16整数
2
2:
填充
6
8:
EXT浮点数
8
16:
处理为数组
4
20:
U8整数
1
21:
填充
3
LabVIEW将簇按顺序嵌入直接存储在其它簇中。LabVIEW仅间接地保存数组、字符串和路
径。
下图显示了两个以相同方式保存数据的簇。
波形
LabVIEW保存波形的方式与保存簇相同。
引用句柄
LabVIEW将引用句柄保存为有符号的32位二进制整数。
变体
LabVIEW将变体保存为指向LabVIEW内部数据结构的句柄。变体的数据类型为4个字节。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。