2012-02-15 8 views
1

私はMatlabでActiveXを通してLabview VIを実行したいと思います。ActiveXコールを使用してLabview VIをバックグラウンドタスクとして実行するにはどうすればよいですか? (ActiveXをビジーにしないで)

私は、次のコマンドを使用します。

e=actxserver('LabVIEW.Application'); 
vipath='C:\DATA\Labview\test.vi'; 
vi=invoke(e,'GetVIReference',vipath); 
vi.Run; 

これが正常に動作し、VIがそのフロントパネル上で実行されるように見られています。 しかし、Matlabは、VIが終了するまで待っています。 私は、MATLABに(ActiveXを介して)待つことなく、VIをサイレントモードで実行したいと考えています。

ActiveXをビジー状態にしないでVIを実行するにはどうすればよいですか?そうする標準的な方法はありますか? (私は、マルチタスク指向のLabviewがどのようになっているかを考慮しなければならないと仮定しています.Matlabの標準形式ではそうではありません)。

答えて

1

(感謝NIフォーラムにsmercurio_fcする):

が(完了するまで待たずに)バックグラウンドでVIを実行するには:
vi.Run(1);

実行するには、実行が完了するまで待ちます。
vi.Run(0);
または
vi.Run; vi.Run(1)バックグラウンド実行モードで

、実行は、vi.Abortで中断することができます。実行時には、入力値と出力値をvi.SetControlValueとvi.GetControlValueで変更できます。例えば
、実行時の数値制御「Z」の値を取得する:
vi.GetControlValue(「Z」)

1

次のいずれかを実行できます引数(このための検索ヘルプ)としてVIを指定するプロセスとして

  • 起動LABVIEW.EXE、。 Matlabにプロセス実行の終了を待たないようにする方法があります。
  • VIサーバを使用してVIサーバを起動し、ランチャVI内で実行し、MatlabにランチャVIを呼び出しさせます。後者はVIを呼び出した直後に戻ります.MatlabはメインVIが終了するのを待つことはありません。私は最終的に答えを見つけた
+0

実は、私はVIサーバを介して、それをやりたい(何ですコードは、私は信じています)。 "Run"メソッドの "Wait Until Done"パラメータをFalseに設定できると言われましたが、残念ながらMatlabを通じてこのパラメータにアクセスすることはできませんでした(Labview内からでも実行できます)。 viオブジェクトのRunメソッドは、 "実行(ハンドル、バリアント(オプション))" –

+0

このフォーラム投稿のこの問題に関する詳細については、より一般的な質問があります。 http: //forums.ni.com/t5/LabVIEW/Different-ActiveX-methods-appear-when-referencing-a-VI-inside-or/td-p/1879185 –

+0

は明確ではありませんでした、申し訳ありませんが、私の編集を参照してください – CharlesB

関連する問題