Clear Filters
Clear Filters

timer never stop!

2 views (last 30 days)
Kyungsun Ha
Kyungsun Ha on 14 Mar 2017
Edited: Jan on 14 Mar 2017
function timecount(~)
sec=input('얼마나 세야 하는거냐?');
t = timer('TimerFcn', 'stat=false; disp(''땡!'')','StartDelay',sec);
start(t)
stat=true;
b=sec;
a=0;
min=0;
hour=0;
while(stat==true)
b=b-1;
a=a+1;
if a>=60
a=a-60;
min=min+1;
end
if min>=60
min=min-60;
hour=hour+1;
end
if min==0
fprintf('%s초 \n', num2str(a));
elseif hour==0
fprintf('%s분 \n', num2str(min));
fprintf('%s초 \n', num2str(a));
else
fprintf('%s시간 \n', num2str(hour));
fprintf('%s분 \n', num2str(min));
fprintf('%s초 \n', num2str(a));
end
pause(1)
if sec == 0;
stop(t)
delete(t)
end
end
end
this is whole code of timer.. Input is second that you want to count(ex : 10sec).. when you input 10sec, this function will end after 10sec. but it's not stop and run infinity...

Accepted Answer

Jan
Jan on 14 Mar 2017
Edited: Jan on 14 Mar 2017
When you define the timer's callback as a string, it is evaluatred in the base workspace. Therefore you cannot observe changes in the variable |stat|inside the show function. Better use a flag which is "attached" to the timer, e.g. its UserData:
t = timer('TimerFcn', @myTimerCB, 'StartDelay', sec, 'UserData', 0);
start(t)
...
while get(t, 'UserData') == 0
...
end
...
function mytimerCB(TimerH, EventData)
set(TimerH, 'UserData', 1);
end

More Answers (0)

Categories

Find more on Desktop in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!