资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第7章 数据记录与回放,数据记录与回放概述,文本文件,电子表格文件,二进制文件,数据记录文件,波形文件,前面板数据记录,测量文件,配置文件,TDM,和,TDMS,文件操作,7-1 数据记录与回放概述,对于一个完整的测试系统或数据采集系统,我们经常需要将硬件的配置信息写入配置文件或者将采集到的数据以一定格式存储在文件中保存数据。,数据的记录与回放是测试系统必需的基本功能,采用文件的形式记录与回放测试数据满足大多数应用场合的需要,具有方便灵活和成本低廉的特点。,LabVIEW支持多种数据格式的文件,用于测试数据的记录与回放。对于海量数据的存储与自动化管理需要数据库的支持,NI公司提供专门的工具包用于LabVIEW与数据库链接。本章主要介绍文件输入输出函数和VI的概念与应用。,7-1-1 选择数据记录与回放的文件格式,1.,文本文件,文本文件是,最容易使用和共享的文件格式,,它可以用字处理软件或电子表格程序,(,例如,Word,或,Excel,等,),来读取或处理数据。如需在其它应用程序(如,Microsoft Excel,)中访问这些数据,最常使用文本文件。,2.,二进制文件,这种格式的文件是,存取速度最快,格式最紧凑,的数据存储方式。,可以对二进制文件进行随机访问,但需知道数据类型。如需随机读写文件或读取速度及磁盘空间有限,使用二进制文件。,3.,数据记录文件,这也是二进制格式文件(仅在LabVIEW中),它,存储复杂结构的数据,最简单快捷,而且很容易随机访问数据。如需在LabVIEW中处理复杂的数据记录或不同的数据类型,使用数据记录文件。,4. 波形文件,波形文件实际上是一种,特殊,数据记录,类型,文件,,,这种文件包含了波形数据特有的一些信息,例如采样起始时间、采样间隔等。,7-1-1 选择数据记录与回放的文件格式,7-1-1 选择数据记录与回放的文件格式,5.,测量文件,一种以制表位,分隔的文本文件,以,.lvm,为扩展名,由,Express VI,存取,除了数据以外,还包括生成数据的日期、时间等信息。,6.TDM,文件和,TDMS,文件,TDM(Technical Data Management,技术数据管理,),是,NI,公司为不同平台之间交换技术信息定义的一种数据模型,它通过附加信息使数据查询和管理更加方便。,7-1-2 数据记录与回放的基本操作,LabVIEW,记录与回放数据包括三个基本步骤,:,打开一个已存在的文件或创建一个新文件;,对文件读或写;,关闭文件。,除此之外,,LabVIEW,的文件操作还包括以下几个方面的内容:,文件或路径的改名与移动;,改变文件特征;,创建、修改与读取系统设置文件;,记录前面板对象数据;,7-1-3 文件输入输出函数, 读取电子表格文件VI;, 写入电子表格文件VI;, 关闭文件函数;, 打开/创建/替换文件函数;, 读取文本文件函数;, 写入文本文件函数;, 拆分路径函数;, 创建路径函数;, 存取TDM文件的Express VI;, TDMS流函数子选板;, 写入测量文件Express VI;, 读取测量文件Express VI;, 格式化写文件函数;, 扫描文件函数;, 写入二进制文件函数;, 读取二进制文件函数;, 文件常量;, 操作配置文件的VI子选板;, 用于压缩文件的VI子选板;, 高级文件函数,功能,:,创建或打开文件,向文件读写数据及关闭文件,将字符串以,ASCII,编码格式存储在文件中,如,txt,文件和,Excel,文件。这种文件类型最常见,可以在各种操作系统下由多种应用程序打开,如记事本,,Word,,,Excel,等第三方软件,因此这种文件类型的通用性最强。,但是相对于其它类型文件,它消耗的硬盘空间相对较大,读写速度也较慢。,如对一个浮点数123.4567,如按单精度浮点数存储只占用4个字节;但按ASCII码字符串存储,需占用9个字节。,由于不同数据占用不同字节数,因此不能随机访问数据文件。,也不能随意的在指定位置写入或读出数据。如果需要将数据存储为文本文件必须先将数据转换为字符串才能存储。,7-2 文本文件,打开/创建/替换文件,VI,通过编程或使用文件对话框交互式地打开一个现有文件,创建一个新文件,或替换一个现有文件。可指定一个对话框提示或默认的文件名。该函数可与写入文件或读取文件函数配合使用。使用关闭文件函数可关闭文件的引用。,7-2 文本文件,写入文本文件,VI,将字符串或字符串数组按行写入文件。如连接该路径至文件输入端,函数先打开或创建文件,然后将内容写入文件并替换任何先前文件的内容。如连接文件引用句柄至文件输入端,写入操作将在当前文件位置开始。,7-2 文本文件,读取文本文件,VI,从一个字节流文件中读取指定数目的字符或行。默认情况下,该函数从文本文件中读取所有字符。将一个整数值连接到计数接线端,指定从第一个字符开始读取字符的数量。右键单击函数,从快捷菜单中勾选读取行选项,从文本文件中读取单独的行。在快捷菜单中选择读取行选项时,连接一个整数值至计数输入端,指定从第一行开始读取行的数量。在计数中输入值-1,从文本文件中读取所有字符和行。,7-2 文本文件,关闭文件,VI,关闭引用句柄指定的打开文件,并返回至引用句柄相关文件的路径。,7-2 文本文件,7-2 文本文件,1.,保存文本文件,保存文本文件首先要将数据转换为字符串。,演示,在循环之前放置打开/创建/替换文件函数,在循环内部放置读或写函数,在循环之后放置关闭文件函数,-,流盘操作。此时只有写操作在循环内部进行,从而避免了重复打开关闭文件的系统占用,,提高了程序执行效率。,格式化写入字符串,7-2 文本文件,1.保存文本文件,格式化写入文件,演示,在不需要连续保存数据的时候可以用一个条件结构来判断是否执行文件操作,,注意这时候需要将“记录数据”按钮的机械动作设置为“释放时触发”。,7-2 文本文件,2.读取文本文件,演示,7-2 文本文件,2.,读取文本文件,扫描文本文件,演示,电子表格文件是一种特殊的文本文件,为了便于像Excel这样的电子表格程序对文件进行访问,对文件格式做了一些要求,例如,用制表位符号做列标记、用行尾符号做行标记。,7-3 电子表格文件,将字符串、带符号整数或双精度数的二维或一维数组转换为文本字符串,将字符串写入新的字节流文件或将字符串添加到现有文件。连接至二维数据或一维数据输入端的数据类型将确定所使用的多态实例类型。,同时也可以转置数据。VI在向文件中写入数据之前,将先打开或创建该文件,并且在完成写操作时,关闭该文件。可使用该VI创建一个可被多数电子表格应用程序读取的文本文件。,1.写电子表格的文件,.VI,7-3 电子表格文件,7-3 电子表格文件,举例,演示,7-3 电子表格文件,2.读电子表格文件,在数值文本文件中从指定字符偏移量开始读取指定数量的行或列,并将数据转换为双精度的二维数组,数组元素可以是数字、字符串或整数。必须手动选择所需多态实例。,可选择是否转置数组。VI在从文件中读取数据之前,将先打开该文件,并且在完成读操作时,关闭该文件。可使用该VI读取以文本格式存储的电子表格文件。,7-3 电子表格文件,举例,演示,是最有效率的一种文件存储格式,它占用的硬盘空间最少而且读写速度最快。,磁盘用固定的字节数保存包括整数在内的二进制数据。例如,以二进制格式存储零到四十亿之间的任何一个数,如1、1000或10000,每个数字占用4个字节的空间。,因此不会损失精度,而且可以随意的在文件指定位置读写数据。,二进制文件的数据输入可以是任何数据类型,如数组和簇等复杂数据。,7-4 二进制文件,将二进制数据写入新文件,将数据添加到现有文件,或替换文件的内容。如连接至文件(使用对话框)输入的是一个路径,函数先打开或创建文件,将内容写入文件,然后替换任何先前文件的内容。如连接至文件(使用对话框)的是一个文件引用句柄,写入操作在当前文件位置开始。要在现有文件之后添加内容,使用设置文件位置函数,将文件位置设置在文件结尾。,7-4 二进制文件,1.,保存二进制文件,VI,7-4 二进制文件,写入二进制文件函数,简单,用法,演示,7-4 二进制文件,写入二进制文件函数,高级,用法,演示,7-4 二进制文件,2.,读取二进制文件,.VI,从文件中读取二进制数据,在数据中返回。,读取数据的方式取决于指定文件的格式,。,7-4 二进制文件,读取二进制文件函数,简单,用法,演示,7-4 二进制文件,读取,复杂,数据的二进制文件,演示,7-5,数据记录文件,(仅在,LabVIEW,中),数据记录文件以相同的结构化记录序列存储数据(类似于电子表格),每行均表示一个记录。,例如,可创建一个,采样,记录,其记录数据的类型是包含字符串和数字的簇,。,数据记录文件将原始数据块作为一个记录来重新读取,无需读取该记录之前的所有记录,,,仅需记录号就可访问记录,因此可更快更方便地随机访问数据记录文件,数据记录函数子选板,7-5 数据记录文件,7-5 数据记录文件,保存数据记录文件,下图的程序将当前系统时间、采样率、和正弦波信号的数据保存为一个数据记录文件。图中椭圆框内的部分用来创建文件路径。图中椭圆框以外的图形代码是保存数据记录文件的程序代码,演示,7-5 数据记录文件,读取数据记录文件,演示,注意:,读取一个数据记录文件,必须清楚该文件写入时的,数据记录格式,。读取,的格式必须与写入数据时所,用格式,一致,7-5 数据记录文件,读取的数据记录,7-6 波形文件,1.,保存波形文件,.VI,波形数据可以保存为数据记录文件或电子表格文件。,创建一个新文件或添加至现有文件,将指定数量的记录写入文件,然后关闭文件,检查是否有错误发生。每条记录都是波形数组。使用哪一个多态实例将由连接至波形输入端的数据类型决定。,7-6 波形文件,保存波形文件,举例,演示,7-6 波形文件,2.,读取波形文件,.VI,打开一个使用写入波形至文件VI创建的文件,每次从文件中读取一条记录。每条记录可能含有一个或多个独立的波形。该VI将返回记录中所有波形和记录中第一波形,单独输出。要获取文件中的所有记录,在循环中调用该VI,直到文件结束为止。,7-6 波形文件,将一个波形转换为文本字符串,然后将字符串写入一个新字节流文件或将字符串添加到现有文件。使用哪一个多态实例将由连接至波形输入端的数据类型决定。,3.,读取波形,至电子表格,文件,.VI,7-6 波形文件,读取波形文件举例,演示,7-7 前面板数据记录,LabVIEW可以将程序前面板所有控件显示的当前数据值记录下来。前面板数据保存在一个数据记录文件中。,使用前面板数据记录的方法可以把所有前面板对象当前数据一次记录下来。使用这种方法的好处是数据存取十分方便;但是它不能连续记录数据,而且不能选择数据记录的对象。,7-7-1 记录前面板数据,记录前面板数据的方法是使用菜单命令“,操作,结束时记录”或“操作,数据记录,记录,”,7-7-2 读取前面板记录数据,1.,在前面板上读取记录的数据,读取前面板数据最基本的方法是在原来的程序上把数据读回来。在程序停止运行后使用菜单命令,“操作,数据记录,获取,”,,则前面板所有对象都显示数据记录文件中一条记录的数据,并且前面板工具条会变为下图所示。,7-7-2 读取前面板记录数据,2. 在程序中读取前面板数据记录,演示,7-8 测量文件,写测量文件Express VI的配置对话框,7-8 测量文件,写测量文件程序框图,程序中用“写入测量文件”Express VI把“仿真信号”Express VI生成的数据写进一个测量文件。,演示,7-9 配置文件,标准的,Windows,配置文件扩展名为,.ini,。配置文件包含硬件或应用程序参数配置的某些信息,用于启动时初始化。,配置文件是一种特定格式的文本文件。 文件分为一些段,段名不能重复;每段包含若干成对的键名与键值,键名表示配置项,键值表示对配置项的设置。在同一段内,键名也不能重复。示例如下:,Section 1,key1=value,key2=value,Section 2,key1=value,key2=value,7-9 配置文件,读配置文件,LabVIEW,提供了一组配置文件操作的,VI,,在“编程,文件,I/O,配置文件,VI”,函数子选板中。下面通过例子说明这些,VI,的应用方法。下图所示的程序可以读出,LabVIEW,配置文件中关于前面板默认字体的设置。,演示,7-9 配置文件,写配置文件,演示,7-10 TDM和TDMS文件操作,TDM,数据模型便于在,LabVIEW,、,LabWindows/CVI,等,NI,公司不同软件开发平台之间交换数据,也可以通过下载免费的插件在,Excel,中加载和使用,TDM,数据;并且由于,TDM,数据模型的层次化结构和不同层次的属性设置,非常方便数据的查询。,在,TDM,数据模型中,每个文件有一个唯一的“根”和数目不限的“组”,每个组有数目不限的通道。允许用户为根、组和通道添加数目不限的属性。,TDM,数据模型包括,TDM,和,TDMS,两种格式的文件。,7-10 TDM和TDMS文件操作,TDM数据模型,7-10-1 TDM文件,TDM格式的文件包括一个后缀名为“.tdx”的数据文件和一个后缀名为“.tdm”的属性文件。属性文件是一个基于XML的文件。下图为简单的保存TDM文件的例子,演示,7-10-1 TDM文件,“数据存储格式”,可以选择TDM文件或TDMS文件;,“数据存储参数”,填写默认的保存文件位置;,“覆盖选项”,是打开数据存储的方式,7-10-1 TDM文件,写入数据配置,对话框,7-10-1 TDM文件,读取TDM文件数据,演示,7-10-1 TDM文件,读取TDM数据配置对话框,7-10-2 TDMS文件(TDM Streaming),TDMS,操作函数在,TDM流函数子选板,TDMS写入,TDMS打开,TDMS设置属性,TDMS文件查看,TDMS读取,TDMS关闭,TDMS获取属性,7-10-2 TDMS文件,写TDMS文件,演示,7-10-2 TDMS文件,TDMS文件可以用“TDMS文件查看器” 浏览,7-10-2 TDMS文件,在程序中访问,TDMS文件,内容,-,读TDMS文件,演示,读取,TDMS文件,程序框图,7-10-2 TDMS文件,读回的TDMS文件数据,读取,TDMS文件,前面板,练习与思考,7.1,产生若干个周期的正弦波数据,以当前系统日期和自己的姓名为文件名,分别存储为文本文件、二进制文件和电子表文件。,7.2,分别用,Windows,记事本、,Excel,和,LabVIEW,程序将习题,7.1,存储的数据文件读出来。,7.3,将一组随机信号数据加上时间标记存储为数据记录文件,然后再用,LabVIEW,程序将存储的数据读出并显示在前面板上。,7.4,产生矩形脉冲数据并记录为波形文件。,7.5,编一个程序将图,7-24,的程序保存的文件中各项数据读回来。,7.6,将一个方波波形保存为,TDMS,文件,加上文件名属性。,将本题,TDMS,文件数据正确读回,用波形图显示。,第8章 数据通信,局部变量,全局变量,DataSocket,技术概述,使用,DataSocket,传输数据,在,Web,上发布程序,8-1 局部变量,我们知道,LabVIEW编程是通过连线方式来进行数据传递的,但当需要在程序框图中多个位置访问同一个前面板对象时,有时也会遇到连线的困难,或造成连线混乱不清。,局部变量用来在一个VI内部传递数据,,它不仅可以解决连线的困难,而且可以在对同一个控件的多次访问中有些对它写入数据、有些从它读取数据。,局部变量只能在同一程序内部使用,每个局部变量都对应前面板上的一个控件,一个控件可以创建多个局部变量。,读写局部变量等同于读写相应控件,8-1-1 建立局部变量,通过函数选板建立局部变量,演示,8-1-1 建立局部变量,直接为前面板对象建立局部变量,8-1-2 局部变量的使用方法,读写局部变量的方法与读写控件对象的方法完全一样,通过局部变量既可以向它的前面板控件写数据,也可以从它的前面板控件读数据,而不必考虑这个控件是显示控件还是输入控件。需要做的只是改变这个局部变量的数据流方向。,演示,8-1-2 局部变量的使用方法,访问局部变量的顺序,如果把对局部变量的读和写放在同一起,则不能保证写入温度值的动作一定发生在读取温度值的动作之前。也就是说有可能读取了没有意义的数据。要防止这种情况,可以采用顺序结构;或者建立人为的数据依从关系。,8-1-3 局部变量应用示例,1. 使用局部变量进行控制方式转换,演示,8-1-3 局部变量应用示例,2. 使用局部变量控制两个并行的While循环同时停止,演示,8-1-3 局部变量应用示例,3. 初始化前面板控件,演示,8-1-3 局部变量应用示例,3. 初始化前面板控件用户信息,演示,8-2 全局变量,由上一节我们已经知道,,局部变量,与前面板上已有的某一个控件相联系,用于在一个程序的不同位置访问同一控件,实现一个程序内传递数据。,全局变量是用于在不同的程序之间传递数据,这些程序可以是并行的,也可以是不便于通过接口传递数据的主程序和子程序。,全局变量也是用一个控件的形式存放数据,但是这个控件独立于调用它的VI,以一个特殊的VI作为自己的容器。,这个,VI,文件只有前面板,没有程序框图,不能进行编程。,位于函数选板,- 编程- 结构模板,8-2 全局变量,步骤:,1. 打开一个新 VI, 从框图程序 函数选板- 编程-,结构模板选择 全局变量 ,将其放置在框图程序上 。,2. 使用操作工具双击全局变量节点,自动打开全局变量 VI 的前面板。,3. 在前面板放置所需的控制或显示对象,为每个对象命名。,4. 保存全局变量文件(扩展名为gbl, 以区别于其它VI)。,5. 关闭全局变量的前面板窗口。,6. 返回第一步打开的文件,可使用全局变量。,8-2-1 建立全局变量,8-2-1 建立全局变量,演示,全局变量的使用,在 VI 的框图程序中,选择函数选板 - 选择VI , 在弹出的选择需打开VI对话框中选择所需的全局变量声明文件(*.gbl), 按下打开按钮,在框图程序放置一个默认的全局变量,右击全局变量节点,在选择 选择项的弹出菜单,选择所需对象。,若在一个 VI中需要使用多个全局变量,可使用拷贝和粘贴全局变量的方法,或使用选择工具选中一个全局变量,同时按ctr键,采用拖曳拷贝的方法。,8-2-2 全局变量应用示例,1. 利用全局变量传递波形数据,演示,8-2-2 全局变量应用示例,2. 全局变量传递数据(多用户),演示,8-2-2 全局变量应用示例,3.,液位控制,液位控制程序,演示,8-2-2 全局变量应用示例,3. 液位控制容器仿真程序,演示,8-2-3,局部变量和全局变量应注意的一些问题,LabVIEW,程序最大的特点就是它的数据流驱动的执行方式,但是局部变量和全局变量从本质上讲并不是数据流的一个组成部分。它们掩盖了数据流的进程,使程序变得难以读懂。另外使用局部变量和全局变量还要注意以下的问题:,局部变量和全局变量的初始化,使用局部变量和全局变量时对于计算机内存的考虑,注意,:,使用局部变量和全局变量时要避免竞争现象。,例如在程序不同的两个地方同时写同一个的对象的局部变量或全局变量,就会产生竞争现象,这时变量的值是无法预期的。,因此我们必须要注意程序的执行顺序,避免竞争现象,8-2-3,局部变量和全局变量应注意的一些问题,演讲完毕,谢谢观看!,
展开阅读全文