7.3.3 二进制文件的写入与读取
尽管二进制文件的可读性比较差,是一种不能直接编辑的文本格式,但是由于它是LabVIEW中格式最为紧凑、存取效率最高的一种文件格式,因而在LabVIEW程序设计中这种文件类型得到了广泛的应用。
1.二进制文件的写入
使用写入二进制文件函数VI演示二进制文件写入的流盘操作。操作步骤如下。
1)使用文件对话框VI打开文件对话框,选择文件路径。
2)使用打开/创建/替换文件函数节点创建一个新的文件。
3)通过写入二进制文件函数节点将正弦波VI产生的正弦波数据写入文件。
4)使用关闭文件节点关闭数据文件。
VI的前面板及运行结果如图7-132所示,VI的程序框图如图7-133所示。

图7-132 程序前面板及运行结果

图7-133 程序框图
信号源是正弦波发生器,输出的是一个正弦波形数组。可以看到,在存储数据时,是将双精度数组数据直接写入文件的,而没有经过数据转换,因此写入二进制文件的速度是很快的。(https://www.daowen.com)
需要注意的是,应该把文件的打开和关闭操作放在While循环的外面。如果单独将打开文件的操作放在循环里面,将会重复打开文件;如果单独将关闭文件的操作放在循环内部,在循环第一次运行结束后,文件引用句柄将被关闭,在循环第二次运行时,关闭文件VI将试图关闭一个不存在的文件应用句柄,程序会报错;如果同时将文件打开和关闭操作放在循环内,虽然程序能够运行,但数据文件中只能记录最近一次采集的数据。
2.二进制文件的读取
读取二进制数据文件时需要注意两点:一是计算数据量;二是必须知道存储文件时使用的数据类型。
操作步骤如下。
1)使用文件对话框VI打开一个文件对话框,选择文件路径。使用打开/创建/替换文件函数将指定的文件打开。
2)利用获取文件大小函数节点计算文件的长度,并根据所使用数据类型的长度计算出数据量,本例中的数据类型为双精度数据,每个双精度数据占用8B,所以数据量等于文件长度除以8。使用读取二进制文件VI读取数据时,必须指定数据类型,方法是将所需要类型的数据连接到读取二进制文件VI的数据类型输入端。
3)读取完毕,使用关闭文件函数节点关闭数据文件。
VI的前面板及运行结果如图7-134所示,VI的程序框图如图7-135所示。

图7-134 程序前面板及运行结果

图7-135 程序框图