《虚拟仪器测试技术》单元5字符串和文件I/O程序设计_第1页
《虚拟仪器测试技术》单元5字符串和文件I/O程序设计_第2页
《虚拟仪器测试技术》单元5字符串和文件I/O程序设计_第3页
《虚拟仪器测试技术》单元5字符串和文件I/O程序设计_第4页
《虚拟仪器测试技术》单元5字符串和文件I/O程序设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

单元5字符串和文件I/O程序设计5.1字符串5.2文件I/O5.3综合案例5:温度采集数据保存读取返回5.1字符串字符串是一系列的可显示式不可显示的字符。在仪器控制中,使用字符串不只是为了得到简单的文体信息。在仪器控制中,通过字符串传递数据,然后把这些字符串转换成数字。将数字数据存储到磁盘时就要用到字符串,因此在许多情况下,数字资料在存储到磁盘中前必须先转换成字符串。也就是说,在将数字存储到文件或磁盘之前,需先将数字转换成字符串。字符串控件示例如图5-1所示。下一页返回5.1字符串5.1.1创建字符串控件与字符串显示控件字符串控件与显示控件可以在Controls模板中的String&Path子模板中找到,如图5-2所示。可利用工具选板中的操作工具或标签工具,输入和改变字符串控件中的文字。若要改变其大小,可以利用定位工具拖曳其外框的一角,便可以改变字符串的控制器与显示器的大小。5.1.2字符串的显示形式字符串在“字符串输入控件”与“字符串显示控件”中的显示形式有以下几种。上一页下一页返回5.1字符串1.正常显示字符串可以用不同的方式显示。右击,在弹出的快捷菜单中,选择NormalDisplay命令,如图5-3所示。2.密码显示选择密码显示(PasswordDisplay)命令后,在确认显示器中只会有星号(“∗”)出现,因此在前面板的选项功能的字符串显示器中,只能反映出所输入的字符串内容,如图5-4所示。3.“\”代码显示选择代码显示(“\”CodesDisplay)命令后,将非显示的字符串也同显示字符一起显示出来。在此模式下,非显示字符显示为“\”,后跟相应的代码,如图5-5所示。上一页下一页返回5.1字符串部分“\”代码如表5-1所示,也可以多加利用线上参考,如要输入不显示字符到字符串控制器,首先要输入反斜杠及相对码,输完后按Enter键,则所有不显示的字符,皆会以反斜杠及相对码的格式出现。4.十六进制码显示十六进制码(HexDisplay)显示包含在LabVIEW中的字符串控制器与显示器的字元中,在系统内部则是以ASCII码格式存储。如选择HexDisplay命令,可由字符串的弹出式功能选单选定即可,如图5-6所示。上一页下一页返回5.1字符串5.1.3字符串函数LabVIEW提供了许多处理字符串的函数,如字符串函数选板中String子选板所显示的,而部分较常用到的字符串函数,将逐一进行介绍。其中包括StringLength、ConcatenateStrings、StringSubset、MatchPattern、FormatIntoString、ScanFromString和String/NumberConversion等,如图5-7所示。上一页下一页返回5.1字符串1.字符串长度函数字符串长度函数(StringLength)返回字符串中字符的个数(长度),以字节为单位。需要注意的是,一个汉字的长度是2。如果连接到String端口上的数据是一个String数组,则length端口输出的是一个相同维数的数字数组,数组中的每一个元素表示String数组中相应位置元素的字符串长度。字符串长度函数示例如图5-8所示。2.连接字符串函数连接字符串函数(ConcatenateStrings)将输入的多个字符串(字符串0…n-1)合并连接成一个字符串。输入端的数目可以增减,通过右击函数,从弹出的快捷菜单中选择AddInput命令或调整函数大小,均可向函数增加输入端。连接字符串函数示例如图5-9所示。上一页下一页返回5.1字符串3.部分字符串函数部分字符串函数(StringSubset)可以从一个字符串里提取一个子字符串,从偏移量位置开始,根据所给字符的长度进行选取。部分字符串函数示例如图5-10所示。4.大小写转换函数“转换为大写字母”(ToUpperCase)函数的功能是将输入字符串中所有字母全部转换为大写;“转换为小写字母”(ToLowerCase)函数的功能是将输入字符串中所有字母全部转换为小写。大小写转换函数示例如图5-11所示。上一页下一页返回5.1字符串5.替换子字符串函数替换字符串函数(ReplaceSubstring)从偏移量位置开始在字符串中删除所给长度个字符,并将删除的部分替换为子字符串。如长度为0,函数在偏移量位置插入子字符串。如果子字符串为空,函数在偏移量位置删除所给长度个字符。替换子字符串函数示例如图5-12所示。6.搜索替换字符串函数搜索替换字符串函数(SearchandReplaceString)与上面论述的替换子字符串函数有所不同,它不是按照位置和长度替换字符串,而是查找与搜索字符串参数一致的字符串,用替换字符串参数去替换。函数示例如图5-13所示。上一页下一页返回5.1字符串7.查找匹配字符串函数查找匹配字符串函数(MatchPattern)在字符串中从偏移量参数指定的偏移处开始搜索正则表达式,如果找到匹配的表达式,则将字符串分解为3个子字符串。函数示例如图5-14所示。8.格式化日期/时间字符串函数格式化日期/时间字符串函数(FormatDate/TimeString)通过复制时间格式化字符串,将各个时间格式化代码替换为相应的值,从而计算得到日期/时间字符串。上一页下一页返回5.1字符串时间格式字符串代码有%a(星期名缩写)、%b(月份名缩写)、%c(地区日期/时间)、%d(日期)、%H(时,24小时制)、%I(时,12小时制)、%m(月份)、%M(分钟)、%p(am/pm标识)、%S(秒)、%x(地区日期)、%X(地区时间)、%y(两位数年份)、%Y(四位数年份)、%<digit>u(小数秒,<digit>位精度)。函数示例如图5-15所示。9.格式化写入字符串函数格式化写入字符串函数(FormatIntoString)按照格式字符串输入参数指定的格式,将输入数据转换成字符串并连接在一起输出字符串。可以将字符串路径、枚举型、事件标识、布尔或数值等数据格式转化为文本。函数示例如图5-16所示。上一页下一页返回5.1字符串10.扫描字符串函数很多情况下,必须把字符串转换成数值,如需要将从仪器中得到的数据字符串转换成数值。此函数功能与格式化写入字符串函数功能相反,将输入字符串中的数字字符(如0~9、+、-、e、E)转换为数字。扫描字符串函数(ScanFromString)示例如图5-18所示。函数从初始扫描位置端参数指定的位置开始,将字符串中的有效数字字符转换为由函数节点的格式字符串端口指定格式的数据。使用方法与格式化写入字符串函数类似。双击函数(或右击函数,从快捷菜单中选择编辑扫描字符串命令)可弹出图5-19所示对话框,设置对话框中的相关参数。上一页下一页返回5.1字符串11.数值至小数字符串转换函数与数值至十进制数字符串转换函数数值至小数字符串转换函数(NumberToFractionalString)和数值至十进制数字符串转换函数(NumberToDecimalString)在字符串/数值转换(String/NumberConversion)子选板中。数值至小数字符串转换函数的功能是把一个数值型的数据转换为带小数的字符串。它的“精度”参数说明转换后保留几位小数。“宽度”参数说明转换后共几位数字。宽度大于数字位时左边补0,宽度小于数字位数时保留实际数字位数。而数值至十进制数字符串转换函数的功能是把一个数值型数据的整数部分转换为字符串。函数示例如图5-20所示。上一页下一页返回5.1字符串12.字符串移位函数与反转字符串函数字符串移位函数(RotateString)在附加字符串(AdditionalStringFunctions)函数子选板中可以找到。字符串移位函数把一个字符串的第一个字符放到最后。那么,连续调用这个函数就可以依次把字符串前面的字符轮转到后面;反转字符串函数(ReverseString)把一个字符串全部字符的顺序首尾颠倒。函数示例如图5-21所示。上一页返回5.2文件I/O5.2.1文件格式1.文本文件文本文件是最便于使用和共享的文件格式,几乎适用于任何计算机。许多基于文本的程序可读取基于文本的文件。多数仪器控制应用程序使用文本字符串数据以ASCII码形式存储,其输出与字符一一对应,即一个字节代表一个字符,从而便于对字符进行逐个处理,也便于输出字符。这种格式文件可以被任何其他文本编辑器打开,可以用字处理软件或电子表格程序(如Word和Excel)来读取或处理数据。其缺点是占用磁盘空间大、数字精度不高、文件I/O操作速度慢,原因在于其存储时所有的数据都要转换成ASCII码字符串,而数据读出后还需进行字符到数值的转换。下一页返回5.2文件I/O2.二进制文件二进制文件格式是把数据按其在内存中的存储格式原样输出到磁盘上存放,是最紧凑、最快速存储文件的格式。用户必须把数据转换成二进制字符串的格式,还必须清楚地知道在对文件读写数据时采用的是哪种数据格式。其优点是读取文件的速度快、占用的磁盘空间较少,优于文本文件;缺点是与人可识别的文本文件不同,二进制文件只能通过机器读取。3.数据记录文件数据记录文件是LabVIEW的一种特殊类型的二进制文件。类似于数据库文件,它可以把不同的数据类型存储到同一个文件记录中,从该文件中读出来的数据仍然能保持原格式,因此适合用来存储各种复杂类型的数据格式,最适用于存储簇数据。上一页下一页返回5.2文件I/O4.波形数据文件波形数据文件专门用于存储波形数据类型的数据,包含了波形数据特有的一些信息,如起始时间、采样间隔、波形数组等。5.2.2数据记录与回放的基本操作LabVIEW记录与回放数据包括3个操作步骤,即打开一个已存在的文件或创建一个新文件、对文件读或写和关闭文件。此外,LabVIEW的文件操作还包括以下几个方面的内容。①文件或路径的改名与移动。②改变文件特征。③创建、修改与读取系统设置文件。④记录前面板对象数据。上一页下一页返回5.2文件I/O5.2.3文件输入/输出(I/O)函数LabVIEW提供了一套功能强大而又方便灵活的文件操作函数和VI,选择Programming→FileI/O函数子选板和选择Programming→Waveform→WfmFileI/O子选板,分别用于数据文件操作和波形文件操作。FileI/O函数子选板如图5-27所示。文件I/O功能函数是一组功能强大、伸缩性强的文件处理工具,它们不仅可以读写数据,还可以移动、重命名文件与目录,创建电子表格格式的、由可读的ASCII文本组成的文件,以及为了提高读写速度和压缩率采用二进制的格式写入数据。上一页下一页返回5.2文件I/O可以采用下面3种文件格式存储或者获得数据。①数据记录文件———这种文件采用的是只有G语言可以访问的二进制格式。数据记录文件类似于数据库文件,因为它可以把不同的数据类型存储到同一个文件记录中。②ASCII字节流———如果希望让其他的软件(如字处理程序或者电子表格程序)也可以访问数据,就需要将数据存储为ASCII格式。为此,需要把所有数据都转换为ASCII字符串。③二进制字节流———这种文件格式是最紧凑、最快速地存储文件的格式。必须把数据转换成二进制字符串的格式,还必须清楚地知道在对文件读写数据时采用的是哪种数据格式。上一页下一页返回5.2文件I/O1.电子表格文件读/写写电子表格文件(WriteToSpreadsheetFile)VI的功能是将字符串、带符号整数或双精度数的一维或二维数组转换为电子表格字符串,并将其写入一个新的文件或添加到现存文件中,写入之后自动关闭文件。示例如图5-28(a)所示。示例程序中产生两列数据,每列8行。数据连接到VI的WriteToSpreadsheetFile的2DData参数上;如果需要保存一列就连接到1DData参数上。运行程序后,在指定目录下生成电子表格文件,打开这个文件,在Excel程序中可以看到两列数据。上一页下一页返回5.2文件I/OVI的读电子表格文件(ReadFromSpreadsheetFile)的功能是打开一个电子表格文件,在数值文本文件中从指定字符偏移量开始读取指定数量的行或列,并将数据转换为双精度的二维数组,数组元素可以是数字、字符串或整数,读完后关闭文件。此函数默认的分隔符是制表符Tab。如果用了不同的分隔符,在VI的ReadFromSpreadsheetFile中应对“分隔符”参数赋值,示例如图5-28(b)所示。示例读取了图5-28(a)中程序保存的电子表格文件中的数据。此外,该函数可选择是否转置数组。上一页下一页返回5.2文件I/O2.波形文件读/写波形数据可以保存为波形文件或电子表格文件。LabVIEW的波形文件VI包括“写入波形至文件”“从文件读取波形”和“导出波形至电子表格文件”3个VI。读写波形的两个VI执行打开或创建文件、读或写文件、关闭文件的全部操作过程。下面主要介绍这两个VI。上一页下一页返回5.2文件I/OVI的写入波形至文件(WriteWaveformtoFile)功能是创建一个新文件或添加至现有文件,将指定数量的记录写入文件,然后关闭文件,检查是否有错误发生。写入波形至文件VI的appendtofile?参数在程序中设置为TRUE,这样如果用户指定的文件名已经存在,就向这个文件后面追加数据。该VI是一个多态VI,它的waveform参数可以输入单个波形、波形一维或二维数组。示例如图5-29所示。若保存波形数据为电子表格文件,选择VI的导出波形至电子表格文件,使用方法与VI的写入波形至文件相似,只是保存的文件不同。上一页下一页返回5.2文件I/OVI的从文件读取波形(ReadWaveformfromFile)功能是读取波形数据,用波形图显示在前面板上。如果保存波形数据时只存储了一个波形,或只需要读出存储的波形数据中第一个波形,就连接VI的从文件读取波形返回的firstwaveforminrecord参数,这样就只读出第一个波形;如果波形文件中有多个波形数据时,要全部读取出这些波形就连接到allwaveformsinrecord参数。读出所有波形后可以一起显示在波形图控件上,也可以用数组函数索引出某一个波形进行分析处理。对于单个波形,还可以用GetWaveformComponents函数解析出其中某个元素,示例如图5-30所示。上一页下一页返回5.2文件I/O3.数据记录文件读/写LabVIEW按记录由数据记录文件中对数据进行学习,它自动为每个数据记录文件保存各个记录的数据量。这样简化了数据的读取,因为可以按原来的数据分块把一个记录读取出来,而不需要知道一个记录包含多少字节的数据。如果不需要用其他软件读取存储的数据,那么,把数据存入数据记录文件是一种很好的选择,按这种形式把数据写入文件只需要很少的操作,使得读写文件非常方便。选择FileI/O→AdvancedFileFunctions→Datalog选项,在函数子选板中可以找到数据记录文件的操作函数,如图5-31所示。上一页下一页返回5.2文件I/O写入数据记录文件(WriteDatalog)函数可以将数据保存为一个数据记录文件。示例如图5-32所示。图中的程序将当前系统时间、采样率和正弦波信号的数据保存为一个数据记录文件。图5-32中,在Open/Create/ReplaceDatalog函数之前的部分是用来创建文件路径。Open/Create/ReplaceDatalog函数以外的图形代码是保存数据记录文件的程序代码。使用读取数据记录文件(ReadDatalog)函数读取数据记录文件的记录并将记录在函数中的记录输出端返回。要读取一个数据记录文件,必须清楚该文件写入时的数据记录格式。读取的格式必须与写入数据时所用的格式一致。函数示例如图5-33所示。上一页下一页返回5.2文件I/O图5-34是图5-33所示的程序读出的数据。选择记录控件从返回数组中索引出需要的记录;波形图控件中的图像是使用按名称解除捆绑(UnbundleByName)函数从读取的数据中解析出的采样数据。上一页返回5.3综合案例5:温度采集数据保存读取5.3.1案例背景当完成了温度的采集、显示、分析,包括产生各种报警之外,往往还需要将数据保存成文件,利用文件操作函数,可以方便地记录温度数据,并对数据标定时间。5.3.2程序设计1.前面板设计打开一个新的VI,按照图5-35所示搭建综合案例5的前面板。(1)选择Controls→Boolean选项,在前面板中放置两个布尔控件,设置它的标签为enable和waring。下一页返回5.3综合案例5:温度采集数据保存读取(2)选择Controls→Numeric选项,在前面板放置一个数值显示控件,设置它的标签为highlimit。(3)选择Controls→Graph选项,在前面板中放置一个波形图,设置它的标签为“temp历史曲线”,并按照图5-35设置图例。(4)使用文本工具,把Y轴的范围改为0~250。2.程序框图设计按照图5-36所示搭建综合案例5的程序框图。3.运行调试(1)按Ctrl+R组合键,程序进行入运行状态。(2)在

温馨提示

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

评论

0/150

提交评论