VIサーバを使用すると、単一のVIを使用して他のサブVI を任意の数だけ呼び出すことができます。トップレベルVIは「親」VIとして実行され、呼び出されたすべてのVIは「子」VIとして実行されます。次のソリューションは、多数のサブVIにも対応します。トップレベルVI内からサブVIを呼び出すには、以下の手順に従ってください。
- 実行したいサブVIへのパスを取得します。
- たとえば、現在のVIのパスでストリップパスとビルドパスを使用して、呼び出し元VIと同じフォルダにあるMyVI_2.viというタイトルのサブVIを指定しました。ただし、システム内の任意の有効なパスに沿って配置されたVIを指定できます。 LabVIEWでのファイルパスの指定の詳細については、関連リンクを参照してください。
- 最上位VIでVIリファレンスを開く関数 (プログラミング>>アプリケーション制御パレットにあります) を使用して、実行するVIへのリファレンスを取得します。
- VIを実行メソッドを選択して参照を起動ノード(同じパレット内にある)に配線します。これにより、指定したサブVIが実行されます。
- falseの定数を完了まで待機プロパティに配線することで、サブVIの実行中に呼び出し側VIが停止するのを防ぐことができます。ご想像のとおり、これにより2つのVIを同時に実行できるようになります。
- 子サブVIのフロントパネルを表示するには、別の起動ノードをチェーンに挿入し、フロントパネルを開くメソッドを使用してサブVIのフロントパネルをデスクトップに表示します。このメソッドを呼び出さない場合でも、サブVIはバックグラウンドで実行されます。
追加情報
LabVIEWで別のVIから他のVIを実行するには、複数の方法があります。その一部を次に示します。
- ブロックダイアグラムからの静的呼び出し 。これは、あるVIが関数として別の VI のブロックダイアグラムにドロップされる場合です。 LabVIEWはサブVIの実行が完了するまで待機して、結果を収集します。これは、LabVIEW でサブ VI を使用する最も一般的な方法です。
- さまざまなオプションを使用して動的呼び出しを行うことができます。これは、ブロックダイアグラムに関数をドロップする代わりに、実行するVIへのパスを選択し、そのためにリファレンスを使用する場合です。このドキュメントのソリューションに例があります。
- 呼び出しと収集: 非同期呼び出し待機ノードを使用してターゲットVIへの非同期呼び出しの結果を収集する場合は、このオプションを使用します。このオプションフラグを使用する場合、LabVIEWが開始されたコールをメモリ内に無期限に保持しないように、 非同期呼び出しを開始ノードで開始するコールごとに非同期呼び出しを待機ノードを1つ含める必要があります。 LabVIEWのヘルプ > >サンプルの検索.. > >プログラムによるVIの制御 > >VIの動的ロードと呼び出し >> 非同期に呼び出して収集.viでサンプルを見つけることができます。
- Call and Forget: このオプションは、 非同期呼び出しを開始ノードを使用してターゲットVIを非同期に呼び出したいが、VI がいつ何を返すかを知る必要がない場合に使用します。LabVIEWのヘルプ> > サンプルの検索...>> プログラムによる VI の制御 >> VI の動的ロードと呼び出し >> 非同期で呼び出して放置.viでサンプルを見つけることができます。