使用LabVIEW读写二进制文件

更新 Mar 26, 2021

适用于

软件

  • LabVIEW

问题详述

我想使用LabVIEW读写二进制文件。我还想了解该过程如何工作,以便可以将诸如二维数组的数据结构写入和读取到二进制文件中。
我想知道使用写入二进制文件vi写入网络文件夹时LabVIEW中传输数据包的大小。

解决方案

LabVIEW程序可以使用位于Programming»File I / O功能面板中的Write to Binary File VI和从Binary File VI读取二进制文件。 NI范例查找器(帮助»查找范例...)中的基础知识»文件输入和输出» Read Binary File.viWrite Binary File.vi中有几个示例,演示了如何使用这些功能。


Windows和IP协议确定了从LabVIEW发送的数据传输包的大小。更具体地说,内置的Windows SMB协议用于传输最大包大小为64 KB的数据。

相关信息

访问二进制文件遵循与访问其他文件相同的代码结构。具体来说,用户打开文件,根据需要调用读取和写入功能,然后关闭文件。下图显示了一个简单的情况,说明如何将32位带符号整数写入二进制文件:
读取二进制文件时,用户必须知道将数据写入文件时的格式。写入二进制文件时,请注意存储数据的格式,以便以后可以正确读取。用户可以选择二进制文件的结构,并且二进制文件没有通用的格式(与ASCII不同),因此其他应用程序或操作系统可能无法从文件中读取有意义的数据。

将整数写入二进制文件时,整数的位将映射到文件中的位。例如,如果将I32写入二进制文件,则它将占用32位空间。
将I32 2D数组写入二进制文件更加复杂,因为该数组可能具有不同数量的行和列。为了简化此二维数组,数据通常与描述这些尺寸的标头一起保存。要从二进制文件读取二维数组,LabVIEW需要一个8字节的头。可以通过两种方式创建此标头:
  • 手动:数组大小函数可用于确定这些值。必须将FALSE常量连接到Prepend Array或String Size吗?写入二进制文件功能的终端。
  • 自动:要自动生成标题,可以将TRUE常量连接到Prepend Array或String Size?写入二进制文件功能的终端(但不是必需的)。
通常,建议让“写入二进制文件”功能自动创建数据头因为该头根据保存到磁盘的数据类型而有所不同。但是,有时用户明确需要知道头结构并写入磁盘(或从磁盘读取)。在这种情况下,可以使用在线参考来确定不同数据类型的必要标题。

下图显示了将2D数组写入二进制文件并自动创建标头的简单情况:
要读取二进制文件,请将所需的数据类型连接到“数据类型”输入中。例如,如果文件包含一个32位整数的2D数组,则将一个32位整数的2D数组连接到“数据类型”输入。然后,LabVIEW将假定在文件中存储了适合虚拟数据类型的头文件,并使用该文件头提取二进制信息。下图显示了从二进制文件读取2D数据的简单情况: