如何在LabVIEW的Case Structure中使用Enum

更新 Nov 7, 2023

產品資訊

軟體

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW Professional

問題敘述

  • Enum如何與Case Structures一起使用
  • 我如何複製一個case並定義哪一個Enum值該分配給複製出來的case?
  • 一個case可以有多個參考值嗎?
  • 當我將enum連接到我的Case Structure時,為什麼我得到的是數字?

解決方案

Enumerated type (Enum)是具有相應整數值 (integer)的字串 (string)標籤列表。它在LabVIEW中作為unsigned integer處理 (U8,預設值U16U32)

例如 ,我們可以用一個enum來儲存四個季節,在這種情況下,我們為每個季節的字串(string)標上對應的數值:0-"Spring",1-"Summer",2-"Autumn"和3-"Winter"

 

 

將enum連接到Case Structure的case selector時,您就可以為其中每個數值創建不同的case。 右鍵點擊case structure的框架,然後選擇Add case for every value,就能夠為每一個enum中的數值,建立各別的case。

例如 ,enum儲存了四個季節,則每個字串"Spring"、"Summer"、"Autumn"和"Winter"對應的數值可以有四個不同的case。

 

此外,透過在case label中輸入複數個季節,您就可以在同一個case中擁有多個季節。enum的字串值用雙引號括起來,並由逗號 (,)做區隔。

例如,假使希望Case Structure能夠一併處理春天與秋天,因為春、秋季為分點 (equinoxes);夏天與冬天一併處理,因為夏、冬季為至點 (solstices),我們可設定:Case 1 - "Spring","Autumn";Case 2 - "Summer", "Winter"

 

 

使用enumerated type (enum)時,務必為該control創建type definition。創建type definition可以防止每次在enum中添加或刪除數值選項時,都需要重新撰寫程式的情況。且如此一來您在修改任何選項時,也不會導致在Case Structure的label中,有string被替換為數字的情況發生。

 

 

注意 :上圖的Case Structure顯示的是數字,而不是字串label。這是因為enum常數內的其中一個數值被修改了。因此LabVIEW就會將這些數值全都強制轉換為數字類型 (numeric type),並使Case Structure只接收該類型的數值。在使用以enum作為輸入的狀態機 (state machines)或Case Structures 時,都建議為enum創建type definition ,如此您就不必在進行修改時,手動變更所有常數。

相關資訊

Enumerated Type (Enum)Ring Data Type不同,而本文未對其進行介紹。有關兩者差異和其用法的更多資訊,請參閱Difference between a Text Ring Control and an Enum文件。