為什麼我的布林值屬性節點是一個變體?

更新 Aug 18, 2023

產品資訊

軟體

  • LabVIEW Base
  • LabVIEW Full

問題敘述

我有一個布林值控制元件。當我創建值或值(信號)屬性節點時,它顯示為 variant(變體)類型。為什麼是這樣?

解決方案

這是因為您試圖從設為 Latching(觸發類) 機械動作的布林控制元件創建屬性節點。您無法讀取或寫入通過觸發類機械動作設定的布林值,因為這可能會導致發生Race Condition 。當布林值設置為觸發類機械動作時,這意味著在您更改布林值後,一旦 VI 讀取其值,它將恢復為默認值。因此,根據 VI 或屬性節點讀取布林值的時間,您可能會錯過值的更改。

清嘗試將布林控制元件的機械動作更改為Switching(轉換類)。這將允許您同時使用 Value 和 Value (Signaling) 屬性節點,您會注意到使用轉換類的機械動作的話,屬性節點現在將是布林值類型而不是變體類型,如下所示:
布爾屬性節點
在僅按一次時,具有轉換類機械動作的布林值不會恢復為默認值。

相關資訊

嘗試將布林值分配給被引用為 Control 類型的前面板控制元件時,也會發生此行為,即使使用To More Specific Class函式將其類型轉換為布林值也是如此。這是因為 Control Reference 沒有被轉換為具有特定機械動作的布林值。

因為屬性節點無法判斷控制元件是否被鍵入為觸發類或轉換類布林值,所以屬性節點不確定提供的確切屬性/期望的確切類型的資料,並且默認強制傳遞給它的數據為變體。