关于LabVIEW中的“值”与“值(信号)”属性
来源:互联网 发布:给自己打电话知乎 编辑:程序博客网 时间:2024/06/03 23:45
本文以【布尔】控件为例进行介绍
平时编程时,用的最多的是“值”属性,使用这个属性节点可以在任何位置直接改变一个控件的值,用起来也非常方便。但对于“值(信号)”这个属性,很多人都很陌生,也很少有人了解它。其实这个属性非常有用,也非常厉害。不过NI对它有一个说法:NI建议仅在编程方式下值的改变一定需要通过LabVIEW生成事件响应时,使用该属性。因此使用的时候,需要慎重。
NI关于这个“值(信号)”属性的描述
短名称:Val(Sgnl)
必需:基础软件包
类:控件类的属性
用途: 创建属性。
设置控件(LV变体)的值并生成值改变事件。
该属性更新类似于值属性的对象值。但是,用户通过交互方式改变对象的值时,值(信号)属性可导致LabVIEW生成事件。NI建议仅在编程方式下值的改变一定需要通过LabVIEW生成事件响应时,使用该属性。
对于已配置机械动作的布尔值,该属性始终返回错误。对于已配置机械动作的布尔值,竞争状态可导致无法通过编程读取布尔控件的值。
注释
下表列出该属性的相关特性。
数据类型权限只写可用于运行引擎是可用于实时操作系统是可在VI运行时设置是加载前面板至内存否使用前必须授权否加载程序框图至内存否允许远程访问是必须等待直到用户界面空闲否可用于控件VI否可用于全局VI否可用于严格自定义类型是可用于多态VI否
_____________________________________________________
在NI的文档里描述的非常清楚,值(信号)主要用于事件结构的 “值改变”,此“值改变”是通过赋值来改变值的,被动的(赋值改变的)。
如图中所示,布尔控件Yes是一个显示控件,它的值是OK1和OK2两件输入控件所决定的,程序中表示,当Yes显示为True时,事件结构中的【"Yes":值改变】事件将被触发,实现对+1计算。
需要注意的是,如果不对Yes的值进行判断是True还是False,直接将结果输入给Yes的Val(Sgnl)属性节点,将一直触发事件结构中的【"Yes":值改变】事件。
以下为NI网站上,关于这个问题的链接:
http://digital.ni.com/public.nsf/allkb/0D5D9751C5F8D865862578810031CFBD
转贴如下:
问题:
在使用事件结构的时候,我在事件分支中响应前面板中的一个显示控件的值改变事件,该显示控件在程序的其他部分动态改变其值。VI运行的时候,可以观察到显示控件值已经被改变了,但是对应事件分支却没有执行。为什么事件结构里没有响应我显示控件的值改变事件呢?
解答:
事件结构仅仅注册由直接的前面板用户输入产生的事件,而在问题中,显示控件的值非用户输入而是程序更改的,所以这样的“值改变”LabVIEW不会去捕捉,因此也无法响应对应的事件分支。而且,即使你在程序中利用VI服务器,全局变量,局部变量等来改变VI和前面板控件,“值改变”事件都不会被LabVIEW捕捉。
有一个例外,输入控件和显示控件的事件可以通过调用值(信号)的属性节点产生。该属性是只写的,每次写入该属性节点就像是用户在前面板操作产生值的改变。要注意的是,在循环中使用该属性时,如果在循环迭代每一次都写入 该属性,不管控件实际是否有值变化,程序将会产生一组的值改变事件。
参考下图的图片以及附件中的VI。
- 关于LabVIEW中的“值”与“值(信号)”属性
- 属性值改变信号
- 关于qt中的信号与槽机制
- LabVIEW与DLL(1):关于DLL
- 关于labview
- 关于信号与槽
- 关于信号与系统
- 关于QML中调用qt类中的信号,槽,成员函数,属性做记录
- 单元格属性中的值与显示值
- 关于Linux中的SIGABRT信号
- 关于POSIX标准中的信号
- 关于Linux中的SIGABRT信号
- 关于Linux中的SIGABRT信号
- 关于Linux中的SIGABRT信号
- LabVIEW面向对象之如何使用父类的属性值
- LabVIEW面向对象之如何使用父类的属性值
- 文章标题 labview DAQ 数据采集中的多路信号分离
- Labview 属性节点讲解
- 视频专辑:Spring框架讲解视频
- 史上最清晰快捷的mac下新建cocos2dx跨ios安卓项目教程
- python null 判定
- Java生成word/pdf解决方案
- win7系统中声音图标不见,解决办法
- 关于LabVIEW中的“值”与“值(信号)”属性
- HTTP协议详解
- linux常用命令
- STL 容器
- OLTP - 联机事务处理
- hibernate.hbm2ddl.auto配置详解
- Link错误
- android使用继承的方式实现底部菜单栏
- Extjs数据模型model的使用