You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

LabVIEW中同一控件多次读写机制及程序结果疑问

LabVIEW控件多次属性读写的执行逻辑解析

咱们来一步步拆解这个程序的执行过程,就能明白为什么最终结果是Numeric=12、Result=11了:

首先得明确LabVIEW的两个核心规则:

  • 属性节点读取的是控件当前内存中的值,大部分时候和前面板显示值同步,但核心看内存数据
  • 程序执行遵循数据流规则:只有当一个节点的所有输入数据都准备好时,它才会执行,不是完全按视觉上的上下顺序执行。

假设初始状态:Numeric控件的内存值为10,Result控件的内存值为0。

接下来按执行顺序拆解每一步:

  1. 写入Result的属性节点
    • 它先读取Numeric的当前值(此时还是初始的10),加1后得到11
    • 把11写入Result的Value属性,从此Result的内存值就固定为11,后续没有再修改它的操作
  2. 第一次修改Numeric的属性节点
    • 它读取的是Numeric的初始值10(因为前面的写Result操作完全没改动Numeric的值),加1后得到11
    • 把11写入Numeric的Value属性,此时Numeric的内存值更新为11
  3. 第二次修改Numeric的属性节点
    • 它读取的是刚更新后的Numeric值11,加1后得到12
    • 把12写入Numeric的Value属性,最终Numeric的内存值固定为12

你之前的疑惑点在于,误以为Result会使用Numeric最后修改后的12来计算,但实际上Result的写入操作在Numeric被第一次修改之前,就已经读取了初始的10,所以结果是11;而Numeric被连续两次修改,从10→11→12,最终得到12。

内容的提问来源于stack exchange,提问作者Shine Sun

火山引擎 最新活动