コールバックタイマー関数call_time(obj、event)があるとします。一度起動すると、タイマー機能の実行中の経過時間(delt_time)を知りたい。 さらに、その経過時間を使用して、関数が実行を継続するか、終了するかを決定したい(delt_time> 60sなど)。私はタイマー機能を同時に実行時間を決定します。このようにすることで、コードはしきい値に達するといつプログラムを終了させるかを知ることができます。実際に、私は試したさまざまな方法に基づいて同様の質問をいくつか出しました。しかし、まだ答えはありません。MatlabでTimer関数の経過時間を減算/合計する方法はありますか?
は今、私は
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);
私もTomが提案した方法を試しました。しかし、うまくいきません。
あなたがtic
/
toc
を使用することができ、あなたはコールバックの入り口からの時間を追跡したいと仮定すると、
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
whileループで 'event_time'が変更されていない場合は、おそらく無限ループ中で止まっているでしょう。 – Tom
更新されましたが動作していません – Orangeblue