Скажем, у нас есть функция таймера обратного вызова call_time (obj, event). Я хочу узнать прошедшее время (delt_time) во время выполнения функции таймера после его запуска. Кроме того, я хочу использовать это прошедшее время, чтобы решить, будет ли функция продолжена, выполняться или заканчиваться (например, delt_time> 60s). Я хочу, чтобы функция таймера определяла время работы одновременно. Таким образом, код знает, когда прекращать программу, когда она достигает порога. На самом деле, я задал пару подобных вопросов на основе разных способов, которые я пробовал. Но ответов пока нет.Есть ли способ вычесть/суммировать прошедшее время в функции таймера с помощью Matlab?
Теперь я попытался
function call_time(obj, event)
event_time = event.Data.time;
event_time = event.Data.time - event_time;
while event_time < 60
%execute commands
end
if event_time > 60
%terminate execution
end
end
Но это не work.Below как я вызываю функцию таймера.
TimerHandle = timer;
TimerHandle.StartFcn = @(~,thisEvent)disp([thisEvent.Type ' executed '...
datestr(thisEvent.Data.time,'dd-mmm-yyyy HH:MM:SS.FFF')]);
TimerHandle.TimerFcn = @call_time;
TimerHandle.StopFcn = @TimerCleanup;
TimerHandle.period = 10;
TimerHandle.ExecutionMode = 'fixedRate';
start(TimerHandle);
Я также пробовал, как предложил Том. Но не работает.
function call_time(obj, event)
event_time = event.Data.time;
delta_time = event.Data.time - event_time;
while delta_time < 60
%execute commands
delta_time = event.Data.time - event_time;
fprintf('Elapsed %.2f sec\n', delta_time);
end
if delta_time > 60
%terminate execution
end
end
Если 'event_time' не изменяется в вашем цикле while, вы, вероятно, застреваете в бесконечном цикле. – Tom
Обновлено, но не работает – Orangeblue