Matlab 2007b(GUIDE)でGUIを開発していますので、ファンクションジェネレータ=>周波数、タイムベース、トリガ、多くのもの)、この中で私はオシロスコープの画面にカーブ表示をして、それらをGUIのGUI上に表示します。オシロスコープはトリガに従って信号をリフレッシュしますが、私は自分のGUIで同じことをすることができないことを知っています(オシロスコープからの信号を取得する時間はトリガ期間とかなり長いです)。GUIグラフをリフレッシュし、リフレッシュ時のGUIの変更を考慮してください(テキスト、編集、ポップアップuicontrol)
私は次のことを望んでいます:私は私の軸を私の曲線をリフレッシュする関数を呼び出すので、オシロスコープからの信号を取得し、axを更新する無限のwhileループを起動します。毎回リフレッシュが可能です。しかし、私が望むのは、ユーザーがいつも私のGUIと対話できることです。ジェネレータでの信号の周波数を変更したり、オシロスコープのタイムベースを変更したりすることです。残念ながら(ただし論理的に)、whileループを起動すると、私のGUIでは何もできません。
できますか?私のGUIとやりとりし、コールバック関数を呼び出すと、ユーザーが対話するオブジェクトに関連付けられます。実行される「バックグラウンド」関数がありますか?詳細については、オシロスコパからのデータをイーサネットリンク経由で取得するグラフを更新します。
多分、オブジェクトのBusyActionとInterruptible値についてですか?それとも、タイマーでのみ可能なのでしょうか?私は前にそのようなことをすることはありませんので、私はインターネット上の情報を探しましたが、それはちょっと複雑なようです。
ちょっとしたアドバイスは、私を解くのに違いがあります。私はあなたの助けを事前に感謝します。
私は十分な情報を与えていない場合は、私に教えてください。
PS:ここでは、毎回リフレッシュしたい2つのカーブがある私のGUIと斧のイメージがあります。
まずはお返事ありがとうございます。 問題は、タイマの周期を1ms(最小)に設定し、最後の1秒間を何度か更新する機能を必要とするため、MATLABが関数の実行中にアクションを管理しないようにしました。 GUI上のアクションは考慮されていません。私はタイマの2つの実行の間に "自由な"時間があるときに働く(私の機能のexecutin時間よりもタイマーの周期が長い場合)あなたの解決策を試していますが、その場合は半分の時間ではありません。 –
私は私のケースとタイマーにこだわっていると思いますか?それとも、私はタイマや私のGUIオブジェクト(BusyAction、Interruptible、ExecutionModeなど)のいくつかのプロパティを正しく管理していないからですか?詳細については、次のようにタイマーを初期化します。 タイマー( 'TimerFcn'、{@toto、handles}、 'BusyMode'、 'Queue'、 'ExecutionMode'、 'FixedSpacing'、 'Period'、0.001); –
私はもう一度テストをしました。私のタイマー時間を0.001msに設定し、私の関数にpause(3)を追加すると、関数は3秒ごとに正しく呼び出されますが、GUIの各アクションもキューリストに正しく入れられますが、関連するコールバックは、私はタイマー(ctrl + C)を終了するので、私はMATLABをキューリストに入れて、毎ミリ秒ごとにそれらを落とすのではなく、いいえと思いますか?そのため、GUIオブジェクトのコールバックがキューリストの遠いところにある理由です。 –