7.2.1 用于常用文件I/O操作的VI和函数

更新于 2026年10月10日 版权声明
7.2.1 用于常用文件I/O操作的VI和函数

函数选板中文件I/O选板上的VI和函数可用于常见文件I/O操作,如读写以下类型的数据:在电子表格文本文件中读写数值;在文本文件中读写字符;从文本文件读取行;在二进制文件中读写数据。

可将读取文本文件、写入文本文件函数配置为可执行常用文件I/O操作。这些执行常用操作的VI和函数可打开文件或弹出提示对话框要求用户打开文件,执行读写操作后关闭文件,节省了编程时间。如果“文件I/O”VI和函数被设置为执行多项操作,则每次运行时都将打开关闭文件,所以尽量不要将它们放在循环中。执行多项操作时可将函数设置为始终保持文件打开。

文件I/O选板如图7-7所示。

下面对文件I/O选板中的节点进行介绍。

1.带入分隔符电子表格VI

使字符串、带符号整数或双精度数的二维或一维数组转换为文本字符串,写入字符串至新的字节流文件或添加字符串至现有文件。带入分隔符电子表格文件VI的节点图标及端口定义如图7-8所示。

图示

图7-7 文件I/O选板

图示

图7-8 带入分隔符电子表格文件VI的节点图标及端口

图示 格式:指定如何使数字转化为字符。如果格式为%.3f(默认),VI可创建包含数字的字符串,小数点后有三位数字。如果格式为%d,VI可使数据转换为整数,使用尽可能多的字符包含整个数字。如果格式为%s,VI可复制输入字符串。使用格式字符串语法。

图示 文件路径:表示文件的路径名。如果文件路径为空(默认值)或为<非法路径>,VI可显示用于选择文件的文件对话框。如果在对话框内选择取消,可发生错误43。

图示 二维数据:指定一维数据未连线或为空时,写入的数据。

图示 一维数据:指定输入不为空时要写入文件的数据。VI在开始运算前可使一维数组转换为二维数组。

图示 添加至文件?:为TRUE时,添加数据至现有文件。如添加至文件?的值为FALSE(默认),VI可替换已有文件中的数据。如果不存在已有文件,VI可创建新文件。

图示 错误输入(无错误):表明节点运行前发生的错误。该输入将提供标准错误输入功能。

图示 转置?:指定将数据从字符串转换后是否进行转置。默认值为FALSE。如果转置?的值为FALSE,对VI的每次调用都在文件中创建新的行。

2.读取带分隔符电子表格VI

在数值文本文件中从指定字符偏移量开始读取指定数量的行或列,并使数据转换为双精度的二维数组,数组元素可以是数字、字符串或整数。读取带分隔符电子表格 VI的节点图标和端口定义如图7-9所示。

图示

图7-9 读取电子表格文件VI

图示 行数:VI读取的最大行数。对于该VI,一行按〈Enter〉键换行符或换行符隔开;或到了文件尾部。如果输入小于0,VI读取整个文件。默认为-1。

图示 读取起始偏移量:指定VI开始读取操作的位置,以字符(字节)为单位。字节流文件中可能包含不同类型的数据段,因此偏移量的单位为字节而非数字。因此,如需读取包含100个数字数组,且数组头为57个字符,需要设置读取起始偏移量为57。

图示 每行最大字符数:是在搜索行的末尾之前,VI读取的最大字符数。默认值为0,表示VI读取的字符数量不受限制。

图示 分隔符:是用于对电子表格文件中的栏进行分隔的字符或由字符组成的字符串。例如,指定用单个逗号作为分隔符。默认值为\t,表明用制表符作为分隔符。

图示 新建文件路径:返回文件的路径。

图示 所有行:是从文件读取的数据。

图示 第一行:是所有行数组中的第一行。可使用该输入使一行数据读入一维数组。

图示 读后标记:返回文件中读取操作终结字符后的字符(字节)。

图示 EOF?:如果需要读取的内容超出文件结尾,则值为TRUE。

3.写入测量文件VI

写入测量文件Express VI用于将数据写入基于文本的测量文件(.lvm)、二进制测量文件(.tdm或.tdms)。写入测量文件Express VI的初始图标及端口定义如图7-10所示。

将写入测量文件Express VI放到程序框图中时,会弹出“配置写入测量文件”对话框,如图7-11所示。

图示

图7-10 写入测量文件Express VI

图示

图7-11 “配置写入测量文件”对话框

下面对“配置写入测量文件”对话框中的选项进行介绍。

(1)文件名

