静的にリンクされたサブVIを使用せずに、動的にVIを呼び出すことができます。

静的にリンクされたサブVIは発呼者VIのブロックダイアグラム上に直接配置するものです。このサブVIは発呼者VIと同時にロードされます。

静的にリンクされたサブVIとは異なり、動的にロードされたVIは、発呼者VIが「VIリファレンスを開く」でVIをロードするまで、ロードされません。VIは発呼者VIで必要になるまでロードされないので、発呼者VIが大きい場合、VIを動的にロードすることによってロード時の時間とメモリを節約でき、さらに操作が終了するとVIをメモリから解放できます。また、VI呼び出し構成ダイアログボックスを使用して、サブVIをいつロードするか構成することもできます。

リファレンス呼び出しノードとタイプ指定VI Refnum

リファレンス呼び出しノードまたは非同期呼び出しを開始ノードを使用してVIを動的に呼び出します。どちらのノードも、リファレンス入力が指定したサブVIの呼び出しを開始します。しかし、非同期呼び出しを開始ノードは、呼び出しVI内でデータフローが継続する間も、非同期でサブVIを呼び出します。

リファレンス呼び出しノードにはタイプ指定VI Refnumが必要です。タイプ指定されたVIリファレンスは、呼び出し中のVIとそのコネクタペーンの両方を識別します。タイプ指定VI Refnumは、VIへの永久的な関連を確立したり、VIの名前や位置などの他のVI情報を含むわけではありません。リファレンス呼び出しノードの入力と出力は、他のVIに配線する場合と同じように配線できます。

以下のブロックダイアグラムは、リファレンス呼び出しノードを使用して「周波数応答」VIを動的に呼び出す方法を示しています。リファレンス呼び出しノードには「VIリファレンスを開く」関数と「リファレンスを閉じる」関数を使用する必要があります。これは、プロパティノードインボークノードを使用する場合と似ています。

リファレンス呼び出しノードを使用して「周波数応答」VIを動的に呼び出す様子を示すブロックダイアグラム。

タイプ指定Refnumとして指定されたVIは、コネクタペーン情報のみを提供します。したがって、RefnumとVIの間には固定的な関連付けが確立されません。特に、VIコネクタペーンの選択と、選択したVIに対するRefnumの取得を混同しないようにしてください。「VIリファレンスを開く」関数のVIパス入力を使用して、特定のVIを指定します。

VIを動的に呼び出す

リファレンス呼び出しノードを使用して、VIを動的に呼び出します。

メモ VIを非同期で呼び出すには、リファレンス呼び出しノードの代わりに非同期呼び出しを開始ノードを使用します。
  1. ブロックダイアグラムに「VIリファレンスを開く」関数を追加します。
  2. VIリファレンスを開く」関数を使用して、タイプ指定のVIリファレンスを作成します。
  3. ブロックダイアグラム上にリファレンス呼び出しノードを追加します。
  4. VIリファレンスを開く」関数のVIリファレンス出力を、リファレンス呼び出しノードのリファレンス入力に配線します。
  5. ブロックダイアグラムに「リファレンスを閉じる」関数を追加します。
  6. リファレンス呼び出しノードのリファレンス出力出力を「リファレンスを閉じる」関数のリファレンス入力に配線します。
  7. ブロックダイアグラムですべてのエラー入力端子およびエラー出力端子を配線します。