How to Create RT clock in my own GUI?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mark Golberg
am 26 Jun. 2017
Kommentiert: Mark Golberg
am 27 Jun. 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?
0 Kommentare
Akzeptierte Antwort
Jan
am 26 Jun. 2017
Bearbeitet: Jan
am 26 Jun. 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 Kommentare
Jan
am 27 Jun. 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Function Creation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!