LabVIEW布尔值属性节点是变体的原因
有一个布尔控件。当我建值或值(信号)属性节点时,它显示为variant(变体)类型。为什么是这样?
解决方案
这是因为试图从设为Latching(触发)机械动作的布尔控件创建属性节点。无法读取或写入通过触发机械动作设置的布尔值,因为可能会发生race condition(竞争状态)。当布尔值设置为触发机械动作时,这意味着在更改布尔值后,一旦VI读取其值,它将恢复为默认值。因此,根据VI或属性节点读取布尔值的时间,可能会错过值的更改。
请尝试将布尔控件的机械动作更改为Switching(转换)。这将允许同时使用Value和Value(Signaling)属性节点,设置为转换类机械动作时,会注意到现在属性节点将是布尔类型而不是变体类型,如下所示:
布尔属性节点
在仅按一次时,具有转换机械动作的布尔值不会恢复为默认值。
相关信息
尝试将布尔值分配给被引用为Control类型的前面板控件时,也会发生此行为,即使使用To More Specific Class函数将其类型转换为布尔值也是如此。这是因为控件参考没有被转换为具有特定机械动作的布尔值。
因为属性节点无法判断控件是否被键入为触发或转换布尔值,所以属性节点不确定提供的确切属性集/期望的确切类型的数据,并且默认强制传递给它的数据变体。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。
楼主最近还看过