您的位置 首页 > 娱乐休闲

LabVIEW中二进制文件的存储与读取方法

背景

在软件开发中,二进制文件格式相对于文本文件格式的缺点是,没有文本文件通用性强、直观,同时,在读取文件数据时,用户需要知道存储数据的数据类型格式等,才可以准确还原文件内容,但是,二进制文件的优点也比较突出,如文件存取速度快、占用空间小,同时,也可有效保护自己的数据文件。

在上篇文章中已经详细说了LabVIEW平台中文本文件的读写编程方法,这次通过例子再说下二进制文件的编程方法。

例1:入门例子

例子要求:将1至16共16个32位的整型数字以二进制文件的格式存储到计算机的D盘上,文件名称为“”,存储完成后,立即读出该文件内容,并显示到前面板的数组控件上。

程序运行后界面如下图所示:


实现代码如下:


用For循环产生32位的整型数字1-16,读写二进制文件同读写文本文件的步骤相同,依照着打开文件、读写文件、关闭文件的顺序执行。

对于“写入二进制文件”函数的主要参数说明如下:

  • 待写入的数据参数,其类型可以连接任意的数据类型,即可以将任意数据写入二进制文件;
  • 是否预置数组或字符串的大小参数,表明当数据为数组或字符串时,LabVIEW是否将数据大小信息添加至文件开头,当为真时,在写入数据时,先写入4个字节的数值,存储了待写入数据的大小,默认为真,此例该参数设为假,即文件的开头未保存数组长度信息。
  • 字节顺序,可以是大端、小端或主机字节顺序,例子中使用的是大端序,其特点是最高有效字节占据最低的内存地址,默认是大端序。

本例字节顺序使用的是大端序,存储后文件内容以十六进制格式显示如下,对于1-16之间的32位整型数字明显看出,如对于数字1,低内存地上存储的是数据的高位字节(00),而高内存地址上存储的是数据的低位字节(01):


当以小端序存储时,存储后文件内容以十六进制格式显示如下,其字节顺序与大端序相反:


对于“读取二进制文件”函数的主要参数说明如下:

  • 读取文件的数据类型参数,必须给一个参数,该参数与写入文件时数组类型完全一致;
  • 读取数据的个数,不接该参数时,只读取一个数值,为-1时,读取所有的数据,本例为-1,表示读取整个文件的数据,为其它值时,读取相应个数的数据。
  • 字节顺序,必须与写入文件时字节顺序完全一致。

例2:实用例子

以上篇文章中的例子说明,模拟一个实际的数据采集与存取场景。在例子中产生一个正弦波形数据,然后将波形数据以二进制文件的格式存储到计算机的D盘上,文件名称为“”,波形数据点数为500点,采样频率为1000Hz,正弦信号频率10Hz,幅值为5,文件中不仅包含了每个采样点的数据值,也包含了采样间隔信息。同样,在存储完成后,立即读出该文件内容,将波形数据显示到前面板的波形图控件上。

先看下程序运行后的界面:

实现代码如下:

在文件中,调用了两次“写入二进制文件”函数,分别存储采样间隔dt和采样数据Y。其中,在存储Y时,与上例不同,这儿参数预置数组大小设为真,在读取该文件时可以使用该值作为实际读取Y元素的个数参数。

经分析,存储后文件里面的数据格式分别为:dt(4个字节,double型)、数组大小(4个字节,int32型)及数组Y(500个点的double型数组)。所以,在读取波形数据时,也要按照这个格式进行读取。例子中,调用了三次“读取二进制文件”函数,分别读取dt和数组大小和Y。

最后将dt和Y组合成一个波形数据输出到波形图控件上进行显示即可。

结论

LabVIEW中读取二进制文件时,文件中的数据顺序、类型必须与存储时完全一致,才能正确读出文件中的数据。

大家加关注并私信回复:LabVIEW007,可获取该文章对应的LabVIEW原程序下载。

欢迎加关注,共同交流。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何判断字符串中含有二进制,如何判断字符串中含有数字,如何判断字符串中是否含有字母,vb中判断字符串含有a”边界阅读