01-07-2012 09:24 PM
LabVIEWで別々のviを同時に開始する方法はありますか。
現在シリアル通信で別々の3機器と通信して計測と制御をしているのですが、
1つ1つのプログラムが大きく、フロントパネルをそのまま生かしたいのでなるべくサブviにしたくない状況です。
1つのviにしてしまってもよいのですが(今はそうしているのですが)
別々のままで同時に開始できないでしょうか。
01-08-2012 04:02 AM
通信を含むということで、3つのviで通信がぶつからない(3つのviを一緒に実行しても大丈夫)という前提ですが、
3つのviを含む「上位のvi」(launcher)を作っておいて実行すれば、3つのviを同時に実行できます。
launcher の中に置いた3つのviは、すべて、右クリックで「サブviノード設定」(又はそれに類する設定)で
●呼び出されたらフロントパネルを表示する
●元々閉じていたら閉じる (←終了したとき閉じてよければ)
にチェックしておきます。
(そうしないと、呼ばれたときフロントパネルが開かないまま実行されてしまう)
それで、このlauncherのviを実行すれば、そのサブviである元の3つのviが(ほぼ)同時に呼び出され、
フロントパネルが開き、実行が開始されます。3つのviは独立に、並列で実行されます。
3つのviすべてが終了したとき、launcherも終了します。
なお、添付は古いversionのものなので、最近のversionではプルダウンメニューなどが
違うかも知れませんが、基本的には同等なことができるはず、と思います。
上位vi側で「サブviノード設定」するほかに、元のviを「vi設定」で同じ設定をして保存しておいてもOKです。
この方法で所望のことになるでしょうか。
01-15-2012 08:31 PM
M.Shiraishi様
ご回答ありがとうございます。
基本的な質問にも関わらずありがとうございます。
それぞれのviで初期値を代入する際にあらかじめviを開いておかないといけないのですが
lancher.viを実行した際二重にviが開くことがないかだけ心配です。
基本的にはこの方法で解決できると思います。
01-16-2012 06:40 AM
>>lancher.viを実行した際二重にviが開くことがないかだけ心配です。
それはないのでご安心ください。
LabVIEWは、メモリ内に、「同じ名前のvi」自体が1つしかロードできませんで、
全く同一のviはもちろん、他の場所にある無関係なviであっても、同じ名前のものは
メモリに置いてくれないようになっているようです。
従って、既に、実行したいプログラムのviが開いているのであれば、目の前の「それ」が実行されます。
(再入実行でない限り)
>>それぞれのviで初期値を代入する際にあらかじめviを開いておかないといけないのですが
基本的には、あらかじめviを開いて、初期値を入れておいて、それでlauncherを実行すればOKです。
ただし、以下の点に注意してください。
それぞれのviの制御器が、別のviから呼び出せるように「入力端子」に設定してある場合は、
そのまんま呼び出すと、デフォルト値にリセットされてしまいます。
この場合は、それぞれのvi上の制御器で値をセットするのではなく、launcherのダイヤグラムで
アイコンに値を配線してやって下さい。
それぞれのviの制御器が、特に入力端子に設定してなければ、そのまんま呼び出したときは
その値のまま実行されます。
それぞれのviが、もともと「最上位vi」だと思いますので、後者だと思いますが。。