虚拟仪器labview课件PPT5.ppt
5.1 For循环(重点)5.2 While循环(重点)5.3 顺序结构(重点)5.4 选择结构(重点)5.5 事件结构5.6 5.7 定时循环结 构 5.8 属性节点(重点),第五章 结构与属性控制,5.1 For 循环 For循环是LabVIEW最基本的结构之一,它执行指定次数的循环。相当于C语言的For循环:for(int i=0;iN;i+)LabVIEW中For循环可从框图功能模板Function ProgrammingStructure子模板中创建。,5.1.1 For 循环的组成 最基本的For循环由:循环框架、迭代端口i和总计数端口构成。此外,LabVIEW在For循环中引入移位寄存器(Shift Register)和框架隧道(Loop Tunnel)两个独具特色的新概念。,数据在移位寄存器中的流动过程:,移位寄存器的特点:(1)移位寄存器(左右)是For循环的数据缓冲区。(2)可以增加和减少移位寄存器的个数。(3)左右两侧移位寄存器的数据类型必须一致。,框架隧道:框架隧道是For循环与循环外部进行数据交换的数据隧道。其功能:(1)在循环开始前,将循环外的数据送至循环内;(2)在循环结束后将循环结果送至结构外。框架隧道的属性:有索引(Enable Indexing)和无索引(Disenable Indexing)。(1)当框架属性为Enable Indexing时,该框架隧道就是一个数据缓存,每次循环结果在隧道内按先后次序组成一个数组,循环结束时,一次将合成的数组送出。(2)当框架属性为Disenable Indexing时,该框架隧道最后一次循环送过来的数据,并在循环结束时将该数据送出。,框架隧道属性用框架隧道右键菜单设置。,5.1.2 For 循环的使用 例5.1.1 求N!.,例5.1.2 求0到99之间所有偶数的和.,5.1.3 For 循环的特点 1.一旦For循环开始执行,就必须执行完相应次数循环后才能终止,不可中途跳转出来。2.具有自动索引功能 例:求一维数组所有元素的和。,当For循环计数端口给定值与两数组长度不等时,For循环自动按最小循环次数执行。,5.2 While 循环 当循环次数不能预先确定时,就需要用到While循环。它也是LabVIEW最基本的结构之一。相当于C语言的While循环和do循环:While(条件)Do LabVIEW中While循环可从框图功能模板Function ProgrammingStructure子模板中创建。,5.2.1 While循环的组成 最基本的While循环由:循环框架、迭代端口i和条件端口构成。条件端口控制循环是否执行,每次循环结束后,判断条件端口的值,若为False,停止执行循环;若为True,则继续执行下一次循环。不给条件端口赋值,则While循环只执行一次。此外,LabVIEW在While循环中也可引入移位寄存器(Shift Register)和框架隧道(Loop Tunnel),与For循环中用法完全相同。,5.2.2 While循环的使用 例5.2.1 求N!.,5.2.3 While循环的特点 1.具有自动索引功能 例:显示一维数组所有元素。,2.停止条件可修改,避免死循环。,5.3 顺序结构 在代码式的传统编程语言中,默认的情况是,程序语句按照排列顺序执行,称为控制流程;但LabVIEW中不同,它是一种图形化的数据流式编程语言,具有并发、多任务的特点。在LabVIEW7.0 以前只有一种顺序结构。从 LabVIEW7.0开始,旧版本的顺序结构称为Stacked Sequence Structure(堆叠顺序结构),同时引入新的Flat Sequence Structure(平铺顺序结构)。,Stacked Sequence Structure的创建,在Function ProgrammingStructure下,Flat Sequence Structure的创建,5.3.1 顺序结构的组成 1.Stacked Sequence Structure 由:顺序框架(也称为帧,Frame)、框图标识符和递增/递减按钮构成。如下图:,Stacked Sequence Structure帧序号从0开始。Stacked Sequence Structure中引入了局部变量(Sequence Local)的概念,通过局部变量就可以在顺序框架中向后传递数据 顺序框架中也存在框架隧道,但隧道没有Enable Indexing和Disenable Indexing属性,右击顺序框架,在弹出对话框中可增加删除帧。,2.Flat Sequence Structure 与Stacked Sequence Structure结构具有相同的功能,区别仅在于表现形式不一样。堆叠结构相对平铺结构,比较节省空间。平铺结构在帧数不多时,把每个帧平铺开来,比较直观,便于代码阅读。平铺结构如下图:,Flat Sequence Structure顺序结构不能添加局部变量(Sequence Local),因为每个帧都是可见的,不需要局部变量这种机制在帧之间传递数据。平铺结构可以转换为堆叠结构。,5.3.2 顺序结构的使用 例5.3.1 用For循环产生一个2000点的随机波形,并计算所用时间.,5.3.3 顺序结构的特点 1.LabVIEW在堆叠顺序框架中引入了局部变量(Sequence Local)的概念,通过本地结果就可以在顺序框架中向后传递数据。2.顺序框架中也存在框架隧道,但隧道没有Enable Indexing和Disenable Indexing属性。3.NI提供了顺序结构,却不提倡过多使用。因为:顺序结构妨碍了LabVIEW的优点之一的并行运行机制;顺序结构掩盖了部分程序代码,中断了作为LabVIEW特点的数据流形式。,5.4 Case 结构 Case结构也是LabVIEW最基本的结构之一。相当于C语言的switch语句:switch(表达式)case 1:语句1;case 2:语句2;case n:语句n;default:语句n+1;,LabVIEW中Case循环可从框图功能模板Function ProgrammingStructure子模板中创建。,5.4.1 Case结构的组成 最基本的Case结构由:Case框架、选择端口、框图标识符和递增/递减按钮构成。,上图中选择端口相当于C语言的Switch语句中的“表达式”,选择标识符相当于“表达式n”。选择端口的外部控制条件的数据类型有3种:布尔型、数字型和字符串型。控制条件的数据类型必须与选择标识符中数据类型一致。1.控制条件为布尔类型,选择标识符取值True和False;2.控制条件为数字类型,选择标识符取值0,1,2,;3.控制条件为字符串类型,选择标识符取值“条件n”;,5.4.2 Case结构的使用 例5.4.1 求一个数的平方根,若该数=0,输出开方结果;否则弹出对话框,报告错误,同时输出99999.00.,5.4.3 Case结构的特点 1.LabVIEW的Case结构简洁明了,不但相当于Switch语句,还可以实现if else语句功能。2.Case框架中也存在框架隧道,但隧道没有Enable Indexing和Disenable Indexing属性。3.每个子框架必须连接一个数据,否则程序出错。,5.5 事件结构 5.5.1 事件驱动的概念 LabVIEW是一种数据流的编程环境,由数据流决定程序中节点的执行顺序。但在编程中可以设置事件,对数据流进行干预。这些事件是用户在前面板的互动操作,如:点击鼠标事件、键盘事件等。在事件驱动程序中,首先是等待事件,当事件发生时执行指定事件的程序代码,对事件进行响应,然后再回到等待状态。使用事件设置,当用户改变一个前面板的值、关闭前面板、退出程序等,都可以被程序及时捕捉到。,5.5.2 事件结构的建立 LabVIEW中Event结构可从框图功能模板FunctionStructure子模板中创建,如下。,超时端口Timeout连接一个数值指定等待事件的毫秒数。默认值为1,即无限等待。通过事件端口可以访问事件的数据值。事件选择标签显示当前响应事件的子图形代码框。,5.5.3 事件结构的设置 在事件结构边框右键弹出菜单上选择Case Event Case添加事件子图形代码框。点击事件数据节点可以选择、添加、删除事件节点。,在Edit Events Handled by This Case设置代码框设置事件源和事件类型。,例5.5.1:事件结构的使用。当按钮或滑钮按下时产生Mouse Down事件,执行0帧代码,弹出对话框,询问是否继续?点击Yes,继续While循环,点击No结束While循环。此外设置一个超时处理事件,假如5秒没有在前面板操作,则退出While循环。,5.6 公式节点 假如程序中有一些复杂的数学计算,编写图形代码是比较麻烦的。如x0,y=mx3+3nx2-x+1;x=0,y=-2mx3+x-5。,5.6.1 公式节点的创建 在功能模板 Function Programming Structure子模板中选择Formula Node。,添加输入输出端口。,公式节点的预定义函数。,公式节点的操作符。,5.6.2 公式节点的使用 例5.6.1 求y=3x+100,例5.6.2 如x0,y=mx3+3nx2-x+1;x?:;,5.6.3 公式节点的特点 1.LabVIEW的公式节点的使用简化计算公式的图形化编程,提高了效率。2.公式节点框架中出现的所有变量,必须有一个对应的输入输出端口,注意输入输出端口是可设置的。3.公式节点框架内每个公式后以分号”;”结束。,5.7 定时循环结构5.7.1定时循环的创建 在功能模板 Function Programming Structure子模板中选择Timed Structure下的Timed Loop。,输入端子 左数据端子 右数据端子 输出端子,用Configure Timed Loop(双击输入端子)配置输入端子:,用输入端口配置输入端子:,5.7.2 时间顺序结构,5.8 属性节点 前面板对象属性是指前面板上控件的外观和功能特征,如显示的颜色、可见性、闪烁、位置、比例等。5.8.1 属性节点的创建 简便的方法是在前面板对象或其端口的右键弹出菜单中选择CreatProperty Node,如下图:,属性类型的选择,单击属性节点,在弹出菜单中的Property下,列出了对象的所有属性,如下图:,增加多种属性,方法1:拖动;方法2:Add Element,5.8.2 属性节点的使用 Visible Attribute 控制前面板对象是否可见,数据类型为布尔型。当为True时,可见;当为False时,不可见,Disable Attribute 控制前面板对象是否可用,数据类型为整型。当其值为0时,可用;当其值为1时,不可用;当其值为2时,不可用,且变暗。,Key Focus Attribute 控制前面板对象是否处于焦点状态,数据类型为布尔型。当为True时,处于焦点状态;当为False时,失去焦点状态。,Blinking Attribute 控制前面板对象是否闪烁,数据类型为布尔型。当为True时,处于闪烁状态;当为False时,处于正常状态。,Position Attribute 设置控制前面板对象在前面板中的位置,数据类型为簇,均为整型。,Bounds Attribute(Read Only)获得控制前面板中对象的大小,包括高和宽,数据类型为簇,均为整型。,5.8.3 属性节点的特点 1.与本地变量类似,属性节点也有Read和Write两种属性。2.在编程中会经常应用到属性节点,特别是对于Graph和Chart波形控件,应用属性节点能添加不少实用功能。在第6章中详细介绍。,实验三 1.产生100个0.0100.0的随机数,求其最小值、最大值、平均值,并将数据在Graph中显示。2.产生0.0100.0的随机数序列,求其最小值、最大值、平均值。并将随机数序列和平均值序列显示在Chart波形图中,直到人为停止。3.程序开始运行后,要求用户输入一个口令,口令正确时,滑件显示件显示一个0100的随机数,否则程序立即停止。4.编写一个程序测试自己在前面板输入一下字符串所用的时间:A virtual instrument is a program in the graphical programming language.,实验四 1.在前面板中显示一个按钮和一个滑钮,当在按钮或滑钮上按下鼠标时,产生事件。当该事件发生时,弹出对话框,询问是否继续,点击yes while循环继续执行;若点击No退出while循环;此外设置了一个超时处理子图形代码框,若5秒钟没有在前面板操作,则退出while循环。2.编写计算以下等式的程序:y1=x3-x2+5 y2=m*x+b x的范围是010;y1和y2用数组显示件显示在前面板上。3.编写一个程序,实现是否可视、可用、焦点状态、闪烁、位置及对象尺寸等属性。,