3

Integer、float、bool、string、またはenumを入力ノード(ただし単一ノードのみ)として受け入れるVIを作成し、VI内で入力タイプを検出して、さまざまな方法でデータを使用できるようにします。 。誰かがこれで私を正しい方向に向けることができますか、私は変種について考えていますが、それについてどうやって行くのか本当にわかりません。

テンプレートタイプを使用するC++関数、またはオーバーロードされた関数が機能するのと基本的に同じようにVIを機能させたいです。

ありがとう、Eamonn

4

3 に答える 3

5

いくつかの追加オプション:

  1. バリアントのデータのタイプを示す出荷VIがいくつかあるはずです。これにより、前の提案が単純化されます。これは、ケース構造から始めて、各ケース内で1つのタイプにキャストするだけだからです。VIはvi.libにあるはずです。私は、VariantDataTypeというフォルダー、またはおそらくUtilityフォルダーにあると信じています。
  2. ポリモーフィックVIを作成します。これは基本的に、ポリVIを使用して接続されるVIのグループ(データ型ごとに1つ)です。ダイアグラムにドロップすると、LVは使用するワイヤのタイプに基づいて正しいVIを自動的に選択します。これの大きな利点は、コードが単純で明確なことです。
于 2012-07-27T08:11:05.580 に答える
2

バリアントを使用できます。LabVIEWバリアントでは、任意のデータ型を入力として使用できます。バリアントで役立つことを行うには、「バリアントからデータ」を使用して、バリアントを使用可能なデータ型に変換する必要があります。

さて、あなたがしていることを達成する最も簡単な方法は、使用したいさまざまなデータ型を循環し、それらすべてに対して「Variant to Data」を呼び出して、エラーをチェックすることです。エラーを生成せずに実行されるのは、適切なデータ型のみです。

バリアントを動的にキャストする方法は他にもありますが、それらははるかに複雑です(より多くのデータを使用してバリアントをエンコードするか、手動でパーサーを作成するか)。

LabVIEWには、優れたテンプレート機能やオーバーロード機能がありません(オーバーロードは使用できますが、LabVIEWオブジェクトにのみ適用されます。ほとんどのLabVIEWデータ型はオブジェクトではありません)。

于 2012-07-26T21:13:05.777 に答える
0

ポリモーフィックviは良い解決策のように聞こえますが、この場合、データをviに接続して、コンパイラが実行前に予想されるデータの種類を認識できるようにする必要があります。実行時にviに異なるデータ型を送信する場合は機能しません。バリアントのスキャンが機能するか、データ型の説明とバリアントデータを使用して文字列/列挙型のクラスターを作成すると、受信者viがデータ型を認識します。非常に興味深いです。バリアントのデータ型のチェックについて聞いたのはこれが初めてです。これらのvisはvi.lib\Utility \ VariantDataTypeにありますが、パレットには表示されません。

于 2012-07-27T15:20:32.473 に答える