NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

VIから別のVIを起動すると制御ができない

メインのVIから複数のアプリケーションVIを起動しようとしたのですがうまく動作しません。
サブVIとしてよみだすとサブVIのフロントパネルが起動してサブVIの制御は出来るように
なるのですが起動元のVIの制御を受け付けません。サブVIをクローズすると制御出来るようになります。
サブVIの起動はイベントストラクチャでボタンを押すと起動するようにしています。
幾つか試してみたのですがうまくいきません
1,サブVIとして起動→サブVIのみ制御可、サブVIを閉じるとメインも制御できる
2,アプリケーション制御の中のVIリファレンスを開くとプロパティノードでフロントパネルを開く、開いたら実行をツルー
にしてみたがサブVIが未実行の状態で開く。実行するとサブVI、メインVI両方制御できる
3,スタティックVIリファレンスととリファレンス読み出しだと1と同じになる
 
使い方としてはメインのVIは動作させておいて好きなときにアプリケーションのVI(例えば電卓のようなもの)
を別ウィンドウでポップアップさせて横で実行させておき必要なくなればクローズする。クローズしなくても
メインのVIはそのまま制御できるようにしたいのです。
 
サンプルなど有りましたら宜しくお願いします
0 件の賞賛
メッセージ1/2
3,882件の閲覧回数

サブviを呼び出すと、サブviの実行が終わらないとメインに制御が戻らないので、次のイベント待ちに行けないでいるものと思われます。

サブviを呼び出してもメインの制御が続くには、いろいろ書き方があると思いますが、添付のような方法もあるかと思います。

当方LabVIEW6なので、6.1以上のイベントストラクチャを使っていませんが、基本的にはイベントストラクチャで書き直せる書き方であると思います。

最初にサブviも呼び出してしまいますが、サブviは開きません。また、サブviの呼び出しとメインのループは並列なので、相互に無関係です。メインでA,B,Cのボタンが押されたら、対応するサブviを「表示する」ようにしています。単に表示するだけなのでメインの制御は生きています(乱数を表示し続ける)。サブviを閉じるときはサブviの右上の「×」をクリックすれば閉じますが、メインで再度ボタンを押せば開きます。メインの制御が生きているので、Aを開いている最中にメインでBを押すと、Bも開くことができます。

メインで終了を押すと、各サブviでそれをリファレンスで検知して全体が終了するようになっています。

以上、スマートかどうか分かりませんが、ご参考になればと思います。

 

0 件の賞賛
メッセージ2/2
3,877件の閲覧回数