在LabVIEW程序设计中,常常需要调用外部文件数据,同时也需要将程序产生的结果数据保存至外部文件中,这些都离不开文件I/O操作。文件IiO操作是LabVIEW和外部交换数据的重要方式。
文件I/O的基本概念和术语
在文件I/O中会用到一些相关的概念和术语,包括文件引用旬柄、文件格式、流程控件、流盘等。
1.文件路径
文件路径分为路径和相对路径。路径指文件在磁盘中的位置,LabVIEW可以通过路径访问在磁盘中的文件;相对路径指相对于一个参照位置的路径,相对路径必须终形成路径才能访问磁盘中的文件。LabVIEW中,路径可以是有效的路径名、空值或非路径。非路径是LabVIEW提供的一种特殊的路径,是在路径操作失败时的返回值。
2.文件引用句柄
文件引用句柄是LabVIEW对文件进行区分的一种标识符,用于对文件进行操作。打开一个文件时,LabVIEW会生成一个指向该文件的引用句柄,对打开的文件进行的所有操作均使用引用句柄来识别每个对象。引用旬柄控件用于将一个引用旬柄传进或传出Ⅵ。LabVIEW通过文件路径访问到文件后,为该文件设置一个文件引用句柄,以后通过此句柄即可对文件进行操作。文件引用句柄包含文件的位置、大小、读写权限等信息。
3.文件I/O格式
文件I/O格式取决于所读写的文件格式。LabVIEW可读写的文件格式有文本文件、二进制文碉 i数据记录文件3种。使用何种格式的文件取决于采集和创建的数据及访问这些数据的应用程序。
(1)文本文件。
文本文件是便于使用和共享的文件格式,几乎适用于任何计算机。许多基于文本的程序可读取基于文本的文件。多数仪器控制应用程序使用文本字符串。
如果磁盘空间、文件I/0操作速度和数字不是主要考虑因素,或无需进行随机读写,可以便用文本文件存储数据,以方便其他用户和应用程序读取文件。
若要通过其他应用程序访问数据,如文字处理或电子表格应用程序,可将数据存储在文本文件中。
如需将数据存储在文本文件中,使用字符串函数可将所有的数据转换为文本字符串。文本文件可包含不同数据类型的信息。
如果数据本身不是文本格式(如图形或图表数据),∶扫于数据的ASCII码表示通常要比数据本身大,因此这种情况下文本文件要比二进制和数据记录文件占用更多内存。
(2)二进制文件。
二进制文件可以用来保存数值数据并访问文件中的指定数字,或随机访问文件中的数字。与人可识别的文本文件不同,二进制文件只能通过机器读取。
二进制文件是存储数据为紧凑和快速的格式。这种文件占用较少的磁盘空间,且存储和读取数据时无需在文本表示与数据之间进行转换,因此二进制文件效率更高。
二进制文件可在1字节磁盘空间上表示256个值。除扩展和复数外,二进制文件中含有数据在内存中存储格式的映象。因为二进制文件的存储格式与数据在内存中的格式一致,无需转换,所以读取文件的速度更快。
文本文件和二进制文件均为字节流文件,以字符或字节的序列对数珲进行存储。
(3)数据记录文件。
数据记录文件以相同的结构化记录序列存储数据(类似于电子表格),每行均表示一个记录。数据记录文件中的每条记录都必须是相同的数据类型。LabVIEW会将每个记录作为含有待保存数据的簇写入该文件。
字符串和文件
每个数据记录可由任何数据类型组成,并可在创建该文件时确定数据类型。数据记录文件只需进行少量处理,因而其读写速度更快;数据记录文件将原始数据块作为一个记录来重新读取,无需读取该记录之前的所有记录,因此简化了数据查询的过程;仅需记录号就可访问记录,因此可更快更方便地随机访问数据记录文件。
创建数据记录文件时,LabVIEW按顺序给每个记录分配一个记录号。每次运行相关的VI时,LabVIEW会将记录写入数据记录文件将记录写入数据记录文件后,将无法覆盖该记录。读取数据记录文件时,可读取一个或多个记录。
LabVIEW还提供了独特的测量文件格式。测量文件包括基于文本的测量文件(lvm文件)和二进制测量文件(tdm文件、tdms文件)。
基于文本的测量文件(.lvm文件)包括由写入测量文件Express VI生成的数据。该文件是用制表符分隔的文本文件,可在电子表格应用程序或文本编辑应用程序中打开。.lvm文件不仅包括由Express VI生成的数据,还包括该数据的相关信息,如生成数据的日期和时间等。在,lvm文件中,LabVIEW保存的数据可高达6位数。lvm文件用逗号作为数字的分隔符。如需将.lvm文件中的数据从字符串转化为数值,可用本地化代码格式说明符将句点指定为小数点分隔符。
二进制测量文件(.tdms文件和.tdm文件)包括由写入测量文件Express VI或存储VI生成的数据。.tdm文件通过基于XML的格式保存波形属性,及包含该波形数据的二进制文件的链接。二进制格式的.tdm文件在浮点数字上更为、占用磁盘空间更小,运行速度也比LabVIEW测量数据文件(.lvm)更快。
4.文件I/O流程控制
文件I/O流程控制保证文件操作按顺序依次执行。文件I/O操作过程中,一般有一对保持不变的输入、输出参数,用来控制程序流程。文件标识号就是其中之一,除了区分文件外,还可以进行流程控制。将输入、输出端口依次连接起来,可保证操作按顺序依次执行,实现对程序流程的控制。
5.文件I/O出错管理
文件I/O出错管理反映文件操作过程中出现的错误。LabVIEW对文件进行I/O操作时,一般提供一个错误输入端和一个错误输出端用来保留和传递错误信息。错误数据类型为一个簇,包含一个布尔量(判断是否出错)、一个整型量(错误代码)和一个字符串(错误和警告)。在程序中,将所有错误输入端和错误输出端依次连接起来,任何一点的出错信息就可以保留下来,并依次传递下去。在程序末端连接错误处理程序,可实现对程序中所有错误信息的管理。
6.流盘
流盘是一项在进行多次写操作时保持文件打开的技术,如在循环中使用流盘。流盘操作可以减少函数因打开和关闭文件与操作系统交互的次数,从而节省内存资源;流盘操作避免对同一文件进行频繁的打开和关闭,可提高Ⅵ效率。
如果将路径控件或常量连接至写入文本文件、写入二进制文件或写入电子表格文件函数,则函数将在每次函数或Ⅵ运行时打开、关闭文件,增加了系统占用。对于速度要求高,时间持续长的数据采集,流盘是一种理想的方案,因其在数据采集的同时将数据连续写入文件中。
为获取更好的效果,在采集结束前应避免运行其他VI和函数(如分析VI和函数等)。在循环之前放置打开创建/替换文件函数,在循环内部放置读或写函数,在循环之后放置关闭文件函数,即可创建一个典型的流盘操作。此时只有写操作在循环内部进行,从而避免了重复打开、关闭文件的系统占用。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。