1
LabVIEW数据记录和存储|文本|二进制
2010-04-10 11:12:49 admin 浏览:5196次 【

文本文件是由若干行字符构成的计算机文件,根据本文存储方式的不同有多种格式,如doctxtinf等。通常所指的文本文件是指能够被系统终端或者简单的文本编辑器中接受的格式,可以认为这种文件是通用的、跨平台的。对通用的英文文本文件而言,ASCII码是最为常见的编码标准;而如果需要存储带重音符号的英文或其它的非ASCII字符,则必须选择一种字符编码,如UTF-8

尽管ASCII标准使得只含有ASCII字符的文本文件可以在UnixMacintoshMicrosoft WindowsDOS和其它操作系统之间自由交互,但是在这些操作系统中,换行符并不相同,处理非ASCII字符的方式也不一致。换行end-of-line, EOL)是一种加在文字字符最后位置的特殊字元,它可以确保后面的下一个字符能够出现在下一行。ASCII编码分别使用LFLine Feed, 0Ah)或CRCarriage Return, 0Dh)或CR+LF来表示换行(EOL),不同的操作系统处理EOL的方式如下:

(1)     LF:用于UnixUnix相容系统(GNU/Linux, Mac OS X….),RISC OS

(2)     CRApple Ⅱ家族;

(3)     CR+LFWindows系统,大部分非Unix操作系统。

LabVIEW中的文本文件读写采用 1所示的两个函数完成:“Write To Text File”和“Read From Text File”。这两个函数是多态函数,可以接受File RefnumFile Path两种输入。

LabVIEW数据记录和存储(一)—文本文件 - statemice - Change

1 File I/O选板

本例将从一个数据读写的实例中介绍这两个函数的使用。如 2所示,程序将一个二维数组转换为字符串后写入到文本文件中,将会自动生成该Test.xls文件(如果已经存在该名称的文件,将自动覆盖并不提示用户)。尽管例子的后缀名使用xlsMicrosoft Excel格式),但是实质上是文本文件,使用各种文本编辑工具均可以打开(事实上也可以采用任何自定义格式的后缀名)。

LabVIEW数据记录和存储(一)—文本文件 - statemice - Change

2 Write to Text File

如果需要将现有的数据添加到原有的文本文件中,应该如何处理呢?如 3所示,打开文件后使用Set File Position将文件指针移动到文件尾,再写入数据,并关闭文件。

LabVIEW数据记录和存储(一)—文本文件 - statemice - Change

3 Write to Text File_Append

对比 2 3,可以看出,尽管都使用了Write To Text File函数,但是二者的输入是不一样的,前者使用路径而后者使用Refnum。此外,前者只使用了一个函数;而后者还加入了Close File函数。事实上,当使用文件路径(Path)直接连入(或者为空,此时将弹出路径选择对话框)到Write To Text File函数中时,LabVIEW将在执行完该函数时自动文件;但是如果是使用文件句柄(Refnum)连入到该函数或者将函数的输出句柄连接到了其它的函数,则LabVIEW将认为文件仍然在使用,并不自动关闭。

右击Write To Text File函数,在弹出菜单中有一个“Convert EOL”菜单项,默认是选中的。当勾选了该选项后,该函数将把所有基于操作系统的EOL字符(行结束符)转换为LabVIEW EOL符。比如会将单独的“\r”和“\n”转换成“\r\n”行结束符。

4显示了从Test.xls中读取数据的实例代码,使用Read from Text File函数能够将文本文件中的字符串读取,程序员可以对这些字符串进行后续的处理,如图中转化为Double数组。事实上,Read from Text File也能够接受路径和文件句柄两种输入方式,当需要只读取文件的部分字节时就需要使用到句柄操作了。

LabVIEW数据记录和存储(一)—文本文件 - statemice - Change

4 Read from Text File

Read from Text File函数有一个count输入,表示从文本文件中读取的字节数(byte),当设置为-1时表示整个文本。此外,在函数的右键快捷菜单中选择“Read Lines”将以行为单位(而不是字节)读取文本文件。Read from Text File函数同样也提供了“Convert EOL”选项,此时该函数将把所有基于平台的行结束符转换为换行符,如将“\r”和“\r\n”转换为“\n”。

【注意】

Read from Text File函数的count端子可知,该端子为一个I32型整数。当将其它类型的整数连入到该端子时,将自动转换为I32型整数。如果文件过大,超过了I32的表示范围,需要分段读取。

【讨论】如何将一个文本文件的内容清空,但是不要将该文件删除呢?

这个问题似乎是程序员经常遇到的,一个简单的方式就是使用“Open/Create/Replace File”函数,将operation参数设置为replace and create。但是如果在使用文件的过程中,如何将文件内容清空呢?如 5所示。

LabVIEW数据记录和存储(一)—文本文件 - statemice - Change

