1
字符串和文件 I/O
2
字符串
字符串是 ASCII字符的集合。如同其他语言一样,LabVIEW
也提供了各种处理字符串的功能,如果想获得字符串的例
子,可查看 Examples\General\strings.llb。下面扼要介绍一
些内容。
创建字符串控制对象和显示对象可以在 Controls?String
& Table 中看到右边所显示字符串控制对象和显示对象。
还可以使用操作工具或者标签工具输入或者改变字符串控
制对象中的文本。用移位工具拖曳字符串控制对象和显示
对象的边角可以增大它们的面积。
3
练习 1 组合字符串
? 目的:使用一些字符串功能函数将一个
数值转换成字符串,并把该字符串和其
他一些字符串连接起来组成一个新的输
出字符串。
4
SET
Header
VOLTS
Trailer
5.50
Number
SET 5.5000 VOLTS
ê? 3? ×? ·? ′?
16
ê? 3? ′? 3¤?è
前面板
打开一个新的前面板,按照下图
向其中添加对象。
5
流程图
6
练习 1 组合字符串
? Format Into String函数
( Functions?String) —— 在本练习中,
它用于对数值和字符串进行格式化,使
它们成为一个输出字符串。用变形工具
可以添加三个加和输入。
? String Length函数
( Functions?String) —— 在本练习中,
它用于返回一个字符串的字节数
7
练习 1 组合字符串
? 执行该 VI。注意,Format Into String 功能函
数将两个字符串控制对象和数值控制对象组合
成一个输出字符串。
? 把该 VI保存为 Build String.vi,在下一个练习
中还将用到这个 VI。
? 字符串格式的设定:选中 Format Into String函
数,单击右键,在快速菜单中选择 Edit
Format String,可分别对个输入的各部分格
式做设定。
8
练习 2 字符串子集和数值的提取
? 目的:创建一个字符串的子集,其中含有某个
数值的字符串显示,再将它转换成数值。
? 打开 Examples\General\strings.llb中的 Parse
String.vi。用默认输入值执行该 VI。注意,DC
的字符串子集被用于输入字符串。还要注意,
字符串的数值部分被提取出来,并转换为数值。
您可以尝试使用不同的控制数值(记住数组式
的字符串是从 0开始进行编号),或者您可以
返回到流程图,查看怎样从输入字符串中提取
出其中的元素。
9
练习 2 字符串子集和数值的提取
10
练习 2 字符串子集和数值的提取
? String Subset函数( Functions?String) —— 在本练
习中,它用于返回偏移地址开始的子字符串以及字节
数。第一个偏移地址是 0。
? 很多情况下,必须把字符串转换成数值,例如需要将
从仪器中得到的数据字符串转换成数值。
? Scan From String函数( Functions?String) —— 在
这个例子中,它用于扫描字符串,并将有效的数值( 0
到 9,正负,e,E和分号)转换成数值。如果连接了一
个格式字符串,它将根据字符串指定的格式进行转换,
否则将进行默认格式的转换。该函数从偏移地址的
string处开始扫描。第一个字符的偏移地址是 0。这个
函数在已知头长度(本例中是 VOLTS DC)时或者字符
串只含有有效字符时很有用。
? 选择 File?Close,关闭该 VI。注意不要保存它
11
文件的输入 /输出( I/O)
?文件 I/O功能函数是一组功能强大,
伸缩性强的文件处理工具 。 它们不
仅可以读写数据, 还可以移动, 重
命名文件与目录 。 创建电子表格格
式的, 由可读的 ASCII文本组成的文
件, 以及为了提高读写速度和压缩
率采用二进制的格式写入数据 。
12
可以采用下面三种文件格式存储
或者获得数据:
? ASCII字节流 — 如果希望让其他的软件(譬如字处理
程序或者电子表格程序)也可以访问数据,就需要将
数据存储为 ASCII格式。为此,您需要把所有数据都转
换为 ASCII字符串。
? 数据记录文件 — 这种文件采用的是只有 G语言可以访问
的二进制格式。数据记录文件类似于数据库文件,因
为它可以把不同的数据类型存储到同一个文件记录中。
? 二进制字节流 — 这种文件的格式是最紧凑、最快速地
存储文件的格式。您必须把数据转换成二进制字符串
的格式,还必须清楚地知道在对文件读写数据时采用
的是哪种数据格式。
? 因为 ASCII字节流格式是最常用的数据文件格式,所以
本节着重介绍这种格式。如果您想获得关于文件 I/O的
例子,请参考 Examples\File。
13
1, 文件 I/O 功能函数
? 大多数的文件 I/O操作都包括三个基本的
步骤:打开一个已有的文件或者新建一
个文件;对文件进行读写;关闭文件。
LabVIEW在 Functions?File I/O中提供
了很多有用的工具 VI。本节主要介绍 9
个高级工具 VI,这些工具 VI可以把错误
检查和错误处理等功能与文件 I/O功能函
数结合起来。
14
? Write To Spreadsheet File VI—— 用于将由单精度数值组成的
一维或者二维数组转换成文本字符串,再将它写入一个新建文
件或者已有文件。该 VI先打开或者新建文件,之后再关闭文件。
它可以用于创建能够被大多数电子表格软件读取的文件。
? Read From Spreadsheet File VI—— 用于从某个文件的特定位
置开始读取指定个数的行或者列内容,再将数据转换成二维、
单精度数组。该 VI先打开文件,之后再关闭文件。它可以用于
读取用文本格式存储的电子表格文件。
? Write Characters To File VI—— 用于将一个字符串写入一个新
建文件或者已有文件。该 VI打开文件、写入,再关闭文件。
? Read Characters From File VI—— 用于从某个文件的特定位置
开始读取指定个数的字符。该 VI先打开文件,再关闭文件。
? Read Lines From File VI—— 用于从某个文件的特定位置开始
读取指定个数的行内容。该 VI先打开文件,再关闭文件。
15
数据记录文件( datalog file)
? 在需要创建供其他软件(如电子表格软件)访
问的文件时这种方法很有用。另外一种是称为
数据记录文件( datalog file)的数据格式。它
与数据库文件有类似之处,文件是由记录组成
的,一个文件的所有记录有相同的结构和长度。
访问该文件是可以以记录为单位,并且可直接
访问文件中的任意一个记录。记录本身的数据
结构可由用户自己定义,一个记录内可容纳不
同的数据类型,它就像一个簇一样。
16
数据记录文件( datalog file)
? 如果要用 VI获得数据,您可能不想把数据写入到 ASCII
文件中,因为把数据和字符串之间相互转换非常花费
时间。例如,把一个二维的字符转换成一个具有电子
表格格式的字符串(具有标题和时间标记)也是一个
非常复杂的操作。如果不需要把文件存储成可供别的
软件访问的格式,您可以把数据输出到一个数据记录
文件。使用这种格式时,把数据写入到文件的操作变
得非常简单,这也使得读写操作的速度更快。它还可
以简化数据采集的工作,因为您可以把初始的数据块
作为一个日志或者记录读取,而无需了解其中含有多
少数据。 G语言会记录数据的数量,用于对每个数据记
录文件的记录
17
数据记录文件( datalog file)
? Write Datalog File示例(位于
Examples\File\datalog.llb)创建了一个新的数
据记录文件,并把指定数目的数据写入该文件。
每个记录都是一个由一个字符串和一个单精度
数据数组构成的簇。
? 要读取一个数据记录文件,您采用的格式必须
与对该文件写入数据时所用格式相同。 Read
Datalog File示例将从 Write Datalog File示例
创建的数据记录文件中一次读取一个记录。读
出的每个记录都是一个由一个字符串和一个单
精度数据数组构成的簇。