LabVIEW布爾值屬性節(jié)點是變體的原因
LabVIEW布爾值屬性節(jié)點是變體的原因
有一個布爾控件。當(dāng)我建值或值(信號)屬性節(jié)點時,它顯示為variant(變體)類型。為什么是這樣?
解決方案
這是因為試圖從設(shè)為Latching(觸發(fā))機(jī)械動作的布爾控件創(chuàng)建屬性節(jié)點。無法讀取或?qū)懭胪ㄟ^觸發(fā)機(jī)械動作設(shè)置的布爾值,因為可能會發(fā)生race?condition(競爭狀態(tài))。當(dāng)布爾值設(shè)置為觸發(fā)機(jī)械動作時,這意味著在更改布爾值后,一旦VI讀取其值,它將恢復(fù)為默認(rèn)值。因此,根據(jù)VI或?qū)傩怨?jié)點讀取布爾值的時間,可能會錯過值的更改。

請嘗試將布爾控件的機(jī)械動作更改為Switching(轉(zhuǎn)換)。這將允許同時使用Value和Value(Signaling)屬性節(jié)點,設(shè)置為轉(zhuǎn)換類機(jī)械動作時,會注意到現(xiàn)在屬性節(jié)點將是布爾類型而不是變體類型,如下所示:
布爾屬性節(jié)點
在僅按一次時,具有轉(zhuǎn)換機(jī)械動作的布爾值不會恢復(fù)為默認(rèn)值。
相關(guān)信息
嘗試將布爾值分配給被引用為Control類型的前面板控件時,也會發(fā)生此行為,即使使用To?More?Specific?Class函數(shù)將其類型轉(zhuǎn)換為布爾值也是如此。這是因為控件參考沒有被轉(zhuǎn)換為具有特定機(jī)械動作的布爾值。
因為屬性節(jié)點無法判斷控件是否被鍵入為觸發(fā)或轉(zhuǎn)換布爾值,所以屬性節(jié)點不確定提供的確切屬性集/期望的確切類型的數(shù)據(jù),并且默認(rèn)強(qiáng)制傳遞給它的數(shù)據(jù)變體。

需要說明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開,其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤上。這不是圖片,各位小伙伴看到后嘗試一下,這個問題就不用加微信咨詢了。有關(guān)LabVIEW編程、LabVIEW開發(fā)等相關(guān)項目,可聯(lián)系們。附件中的資料這里無法上傳,可去公司網(wǎng)站搜索下載。