显示被写入数据的文件的完整路径。仅在文件名输入端未连线时,该Express VI才将数据写入该参数所指定的文件。如果文件名输入端已连线,则数据将被该Express VI写入该输入端所指定的文件。

(2)文件格式

图示 文本(LVM):将文件格式设置为基于文本的测量文件(.lvm),并在文件名中设置文件扩展名为.lvm。

图示 二进制(TDMS):将文件格式设置为二进制测量文件(.tdms),并在文件名中将文件扩展名设置为.tdms。如果选择该选项,则不可使用分隔符部分,以及数据段首部分的无段首选项。

图示 带XML头的二进制(TDM):将文件格式设置为二进制测量文件(.tdm),并在文件名中将文件扩展名设置为.tdm。如果选择该选项,则不可以使用分隔符部分,以及数据段首部分的无段首选项。

当选择该文件格式时,可勾选锁定文件以提高访问速度复选框。勾选该复选框可以明显加快读写速度,但将影响对某些任务的多任务处理能力。在通常情况下推荐使用该选项。

启用该选项后,当两个Express VI中的一个正在写一系列文件时,两个Express VI不能同时访问同一个文件。

(3)动作

图示 保存至单个文件:将所有数据保存至一个文件。

图示 提示用户选择文件:显示对话框,提示用户选择文件。

图示 仅询问一次:提示用户选择文件,仅提示一次。只有勾选提示用户选择文件复选框时,该选项才可用。

图示 每次循环时询问:每次Express VI运行时都提示用户选择文件。只有勾选提示用户选择文件复选框时,该选项才可用。

图示 保存至一系列文件(多个文件):将数据保存至多个文件。如重置为TRUE,则VI将从序列中的第一个文件开始写入。当指定文件已经存在时将采取何种措施,由配置多文件设置对话框现有文件选项的值决定。如果test_001.lvm被保存为test_004.lvm,则test_001.lvm可能已经被重命名、覆盖或者跳过。

图示 设置:显示配置多文件设置对话框。只有勾选了保存至一系列文件(多个文件)复选框,才可使用该选项。

(4)如文件已存在

图示 重命名现有文件:如果重置为TRUE,则重命名现有文件。

图示 使用下一可用文件名:如重置为TRUE,向文件名添加下一个顺序数字。例如,当test.lvm已存在时,LabVIEW将文件保存为test1.lvm。

图示 添加至文件:将数据添加至文件。如选中添加至文件,VI将忽略重置的值。

图示 覆盖文件:如重置为TRUE,将覆盖现有文件的数据。

(5)数据段首

每数据段一个段首:在被写入文件的每个数据段创建一个段首。适用于数据采样率因时间而改变、以不同采样率采集两个或两个以上信号、被记录的一组信号随时间而变化的情况。

图示 仅一个段首:在被写入文件中仅创建一个段首。适用于以相同的恒定采集率采集同一组信号的情况。

图示 无段首:不在被写入的文件中创建段首。只有选择文件格式部分的文本(LVM)时,该选项才可用。

(6)X值列

图示 每通道一列:为每个通道产生的时间数据创建单独的列。对于每列y轴的值,都会生成一列相应x轴的值。适用于采集率不恒定或采集不同类型信号的情况。

图示 仅一列:仅为所有通道生成的时间数据创建一个列。仅包括一列x轴的值。适用于以相同的恒定采集率采集同一组信号的情况。

图示 空时间列:为所有通道生成的时间数据创建一个空列。不包括x轴的数据。只有选择了文件格式部分的文本(LVM)选项,才可使用该选项。

(7)分隔符

图示 制表符:用制表符分隔文本文件中的字段。

图示 逗号:用逗号分隔文本文件中的字段。只有选择了文件格式部分的文本(LVM)选项,才可使用该选项。

(8)文件说明

包含.lvm、.tdm或.tdms文件的说明。LabVIEW将本文本框中输入的文本添加到文件的段首中。

图示 高级:显示配置用户定义属性对话框。只有选择了二进制(TDMS)或带XML头的二进制(TDM),才可使用该选项。

4.读取测量文件

读取测量文件Express VI用于从基于文本的测量文件(.lvm)、二进制测量文件(.tdm或.tdms)中读取数据。如果安装了Multisim 9.0或更高版本,也可使用该VI读取Multisim数据。读取测量文件Express VI的初始图标及端口定义如图7-12所示。

将读取测量文件Express VI放到程序框图中时,会弹出“配置读取测量文件”对话框,如图7-13所示。

图示

图7-12 读取测量文件Express VI

图示

图7-13 “配置读取测量文件”对话框

下面对“配置读取测量文件”对话框中的选项进行介绍。

(1)文件名

