2012-07-26 95 views
3

我想創建一個接受Integer,float,bool,string或enum作爲輸入節點(但只有一個節點)的VI,然後在VI中檢測輸入類型,以便我可以以不同方式使用數據。任何人都可以用正確的方向指向我,我正在考慮變體,但不確定如何去做。允許vi節點接受任何輸入類型

我希望我的VI基本上可以像使用模板類型或重載函數的C++函數一樣工作。

感謝, 埃蒙·

回答

5

一些附加選項:

  1. 應該有一些航運的VI,告訴你數據的變異類型是什麼。這應該簡化先前的建議,因爲您只需從一個案例結構開始,並將其轉換爲每個案例中的一種類型。這些VI應該在vi.lib中,我相信一個名爲VariantDataType的文件夾,或者可能位於Utility文件夾中。
  2. 創建一個多態VI - 它基本上是一組使用poly VI連接的VI(每個數據類型一個)。一旦將它放在圖表中,LV會根據您使用的導線類型自動選擇正確的VI。這樣做的一大優點是代碼簡單明瞭。
+1

具體而言, \ vi.lib \ Utility \ VariantDataType \ GetTypeInfo.vi – 2012-07-27 15:58:10

2

可以使用的變種。 LabVIEW變體允許任何數據類型作爲輸入。要對變體進行任何有用的操作,您需要使用「Variant to Data」並將變體轉換爲可用的數據類型。

現在,完成您正在做的事情的最簡單方法是簡單地遍歷您想要使用的各種數據類型,併爲它們調用「Variant to Data」並檢查錯誤。只有正確的數據類型纔會運行而不會產生錯誤。

還有其他方法可以動態地轉換變體,但它們要複雜得多(可以用更多數據編碼變體或手動編寫解析器)。 (您可以使用超載,但只適用於LabVIEW對象,大多數LabVIEW數據類型不是對象)。

0

多態vi聽起來像是一個很好的解決方案,但在這種情況下,您需要將數據連接到vi,因此編譯器在運行之前知道預期的數據類型。當您在運行時向vi發送不同的數據類型時,它不適用於這種情況。通過變體掃描可以工作,或者您可以創建一個帶有數據類型描述和變體數據的字符串/枚舉的集羣,然後recepient vi將知道數據類型。 Yair,非常有趣,這是我第一次聽說檢查變體中的數據類型,這些vis在vi.lib \ Utility \ VariantDataType中,但我沒有在調色板中看到它們。