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 For循环,符合条件退出

概览

自1986年发布以来,NI LabVIEW软件已纳入了多个编程概念,类似于基于文本的语言。例如,For循环和While循环等编程语句允许重复执行代码。基于文本的语言还可根据指定条件终止循环执行;在LabVIEW中,在NI LabVIEW 8.5之前的版本中,只有While循环允许此行为。

内容

LabVIEW For循环添加条件线端

借助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循环说明

配置为符合条件时退出的For循环可能不会执行N次(或在整个自动索引数组上执行)。一旦配置为符合条件时退出,N表示循环可能迭代的最大次数,但不一定是循环运行的确切次数。

条件接线端的行为与它在While循环中的行为相同。您可以将条件接线端切换到“为真时继续”(Continue if True)或连接到错误簇(参见图7)。条件接线端不可删除;如要移除条件接线端,必须在循环的右键菜单中取消选中“条件接线端”(Conditional Terminal)选项。

 

图7.将错误簇连线到条件接线端

如果将For循环配置为符合条件时退出,则无法预测任何自动索引(累计)输出数组的大小,尽管您可能知道上限。自动索引数组输出中的元素数量等于循环迭代的次数。

Was this information helpful?

Yes

No