显示希望读取其数据的文件的完整路径。仅在文件名输入端未连线时,Express VI从参数所指定的文件读取数据。如文件名输入端已连线,则Express VI将从输入端所指定的文件读取数据。

(2)文件格式

图示 文本(LVM):将文件格式设置为基于文本的测量文件(.lvm),并在文件名中设置文件扩展名为.lvm。

图示 二进制(TDMS):将文件格式设置为二进制测量文件(.tdms),并在文件名中将文件扩展名设置为.tdms。

图示 带XML头的二进制(TDM):将文件格式设置为二进制测量文件(.tdm),并在文件名中将文件扩展名设置为.tdm。当选择该文件格式时,可勾选锁定文件以提高访问速度复选框。勾选该复选框可明显加快读写速度,但将影响对某些任务的多任务处理能力。在通常情况下推荐使用该选项。

(3)动作

图示 提示用户选择文件:显示文件对话框,提示用户选择一个文件。

(4)数据段大小

图示 获取原始大小的数据段:按照信号数据段原来的大小从文件读取信号的数据段。 (https://www.daowen.com)

图示 获取指定大小的数据段:按照采样中指定的大小从文件读取信号的数据段。

图示 采样:指定在从文件读取的数据段中,希望包含的采样数量。默认值为100。只有选择获取指定大小的数据段时,该选项才可用。

(5)时间标识

图示 相对于测量开始时间:显示数值对象从0起经过的小时、分钟及秒数。例如,十进制100等于相对时间1: 40。

图示 绝对(日期与时间):显示数值对象从格林尼治标准时间1904年1月1号零点至今经过的秒数。

(6)一般文本文件

图示 数值数据起始行:表示数值数据的起始行。Express VI从该行开始读取数据。默认值为1。

图示 首行为通道名:指明位于数据文件第一行的是通道名。

图示 首列为时间通道:指明位于数据文件的第一列的是每个通道的时间数据。

图示 开始读取文件:将数据从文件名中指定的文件导入至采样数据表格。

(7)分隔符

图示 制表符:用制表符分隔文本文件中的字段。

图示 逗号:用逗号分隔文本文件中的字段。

(8)小数点

图示 .(点):使用点号作为小数点分隔符。

图示 ,(逗号):使用逗号作为小数点分隔符。

5.打开/创建/替换文件

使用编程方式或对话框的交互方式打开一个存在的文件、创建一个新文件或替换一个已存在的文件。可以选择使用对话框的提示或使用默认文件名。打开/创建/替换文件函数的节点图标和端口定义如图7-14所示。

图示

图7-14 打开/创建/替换文件函数

6.关闭文件

关闭一个引用句柄指定打开的文件,并返回文件的路径及应用句柄。这个节点不管是否有错误信息输入,都要执行关闭文件的操作。所以,必须从错误输出中判断关闭文件操作是否成功。关闭文件函数的节点图标和端口定义如图7-15所示。关闭文件要进行下列操作。

1)把文件写在缓冲区里的数据写入物理存储介质中。

2)更新文件列表的信息,如大小、最后更新日期等。

3)释放引用句柄。

7.格式化写入文件

将字符串、数值、路径或布尔型数据格式化为文本格式并写入文本文件中。格式化写入文件函数的节点图标和端口定义如图7-16所示。

图示

图7-15 关闭文件函数

图示

图7-16 格式化写入文件

使用鼠标左键在格式化写入文件节点图标上双击,或者在节点图标上右键单击弹出快捷菜单中选择“编辑格式字符串”,显示“编辑格式字符串”对话框,如图7-17所示。该对话框用于将数字转换为字符串。

图示

图7-17 “编辑格式字符串”对话框

该对话框包括以下部分。

图示 当前格式顺序:表示将数字转换为字符串的已选操作格式。

图示 添加新操作:将已选操作列表框中的一个操作添加到当前格式顺序列表框中。

图示 删除本操作:将选中的操作从当前格式顺序列表框中删除。

图示 对应的格式字符串:显示已选格式顺序或格式操作的格式字符串。该选项显示为只读。

已选操作:列出可选的转换操作。

图示 选项:指定以下格式化选项。

图示 右侧调整:设置输出字符串为右侧调整或左侧调整。

图示 用空格填充:设置以空格或零对输出字符串进行填充。

图示 使用最小域宽:设置输出字符串的最小域宽。

图示 使用指定精度:根据指定的精度将数字格式化。本选项仅在选中已选操作下拉菜单的格式化分数(12.345)、格式化科学计数法数字(1.234E1)或格式化分数/科学计数法数字(12.345)后才可用。

