【问题标题】:LabVIEW - How to clear an array after each iteration in a for loopLabVIEW - 如何在for循环中每次迭代后清除数组
【发布时间】:2021-07-15 23:45:27
【问题描述】:

我试图在LabVIEW中的for循环的每次迭代之后清除一个数组,但是我实现它的方式没有直接达到我想要的值,但它会随着之前的值而改变数组的其他部分。

未显示,但此代码位于循环另一个数值数组的 for 循环中。

我知道,如果我在每次循环迭代后正确清除数组,这应该可以工作。我怎么做?我是 Labview 的初学者,但已经编写了一段时间 - 非常感谢您的帮助!!!

[![labview 添加到数组][2]][2]

【问题讨论】:

  • 你能发布完整的代码吗?至少完整的 for 循环和索引它的数组
  • 此外,您究竟对“清理阵列”有什么看法?
  • @SilentCloud 刚刚上传了完整的代码 - 我做了一些更改以查看它是否可以工作,但修订版也不起作用。我的意思是“清除”,就​​像在我向其中添加元素之前使数组恢复到原来的状态一样。有点像 array2 = 0 基本上在每个循环的开始

标签: labview


【解决方案1】:

您似乎还不太习惯 LabVIEW 传递数据的方式。无需在一个结构中为同一个控件或指标使用大量值属性节点;如果您想在多个地方使用相同的数据,只需将电线分支。也许您认为 LabVIEW 控件相当于文本语言中的变量,您需要使用属性节点来获取或设置它。相反,将 wire 视为变量。如果您想将一个操作的输出传递到另一个操作的输入,只需将输出连接到输入即可。

循环内带有终端的指标将在每次循环迭代时使用新值进行更新,循环内的代码执行速度应该比人类读取这些值的速度快,因此一旦循环完成除最终值之外的所有输出会迷路。这是你想要的,还是你想以某种方式积累或存储它们?

我可以看到,在每次循环迭代中,您都从配置文件中读取两个值,并且该部分由数字数组 Array 的一个元素的字符串值指定。您在指标PICKERINGSUBUNIT 中显示两个值。如果您可以用文字(或伪代码,或您习惯的文本语言)描述您在此代码的其余部分实际尝试对数据进行哪些操作,我们或许能够提出更具体的建议。

【讨论】:

    【解决方案2】:

    首先,我假设所需的操作顺序如下:

    1. Pickering 的值放入Array 2
    2. Array 2 中提取要放入Pickering 1Pickering 2 的值
    3. Array 2 恢复到原来的值

    如果是这种情况,您当前的代码无法确定操作1 将在操作2 之前执行。事实上,这些操作的顺序是无法预先确定的。您必须强制数据流,例如通过创建sequence structure。您将把与1 相关的代码放在第一帧中,然后将与操作2 相关的代码放在第二帧中。 然后,为了将Array 2 恢复为原始值,我将添加第三帧,在其中强制将一个空数组放入Array 2Value 属性节点(用于选择的工具,但作为输入而不是作为输出)。 sequence structure 必须在 for loop 内。

    我从来没有使用过属性节点Reinit to default,所以我帮不了你。

    很遗憾,我无法在这台 PC 上运行 Labview,但我希望我的解释足够清楚,如果不告诉我,我会尝试更具体。

    【讨论】:

    • Reinit To Default 方法将控件或指示器重置为其默认值,您可以通过右键单击它并选择 Data Operations > Make Current Value Default 来更改它 - 这将是打开 VI 时的控件,和/或如果控件在子 VI 中时未连线。我不认为这是提问者真正想要做的。
    • 此外,虽然您指出提问者的代码将以不确定的顺序执行是正确的,但我认为解决此问题的方法不是开始使用序列结构 - 我认为他们应该简单地使用连线用于传递数据。
    猜你喜欢
    • 2018-08-25
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多