From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
借助LabVIEW 8.5,可为For循环添加一个条件接线端,从而将For循环配置为在出现布尔条件或发生错误时停止执行。当满足条件或所有迭代完成时(以先发生者为准),带有条件接线端的For循环停止操作。For循环配置为符合条件时退出后,其计数接线端(N)旁会有个红色标记,同时右下角会有个条件接线端。将For循环配置为符合条件(也就是中断时)退出后,循环显示为类似图1所示。
图1.For循环配置为符合条件时退出
如要将条件接线端添加到For循环,则右键单击For循环边框,从快捷菜单中选择“条件接线端”(Conditional Terminal)。然后,您必须连线条件接线端,并连线计数接线端,或者为要执行的循环和要运行的VI自动索引输入数组。
图2.将条件接线端添加到For循环
程序员往往需要在特定条件发生时终止循环。基于文本的语言包含允许For循环和While循环在指定条件下退出的语句。例如,在如下示例C代码中,将循环编程为迭代50次(0到49)。但是,当i = 10时,循环在迭代11次后使用Break函数停止执行。
int i;
i = 0;
for (i = 0; i < 50; i++)
{
if (i == 10)
break;
}
如果LabVIEW程序员需要迭代数组中所有元素,就经常会用到For循环,因为它允许自动索引数组。典型LabVIEW代码如图3所示。
图3.For循环的LabVIEW代码
虽然此解决方案从功能上看是正确的,但是即使在循环迭代的早期已发生退出条件,For循环仍然会访问数组中的每一个元素。为了提高效率,您可以使用While循环(参见图4)。这个解决方案更复杂且需要更多代码,而且会不断迭代数组,直到退出条件发生或到达数组的末尾。如图1所示,使用For循环来实现中断是一个更加简单、更便捷的解决方案。
图4.配置为索引数组的While循环
您也可以使用While循环来搜索数组;当找到感兴趣的项时,循环将停止执行。如果数组中不存在这个项,循环就会无限执行。
图5.可能会导致无限循环的While循环
更好的解决方案是使用For循环来实现中断。如果在数组中没有找到感兴趣的项,循环将在N次迭代后停止。
图6.For循环可降低无限循环的可能性
配置为符合条件时退出的For循环可能不会执行N次(或在整个自动索引数组上执行)。一旦配置为符合条件时退出,N表示循环可能迭代的最大次数,但不一定是循环运行的确切次数。
条件接线端的行为与它在While循环中的行为相同。您可以将条件接线端切换到“为真时继续”(Continue if True)或连接到错误簇(参见图7)。条件接线端不可删除;如要移除条件接线端,必须在循环的右键菜单中取消选中“条件接线端”(Conditional Terminal)选项。
图7.将错误簇连线到条件接线端
如果将For循环配置为符合条件时退出,则无法预测任何自动索引(累计)输出数组的大小,尽管您可能知道上限。自动索引数组输出中的元素数量等于循环迭代的次数。