第七章-字符串与文件IO课件_第1页
第七章-字符串与文件IO课件_第2页
第七章-字符串与文件IO课件_第3页
第七章-字符串与文件IO课件_第4页
第七章-字符串与文件IO课件_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.1字符串控件与节点

7.2文件I/O

第七章字符串与文件I/O7.1字符串控件与节点

字符串是ASCII字符的集合。如同其他语言一样,LabVIEW也提供了各种处理字符串的功能。

7.1.1字符串控件

1.创建字符串对象

可以在Controls→Modern→

String&Path中创建如下字符串控制对象和显示对象。

还可以使用操作工具或者标签工具输入或者改变字符串控制对象中的文本。用移位工具拖曳字符串控制对象和显示对象的边角可以增大它们的面积。2.字符串控件菜单

在前面板字符串对象的右键弹出菜单中,可以调整字符串控件的显示模式和外观。b)“\”CodesDisplay:控制码显示

在该模式下,把“\”及其后接的字符理解为格式化字符。这种模式可显示一些不可见字符。具体格式及含义见下表:(1)显示模式

在字符串设置菜单中,共有4中模式:

a)NormalDisplay

是控件的缺省模式,在该模式下,显示所有可显示的输入字符。有些字符在该模式下是不可显示的,如制表符、ESC等

格式含义\00-FF接两位十六进制整数(大写),显示该值的ASCII字符\b退格符(BackSpace,ASCIIBS,相当于\08)\f进格符(Foemfeed,ASCIIFF,相当于\0C)\n换行符(Linefeed,ASCIILF,相当于\0A)\r回车符(Return,ASCIICR,相当于\0D)\t制表符(Table,ASCIIHT,相当于\09)\s空格符(Space,相当于\20)\\反斜线(Backslash,ASCII\,相当于\5C)控制码模式正常模式ASCIIBF+FOREASCII\B+efore\b(退格)+efore\非法字符,忽略“\”\r(回车)(ASCII3F)=?\\r=\r(反斜线)c)PassWordDisplay:口令显示

在该模式下,键入的字符以“*”显示,主要用于输入口令或密码。拷贝或剪切时,出现在剪切板上的也是“*”。

d)HexDisplay:十六进制显示

在该模式下,显示输入字符对应的十六进制ASCII码。

输入正常模式输出十六进制模式输入十六进制模式输出正常模式(2)LimittosingleLine

在该选项有效后,可以防止输入回车符。因为在VI通信时,回车符意味着通信结束。注意在控制码模式下,\r仍然有效。

(3)UpdateValueWhileTyping

该选项有效后,输入或更改每一个字符的结果都会同步地传递到端口上,即此时是逐个字符更新到程序端口上的。缺省情况下(此项未选中),控件只在字符串输入结束后(回车),才会把结果传递给其它端口。

3.字符串控件的属性设置

通过在框图中设置节点的属性,可以改变字符串控件的显示外观,这样可在程序中动态调整字符串控件的属性。①文字大小(TextSize)

用来设置字符串控件的尺寸。其输入为含两个无符号整数的簇,分别设置字符串控件的宽和高。也可以由Width和Height两个节点来完成。②滚动位置(ScrollPosition)

移动文本,其输入为无符号整数N。使文本的第N行处于字符串控件的顶端。动态改变节点的输入,可以使文本滚动显示。③选择字符(Selection)

用来选择一部分字符。其输入为含两个无符号整数的簇,分别设置字符串开始和结束位置。④显示风格(DisplayStyle)

用来选择显示模式。输入值0、1、2、3分别表示正常显示、控制码显示、口令显和十六进制码显示。⑤滚动条(ScrollBar)

确定是否显示滚动条。⑥文字颜色(DisplayStyle)

用来设置字符串显示颜色。其输入为含两个无符号整数的簇,分别为前景颜色和背景颜色。7.1.3字符串节点

1.基本字符串操作节点

①求字符串长度节点(StringLength)

返回输入字符串的长度。输入可以是字符串(单行或多行),可以是字符串数组,也可以是字符串簇。注意:输入字符串长度包括换行符。

例7.1.1输入一个两行字符串,求其长度。②字符串合并(ConcatenateString)

把输入的多个字符串合并成一个字符串。输入可以单一字符串、字符串数组或是字符串簇。注意:输入字符串长度包括换行符。

例7.1.2输入3个字符串,将其合并为一个字符串。③子字符串提取(StringSubset)

从输入的字符串的Offset(0)位置开始提取规定长度Length的字符串。当Length<=0时,不操作。

节点图标及接口:④格式化的时间字符串(FormatDate/TimeString)

按给定格式输出时间,包括年月日时分秒和星期。

节点图标及接口:

