2016-03-21 34 views
-2

我從一個API尋找一個JSON數據集,我看到這樣的東西:雙布爾變量有什麼用?

"lights_on":1, 
    "lights_off":0, 
    "doors_locked":0, 
    "doors_unlocked":1, 
    "sensors_tripped":0, 
    "sensors_not_tripped":1 

難道只是我,或者是有點傻有一個布爾值的兩個狀態變量?在這個例子中,是不是更有意義檢查lights_on的值,如果0它必須是false,如果1它必須是true

什麼是上述JSON數據與這兩個變量設置的優勢truefalse狀態,我應該在我的程序中使用它?

+0

這確實是一個冗餘。通常使用名詞和狀態也是有意義的。 「燈:開」,「燈:亮」,「門:鎖定」,「門:半開」。如果狀態是布爾型的(並且總是布爾型),那麼它也很好。 – Axalix

+1

由Schrödinger編碼。 –

回答

3

這只是模擬真實世界的條件,您希望「真」和「假」變量都能做出響應。他們的默認值都是'假',這意味着沒有做出決定。如果兩者都被設定爲「真」,那麼就做出了一個非理性的決定。這是確保軟件正常工作的一種方法。

奇怪的是,同樣的情況適用於遠程接觸開關的'開門'或'關門'。通過返回兩個狀態用於軟件分析,用戶知道導線沒有短路,這可能導致打開狀態和閉合狀態(不合邏輯),並且兩條導線都不是假的,這通常意味着電纜已被切斷或傳感器是壞。

這是自檢的最簡單形式,以確保軟件或硬件狀態報告的來源有效。
當代碼塊正在讀取真實世界的布爾輸入時,這將被隱式使用,並且下一個代碼塊將讀取'true'和'false'標誌以確保存在有效答案。同樣在現實世界中,數字濾波器將用於確保答案在1/10秒內保持不變,具體取決於軟件必須對變化做出何種響應。

然後更多的下游代碼將通過發佈狀態報告,發出警報,更新日誌或任何數量的視爲重要的功能來採取行動。

我在幾款ATE設備中建立了這些多級線程來測試產品。
真實世界的輸入可能會產生噪音,並且創建的軟件布爾值可能有錯誤,因此任何含糊不清必須必須在端點軟件採取現實操作之前被濾除。

+0

因此,它與真實世界的設備接口特別好,您是否願意在純粹的編程環境中執行此操作? –

+0

@Black_Stormy。請參閱我的答案。 – Sparky256