LabVIEW实践之路第三章39-40
- 格式:doc
- 大小:136.50 KB
- 文档页数:2
LabVIEW实践之路第四章数据持久化基础---文件I/O使用文件进行数据持久化是众多中小数据量的软件系统的首选,不好意思,有点酸了---应该说用文件存储和管理数据被广泛使用!当然,数据库系统的优势已经被充分证实,我们在后面专门会实践一下,这一章当让是学习LabVIEW的文件系统了。
在本章正是开始之前,我们得有这样的概念:对数据存储和管理的要求不同,一般来说最适合的文件类型也不同。
比如存储大量的浮点型数据和存储几十行的配置参数,前者必然要求在大数据量下的读、写、查询等性能,但通常不要求文本格式直接编辑,而后者一般不涉及读写性能问题,不过若是文本格式会给维护更方便。
本章主要给出电子表格、文本文件及测试文件的典型应用,对自定义二进制文件、配置文件以及XML(这是很有用滴~)则简单介绍一下喽。
图4.1 文件I/O函数4.1 文本文件(Text files)与二进制文件(Binary files)文本文件与二进制文件在编码层次上时不同的。
简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等,是定长编码的。
二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码),二进制文件可看成是变长编码的。
一般认为,文本文件编码基于字符定长,译码容易些(比如用windows自带的记事本、写字板就能打开);二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些(不同的二进制文件格式,有不同的译码方式,二进制文件直接用记事本打开就是一堆乱码)。
下面我们就用记事本打开两个文件,分别存储了数字1至100,前一个为某种格式的文本文件,后一个则为某种格式的二进制文件。
第四章数据持久化基础---文件I/O图4.2 用记事本打开文本文件和二进制文件用LabVIEW帮助的话说“如需在其它应用程序(如Microsoft Excel)中访问这些数据,使用最常见且便于存取的文本文件;如需随机读写文件或读取速度及磁盘空间有限,使用二进制文件,在磁盘空间利用和读取速度方面二进制文件优于文本文件;如需在LabVIEW中处理复杂的数据记录或不同的数据类型,使用数据记录文件,如果仅从LabVIEW访问数据,而且需存储复杂数据结构,数据记录文件是最好的方式。
LabVIEW 实践之路43下一次输入内容和存储。
图4.7写入文本文件注意,在这个实例中每次输入的文本都会在最后加一个行结束符,接下来通过“写入文本文件”VI 存到制定的文件中,然后通过局部变量清空文本输入框,等待下一次操作。
听起来很好啊,不过需要我们实现了看一下有没有问题。
比如,我先输入了“从前有座山”,存储,打开文件看看,感觉不错啊;又输入了“山里有座庙”,存储,打开文件看看,怎么回事?就剩下了“山里有座庙”一句,原来的“从前有座山”不见了。
很显然,这是覆盖存储的方式,那能不能像电子表格文件VI 一样选择添加至已有文件呢?答案是该VI 没有提供此接线端~但是,如果你仔细观察图4.3,也就是电子表格文件VI 的底层,一切都迎刃而解了!接下来继续实践。
图4.8 改进的连续写入文本文件第四章 数据持久化基础---文件I/O44 图4.8所示文本文件操作具有非常典型的处理流程,即新建(或打开,这儿还包含了配置、预处理等)、循环处理、释放资源。
说它典型,是因为许多其他处理流程都是这样按部就班,或者在此基础上增减。
比如数据采集程序(见第9章),通常包括配置、开始采集、循环读取、释放资源等。
在本例中,循环内写入文本文件前通过“设置文件位置”指定了新写入的文本放置在原有文本的什么位置,总共有开始位置(start )、结尾位置(end )以及当前位置(current )三个选项,可以根据需要选择。
操作完成后释放资源是一个好习惯,在某些情况下,资源是被独占的,如果不释放掉就无法被别的程序使用。
接下来我们读取一下文本文件。
如图4.9所示,用一个子VI “读取文本文件”默认情况下便可以读出全部文本。
如果按需读取,那说来也简单。
要读取“从前有座”前4个字符怎么办?注意“读取文本文件”VI 左侧有一个count 连线端,赋值为8就可以了。
等等,为什么不是4?别忘了,中文属于UNICODE 编码,两个字节一个汉字哦~想读中间数个字符怎么办?看上一段的“设置文件位置”!又如想读出n 行,那怎么办?在“读取文本文件”VI 上面点击右键,看看有什么选项?对了,有“读取行”选项处于未选中,选中它,就变为按行读取模式了。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==labview,实习报告篇一:labviEW虚拟仪器实习报告实验一:实验步骤(1)启动LabVIEW,创建一个VI并命名为test1。
(2)在前面板中放置一个温度计控件,并修改控件标签名为发动机温度和设置最大值为100。
该控件从“控件—经典—经典数值”子选项板中获得。
(3)按同样的方法在前面板中放置一个仪表控件,并修改仪表控件的标签名为汽车速度,标尺刻度范围为0~150。
(4)按同样的方法在前面板中放置一个数值输入控件,并修改控件标签名为发动机转速。
(5)从“窗口”下拉菜单中选择“显示程序窗口”切换到程序框图窗口。
(6)在程序窗口中创建乘法函数,该函数中函数选项板中的“函数—编程—数值”子选项板中选择,并和发动机转速输入控件连线,为乘法函数创建一个常量,修改为图中所示值。
(7)按同样的方法创建加法函数、平方根函数和除法函数,并按图中所示修改常量值和连好线。
(8)切换至前面板,在发动机转速控件中输入数值,点击运行按钮,运行VI程序。
(9)修改图标为T/V以表示该子VI输出量为发动机温度和汽车速度,并保存。
前面板:程序框图:实验二:实验步骤:(1)启动LabVIEW,创建一个vi并保存为test2。
(2)在前面板中创建一个旋钮控件,修改标签名为发动机转速,设置数值范围为0~5000,从旋钮控件中调出一个数字显示控件来同步显示旋钮控件当前值。
(3)在前面板创建两个数值显示控件,并修改标签名为汽车速度和发动机温度。
(4)切换至程序框图窗口。
(5)在程序框图中创建一个大于或等于函数。
(6)在程序框图中调用实验一的子函数,从函数选板中的“函数—选择VI”选在实验一创建的子vi.vi。
(7)在程序框图中创建一个蜂鸣器函数,并按图示连线情况连线。
(8)切换至前面板,在发动机转速中输入数值,点击运行按钮运行。
LabVIEW实践之路了。
“数组插入”函数的输入同“替换数组子集”一模一样,分别是输入数组、起始位置和插入/替换的元素。
如右图所示,这是一个在一维数组中插入两个元素的例子。
“删除数组元素”通过两个(如果是多维数组那就会超过两个)输入来确定到底哪些元素被从数组中删除掉:长度和索引(即初始位置),多维数组的初始位置的确定有可能使用多个索引值。
而该函数的输出比较贴心:“已删除元素的数组子集”和实际“已删除的部分”。
“初始化数组”用于通过某一给定初始值来快速构造数组常量。
“创建数组”很有用,你可以通过连接输入(即串接)或并接数组来构造新的数组,有时候我也使用该函数对增加已有数组的维数以适应程序需要。
“数组子集”用来取部分元素,如何确定取哪一部分呢?呵呵,和“删除数组元素”函数相同。
剩下的函数就不再详述了,相信很容易掌握。
像搜索、插值、二维数组转置等都是很有用的。
要是还不知道怎么用,那看帮助或者动手试一下吧!(别忘了,我们常说的优秀的软件都会带有非常好的帮助文献和示例库,LabVIEW也是如此!)我们来看一个综合实例,如图3.3所示,我们需要显示数组的大小,在原数组中找到最小值和最大值,并将最小值置为0,最大值所在列删除掉。
其中用到了五个不同的数组函数,当然你可以继续添加功能,比如将输出的二维数组转置,然后再转成一维数组,然后再……与数组作斗争,其乐无穷哦。
第三章我的类型我做主:从数组与簇说开图3.3 数组函数实例数组能够与其他数据类型直接进行运算或相互转换,由于簇、字符串等还没有详细介绍过,我们只简单说一下数组运算时几个应注意的地方。
数组可以同数字进行加减乘除等运算,运算的结果是每一个元素分别同该数字进行运算后的数组输出,如图3.4实例所示。
图3.4 数组与数字相乘数组同数组进行运算时,如果两数组长度不一,那么以较小的数组长度为基准,超出的被舍弃。
图3.5 两数组相加运算。
LabVIEW实践之路第三章我的类型我做主:从数组与簇说开数组(Array),多么好听的名字(有点想吐…)。
不管怎么说,这个东东是各种编程语言都绕不过去的,你想想,一大堆类型相同的元素,要是没有数组来组织存放,用的时候怎么办呀??(哦,稍微夸张一点,呵呵,我知道还有各种各样的容器类型,java里面容器类就有好多啊)不过非常严肃的说:LabVIEW的数组函数是非常好用的!3.1 LabVIEW中数组的特点稍稍总结一下,LabVIEW中数组的以下特点得了解,这样才能开始学会使用和用好它。
1)LabVIEW的前面板控件中有数组类型,如果你只想使用数组常量,可以在框图程序里面直接构建数组常量,当然,出现最多的还是框图程序中间过程的连线(数据流)表现为数组类型,如右图所示。
顺便说一句,数据流连线的的颜色、形态、粗细等表示了不同的数据类型,像一维浮点数数组的连线就是橙色粗实线等等。
直接在前面板或框图创建数组需要先拖放一个空的数组控件或数组常量,然后再将你需要的特定数据类型的控件或常量放到这里面。
比如你想要一个布尔型的数组控件,那么可以把按钮型或指示灯型布尔控件放到数组控件里。
这里需要注意两个问题:其一是通过上述步骤构造完数组后。
数组并未初始化,还是一个特定数据类型的具有0个元素的数组;其二是一个数组(不管多少维),只能放置一种数据类型的元素,当然这种数据类型可以非常复杂。
2)同大部分编程语言一样,LabVIEW中数组元素的标识(想叫编号、下标也行,能理解就OK)也是从0开始,即如果数组中共有10各元素,那么第一个为0号元素,最后一个为9号元素。
3)LabVIEW的数组最让人高兴的特性就是,它是长度可变的!是能够根据你的需求自动变化的!我们不需要像C语言一样必须事先定义数组长度,用的时候特别小心不要越界,如果想要增加已有数组长度还得费点功夫,在LabVIEW里面这些都可以不去管它,是不是很让人激动呢?举个例子来看一眼,如图3.1所示,我们通过For循环产生随机数数组并显示,不管你产生多少个随机数,数组显示都不用我们去关心到底长度应该设多少。
LabVIEW是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,是美国国家仪器公司(NATIONAL INSTRUMENTS,简称NI)的创新软件产品,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境。
LabVIEW是一种图形化编程语言,又称G语言。
其编写的程序称为虚拟仪器VI(Virtual Instrument),以.VI后缀。
LabVIEW模板:◆ 工具模板(Tools Palette)◆ 控件模板(Controls Palette)◆ 功能模板(Functions Palette)VI的组成:◆ 前面板(Panel)控制(Control),指示(Indicator),修饰(Decoration)。
将前面板中的控制和指示统称为前面板对象或控件。
◆ 框图程序(Diagram Programme)节点(Node),数据连线(Wire)节点有:功能函数(Functions),结构(Structures),代码接口节点(CIN),子VI(SubVI)。
数据端口有:控制端口和指示端口,节点端口。
LabVIEW编程又称为“数据流编程”。
◆ 图标/连接端口(Icon/Terminal)把VI作为一个SubVI在其它VI中调用。
常用术语:SubVI 子VI Chart 实时趋势图LLBs VI库Graph 事后记录图Objects 对象Functions 功能Panel 前面板Structures 结构Block Diagram 框图程序Cluster 簇Control 控制Bundle 打包Indicator 指示Unbundle 解包Control和Indicator 前面板对象或控件RefNum 枚举,标志号Palette 模板Local Variable 本地变量Functions Palette 功能模板Global Variable 全局变量Controls Palette 控件模板Constant 常量Tools Palette 工具模板Disable Indexing 无索引Terminal 端口Enable Indexing 有索引Wires 数据连线Read Local 本地读Bad Wires 错误数据连线Write Local 本地写Node 节点Read Global 全局读Attribute Node Write Global 全局写Property Node 属性节点Legend 图例Frame 框架Cursor 光标Channel 框架通道Bounds 边界范围Index 索引Data Acqisition(DAQ) 数据采集Shift Register 移位寄存器Label 标签运行VI1.运行VI(Run)2.连续运行VI(Run Continuously)3.停止运行VI(Abort Execution)4.暂停运行VI(Pause)调试VI1.单步执行单步(入),单步(跳),单步(出)2.设置端点3.设置探针4.显示数据流动画数据类型:基本数据类型:数字型(Numeric),布尔型(Boolean),字符串型(String)构造数据类型:数组(Array),簇(Cluster)其它数据类型:枚举(RefNum),空类型数组(Array):索引号从0开始一维数组(1D,列或向量),二维数组(2D,矩阵)组成:数据类型,数据索引(Index),数据创建:1.控制模板->Array & Cluster子模板2.根据需要将相应数据类型的前面板对象放入数组框架中使用:1. Array Size返回输入数组的长度2. Index Array返回输入数组由输入索引指定的元素3. Replace Array Element替换输入数组的一个元素4. Array Subset从输入数组取出指定的元素5. Reshape Array改变输入数组的维数6. Initialize Array初始化数组7. Build Array建立一个新数组8. Rotate 1D Array将输入数组的最后n个元素移至数组的最前面9. Sort 1D Array将数组按升序排列10.Reverse 1D Array将输入的1D数组前后颠倒,输入数组可以是任何类型的数组11.Transpose 2D Array转置输入的二维数组,也叫矩阵转置12.Search 1D Array搜索指定元素在一维数组中的位置13.Array Max & Min返回输入数组中的最大值和最小值14.Split 1D Array将输入的一维数组在指定的元素处截断,分成2个一维数组15.Interpolate 1D Array线性插值16.Threshold 1D Array一维数组阀值,是线性插值的逆过程17.Interleave 1D Arrays将从输入端口输入的一维数组插入到输出的一维数组中18.Decimate 1D Array将输入的一维数组分成数个一维数组,是Interleave 1D Arrays的逆过程簇(Cluster):类似于Pascal语言的record和C语言的struct组成:不同的数据类型创建:控制面板—>Array & Cluster子面板;向框架添加所需的元素;根据需要更改簇和簇中元素的名称使用:1.Unbundle解包。
LabVIEW实践之路先完成一个写电子表格文件试试吧,经过一层层封装后,我们不用再先建文件、再打开文件、再一点点写入、再关闭文件…,一个VI搞定。
比如将3行6列的数据写入文件(干脆文件名叫ch4-01.txt),如图4.4所示。
图4.4 写入电子表格文件我们只是制定了文件路径和文件名,规定了写入文件中的格式是整型(d%),并且将3行6列的数赋给了VI,来看看生成的文件吧,如图4.5所示。
图4.4 电子表格文件格式我们必须得知道,为什么存储的数字之间以制表符隔开呢?因为虽然我们没有直接指定,但该VI默认分隔符就是制表符(Tab),当然你完全可以换成你喜欢的。
另外,如果你喜欢,可以连路径文件名都空着,包括连格式也不指定,呵呵,看看默认的效果吧。
当然,为了进一步实践,我们来看一下如果需要连续存储到一个文件里应该怎么办?比如我们进行两个通道的数据采集,每通道1秒钟会采集8个浮点数(精度位数3),根据情况采集一段时长的数据,同一通道数据之间以空格隔开。
好,隆重推出ch4-02的程序面板和框图。
图4.5 电子表格文件的连续存储第四章数据持久化基础---文件I/OWhile循环里放置了写入电子表格文件VI,仿真数据是由两层for循环里面的随机数发生器产生,为了仿真“每通道1秒钟会采集8个浮点数”,while循环里设置了”等待(ms)”VI,每次循环之间等待1000ms,即1秒钟。
其实在这个例子里需要注意的是几个不起眼的地方:首先是路径里文件名ch04-2没加后缀,呵呵,用个记事本或写字板打开看看吧,没问题的,比如bmp图片不加后缀照样是bmp图片,即使你把后缀名改成.mp3它也照样是色彩而不是音符;接下来格式字符串我们用了%.3f,这就不解释了;非常要的是“添加至文件?”和“转置?”都赋给了TRUE,并且分隔符给了一个空格(哈哈,图上看不出来吧),这些设置都是为了能够以统一的格式连续添加到文件尾,得到的文件效果如右图。
(完整版)labview实验报告虚拟仪器实验基础电子信息与物理系长治学院虚拟仪器实验指导书实验一LabVIEW 编程环境与基本操作实验一、实验目的1.了解LabVIEW 的编程环境。
2.掌握LabVIEW 的基本操作方法,并编制简单的程序。
3.学习建立子程序的过程二、实验内容1.建立一个测量温度和容积的VI 。
a.实验步骤1)选择File? New,打开一个新的前面板窗口。
2)从Controls? Numeric 中选择Tank 放到前面板中。
3)在标签文本框中输入“容积” ,然后在前面板中的其他任何位置单击一下。
4)把容器显示对象的显示范围设置为0.0 到1000.a.使用文本编辑工具(Text Edit Tool ),双击容器坐标10.0 标度,使它高亮显示。
b. 在坐标中输入1000 ,再在前面板中的其他任何地方单击一下。
这时0.0 到1000.0 之间的增量将被自动显示。
5) 在容器旁配数据显示。
将鼠标移到容器上,点右键,在出现的快速菜单中选Visible Iterms? Digital Display 即可。
6) 从Controls? Numeric 中选择一个温度计,将它放到前面板中。
设置其标签为“温度”,显示范围为0 到100,同时配数字显示。
可得到如下的前面板图。
图1.3 练习2 的前面板图7) Windows?Show Diagram 打开流程图窗口。
从功能模板中选择对象,将它们放到流程图上组成下图(其中的标注是后加的)。
乘法函数连接点随机数发生器数值常数图1.4 练习2 的流程图2 20XX年-5-22长治学院虚拟仪器实验指导书该流程图中新增的对象有两个乘法器、两个数值常数、一个随机数发生器,温度和容积对象是由前面板的设置自动带出来的。
乘法器和随机数发生器由Functions? Numeric 中拖出,尽管数值常数也可以这样得到,但是建议使用在连接端子处点击右键创建(Create)常量(Constant)的方法更好些。
LabVIEW实践之路簇非常灵活,操作起来也比较简单,最常用的就是以下四个函数:捆绑/解除捆绑,按名称捆绑/按名称解除捆绑。
“捆绑”让你可以随心所欲的把多个类型的数据依次打成簇,只要连接到左端输入接口即可,但不能有空置的输入端口;“解除捆绑”则是依次把所有的簇内数据端口提供给你,不管你用不用。
“按名称捆绑”则需要你提供一个预定义的簇的类型,将该簇连接到函数中间的“输入簇”,同时通过左端输入接口你可以有选择的连接一个或几个(注意:预定义的每一个簇内元素都应该有一个名称,因为“按名称解除捆绑”时用得到);“按名称解除捆绑”允许你只选择其中你需要的解出数据,其余的端口干脆不显示,程序看起来很清爽。
(注意,经过测试,发现不管是直接“解除捆绑”还是“按名称解除捆绑”,两者耗用时间几乎相同,大家可以试一下)以下是簇的捆绑、解除捆绑的实例。
另外,这几个函数可以混用哦,只是有些问题得注意,自己试试吧!图3.11 簇的捆绑和解除捆绑一直强调簇的灵活性,你可以构建各种各样的簇类型来体验一下,比如簇中有数组,簇中有簇,簇中有各种稀奇古怪的类型的合集~不要小看这一特点,你在设计较为复杂的程序时很可能要求助于它的。
比如LabVIEW中的“错误信息”类型就是一种典型的簇,而用于进行DAQ配置的数据结构更是缺少不了它的身影,如图3.12、3.13所示。
图3.12 典型的簇:错误信息类型图3.13典型的簇:应变采集的桥路信息类型图3.14为使用簇的简单实例,通过自定义的数据类型传递由布尔数组和颜色量第三章我的类型我做主:从数组与簇说开(U32)组成的信息,实现通过切换按钮控制指示灯以及颜色显示。
图3.14 簇类型的简单实例这一章看起来有点短,不过数组和簇确实是非常重要的数据类型,许多操作需要自己在应用中掌握,毕竟这不是帮助文档,不可能全部描述一遍。
LabVIEW里有许多函数是多态的,比如既能够够应用于数组、又能够应用于簇等等,你可以试一下~比如LabVIEW的帮助>>查找范例里面有个例子String Length,将Length函数用于不同的数据类型,你来试试吧!图3.15 String Length实例。
LabVIEW实践之路北京工业大学先进制造技术实验室2010年12月LabVIEW实践之路代码与工具(代序)IT行业的发展是有目共睹的,越来越多的年轻人加入到这一领域,对于大部分人来说,编程序、写代码成了每天要面对的。
《LabVIEW实践之路》的内容也和程序开发有关,但不仅仅是编程,而是传递一种掌握工具、解决问题的思想。
同样,所有的开发语言也都是实现功能或系统,满足需求的工具,如果只知coding而忘记了其工具属性,只知追求编程技巧忘记了功能的实现,那显然不是各种开发语言产生的目的。
对于LabVIEW来说,它有其自身的特点和应用范围,有其独特的语言构架、开发环境以及设计原则等。
了解掌握这些内容当然很重要,但同样重要的是把LabVIEW、虚拟仪器当做解决问题的工具,用最适合、最高效的投入获得令人满意的结果。
虚拟仪器不只有LabVIEW,就像是操作系统不只有Windows;但LabVIEW是虚拟仪器开发环境的霸主,正如Windows在操作系统中的地位。
在校的学生进入LabVIEW的天地,根据应用的不同许多相关知识需要了解,因为LabVIEW最拿手的测试测量和自动化领域绝对是一个“知识密集”领域,解决问题的同时学习一些基础理论和应用技术对将来的个人发展是不无裨益的。
最后,学习本身就是一种苦中作乐的事情,学习LabVIEW也是如此。
希望本教程能够让学习的过程少一些弯路,多一些愉悦,尤其是解决工程问题的快乐。
PS:意见、交流信箱:santtoy@2010年底于北京工业大学说明:本教程不限制无商业目的的网上分发、复制、传播,如果涉及商业使用或学术引用,请先征得同意。
第一章LabVIEW起步:做应该做的第一章LabVIEW起步:做应该做的人们提到LabVIEW的时候通常前面会加上“虚拟仪器”这个单词,这在一个侧面反映了LabVIEW的应用特点,那么好的,我们来了解一下什么是虚拟仪器,以及它与LabVIEW之间是什么关系。
测控工程实践LabVIEW教学教程第一讲 LabVIEW 概述第一节 虚拟仪器(VI )的概念使用LabVIEW 开发平台编制的程序称为虚拟仪器程序,简称为VI 。
LabVIEW (Laboratory Virtual instrument Engineering Workbench )是一种图形化的编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。
LabVIEW 集成了和满足GPIB 、VXI 、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。
它还内置了便于使用TCP/IP 、ActiveX 等软件标准的库函数。
这是一个功能强大且灵活的软件。
利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。
图形化的程序语言,又称为“G”语言。
使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或流程图。
它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW 是一个面向最终用户的工具。
它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。
使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。
利用LabVIEW ,可产生独立运行的可执行文件,它是一个真正的32位编译器。
像许多重要的软件一样,LabVIEW 提供了Windows 、UNIX 、Linux 、Macintosh 的多种版本。
所有的LabVIEW 使用程序,即虚拟仪器(VI ),它包括前面板(front panel )、程序框图(block diagram )以及图标/连结器(icon/connector)三部分。
前面板是图形用户界面,也就是VI 的虚拟仪器面板,这一界面上有用户输入和显示输出两类对象,具体表现有开关、旋钮、图形以及其他控制(control )和显示对象(indicator )。
LabVIEW实践之路
簇非常灵活,操作起来也比较简单,最常用的就是以下四个函数:捆绑/解除捆绑,
按名称捆绑/按名称解除捆绑。
“捆绑”让你可以随心所欲的把多个类型的数据依次打成簇,只要连接到左端输入接口即可,但不能有空置的输入端口;“解除捆绑”则是依次把所有的簇内数据端口提供给你,不管你用不用。
“按名称捆绑”则需要你提供一个预定义的簇的类型,将该簇连接到函数中间的“输入簇”,同时通过左端输入接口你可以有选择的连接一个或几个(注意:预定义的每一个簇内元素都应该有一个名称,因为“按名称解除捆绑”时用得到);“按名称解除捆绑”允许你只选择其中你需要的解出数据,其余的端口干脆不显示,程序看起来很清爽。
(注意,经过测试,发现不管是直接“解除捆绑”还是“按名称解除捆绑”,两者耗用时间几乎相同,大家可以试一下)以下是簇的捆绑、解除捆绑的实例。
另外,这几个函数可以混用哦,只是有些问题得注意,自己试试吧!
图3.11 簇的捆绑和解除捆绑
一直强调簇的灵活性,你可以构建各种各样的簇类型来体验一下,比如簇中有数组,簇中有簇,簇中有各种稀奇古怪的类型的合集~不要小看这一特点,你在设计较为复杂的程序时很可能要求助于它的。
比如LabVIEW中的“错误信息”类型就是一种典型的簇,而用于进行DAQ配置的数据结构更是缺少不了它的身影,如图3.12、3.13所示。
图3.12 典型的簇:错误信息类型图3.13典型的簇:应变采集的桥路信息类型图3.14为使用簇的简单实例,通过自定义的数据类型传递由布尔数组和颜色量
第三章我的类型我做主:从数组与簇说开
(U32)组成的信息,实现通过切换按钮控制指示灯以及颜色显示。
图3.14 簇类型的简单实例
这一章看起来有点短,不过数组和簇确实是非常重要的数据类型,许多操作需要自己在应用中掌握,毕竟这不是帮助文档,不可能全部描述一遍。
LabVIEW里有许多函数是多态的,比如既能够够应用于数组、又能够应用于簇等等,你可以试一下~比如LabVIEW的帮助>>查找范例里面有个例子String Length,将Length函数用于不同的数据类型,你来试试吧!
图3.15 String Length实例。