![]() |
1
3
要将值写入控件,需要从中创建一个局部变量(右键单击方框图上控件的终端并选择“创建”>“局部变量”)。要让它更新For循环的每次迭代,请将局部变量terminal放在For循环中,并将要显示的任何内容连接到该端子。我不确定这是否是一个好的用户界面设计,但它是你的问题的答案。 您还可以使用局部变量从方框图中的多个位置写入指示器,并从指示器或控件中读取。对于任何给定的控件或指示器,可以有多个局部变量终端。每个局部变量终端都是用于读取或写入的—右键单击局部变量,然后选择“更改为读取”或“更改为写入”。
|
![]() |
2
3
是否有任何特定的原因需要经常更新控件?
|
![]() |
3
2
如前所述,您可以使用局部变量和proerty节点来设置控件或指示器的值。如果您试图持久化数据,有一种更好的方法。
三个主要好处是数据流的保存、线程安全和性能。您可以通过向VI添加错误IO来获得数据流。由于VI的执行是原子的,因此线程安全得到了保证。性能得到了改善,因为LV数据想要在一条线上生存。每次将数据写入控件的proerty节点时,LV运行时都会将该数据写入UI线程。我认为本地也有类似的基于线程的性能冲击,但我不确定。 根据第一条评论。。。 为了您的利益,从链接复制到这里(是的,您是读者先生)。 问题: 我正在考虑使用局部或全局变量;变量在什么线程中执行? 解决方案: 一个常见的误解是,局部和全局变量操作在UI线程中执行,或者需要将线程交换到UI线程-这是不正确的。以下描述了局部和全局变量的写入和读取操作的行为: 写: 当您从局部或全局变量读取时,操作将在VI执行的线程中发生,因此,您可以通过将VI属性中的执行系统设置为standard来确保它不会在UI线程中发生。有一种线程保护机制,可以确保在您读取数据时,没有全局的写入程序正在更改数据,但这是通过互斥锁完成的,而不是通过转到UI线程。但是,如果打开了全局变量面板,则会发布一条消息来重画全局控件,重画将在UI线程中进行。 nekomatic是正确的。当您写入局部变量时,不会发生线程交换。 |
![]() |
4
1
我同意你的看法。如果您正在以编程方式更改控件的值,那么您应该考虑它是否应该是一个指示符,或者可能有一个控件的伪指示符。 这将是一个好主意,张贴一个孤立的版本,你的代码,这样我们就可以了解到底是怎么回事。 |
![]() |
5
1
如果您想维护dataflow来控制程序流,可以使用控件的属性节点并设置“Value”属性。 要创建属性节点,请在方框图上的控件终端上单击鼠标右键,然后选择“创建属性节点值”。现在,您可以通过使用错误连接来控制程序流,从而坚持数据流编程。
|
![]() |
Kono · 动态寻址I2C从机;即插即用 7 年前 |
|
zee · LabView---如何将加速度值的范围映射到特定频率? 9 年前 |
![]() |
user1750948 · 如何在labview中查找显示器的dpi 11 年前 |
![]() |
Koushik Shetty · 更新while循环内的输出 12 年前 |