Angenommen, wir haben eine Callback-Funktion call_time (obj, event). Ich möchte die verstrichene Zeit (delt_time) während der Ausführung der Timer-Funktion wissen, sobald sie gestartet ist. Außerdem möchte ich diese verstrichene Zeit verwenden, um zu entscheiden, ob die Funktion fortgesetzt ausgeführt oder beendet werden soll (zB delt_time> 60s). Ich möchte, dass die Timer-Funktion die Laufzeit gleichzeitig ermittelt. Auf diese Weise weiß der Code, wann er das Programm beenden soll, sobald es den Schwellenwert erreicht. Tatsächlich habe ich ein paar ähnliche Fragen auf der Grundlage verschiedener Wege gestellt, die ich versucht habe. Aber noch keine Antworten.Gibt es eine Möglichkeit, die abgelaufene Zeit in der Timer-Funktion mit Matlab zu subtrahieren/summieren?
Jetzt habe ich versucht,
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
Aber es funktioniert nicht work.Below ist, wie ich die Timer-Funktion aufrufen.
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);
Ich habe auch versucht, wie Tom vorgeschlagen. Aber nicht so gut.
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
Wenn 'event_time' nicht in Ihrer while-Schleife geändert wird, stecken Sie wahrscheinlich in einer unendlichen while-Schleife fest. – Tom
Aktualisiert, aber nicht funktioniert – Orangeblue