callback function handle syntax inside objects?

1 visualización (últimos 30 días)
Sean
Sean el 12 de Jul. de 2012
I have an object that generates a gui and controls some external equipment. I am trying to set things up so that a particular button press on the gui sends a particular command to the external equipment (without success). The command is sent using one of the object methods.
Example:
cg=CCUCGUI('10.0.1.1');
cg.navi('up');
The above code works, but my numerous attempts to create a callback inside the object contructor have failed miserably.
I have tried the following and more, but my understanding of callback function handle syntax is clearly insufficient to the task.
set(obj.guiobj.buttonup,'Callback','obj.navi(''up'');');
%Note the above executes, but 'obj' does not exist in main MATLAB workspace
set(obj.guiobj.buttonup,'Callback',@() obj.navi('up'));
set(obj.guiobj.buttonup,'Callback',{@() obj.navi('up')});
set(obj.guiobj.buttonup,'Callback',{@('up') obj.navi});
set(obj.guiobj.buttonup,'Callback'{@obj.navi,'up'});
tmp='up';set(obj.guiobj.buttonup,'Callback',@(tmp) obj.navi);
tmp='up';set(obj.guiobj.buttonup,'Callback',{@(tmp), obj.navi});
Any help would be appreciated, Thanks, Sean

Respuestas (1)

Sean
Sean el 12 de Jul. de 2012
Editada: Sean el 12 de Jul. de 2012
I have found a way to accomplish what I was trying to accomplish, although it isn't by using function handles. In case anyone else is trying to do something similar, here is the method I used:
1) Get the output object instance name as soon as the constructor starts running by:
cvh=cellstr(char(com.mathworks.mlservices.MLCommandHistoryServices.getSessionHistory));
objname=strtok(char(cvh(end)),'=');
clear cvh
2) Use the output object instance name in setting the callback:
set(obj.guiobj.buttonup,'Callback',strcat(objname,'.navi(''up'');'));
Since string based callback assignment executes in the base workspace, this directly simulates the equivalent command line action (and thus works).
If anyone can answer the question as asked (i.e. about function handles), I am still interested for future reference though. :)

Categorías

Más información sobre Environment and Settings en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by