LabVIEWでは、呼び出し側VIに出力端子が配線されているかどうかをVI内から確認できますか? 明らかに、これは呼び出し元の VI に依存しますが、おそらく VI の現在の呼び出しに対する答えを見つける方法がいくつかあります。
NULL
C の用語で言えば、これは、出力パラメーターを格納する場所へのポインターである引数を取るが、呼び出し元がそのパラメーターに関心がない場合は受け入れる関数を定義するようなものです。
LabVIEWでは、呼び出し側VIに出力端子が配線されているかどうかをVI内から確認できますか? 明らかに、これは呼び出し元の VI に依存しますが、おそらく VI の現在の呼び出しに対する答えを見つける方法がいくつかあります。
NULL
C の用語で言えば、これは、出力パラメーターを格納する場所へのポインターである引数を取るが、呼び出し元がそのパラメーターに関心がない場合は受け入れる関数を定義するようなものです。
これを自然な方法で行うことはできないと言われていましたが、データ値参照を使用する回避策があります (LV 2009 が必要です)。これは、出力引数に NULL ポインターを与えるのと同じ考えです。結果はデータ値参照(ポインタ)として入力に与えられ、サブVIによって参照ではないかどうかがチェックされます。null の場合は、何もしません。
サブVIは次のとおりです(もちろんtrueの場合は何もしません):
呼び出し VI は次のとおりです。
画像は VI スニペットなので、ダイアグラムにドラッグ アンド ドロップしてコードを取得できます。
これについて間違った方法で行っていることをお勧めします。コンパイラが単独で計算を回避できるほど賢くない場合は、この VI の 2 つのバージョンを作成します。高価な計算を行うものと、そうでないもの。次に、それらを切り替えることができる多態性 VI を作成します。必要なバージョンが設計時にわかっているので (出力端子を配線しているかどうかに関係なく)、正しいバージョンの多態性 VI を使用してください。
または、計算の負荷の高いセクションの Case ステートメントをオンまたはオフに切り替える変数を渡します。
Underflow が言ったように、基本的な答えはノーです。
NIがこれまでに提供する最も公式で詳細な回答については、こちらを参照してください。
類推を拡張すると、LV には C のように null の概念がないことを除いて、LV でこれを行うことができます。この例をここで見ることができます。
リンク アンダーフローのコードは実行可能ファイルでは機能しないことに注意してください。これは、ダイアグラムが EXE のビルド時にデフォルトで取り除かれ、そこで使用されるプロパティとメソッドの一部が RTE でサポートされないためです。
申し訳ありませんが、質問を誤解しているようです。あなたは入力について尋ねていると思っていたので、私が提案した考えは当てはまりません。ただし、私が指摘した制限は適用されます。
なぜこれをしたいのですか?別の解決策があるかもしれません。
一般的に、いいえ。
「スクリプト」機能を使用して、コードの静的分析を行うことができます。これには、呼び出し階層をプルし、ワイヤ リファレンスを追跡する必要があります。
これを試してみると、いくつかの困難があります。同じダイアグラム上に複数の同一のサブ vi があると、区別するのが難しくなります。また、ターミナル参照はほとんど名前でアクセスできるように見えるため、他の vi の同じ名前のターミナルと衝突する可能性があります。
NI は、この問題のバリエーションについて少し作業を行いました。これをチェックしてください。
一般に、LV コンパイラは、未使用のコードが実行可能ファイルに組み込まれないようにマシン コードを最適化します。
これはサブ VI には適用されません (実行可能ファイルのビルド時に FP を削除すれば LV がそれを行うことができますが、インジケーターの値を何らかの形で使用しようとしないことを知る方法がないため)。これをサブ VI に適用する方法の 1 つは、サブ VI をインライン化することです。これにより、コンパイラは出力が使用されていないことを確認できます。優先度をサブルーチンに設定することもできます。これもおそらくこれを行いますが、お勧めしません。
公式には、インライン化は LV 2010 でのみ利用可能ですが、古いバージョンのプライベート VI プロパティにアクセスする方法があります。ただし、お勧めしません.2010年には、この分野で古いバージョンにはなかったいくつかの最適化が行われている可能性があります.
PS 一般に、コンパイル プロセスの詳細は公開されておらず、NI がコンパイラを微調整しているため、LV のバージョン間で異なります。プロセス全体が LV 2010 で大幅にアップグレードされたはずであり、NI のサイトに詳細の一部が記載された Web キャストがあるはずです。