サンプルコードとドキュメント

プラグイン方式でサブVIを動的に呼び出す方法

コードとドキュメント

添付

概要

特定のフォルダにVIを放り込んでおき、そのフォルダ内を検索して見つかったVIを動的に呼び出し、制御するサンプルプログラムです。

 

説明

LabVIEWにてサブVIを呼び出すには大きく分けて2通りあります。1つはサブVIをブロックダイアグラムに埋め込む「静的」な呼び出し、もう1つはVIのファイルパスを元にVIを呼び出す「動的」な呼び出し方です。
通常ですと静的呼び出しで問題ない場合がほとんどですが、「並列に動かしたい」となった時に静的呼び出しでは実現が難しくなります。
動的呼び出しのサンプルはLabVIEWに含まれています(ヘルプ→サンプルを検索→VIプログラム的制御→VIの動的ロードおよび呼び出し)が、こちらは非同期呼び出しとなっており、タイプ識別子VI RefnumというVIのフロントパネルのコネクタ形状を指定するための定数が必要となっており、若干煩雑です。
(なお、この指定はVIを識別子の上にドラッグ&ドロップするだけなので、それほど煩雑、というわけではありません。ただし、この形で呼び出すVIは全て同じコネクタペーンを持っている必要があります。)
VIを動的に呼び出すには単純にファイルパスを指定するだけで可能です。本サンプルではパスを指定するだけの簡略的な呼び出し方法のサンプルとなります。

このサンプルプログラムでは、以下の様なフォルダ構造になっています。

Dynamic Call Example.lvproj * - プロジェクトエクスプローラ (304x279).png
メインVIは、Modulesフォルダ以下の「~Sub.vi」というファイルを検索し、呼び出し可能VIとして登録します。
フロントパネル上のリストボックスに呼び出し可能VIが表示されるので、任意のVIを選択して「動的呼び出し」のボタンを押すことでVIを呼び出せます。「フロントパネルを開く?」というチェックボックスがあり、こちらにチェックを入れるとフロントパネルが開き、チェックしないと開かないという動作になります。(開きませんがバックグラウンドでは動作します)

実行イメージは以下の様になります。
Dynamic Call Main.vi.png

 

ハードウェア/ソフトウェアの要件

  • LabVIEW 2014以降

 

コードの実装/実行手順

  1. 添付ファイルをダウンロードし、解凍します
  2. 「Dynamic Call Main.vi」を開き、実行します
  3. 任意のVIを選択し、「動的呼び出し」ボタンを押してVIを起動します
  4. 「フロントパネルを開く?」ブール制御器の値で、フロントパネルの表示/非表示が切り替わることを確認します
  5. 「停止」ボタンをクリックしプログラムを停止します

 

その他の情報/参考資料

NIコミュニティのサンプルコード交換のサンプルコードは、MIT Licenseによりライセンス供与されています。

寄稿者