图示 字符串:指定输出与文本框中输入的内容完全相同。该选项仅当在已选操作下拉列表中选择输出精确字符串(abc)后有效。

8.扫描文件

在一个文件的文本中扫描字符串、数值、路径和布尔数据,将文本转换成一种数据类型,并返回引用句柄的副本及按顺序输出扫描到的数据。可以使用该函数节点读取文件中的所有文本。但是使用该函数节点不能指定扫描的起始点。扫描文件函数的节点图标和端口定义如图7-18所示。

图示

图7-18 扫描文件函数

使用鼠标左键在扫描文件节点图标上双击,或者在节点图标上右键单击弹出快捷菜单中选择“编辑扫描字符串”,显示“编辑扫描字符串”对话框,如图7-19所示。该对话框用于指定将输入的字符串转换为输出参数的方式。

图示

图7-19 “编辑扫描字符串”对话框

该对话框包括以下部分。

图示 当前扫描顺序:表示已选的将数字转换为字符串的扫描操作。

图示 已选操作:列出可选的转换操作。

图示 添加新操作:将已选操作列表框中的一个操作添加到当前扫描顺序列表框中。

图示 删除本操作:将选中的操作从当前扫描顺序列表框中删除。

图示 使用固定域宽:设置输出参数的固定域宽。

图示 对应的扫描字符串:显示已选扫描顺序或格式操作的格式字符串。该选项显示为只读。

9.写入文本文件

以字母的形式将一个字符串或行的形式将一个字符串数组写入文件。如果将文件地址连接到对话框窗口输入端,在写之前VI将打开或创建一个文件,或者替换已有的文件。如果将引用句柄连接到文件输入端,将从当前文件位置开始写入内容。写入文本文件函数的节点图标及端口定义如图7-20所示。

图示

图7-20 写入文本文件函数

图示 对话框窗口:在对话框窗口中显示的提示。

图示 文件:文件路径输入。可以直接在“对话框窗口”端口中输入一个文件路径和文件名,如果文件是已经存在的,则打开这个文件,如果输入的文件不存在,则创建这个新文件。如果对话框窗口端口的值为空或非法的路径,则调用对话框窗口,通过对话框来选择或输入文件。

10.读取文本文件

从一个字节流文件中读取指定数目的字符或行。在默认情况下读取文本文件函数读取文本文件中所有的字符。将一个整数输入到计数输入端,指定从文本文件中读取以第一个字符为起始的多少个字符。在图标的右键单击弹出快捷菜单中选择“读取行”,计数输入端输入的数字是所要读取的以第一行为起始的行数。如果计数输入端输入的值为-1,将读取文本文件中所有的字符和行。读取文本文件函数的节点图标和端口定义如图7-21所示。

图示

图7-21 读取文本文件函数

11.写入二进制文件

将二进制数据写入一个新文件或追加到一个已存在的文件。如果连接到文件输入端的是一个路径,函数将在写入之前打开或创建文件,或者替换已存在的文件。如果将引用句柄连接到文件输入端,将从当前文件位置开始追加写入内容。写入二进制文件函数的节点图标及端口定义如图7-22所示。

12.读取二进制文件

从一个文件中读取二进制数据并从数据输出端返回这些数据。数据怎样被读取取决于指定文件的格式。读取二进制文件函数的节点图标和端口定义如图7-23所示。

图示

图7-22 写入二进制文件函数

图示

图7-23 读取二进制文件函数

图示 数据类型:函数从二进制文件中读取数据所使用的数据类型。函数从当前文件位置开始以选择的数据类型来翻译数据。如果数据类型是一个数组、字符串或包含数组和字符串的簇,那么函数将认为每一该数据实例包含大小信息。如果数据实例中不包含大小信息,那么函数将曲解这些数据。如果LabVIEW发现数据与数据类型不匹配,它将数据置为默认数据类型并返回一个错误。

13.创建路径

创建路径节点用于在一个已经存在的基路径后添加一个字符串输入,构成一个新的路径名。创建路径的节点图标及端口定义如图7-24所示。

在实际应用中,可以把基路径设置为工作目录,每次存取文件时就不用在路径输入控件中输入很长的一个目录名,而只需要输入相对路径或文件名。

14.拆分路径

拆分路径节点用于把输入路径从最后一个反斜杠的位置分成两部分,分别从拆分的路径输出端和名称输出端口输出。因为一个路径的后面常常是一个文件名,所以这个节点可以用于把文件名从路径中分离出来。如果要写一个重命名的VI文件,就可以使用这个节点。拆分路径函数的节点图标和端口定义如图7-25所示。

图示

图7-24 创建路径的节点

图示

图7-25 拆分路径节点

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)