How do I start running timer?
3 次查看(过去 30 天)
显示 更早的评论
Hi
The default value for the timer's property 'running' os OFF.
When I determine its value to be 'on', like so:
T = timer('TimerFcn',@readimage,'running', 'on', 'Period', 2.0);
it gives me an error, syin that it's impossible:
*??? Error using ==> timer.timer>timer.timer at 117
Changing the 'Running' property of timer objects is not allowed.
Error in ==> timer_me at 10 T = timer('TimerFcn',@readimage,'running', 'on', 'Period', 2.0);
How do I start it?
thanks Matar
0 个评论
采纳的回答
Matt Fig
2011-6-11
Use the START function. I recommend you read the linked doc and look at other links on that page. For example, the STOP function, etc.
2 个评论
Image Analyst
2012-5-14
It's a little trickier than that. You have set up things correctly. See my code snippet below. It might help others even though you're all set.
更多回答(1 个)
Image Analyst
2012-5-14
Below is code from a GUI that has a button to create the timer and start the timer, a timer callback function that gets executed every 0.1 second, and a button to stop the timer.
% --- Executes on button press in btnBegin.
% Start timer
function btnBegin_Callback(hObject, eventdata, handles)
% hObject handle to btnBegin (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
try
% Get a list of all the timers that are running.
% timerObject (that I create later) will survive beyond this function,
% so if you run this function more than once,
% you will have multiple timers - they won't all be the same timer!
listOfTimers = timerfindall % List all timers.
numberOfTimers = length(listOfTimers);
% I KNOW I want ONLY ONE timer in my app.
% If there are others, (say from prior runs of this function),
% get rid of them all, so that only one remains.
if numberOfTimers > 0
delete(listOfTimers(:));
% Double check to make sure there are not any left.
listOfTimers = timerfindall % List all timers.
end
% Create a new timer object.
% The callback function that will be executed when the timer fires off
% will be called TimerCallBack() and it will take the GUIDE handles
% structure as an input argument.
fprintf('Creating timer object...\n');
timerObject = timer('TimerFcn', {@TimerCallBack, handles}, 'ExecutionMode', 'fixedSpacing', 'Period', 0.1);
% Save the timer object as a "global" variable that only our GUI can see.
setappdata(handles.figMainWindow, 'timerObj', timerObject);
fprintf('Starting timer object...\n');
% Timer does not automatically start.
% You have to manually start it with the start() function.
start(timerObject);
fprintf('Timer object should be running...\n');
catch ME
errorMessage = sprintf('Error in btnBegin_Callback().\nThe error reported by MATLAB is:\n\n%s', ME.message);
fprintf('%s\n', errorMessage);
uiwait(msgbox(errorMessage));
end
return; % from btnBegin_Callback
% This is the callback function that gets executed whenever the timer fires off.
% There are two internal, reserved input arguments hObject and eventdata
% but we don't care about those so replace them with tildes.
% handles is the GUIDE handles structure so we can do things like
% interact with controls, set text labels, display images,
% or whatever we want to do with the user interface.
function TimerCallBack(~, ~, handles)
try
fprintf('In TimerCallBack. The time = %s\n', datestr(now));
catch ME
errorMessage = sprintf('Error in TimerCallBack().\nThe error reported by MATLAB is:\n\n%s', ME.message);
fprintf('%s\n', errorMessage);
uiwait(msgbox(errorMessage));
end
return; % from TimerCallBack
% --- Executes on button press of btnStopTimer.
function btnStopTimer_Callback(hObject, eventdata, handles)
% hObject handle to btnStopTimer (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
try
fprintf('Entering btnStopTimer_Callback...\n');
listOfTimers = timerfindall % List all timers, just for info.
% Get handle to the one timer that we should have.
handleToTimer = getappdata(handles.figMainWindow, 'timerObj');
% Stop that timer.
stop(handleToTimer);
fprintf('Left btnStopTimer_Callback.\n');
catch ME
errorMessage = sprintf('Error in btnStopTimer_Callback().\nThe error reported by MATLAB is:\n\n%s', ME.message);
fprintf('%s\n', errorMessage);
uiwait(msgbox(errorMessage));
end
return; % from btnStopTimer_Callback
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Environment and Settings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!