1

そこで、あるGUIを別のGUIから呼び出し、vararginとvarargoutを介して情報をやり取りする方法を理解しました。しかし、現在、私は2つの別々のGUIを持っている状況にあり(一方は他方から呼び出されません)、それらの間で通信したい場合は、他の方法が必要だと思います。

より正確には、Simulinkと対話する2つのGUIを作成しています。モデルを開くと1つのGUIが開き、情報を追跡します。ブロックをダブルクリックすると、もう1つのGUIが開きます。このGUIから情報追跡GUIに情報を送信したい。

したがって、私が検索したものから、情報追跡GUIでリスナーを使用することによってこれを達成できます。または、 setappdata / getappdataまたはfindall(0、...)を使用して、情報追跡GUIの変数を直接変更できます。

これまでのところ、私の試みはうまくいきませんでした。私は書き込みアプローチを取っているのだろうかと思っていました。誰かが私をある方向に向けることができますか?さらに情報を提供できるかどうか教えてください!

4

2 に答える 2

0

guidataguihandlesを使用することもできます。

GUI1へのハンドルがH1であると仮定します。GUI1で、後で取得できるデータを保存する場合は、次を使用します。

guidata(H1,data)

GUI2では、データが必要な場合は、次を使用します。

data = guidata(H1);

または、uicontrolオブジェクトのプロパティ「ユーザーデータ」にデータを保存することもできます。プロパティ「タグ」を有効なもの(「mybutton」など)に設定してください。GUI2からこれにアクセスするには、次を使用します。

handles = guihandles(H1);
data = get(handles.mybutton,'UserData');
于 2012-09-07T22:39:42.293 に答える
0

私はこの種のことのために常にsetappdata/getappdataメソッドを使用します。これがあなたがしていることの一般的な内訳です​​。フィギュアを作成するときは、次のようなタグを付けてください。

figure( ..., 'Tag', 'info_gui', ... ); % tag name is up to you
figure( ..., 'Tag', 'other_gui', ... ); % tag name is up to you

1つまたは他の図のハンドルが必要なときはいつでも、このようにfindobjを呼び出すだけです。

info_gui_handle = findobj('tag','info_gui');
other_gui_handle = findobj('tag','other_gui');

さて、後で更新するinfo_guiにいくつかのサンプルデータを保存しましょう

info_gui_data.x = 1;
info_gui_data.y = 1;
setappdata( info_gui_handle, 'info_gui_data', info_gui_data);

フィギュアを設定したら、次のようなことができます。

% First you get a handle to the info gui figure

info_gui_handle = findobj('tag','info_gui');

% Next you get the appdata thats stored in this figure.  In this example
% I have previously stored a struct variable called 
% 'info_gui_data' inside the appdata of the info_gui

info_gui_data = getappdata(info_gui_handle ,'info_gui_data');

% Make your changes whatever they are.  Here I am modifying variables x 
% and y that are stored in the struct info_gui_data

info_gui_data.x = 2;
info_gui_data.y = 2;

% Now that I've made changes to the local variable info_gui_data I can 
% now store it back into the info gui's appdata.

setappdata(info_gui_handle ,'info_gui_data',info_gui_data);

すべてのFigureappdataを1つの巨大な構造体に格納するのが好きです。追跡するのは簡単なようですが、それはあなた次第です。お役に立てれば :)

于 2012-07-23T23:29:56.143 に答える