Have time object start and stop at a specific time
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I have a timer object, tmr:
%%my_timer_test
tmr = timer ...
( 'Name' , 'my_timer' ...
, 'TimerFcn' , @(~,~) my_script ...
, 'BusyMode' , 'drop' ...
, 'ExecutionMode' , 'fixedDelay' ...
, 'Period' , 600 ...
, 'StartDelay' , 1 ...
);
and a script, my_script.m:
%%my_script
disp(datestr(now,31))
How can I modfify the timer, so that it starts at 0900, fires every 10 minutes (600 seconds), and stops firing at 1200?
Any help would be appreciated!
IP
2 Commenti
Risposta accettata
Rik
il 1 Dic 2022
You need to set the delay depending on the time that the timer object is created. The number of calls can be either calculated or set.
x = datetime("now");
StartDelay = seconds( datetime([year(x) month(x) day(x) 19 0 0])-x );
% You can also hard-code this to 19 if you prefer.
NumberOfCalls = numel(datetime([0 0 0,9 0 0]):duration(0,10,0):datetime([0 0 0,12 0 0]));
tmr = timer ...
( 'Name' , 'my_timer' ...
, 'TimerFcn' , @(~,~) my_script ...
, 'BusyMode' , 'drop' ...
, 'ExecutionMode' , 'fixedDelay' ...
, 'Period' , 600 ...
, 'TasksToExecute', NumberOfCalls ...
, 'StartDelay' , StartDelay ...
);
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Startup and Shutdown in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!