首页 理论教育LabVIEW2015虚拟仪器程序设计:While循环

LabVIEW2015虚拟仪器程序设计:While循环

【摘要】:While循环重复执行代码片段直到条件接线端接收到某一特定的布尔值为止。如果把控制条件接线端子的控件放在While循环外,则根据初值的不同将出现两种情况:无限循环或仅被执行一次。图5-11 For循环的自动索引但是此时对于While循环直接执行则不可以,因为While循环自动索引功能是关闭的需要在自动索引的方框 上单击右键,选择启用索引,使其变为。图5-12 处于死循环状态的While循环图5-13 添加了布尔控件的While循环

While循环位于“函数选板”→“编程”→“结构”的子选板中,同For循环类似,While循环也需要自行拖动来调整大小和定位适当的位置。同For循环不同的是While循环无须指定循环的次数,当且仅当满足循环退出条件时,才退出循环,所以当用户不知道循环要运行的次数时,While循环就显得很重要,例如当想在一个正在执行的循环中跳转出去时,就可以通过某种逻辑条件跳出循环,即用While循环来代替For循环。

While循环重复执行代码片段直到条件接线端接收到某一特定的布尔值为止。While循环有两个端子:计数接线端(输出端)和条件接线端(输入端),如图5-9所示。输出端记录循环已经执行的次数,作用与For循环中的输出端相同;输入端的设置分两种情况:条件为真时继续执行(如图5-10左图所示)和条件为真时停止执行(如图5-10右图所示)。

978-7-111-53194-4-Chapter05-12.jpg

图5-9 While循环的输入端和输出端

978-7-111-53194-4-Chapter05-13.jpg

图5-10 条件为真时停止执行或继续执行

While循环是执行后再检查条件端子,而For循环是执行前就检查是否符合条件,所以While循环至少执行一次。如果把控制条件接线端子的控件放在While循环外,则根据初值的不同将出现两种情况:无限循环或仅被执行一次。这是因为LabVIEW编程属于数据流编程。那么什么是数据流编程呢?数据流,即控制VI程序的运行方式。对一个节点而言,只有当它的所有输入端口上的数据都成为有效数据时,它才能被执行。当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据。并且数据很快从源端口送到目的端口,这就是数据流编程原理。在LabVIEW的循环结构中有“自动索引”这一概念。自动索引是指使循环体外面的数据成员逐个进入循环体,或循环体内的数据累积成为一个数组后再输出到循环体外。对于For循环,自动索引是默认打开的,如图5-11所示。输出一段波形用For循环就可以直接执行。

978-7-111-53194-4-Chapter05-14.jpg

图5-11 For循环的自动索引(www.chuimin.cn)

但是此时对于While循环直接执行则不可以,因为While循环自动索引功能是关闭的需要在自动索引的方框 978-7-111-53194-4-Chapter05-15.jpg 上单击右键,选择启用索引,使其变为。 978-7-111-53194-4-Chapter05-16.jpg

由于While循环是先执行再判断条件的,所以容易出现死循环,如将一个真或假常量连接到条件接线端口,或出现了一个恒为真的条件,那么循环将永远执行下去,如图5-12所示。

因此为了避免死循环的发生,在编写程序时最好添加一个布尔变量,与控制条件相“与”后再连接到条件接线端口(如图5-13所示)。这样,即使程序出现逻辑错误而导致死循环,那么就可以通过这个布尔控件来强行结束程序的运行,等完成了所有程序开发,经检验无误后,再将布尔按钮去除。当然,也可以通过窗口工具栏上的停止按钮来强行终止程序。

978-7-111-53194-4-Chapter05-17.jpg

图5-12 处于死循环状态的While循环

978-7-111-53194-4-Chapter05-18.jpg

图5-13 添加了布尔控件的While循环