2017-12-12 14 views
0

同じコンピュータに2つのMATLABウィンドウを開きたいとします。目的のシナリオは次のとおりです。MATLABウィンドウ1は、MATLABウィンドウ2とは何の関係もないスクリプトを継続的に実行しています。同時に、MATLABウィンドウ2は一定の条件を連続的にチェックするスクリプトを実行していて、 MATLABウィンドウ1上で実行されているスクリプトを終了し、それ自身のスクリプトも終了します。私は何をしようとしているのか、より効率的な時間がかかると信じているので、私は1つではなく2つのMATLABウィンドウを持っていたいと思います。興味深い "KeyInject"プログラムをhttp://au.mathworks.com/matlabcentral/fileexchange/40001-keyinjectに見つけましたが、MATLABに既に組み込まれている簡単な方法があるかどうかは疑問でした。同じコンピュータ上にある2つのMATLABウィンドウ間でコマンドを送信することはできますか?

+0

これはどのように効率的であるかわかりません。別のMATLABのライブスクリプトで条件を確認できるのであれば、なぜそのインスタンスではできませんか? – Eppicurt

+0

ここにいくつかの文脈を与える。私は実際に結晶を撮影するレーザーを制御するために1つのMATLABウィンドウを使用しています。レーザーによる過剰な結晶の損傷があるかどうかを確認するCCDからの画像を分析する別のMATLABウィンドウ。水晶があまりにも傷ついたら、レーザーを止めたい。ある実験的な理由から、レーザを連続的に動作させ、CCDを独立して制御することが重要であり、2つのMATLABウィンドウが必要です。 –

+0

同じスクリプトからハードウェアを制御できないような理由はありません。レーザーを設定し、センサーを読んでください。これはコントローラの実装では標準です。 1つのメインループを終了条件で作成します。このループの最初のステップは、センサーデータを読み込み、次にシステムの入力を設定することです。あなたのケースでは、そうすることができない理由はありますか? –

答えて

1

単純な、または柔軟な、無限に拡張可能なバージョン1.0が欲しいですか?システムBで作成されたファイルを経由してシステムAをトリガーすることですシンプル

システムBがファイルを作成する必要がありますシンプルで、[システムAは、コマンド

if exist (fileName, 'file') 

、あなたのシャットダウンを行うと、ファイルをチェックしますコマンド。起動時に、システムAはファイルを

delete (fileName); 

で削除します。もう1つのオプションは、udpコマンドを使用することです。 UDPは、同じコンピュータ上であれ、ネットワーク経由であれ、プロセス間であらゆるデータを送信することを可能にします。 (詳細はhttps://www.mathworks.com/help/instrument/udp.htmlを参照してください)。

+0

ありがとう、私はファイルメソッドは非常に簡単な解決策だと思います!私はこれを使用します。 –

1

私はいくつかの方法を参照してください可能性に並列コンピューティングツールボックスを使用して、このXY problem

  • 使用(マット)ファイル(ホキが提案されているように)回避するために

    1. 再構築し、 1つのMATLABセッションですべてを保持します。

    2. global pipeを介して互いに通信するMEX機能を記述します。
    3. Auto(Hot)keyスクリプトを作成してください。

    オプション2がおそらく最も簡単です。あなたはそれ以外の場合は、OOPで書くならば、あなたはループ内

    オプション3をポーリングする必要があると思いますevents and listenersを見てみると、より多くの時間実施することがかかり困難と方法ですが、はるかに高速検出を可能にします条件、およびセッション間のデータ転送が非常に高速になります。

    オプション4:AutoHotkeyソリューションは、恐らくHorribleConstruction®でおそらく最も恐ろしいことでしょう。しかし、ああ、ああ、スピードは不可欠です。どのような楽しみ!両方のMATLABセッションでは、名前がWindow1またはWindow2の(非表示の)Figureを作成します。これらのウィンドウ名はAutoHotkeyが簡単に追跡できるものです。条件が満たされている場合は、対応するウィンドウ名を更新して、AutoHotkeyスクリプトの残りの部分をトリガします。他のウィンドウのボタンを押してください!ウィンドウ間でデータを転送する必要がある場合:両方のGUIで基本的な編集ボックスを作成し、それらの間にデータをコピー&ペーストすることができます。 Linuxの場合:Autokeyを同じ目的で使用することはできますが、基本的にはPythonコードを書くことが重いので、Pythonを使用してください。

    また、KeyInjectを使用してください。より楽しい。

  • +0

    ハッハッハ...私はあなたの最後の解決策を愛し、私はそれを達成するためにさらに複雑な方法を考えようとしていますが、私はあなたがそれを上回ったと思います! +1(より賢明な)選択肢の最初と援助リンクで+1。 – Hoki

    関連する問題