How to Create RT clock in my own GUI?

2 visualizaciones (últimos 30 días)
Mark Golberg
Mark Golberg el 26 de Jun. de 2017
Comentada: Mark Golberg el 27 de Jun. de 2017
Hello,
I have the following code (it's upon GUI creation):
set(handles.time_caption,'String',datestr(now,13))
tmr = timer('Name','Reminder', ...
'Period',1, ... % Update the time every 1 seconds.
'StartDelay',0, ... % In seconds.
'TasksToExecute',inf, ... % number of times to update
'ExecutionMode','fixedSpacing', ...
'TimerFcn',{@updater_mg});
start(tmr); % Start the timer object.
function [] = updater_mg(varargin)
set(handles.time_caption , 'string' , datestr(now,13))
end
I receive the following error:
Error while evaluating TimerFcn for timer 'Reminder'
Undefined variable "handles" or class "handles.time_caption".
I understand that when I'm "inside" the updater_mg function it doesn't recognize my handles struct from a layer above.
How can I overcome this?

Respuesta aceptada

Jan
Jan el 26 de Jun. de 2017
Editada: Jan el 26 de Jun. de 2017
If handles is unknown in the callback, provide it as input:
set(handles.time_caption,'String',datestr(now,13))
tmr = timer('Name','Reminder', ...
'Period',1, ... % Update the time every 1 seconds.
'StartDelay',0, ... % In seconds.
'TasksToExecute',inf, ... % number of times to update
'ExecutionMode','fixedSpacing', ...
'TimerFcn',{@updater_mg, handles}); % <== HERE
function updater_mg(TimerH, EventData, handles) % <== AND HERE
set(handles.time_caption , 'string' , datestr(now,13));
end
Add a security check:
function updater_mg(TimerH, EventData, handles) % <== AND HERE
if ishandle(handles.time_caption)
set(handles.time_caption , 'string' , datestr(now,13));
else
disp('Timer for clock stopped: GUI was closed');
stop(TimerH);
end
end
  4 comentarios
Jan
Jan el 27 de Jun. de 2017
Search in the documentation of Matlab for the term "callback":
docsearch callback
There you find the description, that all callbacks get two default inputs: The handle of the affected object and a description of the event. Therefore definining the callback with 1 output means, that it is called with 3 inputs. For 'TimerFcn', @updater_mg the callback would get 2 inputs.
Mark Golberg
Mark Golberg el 27 de Jun. de 2017
Great, Thanks again.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Scope Variables and Generate Names en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by