callback function handle syntax inside objects?

1 visualizzazione (ultimi 30 giorni)
Sean
Sean il 12 Lug 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

Risposte (1)

Sean
Sean il 12 Lug 2012
Modificato: Sean il 12 Lug 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. :)

Categorie

Scopri di più su Environment and Settings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by