5 清空已写入文件的文本

当然可以先将该使用“Close File”函数关闭该文件,再使用“Open/Create/Replace File”函数新建该文件。此外,LabVIEW提供了一种字节控制的方式能够迅速地清空文件中的内容,如 6所示。

LabVIEW数据记录和存储(一)—文本文件 - statemice - Change

6 使用Set File Size函数

毫无疑问,文本文件在数据存储方面是非常重要的。通用、简单和易用似乎是最大的优势,这一点从上面的实例中就可以看出来。但是,从测试测量的数据存储方面来说,它也有一些缺点。如读写速度比较慢慢,不适合于高速数据记录;文件取址和检索比较麻烦,无法实现快速定位;当数据量太大时,打开文本文件会非常慢。此外,文本文件无法存储颜色、富文本、图像和视频等多媒体信息。

配置文件(后缀是ini)也是纯文本文件中的一种,但是包含了一定的检索信息,常用于保存用户对应用程序的配置参数,如记录仪器的地址、报表路径等设置。 7所示为某个ini文件的实例,从图中看出文件中包含3种格式:

(1)     以“;”开头的文本,表示该行文字是注释,用以显示一些说明性文字;

(2)     包含在[]中的文本,表示section,用以分类显示一些参数;

(3)     =表示的文本,表示key,用以显示某一字段具体的参数值。

因此,某个参数需要以key指定并位于section字段下。

 LabVIEW数据记录和存储(二)—配置文件 - statemice - Change, We Need!

7 system.ini文件

既然ini文件是属于文本文件的一种,那么使用Write to Text FileRead from Text File函数也能够实现配置文件的写入和读取。LabVIEW针对配置文件的特点提供了一组VIs用于配置文件的读写(如 8所示),便于从文件中检索数据。Read key.viWrite Key.vi都是多态性函数,支持一些基本的数据类型(如NumericBooleanPathString等)。

LabVIEW数据记录和存储(二)—配置文件 - statemice - Change, We Need!

8 Configuration File VIs选板

【应用下载)】

本例将演示一个应用程序配置文件读写实例。在很多情况下,程序员希望将用户保存应用程序的一些设置,然后在下次运行应用程序时调用这些设置值。 9所示为读/写配置文件的实例,使用Read Key.viWrite Key.vi实现各个参数的读取和保存。

LabVIEW数据记录和存储(二)—配置文件 - statemice - Change, We Need!

9 /写配置文件

从上图中可以看出,配置文件的读写比较简单,其文本文件的特性也使得它非常易于编辑和查看。同时,区别于一般的文本文件(txt文件),由于配置文件引入了sectionkey的概念,因此它非常容易检索。如果需要获取某部分的文本值,只需要指定其对应的sectionkey即可。

 

1 条评论
查看更多评论
  • 键盘快捷键描述按住Shift并单击选择多个对象;将对象添加到当前选择。按住Ctrl单击切换单个对象以加入或保留当前选择。方向键一次将所选对象移动一个像素。Sh..

    浏览:4140次 评论:0
    2021-02-06 09:23:02
  • Modbus是全球第一个真正用于工业现场的总线协议,采用的是主从原则,其物理接口主要有串口和以太网口两种。本文主要介绍LabIEW与PLC的通信实现方式。在进行通..

    浏览:11406次 评论:0
    2019-09-22 12:58:51
  • 对实时数据或者历史存储数据进行滤波及校准处理,可以将采样数据转化为具有实际意义的物理量,为用户后续操作提供方便。滤波校准功能的程序设计如图1所示,本..

    浏览:3848次 评论:0
    2019-09-21 16:32:59
  • 在进行LabVIEW程序设计时,一个VI中可以包含一个或若干个子vi。这些子vi是被直接放置在程序框图中,习惯上称这些子vi为:静态链接子vi。这些子vi在VI载入的同..

    浏览:9748次 评论:0
    2018-12-17 15:28:30
  • 新建一个LabVIEW项目,或者打开一个已经建好的项目,项目中包含主vi,子vi以及自定义控件等,确保vi运行正常。    在项目浏览器的-程序生成规范->..

    浏览:8173次 评论:0
    2018-07-18 10:55:21
作者专栏
  • 自由的蚂蚁

    注册时间:2024-04-15 13:48:28

  • 2204020104

    注册时间:2024-04-14 14:34:22

  • 段816

    注册时间:2024-04-09 16:42:31

  • 万家伟

    注册时间:2024-04-02 09:01:06

  • 805681635

    注册时间:2024-04-01 22:03:10

Copyright@http://nilab.com.cn all rights reserved 备案号:京ICP备12043750号-1
Powered by qibosoft V9.0 Code © 2003-2017 qibosoft
LABVIEW之家 QQ:181237912; email:Labviewzj@qq.com 项目合作 微信及手机:18510627229