时间输出格式表如下:格式含义格式含义%d显示日期%a显示星期%m显示月份%H显示24小时制的小时%y显示两位数的年份%I显示12小时制的小时%Y显示四位数的年份%M显示时间的分%x按本国习惯显示日期%S显示时间的秒%X按本国习惯显示时间%P显示AM/PM标志%c按本国习惯显示日期/时间例7.1.3⑤字符的大小写转换(ToUpperCase,ToLowerCase)

ToUpperCase节点把输入字符串中的小写字母转换为大写字母;ToLowerCase节点把输入字符串中的大写字母转换为小写字母。

节点图标及接口:⑥子字符串的替换(ReplaceSubstring)

能实现字符串的插入、删除、替换和抽取,节点图标及接口:⑦字符串的查找与替换(SearchandReplaceString)

能实现字符串的查找与替换,节点图标及接口:2.指令、参数整合节点

①从多行字符串中提取1行(PickLine)

在输入的多行字符串中multi-linestring中,提取一个指定行(lineindex),并把这行加到字符串string后,组成一个新的字符串输出。

节点图标及接口:

②从字符串数组中提取1行(IndexStringArray)

把字符串数组stringarray中指定单元(index)的字符串提取,并把这行加到字符串string后,组成一个新的字符串输出。

节点图标及接口:

③条件选择字符串并扩展(AppendTrue/FalseString)

如果selector输入为True,把truestring字符串加到字符串string后;如果selector输入为False,把falsestring字符串加到字符串string后,组成一个新的字符串输出。

节点图标及接口:

④多字符串的格式化整合(Formatinto

String)

该节点把多个输入与initial合并成一个字符串输出。输入可以是字符串,也可以是数值。输出的格式由格式化字符串决定。

节点图标及接口:

格式化字符串含义表:格式含义%f十进制浮点数%d十进制整数%x十六进制整数%o八进制整数%s二进制整数%[A-Za-z]字符串%[∧A-Za-z]由英文字母组成的字符串abcd由非英文字母组成的字符串%%百分号%%,:%?:十进制浮点数的小数点的形式

不同格式化字符串输入时的输出FormatStringArgument(s)ResultingStringScore=%2d%%87Score=87%Level=\n-7.2eV0.03642Level=3.642e-2VName:%s,%sSmithJhonName=Smith,JhoneTemp:%05.1f%s93.793FahrenheitTemp:096.8FahrenheitString:%10.5sHello,world___Hello3.表达式分析、控制命令节点

①表达式分析(ScanFormString)

根据格式化字符串formatstring的要求来分析输入字符串,并将其直接转化为相应的类型。在搜索时遇到第一个不匹配的类型时,停止搜索,余下的字符在remainingstring中输出。

节点图标及接口:

不同格式化字符串输入时的输出输入字符串格式输出剩余字符串abc,xyz12.3e27200%s,%s%f%2dAbcXyz12.3e27200Q+1.27e-3tailQ%ft1.27e-3ail0123456789%3d%3d123456789Set3,46%,;%s%fSet3.46Set49.4.2Set%d49.4.2②子字符串条件查找(MatchPattern)

根据输入regularexpression定义的条件,从offset位置开始检查输入字符串是否存在满足该条件的子字符串。如果存在,则在matchsubstring中返回该子字符串,offsetpastmacth返回aftersubstring后第一个字符的位置。否则offsetpastmacth返回-1。

regularexpression可以使字符串,也可是通配符。节点图标及接口:

③特征字符串查找(ScanStringForToken)

节点图标及接口:

这个节点用于分析查找输入字符串中的一些特征字符串,可用来分析运算表达式字符串中的数字、变量、运算符等。输入输出端口含义:

operators:字符串数组输入,用来列举特征字符串。

delimiters:字符串数组输入,用来列举分隔符,在两个分隔符之间的子字符串就是一个特征子字符串。Delimiters的缺省值为%s,%t,%r,%n(空格、制表符、换行、回车)。

Offsetpasttoken:上一个特征子字符串结束的位置,即下一个特征子字符串的起始位置。

tokenstring:输出查找到的特征子字符串。

tokenindex:如果找到的特征子字符串是operators中列举的,则在tokenindex中输出子字符串在operators数组中的位置,否则输出-1。若搜索到字符串尾,则输出-2。

Allowemptytokens:iftrue,在输入中有两个相临的分隔符时,将在tokenstring中返回一个空值。

usecacheddelim/operdata?:iftrue,将有一个缓冲区来保存delim和oper中的数据。分析开始时,保证该值为false。例7.1.7ScanStringForToken节点用法。

4.电子表格字符串操作节点

①数组到电子表格(ArraytospreadsheetString)

