Borrar filtros
Borrar filtros

Matlab simulink access to gui handle in listener

1 visualización (últimos 30 días)
Adrien
Adrien el 13 de En. de 2012
Comentada: Ram Kripal Singh el 2 de En. de 2016
Hello,
I have a problem with my gui program which pilot a simulink model.
On my Gui program (made with GUIDE) I have an add_exec_event_listener function that link a simulink block (Scope) with a Gui function.
In the Gui function, I want to collect the input value of the scope block (That works well) and save it in my Gui handle. But I can't have access to the Gui handle. Even if I use
hf = findall(0,'tag',mfilename)
guidata(hf);
In Matlab command line I have this error :
hf =
Empty matrix: 0-by-1
??? Error using ==> guidata at 89
H must be the handle to a figure or figure descendent.
Error in ==> IM20_Starter>localEventListener at 362
ad = guidata(hf)
Thank for your help and excuse my limited English
  1 comentario
Eyad
Eyad el 2 de Sept. de 2012
Hi I'm trying to make a GUI to control a model on a RTW ,I made the GUI with GUIDE and set the strartfcn of the model to "localAddEventListener" , the model and GUI works perfectly on simulation but when I build it on XPC target box and try to press connect it gives me an error saying that it can't find the function .I removed the function "localAddEventListener" from the callback of the model's startfcn and added it through the GUI after building and connecting the model to the XPC ,the simulation worked perfectly , but when i tried to run it on the XPC it didn't show an error but no data was displayed , as you said the event listeners probably weren't invoked on the XPC, what do you think caused that ? and how do I solve it ?

Iniciar sesión para comentar.

Respuesta aceptada

Titus Edelhofer
Titus Edelhofer el 13 de En. de 2012
Hi,
if the GUI is programmed with GUIDE, you should be able to collect the handles by just calling the gui again. If your gui is called mygui, you should be able to get the handles by
hFigure = mygui();
handles = guidata(hFigure);
Titus
  2 comentarios
Adrien
Adrien el 13 de En. de 2012
Thank you very much
it works very very well.
I didn't know that the name of my Gui return object handle
Thank
Titus Edelhofer
Titus Edelhofer el 13 de En. de 2012
Your welcome. If you like you might mark the question as "answered" ...

Iniciar sesión para comentar.

Más respuestas (1)

Adrien
Adrien el 13 de En. de 2012
I have an answer but it's not a realy clean way. I use a Global variable for my handle. In my function AddEventListener, I declare my Handle in Global like:
global ad;
% get the application data
ad = guidata(gcbo);
Then in my Even Listener function:
global ad; // put ad in global to re-use it
  1 comentario
Ram Kripal Singh
Ram Kripal Singh el 2 de En. de 2016
The Answer by Adrien is better as it is faster and more efficient.

Iniciar sesión para comentar.

Categorías

Más información sobre Event Functions en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by