原创 Labview中文帮助文档——labview如何在内存中保存数据

2008-6-30 01:54 6914 6 6 分类: 测试测量

LabVIEW如何在内存保存数据


LabVIEW可在内存中保存输入控件、显示控件、连线和其他数据类型的对象。


布尔数据


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



单字节整型


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



双字节整型


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



长整型


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



64位整型


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



单精度


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


MSITStore:\rogram%20Files\National%20Instruments\LabVIEW%208.2ch\help\lvconcepts.chm::/loc_eps_fig1a.gif">



双精度


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


MSITStore:\rogram%20Files\National%20Instruments\LabVIEW%208.2ch\help\lvconcepts.chm::/loc_eps_fig2a.gif">



扩展精度


在内存中,扩展精度数的大小和精度视其所在平台的不同而不同,如下所示:



  • Windows和Linux 扩展精度浮点数为80位二进制IEEE扩展精度格式。

MSITStore:\rogram%20Files\National%20Instruments\LabVIEW%208.2ch\help\lvconcepts.chm::/loc_eps_fig3.gif">



  • Mac OS 扩展精度浮点数以双精度浮点数表示。



单精度复数


单精度浮点复数由32位二进制IEEE单精度的实数和虚数组成。




双精度复数


双精度浮点复数由64位二进制IEEE双精度的实数和虚数组成。




扩展精度复数


扩展精度浮点复数由IEEE扩展精度的实数和虚数组成。在内存中,扩展精度数的大小和精度视其所在平台的不同而不同,如下所示:



  • Windows和Linux 扩展精度浮点数为80位二进制IEEE扩展精度格式。



  • Mac OS 扩展精度浮点数以双精度浮点数表示。


在浮点数和复数中,s为符号位(0代表正,1代表负),exp为偏移指数(底数为2),而尾数为由[0,1]组成的数。



时间标识


LabVIEW将时间标识保存为一个含四个整数的簇,其中前两个整数(64位二进制)表示自1904年1月1日周五凌晨(世界时)以来无时区影响的所有秒数。后两个整数(64位二进制)表示毫秒。




数组


LabVIEW将数组保存为句柄(即指向指针的指针),包含以32位二进制整数表示的维度大小,随后是数组数据本身。 如句柄为0,则数组为空。由于某些平台具有对齐约束条件,维度大小后可能会有如干字节的填充符以使数据的首个元素准确对齐。如编写DLL或CIN则可能需要对引用该数组的句柄调整大小


下图为一个一维单精度浮点数数组。其左侧的十进制数表示在内存中数组起始处的字节偏移。



下图为一个四维16位二进制整数数组。



在LabVIEW 7.0和前期版本中,只有一维数组在内存中对齐,以提高数组运算的性能。在LabVIEW 7.1和更高版本中,一维和二维数组均在内存中对齐。这有助于提高线性代数运算及矩阵数据类型相关运算的性能。



字符


LabVIEW将字符串保存为指向某个结构的指针,该结构包含一个长度为4个字节的值和一个一维单字节整数(8位二进制字符)数组。如下图所示。如句柄或指向某个结构的指针为NULL,LabVIEW将字符串视为空字符串,即字符串的长度值为0。由于LabVIEW以长度值而不是终结字符来判断字符串的结束,因此可将带有NULL字符或ASCII字符0在内的任意字符嵌入字符串的任何位置。当发送LabVIEW字符串到期望C字符串的外部代码时,嵌入的NULL字符将导致外部代码将字符串解释为于第一个NULL字符处终止。




路径


LabVIEW将路径保存为句柄(即指向指针的指针),包含了路径类型、以16位二进制整数表示的路径组件个数及各路径组件。路径类型为0代表绝对路径,为1代表相对路径,为3代表通用命名约定(UNC)路径。UNC路径仅限于Windows环境且以\\<机器名>\<共享名>而不是盘符作为其首个路径组件。任何其他的路径类型均为无效路径。每个路径组件为一个Pascal字符串(P-string),其首个字节表示P字符串的长度,但该长度不把这首个字节计算在内。


下图表示LabVIEW如何保存各平台上的典型路径。





LabVIEW根据簇顺序保存不同数据类型的簇元素。右键单击簇边框,从快捷菜单中选择簇顺序设置簇顺序。LabVIEW将标量数据直接保存到簇。LabVIEW间接地保存数组、字符串和路径。LabVIEW的簇保存了一个指向数据在内存中保存位置的句柄。由于某些平台具有对齐约束条件,维度大小后可能会有如干字节的填充符以使数据的首个元素准确对齐。编写DLL或CIN时,有些平台对如何对齐和填充内存有着特殊要求


下图显示了一个簇,其中含有一个单精度浮点数、一个扩展精度浮点数和一个指向一维16位二进制无符号整数数组的句柄。



  • Windows和Linux



  • Mac OS


LabVIEW直接保存嵌入的簇,即LabVIEW将其视为没有嵌入子簇的数据进行保存。LabVIEW仅间接地保存数组、字符串和路径。


下图显示了两个以相同方式保存数据的簇。




波形


LabVIEW保存波形的方式与保存簇相同。



引用句柄


LabVIEW将引用句柄保存为有符号的32位二进制整数。



变体


LabVIEW将变体保存为指向LabVIEW内部数据结构的句柄。变体的数据类型为4个字节。


http://www.vihome.com.cn/bbs/viewthread.php?tid=3470&extra=page%3D2



文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条