电子表格是用文本方式记录数据的。它把数据分成很多行,行与行之间用换行符分隔,同一行的不同数据单元用制表符分隔。该节点用于把数组中的数值或字符串用电子表格的形式表示。

节点图标及接口:

例7.1.8把一个浮点数的数组转换成电子表格。

②电子表格到数组(spreadsheetString

to

Array)

该节点与spreadsheetStringtoArray节点的功能相反,它把一个电子表格转化成一个数组。数组类型在arraytype中定义,缺省为二维的浮点数数组。

节点图标及接口:

7.2文件I/O7.2.1基本概念及术语

1.路径及路径控件(PathControlandIndictor)

文件名:文件的名称;

目录:指文件存在的位置;

路径:保存文件所在位置的目录和文件名。

LabVIEW用路径输入控件输入一个路径;用路径输出控件返回一个路径。路径名的输入与字符串完全相同,路径就是一种符合一定格式的字符串。路径输入输出控件面板及端口如下:

2.LabVIEW文件的分类

LabVIEW提供了多种文件类型,如:文本文件、二进制文件、数据记录文件、波形数据文件等。①文本文件(TextFiles)

这种格式的文件是ASCII码字节流,可以用文字处理软件或电子表格程序来读取或处理数据。缺点是占用的磁盘空间大,存取速度慢。如对一个浮点数-123.4567,如按单精度浮点数存储只占用4个字节;但按ASCII码字符串存储,需占用9个字节。由于不同数据占用不同字节数,因此不能随机访问数据文件。

②表单文件(SpreadsheetFiles)

这实际上也是一种文本文件,只不过它的输入数据格式可以是一维或二维数据数组。它将数据数组转换为ASCII码存放在电子表格文件中,因此用它存储数据数组非常方便。③二进制文件(BinaryFiles)

是速度最快,格式最紧凑的数据存储方式。可以对二进制文件进行随机访问,但需知道数据类型。

与文本文件不同的是,人们不能直接读懂二进制文件,必须通过翻译后才能读懂。④数据记录文件(DatalogFiles)

实际也是一种二进制文件。它的基本数据类型为记录块(Record),一个记录中可以有几种不同的数据类型。同一文件的数据块必须有相同的数据结构。块记录文件的存储、添加、删除等操作必须以记录为单位。⑤波形数据文件(Waveform)

这种文件保护了波形数据特有的一些信息,如采样开始时间、采样间隔等。⑥其它文件类型

XML文件、配置文件、LVM文件、TDM文件,以及TDMS文件。3.

文件I/O的错误处理

在LabVIEW中,大多数文件I/O节点有一个errorin和errorout端口,它们的数据类型为簇。当几个I/O节点连接在一起,如果一个节点出错,则该节点的errorout将返回的错误信息传递到下一个节点的errorin,此时接收到错误信息的节点不执行操作,而把错误信息通过errorout传递到下一个节点的errorin,直到最后一个节点。这样就可在最后一个节点的errorout端口连接出错处理VI,避免错误扩散和无用操作7.2.2文件的基本操作

LabVIEW提供了一组文件I/O操作节点集,用于文件的创立、读、写,删除、移动及文件拷贝,查看文件及目录列表等。

文件操作主要包含3个步骤:

(1)创建新文件或打开一个旧文件;

(2)对文件进行读写操作;

(3)关闭文件。

LabVIEW的文件操作节点如下:1.打开/创建/覆盖文件(Open/Creat/ReplaceFile)

打开、覆盖一个已经存在的文件或创建一个新文件。节点图标及连接端口如下图:

该节点其实是通过调用Filepath,Operation和access三各节点来实现其功能的。

Operation节点定义:0open(default)—Opensanexistingfile.Error7occursifthefilecannotbefound.1replace—Replacesanexistingfilebyopeningthefileandsettingitsendoffileto0.2create—Createsanewfile.Error10occursifthefilealreadyexists.3openorcreate—Opensanexistingfileorcreatesanewfileifonedoesnotexist.4replaceorcreate—Createsanewfileorreplacesafileifitexists.ThisVIreplacesafilebyopeningthefileandsettingitsendoffileto0.5replaceorcreatewithconfirmation—Createsanewfileorreplacesafileifitexistsandyougivepermission.ThisVIreplacesafilebyopeningthefileandsettingitsendoffileto0.access节点定义:0read/write1read-only2write-only2关闭文件(CloseFile)

关闭参考数refnum所代表的文件,节点图标及连接端口如下图:

注意:该节点不管errorin是否有错误,都会执行关闭文件的操作,所以必须从errorout中判断文件关闭操作是否成功。

3格式化写文件(FormatIntoFileFunction)

