While循环是一种无限非索引的循环结构,只储存在最后一次迭代所获得的数据。图3-6为一个使用While循环的典型实例,用户可以自行拖动调整大小和定位适当的位置。While循环无须指定循环次数,只有当满足循环退出条件(输入端接收到某个特定布尔值)时才结束循环。
图3-6 While循环的一个典型实例(输出按下“STOP”按钮后的循环执行次数)
While循环有两个端子:条件连线端(输入端)和计数连线端(输出端)。计数连线端记录循环已经执行的次数,条件连线端的设置则有以下两种情况:
(1)真(T)时停止——若状态为真(T)时,停止循环体执行。
(2)真(T)时继续——若状态为假(F)时,停止循环体执行。
真(T)时停止或继续,可通过鼠标右键单击框图的条件选择按钮,在下拉菜单中选择。
在程序框图中,通过右键单击For循环体,在右键菜单中选择“替换为While循环”可以将For循环替换为While循环。这样,当想从一个正在执行的循环体中跳转出去时,可以通过某种逻辑条件跳出循环;反之,亦可将While循环替换为For循环。如图3-7所示。
图3-7 For循环和While循环的相互转换(www.xing528.com)
(a)For循环转换为While循环;(b)While循环替换为For循环
While循环是执行后检查条件端子,而For循环是执行之前检查是否符合条件,因此,While循环至少执行一次。如果将控制条件接线端子的控件放在While循环之外,则根据初值的不同,可能会无限循环,也可能仅执行一次。
LabVIEW编程属于数据流编程,其基本原理为:只有当某个节点所有的输入端口上的数据均成为有效数据时,该节点才能被执行;当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据,并且数据很快从源端口送到目的端口。
LabVIEW的循环结构中的“自动索引”使循环体外面的数据成员逐步进入循环体,或循环体内的数据累积成为一个数组后,输出到循环体外。对于For循环,自动索引默认打开;对于While循环,不可以直接执行,需要在隧道的图标上单击鼠标右键,在弹出菜单中的“隧道模式”选项中勾选“索引”,启用自动索引,此时,隧道图标变为,如图3-8所示。
图3-8 While循环启用自动索引
由于While循环先执行再判断条件,将一个真或假常量连接到条件连线端或出现恒为真或假的条件时,循环将会永远执行下去,成为死循环。为避免死循环的发生,在编写程序时最好添加一个布尔变量,与控制条件相“与”后(若控制条件为真(T)时继续,需要再“非”)再连接到条件接线端,如图3-9所示。这样,即使程序出现逻辑错误导致出现死循环,也可以通过该布尔控件强行结束程序运行,等完成所有程序开发,经检验无误后,可以将该布尔变量去除。窗口工具栏上的停止按钮同样可以用于强行终止程序的执行。
图3-9 在条件接线端前添加一个布尔变量避免出现死循环
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。