《虚拟仪器精.ppt》由会员分享,可在线阅读,更多相关《虚拟仪器精.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、虚拟仪器第1页,本讲稿共58页4.1 循环结构l lFor 循环循环l lWhile循环循环l l4.1.1 For循环循环l l1For循环的创建循环的创建l l基本的基本的For循环结构由循环框、循环次数端口循环结构由循环框、循环次数端口和计数端口组成。和计数端口组成。循环框循环框计数端口计数端口循环次数端口循环次数端口第2页,本讲稿共58页l l2 2ForFor循环的工作流程循环的工作流程循环的工作流程循环的工作流程l lForFor循环用于将结构中的程循环用于将结构中的程循环用于将结构中的程循环用于将结构中的程序循环执行指定的次数。序循环执行指定的次数。序循环执行指定的次数。序循环执
2、行指定的次数。l l在开始在开始在开始在开始ForFor循环之前,从循循环之前,从循循环之前,从循循环之前,从循环次数端口读入循环次数,环次数端口读入循环次数,环次数端口读入循环次数,环次数端口读入循环次数,计数端口输出计数端口输出计数端口输出计数端口输出0 0值。值。值。值。l l接下来执行接下来执行接下来执行接下来执行ForFor循环框内框循环框内框循环框内框循环框内框图代码程序,每执行一次图代码程序,每执行一次图代码程序,每执行一次图代码程序,每执行一次计数端口值自动加计数端口值自动加计数端口值自动加计数端口值自动加1 1。l l循环次数达到设定值后,循环次数达到设定值后,循环次数达到设
3、定值后,循环次数达到设定值后,退出循环。退出循环。退出循环。退出循环。第3页,本讲稿共58页l l3For循环的数据通道与自动索引循环的数据通道与自动索引l l数据通道是用连线工具连接循环框内外的数据数据通道是用连线工具连接循环框内外的数据端口时,在框架上自动形成的方形通道图标端口时,在框架上自动形成的方形通道图标。l l图标空心表明此时数据通道具有自动索引功能,实图标空心表明此时数据通道具有自动索引功能,实图标空心表明此时数据通道具有自动索引功能,实图标空心表明此时数据通道具有自动索引功能,实心图标不能索引心图标不能索引心图标不能索引心图标不能索引 。l l自动索引是指将循环框外面的数组成员
4、逐个依次进自动索引是指将循环框外面的数组成员逐个依次进自动索引是指将循环框外面的数组成员逐个依次进自动索引是指将循环框外面的数组成员逐个依次进入循环体内,或将循环框内的数据累加成一个数组入循环体内,或将循环框内的数据累加成一个数组入循环体内,或将循环框内的数据累加成一个数组入循环体内,或将循环框内的数据累加成一个数组输出到循环框外面。输出到循环框外面。输出到循环框外面。输出到循环框外面。第4页,本讲稿共58页l l例如:下图中通道自动索引功能有效时,每一次循环产生一个新例如:下图中通道自动索引功能有效时,每一次循环产生一个新例如:下图中通道自动索引功能有效时,每一次循环产生一个新例如:下图中通
5、道自动索引功能有效时,每一次循环产生一个新的数据,存储在循环的边框通道上,待循环结束以后,产生的的数据,存储在循环的边框通道上,待循环结束以后,产生的的数据,存储在循环的边框通道上,待循环结束以后,产生的的数据,存储在循环的边框通道上,待循环结束以后,产生的6 6个个个个数据将传送到一个数组指示器中。自动索引功能无效时,只数据将传送到一个数组指示器中。自动索引功能无效时,只数据将传送到一个数组指示器中。自动索引功能无效时,只数据将传送到一个数组指示器中。自动索引功能无效时,只有最后一次有最后一次有最后一次有最后一次ForFor循环产生的循环产生的循环产生的循环产生的1 1个随机数传到循环外。个
6、随机数传到循环外。个随机数传到循环外。个随机数传到循环外。空心实心第5页,本讲稿共58页l l例1.产生10个(0,1)随机数l l第一步:新建VIl l第二步:在程序框图中选择函数选项板中的结构子选项板,从中找到For循环,并在程序框图中拖拽出适当大小的矩形框。l l第三步:右击计数端子N,选择创建常量,并将数值设为10,在框图内放置随机数发生器器,并将其连线至循环右边框,直至在边框线出现一空心通道标志 ,表示数值是自动索引的。l l第四步:在 上右击,选择创建显示控件,将自动出现一数组指示器。第6页,本讲稿共58页l l第五步:编辑前面板,当鼠标指向数组指示器的数组元素时,可以看到大小调节
7、句柄,拖拽句柄,至10个元素均可见。前面板及程序框图如下:第7页,本讲稿共58页l l4 4移位寄存器移位寄存器移位寄存器移位寄存器l l用途:用途:用途:用途:主要用于主要用于主要用于主要用于WhileWhile循环和循环和循环和循环和ForFor循环,将上一次循环的值传循环,将上一次循环的值传循环,将上一次循环的值传循环,将上一次循环的值传给下一次循环。给下一次循环。给下一次循环。给下一次循环。l l创建:创建:创建:创建:右击边框,弹出一个菜单,选择右击边框,弹出一个菜单,选择右击边框,弹出一个菜单,选择右击边框,弹出一个菜单,选择“添加移位寄存器添加移位寄存器添加移位寄存器添加移位寄存
8、器”选项,可添加一个移位寄存器。选项,可添加一个移位寄存器。选项,可添加一个移位寄存器。选项,可添加一个移位寄存器。l l数据类型:数据类型:数据类型:数据类型:数字型、布尔型、字符串等数字型、布尔型、字符串等数字型、布尔型、字符串等数字型、布尔型、字符串等 。l l初始化:初始化:初始化:初始化:在循环外将初始值连到移位寄存器的左端口,有默在循环外将初始值连到移位寄存器的左端口,有默在循环外将初始值连到移位寄存器的左端口,有默在循环外将初始值连到移位寄存器的左端口,有默认初值。认初值。认初值。认初值。l l还可以存储前几次循环的值还可以存储前几次循环的值还可以存储前几次循环的值还可以存储前几
9、次循环的值,在移位寄存器的左端口或右,在移位寄存器的左端口或右,在移位寄存器的左端口或右,在移位寄存器的左端口或右端口上右击鼠标弹出菜单,选择端口上右击鼠标弹出菜单,选择端口上右击鼠标弹出菜单,选择端口上右击鼠标弹出菜单,选择“添加元素添加元素添加元素添加元素”选项,可创建选项,可创建选项,可创建选项,可创建附加的左端口来存储前几次循环的值。附加的左端口来存储前几次循环的值。附加的左端口来存储前几次循环的值。附加的左端口来存储前几次循环的值。第8页,本讲稿共58页l l例例2.2.利用移位寄存器,求利用移位寄存器,求1+2+3+1001+2+3+100的结果的结果l l第一步:新建第一步:新建
10、VIVI。l l第二步:编辑程序框图。将第二步:编辑程序框图。将ForFor循环添加至程序框图循环添加至程序框图中,将中,将N N设为设为100100,右击右边框选择,右击右边框选择“添加移位寄存器添加移位寄存器”。l l第三步:将移位寄存器初值设为第三步:将移位寄存器初值设为0 0,向循环内部添加一个,向循环内部添加一个加法器,和一个加加法器,和一个加1 1函数,如下图所示,并将加法器输出函数,如下图所示,并将加法器输出连至移位寄存器输出。连至移位寄存器输出。l l第四步:为循环创建输出显示控件,并将结果连至第四步:为循环创建输出显示控件,并将结果连至输出显示控件。输出显示控件。第9页,本讲
11、稿共58页第10页,本讲稿共58页l l5 5反馈节点反馈节点反馈节点反馈节点l l功能:在循环中,将数据从一次循环传递到下一次循环。功能:在循环中,将数据从一次循环传递到下一次循环。功能:在循环中,将数据从一次循环传递到下一次循环。功能:在循环中,将数据从一次循环传递到下一次循环。l l反馈节点箭头的方向表示数据流的方向。反馈节点箭头的方向表示数据流的方向。反馈节点箭头的方向表示数据流的方向。反馈节点箭头的方向表示数据流的方向。l l反馈节点和移位寄存器可以互换,在反馈节点或移位反馈节点和移位寄存器可以互换,在反馈节点或移位反馈节点和移位寄存器可以互换,在反馈节点或移位反馈节点和移位寄存器可
12、以互换,在反馈节点或移位寄存器图标上弹出快捷菜单选寄存器图标上弹出快捷菜单选寄存器图标上弹出快捷菜单选寄存器图标上弹出快捷菜单选“替换为移位寄存器替换为移位寄存器替换为移位寄存器替换为移位寄存器”或或或或“替换为反馈节点替换为反馈节点替换为反馈节点替换为反馈节点”即可。替换为反馈节点时,即可。替换为反馈节点时,即可。替换为反馈节点时,即可。替换为反馈节点时,注注注注意:对外输出通道要选择意:对外输出通道要选择意:对外输出通道要选择意:对外输出通道要选择“禁用索引禁用索引禁用索引禁用索引”。l l移位寄存器左端口多于移位寄存器左端口多于移位寄存器左端口多于移位寄存器左端口多于1 1个时不能转换为
13、反馈节点。个时不能转换为反馈节点。个时不能转换为反馈节点。个时不能转换为反馈节点。第11页,本讲稿共58页l l例3.利用反馈节点求例2的结果l l步骤省略,结果如下:第12页,本讲稿共58页4.1.2 While循环循环l lFor循环和While循环的区别:l lFor循环要执行预先指定的循环次数。l l而While循环只有在条件端口接收到的值为False时才停止循环。While循环不必知道循环次数。l lWhile循环不满足条件也要执行1次。l lFor循环当N1时1次都不执行。第13页,本讲稿共58页l l1.While循环的创建循环的创建l lWhile循环由循环框、条件端口和计数端
14、口组成。循环由循环框、条件端口和计数端口组成。循环框循环框条件端口条件端口计数端口计数端口第14页,本讲稿共58页l l2.While循环的工作流程循环的工作流程l l条件端口控制循环的停止与否。条件端口控制循环的停止与否。l l条件端口有两种状态条件端口有两种状态:l l当使用状态为当使用状态为当使用状态为当使用状态为“真时停止真时停止真时停止真时停止”时,若输入值为时,若输入值为时,若输入值为时,若输入值为TrueTrue,则停止循环,则停止循环,则停止循环,则停止循环 。若输入值为。若输入值为。若输入值为。若输入值为FalseFalse,则继续执行下一,则继续执行下一,则继续执行下一,则
15、继续执行下一次循环。次循环。次循环。次循环。l l当使用状态为当使用状态为当使用状态为当使用状态为“真时继续真时继续真时继续真时继续”时时时时 ,若输入值为,若输入值为,若输入值为,若输入值为TrueTrue,则继续执行下一次循环。若输入值为,则继续执行下一次循环。若输入值为,则继续执行下一次循环。若输入值为,则继续执行下一次循环。若输入值为FalseFalse,则停,则停,则停,则停止循环。止循环。止循环。止循环。l l循环结束后,才去检测条件端口的值,因此不循环结束后,才去检测条件端口的值,因此不管条件是否成立,管条件是否成立,循环至少要执行一次循环至少要执行一次。第15页,本讲稿共58页
16、l l计数端口用于统计循环执行的次数,计数端口用于统计循环执行的次数,While循环循环每执行一次,计数端口的值就加每执行一次,计数端口的值就加1。l l计数端口从零开始计数,也就是说,计数端口从零开始计数,也就是说,在第一次在第一次循环结束时,计数端口的值为循环结束时,计数端口的值为0,下次开始时计,下次开始时计数端口值为数端口值为1,如果循环执行了,如果循环执行了10次,则计数端次,则计数端口的值为口的值为9。l lWhile循环也具有数据通道索引和移位寄存器、循环也具有数据通道索引和移位寄存器、反馈接点的功能,它们的用法与反馈接点的功能,它们的用法与For循环相同,循环相同,只是只是Wh
17、ile循环的边框数据通道循环的边框数据通道默认为不能索引默认为不能索引。第16页,本讲稿共58页例例4.4.利用利用WhileWhile循环,求循环,求1+2+3+1001+2+3+100的结果的结果第17页,本讲稿共58页l l3.向循环结构中加入定时器l l在使用循环时应该向向循环结构中加入定时器,以节省计算机CPU资源占用情况,并且可以根据需要使用户能更清楚的观察到数据的变化。l l例如:使用循环结构产生随机数,直至按下停止按钮。比较有无定时器的CPU资源占用情况。第18页,本讲稿共58页4.2 条件结构 l l1.条件结构的创建条件结构的创建l l条件结构也叫条件结构也叫CASE结构,
18、由选择框架、选择结构,由选择框架、选择端口、选择器标签,以及递增端口、选择器标签,以及递增/递减按钮组成。递减按钮组成。选择标签选择标签递增按钮递增按钮递减按钮递减按钮选择框架选择框架选择端口选择端口第19页,本讲稿共58页l l2条件(条件(Case)结构的工作流程)结构的工作流程l lCase结构有一个条件选择端口(Selector),根据连到该端口 的值来判断执行哪一个子Case。l l选择端口的数据类型有布尔型、数字型和字符串型、枚举型。l l3设置选择结构的默认项设置选择结构的默认项l l应设置一个默认项来处理超出条件选项范围的应设置一个默认项来处理超出条件选项范围的情况。情况。第2
19、0页,本讲稿共58页l l4选择结构数据通道的设置选择结构数据通道的设置 l l输入数据时,每个子输入数据时,每个子Case框可连可不连数据通框可连可不连数据通道。道。l l输出数据时,每个子输出数据时,每个子Case框必须为通道连接数框必须为通道连接数据。否则程序不能运行,这时通道的图标是空据。否则程序不能运行,这时通道的图标是空心的,只有为每个子心的,只有为每个子Case框的数据端口都连接框的数据端口都连接数据后,图标才变成实心。数据后,图标才变成实心。第21页,本讲稿共58页l l例5.给出百分制成绩,要求输出成绩等级,90分及以上为A,80分至89分为B,70分至79分为C,60至69
20、分为D,59分及以下为E,小于0分或者高于100分弹出错误提示框。l l答案:第22页,本讲稿共58页第23页,本讲稿共58页4.3 顺序结构l l LabVIEWLabVIEW是一种数据流程序设计语言,没有明确的先后顺是一种数据流程序设计语言,没有明确的先后顺序,当节点所有输入端的数据全部有效时,节点才执行。序,当节点所有输入端的数据全部有效时,节点才执行。l l 顺序结构顺序结构是一种按照先后顺序执行的结构,看上去象电是一种按照先后顺序执行的结构,看上去象电影胶片的帧(影胶片的帧(FrameFrame),每一帧为一段框图程序,按照帧),每一帧为一段框图程序,按照帧(FrameFrame)的
21、顺序来执行框图程序。)的顺序来执行框图程序。l l 两种形式顺序结构:两种形式顺序结构:Flat Sequence StructureFlat Sequence Structure平铺式顺序平铺式顺序结构和结构和Stacked Sequence StructureStacked Sequence Structure层叠式顺序结构。功能相同,层叠式顺序结构。功能相同,区别仅在于表现形式不同。区别仅在于表现形式不同。第24页,本讲稿共58页l l1.1.顺序结构的创建顺序结构的创建顺序结构的创建顺序结构的创建l l在函数模板的结构子模板中选择创建顺序结构。选取在函数模板的结构子模板中选择创建顺序结
22、构。选取在函数模板的结构子模板中选择创建顺序结构。选取在函数模板的结构子模板中选择创建顺序结构。选取“层叠式层叠式层叠式层叠式顺序结构顺序结构顺序结构顺序结构”。l l在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择“在后在后在后在后面添加帧面添加帧面添加帧面添加帧”或或或或“在前面添加帧在前面添加帧在前面添加帧在前面添加帧”可以增加子图形代码框。可以增加子图形代码框。可以增加子图形代码框。可以增加子图形代码框。l l在结构边框上右击弹出的快捷
23、菜单,选择替换为在结构边框上右击弹出的快捷菜单,选择替换为在结构边框上右击弹出的快捷菜单,选择替换为在结构边框上右击弹出的快捷菜单,选择替换为“平铺式顺序平铺式顺序平铺式顺序平铺式顺序结构结构结构结构”,可以将层叠式顺序结构变换为平铺式顺序结构,可以将层叠式顺序结构变换为平铺式顺序结构,可以将层叠式顺序结构变换为平铺式顺序结构,可以将层叠式顺序结构变换为平铺式顺序结构 第25页,本讲稿共58页l l2.2.顺序结构的工作方式顺序结构的工作方式顺序结构的工作方式顺序结构的工作方式l l数据传递至顺序结构时,层叠式从标识数据传递至顺序结构时,层叠式从标识数据传递至顺序结构时,层叠式从标识数据传递至
24、顺序结构时,层叠式从标识0 0开始执行,依次顺序执开始执行,依次顺序执开始执行,依次顺序执开始执行,依次顺序执行;平铺式从左至右执行所有子图形代码框。行;平铺式从左至右执行所有子图形代码框。行;平铺式从左至右执行所有子图形代码框。行;平铺式从左至右执行所有子图形代码框。l l从结构外面向顺序结构写数据时,可连接可不连接这个从结构外面向顺序结构写数据时,可连接可不连接这个从结构外面向顺序结构写数据时,可连接可不连接这个从结构外面向顺序结构写数据时,可连接可不连接这个数据通道;但是当顺序结构向外输出数据时,各个图形数据通道;但是当顺序结构向外输出数据时,各个图形数据通道;但是当顺序结构向外输出数据
25、时,各个图形数据通道;但是当顺序结构向外输出数据时,各个图形代码框中只能有一个连接这个数据通道。代码框中只能有一个连接这个数据通道。代码框中只能有一个连接这个数据通道。代码框中只能有一个连接这个数据通道。l l代码框之间的数据传递,平铺式可从一帧直接连线到另一帧代码框之间的数据传递,平铺式可从一帧直接连线到另一帧代码框之间的数据传递,平铺式可从一帧直接连线到另一帧代码框之间的数据传递,平铺式可从一帧直接连线到另一帧来传递数据,层叠式则需要通过局部变量来传递数据,层叠式则需要通过局部变量来传递数据,层叠式则需要通过局部变量来传递数据,层叠式则需要通过局部变量“添加顺序局部添加顺序局部添加顺序局部
26、添加顺序局部变量变量变量变量”来传送数据。来传送数据。来传送数据。来传送数据。第26页,本讲稿共58页l l在层叠式顺序结构的边框上面右击,选择在层叠式顺序结构的边框上面右击,选择在层叠式顺序结构的边框上面右击,选择在层叠式顺序结构的边框上面右击,选择”添加顺序局添加顺序局添加顺序局添加顺序局部变量部变量部变量部变量”即可在当前帧创建一个顺序局部变量端口。即可在当前帧创建一个顺序局部变量端口。即可在当前帧创建一个顺序局部变量端口。即可在当前帧创建一个顺序局部变量端口。l l将本帧中的数据连接到该局部变量端口,该数据就可传到后面将本帧中的数据连接到该局部变量端口,该数据就可传到后面将本帧中的数据
27、连接到该局部变量端口,该数据就可传到后面将本帧中的数据连接到该局部变量端口,该数据就可传到后面的帧,该数据不会作用到它前面的帧。的帧,该数据不会作用到它前面的帧。的帧,该数据不会作用到它前面的帧。的帧,该数据不会作用到它前面的帧。l l如下图示意了层叠式顺序结构通过局部变量传递数如下图示意了层叠式顺序结构通过局部变量传递数如下图示意了层叠式顺序结构通过局部变量传递数如下图示意了层叠式顺序结构通过局部变量传递数据的情况。在标识是据的情况。在标识是据的情况。在标识是据的情况。在标识是1 1号帧的一个数据传递到标识号帧的一个数据传递到标识号帧的一个数据传递到标识号帧的一个数据传递到标识是是是是2 2
28、号的帧进行号的帧进行号的帧进行号的帧进行“或或或或”运算,运算,运算,运算,0 0号帧不能使用该数据。号帧不能使用该数据。号帧不能使用该数据。号帧不能使用该数据。第27页,本讲稿共58页例例6:使用使用使用使用SequenceSequence结构,结构,结构,结构,设计一个设计一个设计一个设计一个VIVI,计算产生一个与,计算产生一个与,计算产生一个与,计算产生一个与指定的指定的指定的指定的0-1000-100整数相等的随机数整数相等的随机数整数相等的随机数整数相等的随机数所需花费的时间。所需花费的时间。所需花费的时间。所需花费的时间。第28页,本讲稿共58页l l注意:顺序结构不要过多的使用
29、l l有时候顺序结构对编写代码有帮助,它可以使程序按规定的步骤运行。l l有些情况下,运用LabVIEW固有的并行运行机制可以提高程序的运行效率。l lLabVIEW的数据流机制可以实现简单的顺序执行逻辑,在不是很复杂的情况下,不必使用顺序结构。l lLabVIEW的数据流机制的程序运行性能会好一些。第29页,本讲稿共58页4.4 公式节点l l在框图程序中,如果需要设计较复杂的数学运算,框图将在框图程序中,如果需要设计较复杂的数学运算,框图将在框图程序中,如果需要设计较复杂的数学运算,框图将在框图程序中,如果需要设计较复杂的数学运算,框图将会十分复杂,工作量大,而且不直观,调试、改错也不方会
30、十分复杂,工作量大,而且不直观,调试、改错也不方会十分复杂,工作量大,而且不直观,调试、改错也不方会十分复杂,工作量大,而且不直观,调试、改错也不方便。便。便。便。l l利用公式节点,只需将数学公式的文本表达式输入在公利用公式节点,只需将数学公式的文本表达式输入在公利用公式节点,只需将数学公式的文本表达式输入在公利用公式节点,只需将数学公式的文本表达式输入在公式节点的框图内,并连接相应的输入、输出端口,则式节点的框图内,并连接相应的输入、输出端口,则式节点的框图内,并连接相应的输入、输出端口,则式节点的框图内,并连接相应的输入、输出端口,则LabVIEWLabVIEW会自动地根据公式计算出正确
31、的结果,并会自动地根据公式计算出正确的结果,并会自动地根据公式计算出正确的结果,并会自动地根据公式计算出正确的结果,并从输出端输出。从输出端输出。从输出端输出。从输出端输出。第30页,本讲稿共58页l l1.公式节点的创建公式节点的创建l l从函数模板的结构子模板上选择公式节点,在从函数模板的结构子模板上选择公式节点,在框图中设置公式节点。框图中设置公式节点。l l公式节点的边框大小可以改变,用户可以使用公式节点的边框大小可以改变,用户可以使用标签工具,将数学公式直接输入到公式节点的标签工具,将数学公式直接输入到公式节点的框内。框内。l l例例7.将输入的摄氏温度值转换为华氏度。将输入的摄氏温
32、度值转换为华氏度。第31页,本讲稿共58页l l2.公式节点的编辑公式节点的编辑l l可以声明变量,也支持一些常用的可以声明变量,也支持一些常用的C语言的语句语言的语句(包括赋值语句、条件语句、循环语句、(包括赋值语句、条件语句、循环语句、Switch语句),每条语句以分号结尾。语句),每条语句以分号结尾。l l输入公式后,需要添加输入、输出端口。输入公式后,需要添加输入、输出端口。l l在添加端口后出现的方框内填入变量名称。在添加端口后出现的方框内填入变量名称。l l将输入端口和程序中的数据端口相连接。将输入端口和程序中的数据端口相连接。l l将输出端口和程序中的指示端口连接将输出端口和程序
33、中的指示端口连接 第32页,本讲稿共58页l l公式节点中常用的运算符其中,条件运算符的其中,条件运算符的“?”前的部分是判定条件,前的部分是判定条件,“?”和和“:”间间的部分为当条件为的部分为当条件为True时的表达式,时的表达式,“:”后的部分为当条件为后的部分为当条件为False时的表达式。时的表达式。第33页,本讲稿共58页l l公式节点语句中还可以使用数学函数:abs、acos、acosh、asin、asinh、atan、atan2、atanh、ceil、cos、cosh、cot、csc、exp、expml、floor、getexp、getman、int、intrz、ln、lnp1
34、、log、log2、max、min、mod、pow、rand、rem、sec、sign、sin、sinc、sinh、sizeOfDim、sqrt、tan、tanh。l l公式节点中可使用l lIFIF条件语句,条件语句,l lforfor和和do do 、whilewhile循环循环l lSwtich()caseSwtich()case分支语句分支语句l l公式节点的语法与C语言相同第34页,本讲稿共58页l l例7.输入一摄氏温度值,利用公式节点将其转换为华氏温度值。第35页,本讲稿共58页4.5 事件结构l l1.1.事件结构事件结构事件结构事件结构l l事件结构是与条件结构类似的一种结构
35、,区别在于:事件事件结构是与条件结构类似的一种结构,区别在于:事件结构是根据发生的事件决定执行哪一个分支。结构是根据发生的事件决定执行哪一个分支。l l事件结构会自动感知,不需要数据线将事件传递至事件结构会自动感知,不需要数据线将事件传递至结构框。结构框。l l事件结构包括:结构框、事件标签、超时端口和事件数事件结构包括:结构框、事件标签、超时端口和事件数事件结构包括:结构框、事件标签、超时端口和事件数事件结构包括:结构框、事件标签、超时端口和事件数据端口。据端口。据端口。据端口。事件标签事件标签:说明当前框图程序是响应的什么说明当前框图程序是响应的什么事件事件。超时端口,超时端口,默认值为默
36、认值为-1,表示无限等待,表示无限等待。事件数事件数据端口据端口 结构框结构框 第36页,本讲稿共58页l l2 2事件结构的使用事件结构的使用事件结构的使用事件结构的使用l l可有一个或多个子图形代码框,该图形代码框可以设置为响应多可有一个或多个子图形代码框,该图形代码框可以设置为响应多可有一个或多个子图形代码框,该图形代码框可以设置为响应多可有一个或多个子图形代码框,该图形代码框可以设置为响应多个事件。个事件。个事件。个事件。l l右击事件结构边框,从弹出的快捷菜单中选择右击事件结构边框,从弹出的快捷菜单中选择右击事件结构边框,从弹出的快捷菜单中选择右击事件结构边框,从弹出的快捷菜单中选择
37、“编辑本分支所处编辑本分支所处编辑本分支所处编辑本分支所处理的事件理的事件理的事件理的事件”,这时将弹出编辑事件对话框。,这时将弹出编辑事件对话框。,这时将弹出编辑事件对话框。,这时将弹出编辑事件对话框。显示当前建立的事件,默显示当前建立的事件,默认认“Timeout事件。事件。增加事件增加事件删除事件删除事件 可以选择的可以选择的事件源事件源 相应的事件源可产相应的事件源可产生的事件消息生的事件消息 第37页,本讲稿共58页l l3.按照产生源来区分事件的种类l l 事件事件l l反映整个应用程序状态的变化,如程序是否关闭,是否超时等。反映整个应用程序状态的变化,如程序是否关闭,是否超时等。
38、l l VIl l反映当前反映当前VIVI状态的变化,如前面板大小是否调整、是否选择菜单中的某状态的变化,如前面板大小是否调整、是否选择菜单中的某一项。一项。l l l l用于处理用户自己的或在程序中临时注册的事件。用于处理用户自己的或在程序中临时注册的事件。l l l l包括与某一窗格有关的事件,如鼠标进入离开窗格。包括与某一窗格有关的事件,如鼠标进入离开窗格。l l l l与分隔栏有关的事件,例如鼠标拖动分隔栏与分隔栏有关的事件,例如鼠标拖动分隔栏l l l l包括与界面上控件相关的所有事件,例如值改变。包括与界面上控件相关的所有事件,例如值改变。第38页,本讲稿共58页例例8:建立一个:
39、建立一个5秒的超时事件和一个秒的超时事件和一个“确定确定”开关值发生变化的事件开关值发生变化的事件 l l要求:要求:l l方法方法1:任一事件发生都执行同一个子图形代:任一事件发生都执行同一个子图形代码框程序,显示出对话框码框程序,显示出对话框“超时或单击了确定超时或单击了确定按钮按钮”。l l方法方法2:由不同的框图程序响应不同的事件,:由不同的框图程序响应不同的事件,显示出对话框显示出对话框“超时事件超时事件”或或“单击了确定按单击了确定按钮事件钮事件”。第39页,本讲稿共58页l l法法1:l l在超时端口连接值为在超时端口连接值为5000的一个数字常量。的一个数字常量。l l在前面板
40、添加放置一个在前面板添加放置一个“确定按钮确定按钮”控件控件。l l在编辑事件对话框中单击按钮在编辑事件对话框中单击按钮 新建一个事件,新建一个事件,选取事件源窗口中的选取事件源窗口中的“确定按钮确定按钮”,并在事件,并在事件窗口中选择值改变窗口中选择值改变。l l选取选取“对话框与用户界面对话框与用户界面”“单按钮对话框单按钮对话框”函数,放置在事件结构中。函数,放置在事件结构中。l l在消息数据端口新建一个常量,输入在消息数据端口新建一个常量,输入“超时或超时或单击了确定按钮单击了确定按钮”。第40页,本讲稿共58页l l运行程序,如果单击了运行程序,如果单击了“确定确定”按钮或等待按钮或
41、等待5秒秒都会显示出对话框都会显示出对话框“超时或点击了确定按钮超时或点击了确定按钮”。第41页,本讲稿共58页l l法法2:l l在事件结构边框的快捷菜单中选择添加事件分在事件结构边框的快捷菜单中选择添加事件分支来创建事件结构的一个分支支来创建事件结构的一个分支。l l在弹出的对话框中,选取事件源窗口中的在弹出的对话框中,选取事件源窗口中的“确确定按钮定按钮”。并在事件窗口中选择。并在事件窗口中选择“值改变值改变”。l l后面的设置与法后面的设置与法1类似。类似。第42页,本讲稿共58页l l4.事件结构的使用l l通常情况下,程序不可能只需要处理一个事件,往通常情况下,程序不可能只需要处理
42、一个事件,往往在程序运行过程中,不断有需要处理的各种事件往在程序运行过程中,不断有需要处理的各种事件出现,所以事件结构通常被放在一个出现,所以事件结构通常被放在一个WhileWhile循环里。循环里。我们把这种一个结构外套一个循环结构的程序模式我们把这种一个结构外套一个循环结构的程序模式称为称为“循环事件结构循环事件结构”。l l下面考虑如下程序:下面考虑如下程序:第43页,本讲稿共58页l l上面的程序完善吗?l l程序设定了每程序设定了每100100毫秒做一次加法运算,并更新毫秒做一次加法运算,并更新“量表量表”显示控件的值,但是在软件运行的大部分时显示控件的值,但是在软件运行的大部分时间
43、里,两个输入控件的值不变。也就是说,在这大间里,两个输入控件的值不变。也就是说,在这大部分时间里,程序所作的加法和显示更新的工作都部分时间里,程序所作的加法和显示更新的工作都是无效的。是无效的。l l针对以上问题应该怎么样完善程序呢?针对以上问题应该怎么样完善程序呢?l l把循环周期调长?把循环周期调长?l l这样会使输入值改变后,显示控件更新时间过长。这样会使输入值改变后,显示控件更新时间过长。l l一个好的解决方法:一个好的解决方法:l l使程序一直处于空闲状态,而一旦控制控件的值更新使程序一直处于空闲状态,而一旦控制控件的值更新了,就立即进行运算并更新显示控件。这就要用到循了,就立即进行
44、运算并更新显示控件。这就要用到循环事件结构。环事件结构。第44页,本讲稿共58页l l例10.将p43页的例子用循环事件结构实现。第45页,本讲稿共58页l l程序分析:程序分析:程序分析:程序分析:l l 上例中程序执行顺序如下:上例中程序执行顺序如下:首先首先首先首先执行执行WhileWhile循环,循环开始第循环,循环开始第一次迭代,程序执行循环内部的代码,即事件结构。在输入数据一次迭代,程序执行循环内部的代码,即事件结构。在输入数据未发生改变前,由于这个事件结构中还没有任何需要处理的事件,未发生改变前,由于这个事件结构中还没有任何需要处理的事件,程序一直处于程序一直处于等待事件的状态等
45、待事件的状态等待事件的状态等待事件的状态。程序处于等待状态时,不占用系统。程序处于等待状态时,不占用系统资源,一旦输入控件的值发生改变,程序就会立即运行并执行资源,一旦输入控件的值发生改变,程序就会立即运行并执行“旋钮,旋钮,转盘:转盘:值改变值改变值改变值改变”事件处理分支事件处理分支事件处理分支事件处理分支。于是程序运行加法计算并及时更新显。于是程序运行加法计算并及时更新显示控件。程序执行完这一事件处理分支后,示控件。程序执行完这一事件处理分支后,跳出事件结构跳出事件结构跳出事件结构跳出事件结构。此时传。此时传递给递给WhileWhile循环条件接线端的值为循环条件接线端的值为“假假”,于
46、是,于是循环继续循环继续循环继续循环继续执行,执行,开始下一次迭代,重新进入事件等待状态。此事件结构还有开始下一次迭代,重新进入事件等待状态。此事件结构还有另一分支,用于处理另一分支,用于处理“停止停止停止停止”按钮按钮按钮按钮的的“值改变值改变”事件,当停止事件,当停止按钮值改变时,按钮的值为按钮值改变时,按钮的值为“真真”,此值传递给,此值传递给WhileWhile循环条件循环条件的接线端,于是的接线端,于是WhileWhile循环停止循环停止循环停止循环停止运行。程序结束。运行。程序结束。第46页,本讲稿共58页l l5.按照发出时间区分事件的种类l l 按照事件的发出时间来区分的话,L
47、abVIEW的事件可分为通知型事件和过滤型事件。l l 通知型事件是在LabVIEW处理完用户操作之后发出的。例如,用户利用键盘操作改变了一个字符串控件的值,LabVIEW在改变了该控件的值之后,发出一个“值改变”的通知型事件。用户可以在事件结构中添加处理该事件的代码,在“值改变”发生后完成相应的工作。第47页,本讲稿共58页l l 过滤型事件是在LabVIEW处理用户操作之前发出的。如果事件结构中有对该事件处理的分支,那么LabVIEW先执行处理该事件的分支,再根据事件结构分支内返回的命令决定是否对该事件做默认的处理。l l 从标签上,可以明显地区分出一个事件是过滤型事件还是通知型事件。过滤
48、型事件的名称之后都有一个问号,比如“键盘按下?”事件。第48页,本讲稿共58页例11.编写一个程序,主界面有一个字符串型控件,用于输入电话号码。电话号码仅由数字或横线组成,控件对其他按键无反应。第49页,本讲稿共58页4.6 局部变量和全局变量l l1局部变量局部变量l l程序太复杂,连线困难,需用局部变量。程序太复杂,连线困难,需用局部变量。l l(1)创建创建 l l法一法一法一法一:为前面板对象创建局部变量。:为前面板对象创建局部变量。:为前面板对象创建局部变量。:为前面板对象创建局部变量。在对象上面单在对象上面单在对象上面单在对象上面单击鼠标右键,选择击鼠标右键,选择击鼠标右键,选择击
49、鼠标右键,选择“创建创建创建创建”“”“局部变量局部变量局部变量局部变量”。l l法二法二法二法二:在框图程序中新建局部变量,然后再指向某个:在框图程序中新建局部变量,然后再指向某个:在框图程序中新建局部变量,然后再指向某个:在框图程序中新建局部变量,然后再指向某个对象。对象。对象。对象。l l可以为一个对象创建多个局部变量。可以为一个对象创建多个局部变量。可以为一个对象创建多个局部变量。可以为一个对象创建多个局部变量。l l局部变量具有读、写两种属性。并可互换。在局部变局部变量具有读、写两种属性。并可互换。在局部变局部变量具有读、写两种属性。并可互换。在局部变局部变量具有读、写两种属性。并可
50、互换。在局部变量上点击右键选择量上点击右键选择量上点击右键选择量上点击右键选择“转换为读取转换为读取转换为读取转换为读取”或或或或“转换为写入转换为写入转换为写入转换为写入”第50页,本讲稿共58页l l(2)使用示例使用示例l l程序中,建立了程序中,建立了程序中,建立了程序中,建立了“停止停止停止停止”控件的两个局部变量。控件的两个局部变量。控件的两个局部变量。控件的两个局部变量。l l循环内的局部变量处于循环内的局部变量处于循环内的局部变量处于循环内的局部变量处于“读读读读”状态,读出当前状态,读出当前状态,读出当前状态,读出当前“停停停停止止止止”控件的状态,送给控件的状态,送给控件的