labview如何存储变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了labview如何存储变量相关的知识,希望对你有一定的参考价值。

这话问的,你是说LabVIEW是怎么运作的呢,还是问你用的时候怎么保存变量值?
以下内容来自LabVIEW自带的帮助文件。
——————————————————————————————————————————
LabVIEW如何在内存中保存数据
LabVIEW在内存中保存输入控件、显示控件、连线和其它数据类型的对象。

布尔数据
LabVIEW用8位二进制数保存布尔数据。如值为零,则布尔值为FALSE。所有非零的值都表示TRUE。

单字节整型
单字节整数(有符号和无符号)为8位二进制格式。

双字节整型
双字节整数(有符号和无符号)为16位二进制格式。

长整型
长整数(有符号和无符号)为32位二进制格式。

64位整型
64位整数(有符号和无符号)为64位二进制格式。

定点
定点数(有符号和无符号)为64位二进制格式。

单精度
单精度浮点数为32位二进制IEEE单精度格式。

双精度
双精度浮点数为64位二进制IEEE双精度格式。

扩展精度
扩展精度浮点数为IEEE 80位扩展格式。

注: 在某些情况下,扩展精度浮点数可能为64位、96位或128位IEEE扩展精度格式。具体情况因计算机处理器而异。最常见的是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位二进制)表示小数秒部分。

关于时间标识的更多信息,请访问ni.com的NI开发者园地。

数组
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字节范围,LabVIEW在8位不带符号整数后填充3个字节。所以,下一个簇的内存地址是24。

内存地址 元素 大小(字节)
0: I16整数 2
2: 填充 2
4: EXT浮点数 10
14: 填充 2
16: 处理为数组 4
20: U8整数 1
21: 填充 3

(VxWorks PowerPC)因为数据自然对齐至8字节范围,LabVIEW在8位不带符号整数后填充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个字节。追问

怎么保存变量值

追答

右键,数据操作,当前值设置为默认值,保存vi才能在下次启动也生效。

参考技术A 可以用属性节点,选择“值”。 将那个变量设置局部变量或全局变量试试。 最好的方法是,把实时变化的参数连接到while循环的移位寄存器,用移位寄存,SpFgis

在LABVIEW中如何设置全局变量

参考技术A “文件”-“新建...”-“全局变量”

以上是关于labview如何存储变量的主要内容,如果未能解决你的问题,请参考以下文章

如何创建labview功能全局变量

labview中 如何将一个全局变量在一个Vi中使用2次,其中一次作为读的状态,另一次为写的状态。谢谢!

labview怎么更新全局变量

labview如何对数组1011中10赋值为3,11赋值为-3,并将3和-3以数组的形式输出?

labview全局变量刷新慢咋办

labview里蓝色的数据框是啥