向打开的文件中写如格式化文本数据,节点图标及连接端口如下图:“input1”-“inputn”指定要转换输入的参数。输入可以是字符串、路径、枚举型、时间标识或任意数值数据类型,但不能是数组和簇。4扫描文件(ScanFromFileFunction)

从打开的文件中读文本数据,并将文本转换为某个数据类型,节点图标及连接端口如下图:“default1”-“defaultn”指定输出参数的类型和默认值。“output1”-“outputn”是输出参数,可以是字符串、路径、枚举型、时间标识或任意数值数据类型。5创建一个路径(Buildapath)

在已有路径basepath后添加字符串,构成新的路径名。节点图标及连接端口如下图:6分离一个路径(Stripapath)

把输入路径path从最后一个反斜线处分割成一条路径和一个文件名。节点图标及连接端口如下图:7.2.3表单文件

1写电子表格文件(WritetoSpreadsheetFile)

该节点把一个二维或一维单精度浮点数数组写到一个电子表格文件中。节点图标及连接端口如下图:

如果文件存在,则既可以把数据追加到该文件,也可以覆盖原有的数据;如果文件不存在,则创建新文件。此节点在读取数据前打开文件,读取操作完成后关闭该文件。2读电子表格文件(ReadFromSpreadsheetFile)

从一个电子表格文件中读取一定数量的数据,并把这些数值字符串转换成单精度浮点数后,从一个二维数组中返回。节点图标及连接端口如下图:

注意:电子表格文件的所有字符串必须由有效的数值字符组成。此节点在读取数据前打开文件,读取操作完成后关闭该文件。例7.2.1由序号i和一个随机数构成的电子表格文件。

运行该程序后,在E盘生成c1.xlsd的电子表格文件。用Excel打开这个文件,可以看两列数据:一列是序号,另一列是随机数。

例7.2.2读电子表格文件。7.2.4文本文件

1写文本文件(WritetoTextFile)

把字符串写入一个新文件中或追加到一个已经存在的文件尾。在写字符串前,打开或创建文件;操作完成后自动关闭该文件。节点图标及连接端口如下图:2读取文本文件(ReadFromTextFile)

从一个文本文件中读取字符,操作完成后自动关闭该文件。节点图标及连接端口如下图:例7.2.3-1一次性写文本文件。

运行该程序后,在D盘生成f1的文本文件。用记事本打开这个文件,可以看到该文件只有一个数据。

例7.2.3-2磁盘流写文本文件。

运行该程序后,在D盘生成f2的文本文件。用记事本打开这个文件,可以看到该文件数据。

例7.2.3-3磁盘流写文本文件,在文件末尾添加数据。

运行该程序后,在D盘生成f2的文本文件。用记事本打开这个文件,可以看到该文件数据。

例7.2.4读文本文件。7.2.5二进制文件

1写二进制文件(WritetoBinaryFile)

二进制文件的数据可以是任何数据类型,譬如数组或簇等复杂数据。新的数据可以追加到已有文件尾,也可以覆盖原有的数据;如果输入的文件不存在,则创建一个新文件。节点图标及连接端口如下图:2读二进制文件(ReadFromBinaryFile)

从一个二进制文件中读取指定格式的数据,读出时的数据格式必须与写入时的格式完全一致,否则数据出现混乱。节点图标及连接端口如下图:例7.2.5二进制文件保存

例7.2.6二进制文件读取7.2.6数据记录文件

数据记录文件实际也是一种二进制文件,输入的数据类型可以是任何数据类型。操作方法与二进制文件基本相同。不同的是数据记录文件必须用它的专用操作函数。在FILEI/O|AdvancedFileFunctions|Datalog下1.写数据记录文件

数据记录文件类似于数据库文件,每个记录实际就是一个簇。如上图,该簇由一个字符串,一个数值和一个数组构成。2.读数据记录文件

注意:如果dadtlogtype参数的数据类型与数据记录文件中的数据类型不匹配,程序运行后不能读出数据,并返回类型冲突的出错信息。

读取的数据记录如下:7.2.7波形文件的输入输出

波形文件实际也是一种数据记录文件。一个波形包括采样开始时间t0,采样时间间隔dt,和采样数据(一个数组)三部分信息。

1.写波形文件

写波形文件程序前面板:2.读波形文件

读波形文件程序框图:

读波形文件程序前面板:7.2.8常用高级文件操作节点

在高级文件操作模板下,除了数据记录文件子模板外,还包括了一些其它常用文件操作函数。如下图:1文件指针定位节点(SetFilePosition)

LabVIEW的Seek节点可以用来移动文件针,节点图标及连接端口如下图:

指针移动位置由from和offset决定。当from=0,文件指针为文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论