Using timer, How can I cleanly exit a function execution, when the timer fires in MATLAB?
28 ビュー (過去 30 日間)
古いコメントを表示
My problem is that I can't find a Function to callback as a 'TimerFcn', that cleanly exits my function without errors.
t = timer('StartDelay',2,'TimerFcn', );
Thanks in advance.
2 件のコメント
Guillaume
2019 年 12 月 13 日
Can you explain more clearly what you're trying to do exactly, particularly, the order of execution of the various things you want to happen.
採用された回答
Walter Roberson
2019 年 12 月 13 日
編集済み: Walter Roberson
2019 年 12 月 21 日
There are only four ways in MATLAB to force a function to stop executing without its cooperation:
- quit MATLAB
- force an out-of-memory error
- force an infinite recursion
- Use jave robot or similar to simulate pressing control-C in the command line (note: this might not terminate immediately
There is no way to send a signal to a particular function to force that one function to stop, and there is no way to send a signal to a particular function to force that one function to error().
Therefore what you should do is write your timer to set a flag in an area that the other code checks periodically.
4 件のコメント
Walter Roberson
2021 年 3 月 3 日
I just tried in R2020b, and found that MATLAB:pmaxsize (too much memory) and MATLAB:lang:StackOverflow (too many levels of recursion) can both be caught. However, it would be worth testing out what happens when the problem is triggered in a callback that is not really part of the code being executed.
その他の回答 (1 件)
Sean de Wolski
2019 年 12 月 13 日
Why use a timer for this?
In the start of your function, start a tic
t = tic
Then periodically check
if toc(t)>2
return
end
参考
カテゴリ
Help Center および File Exchange で Startup and Shutdown についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!