【AppDesigner】timerで1mm/secで繰り返し処理を実行する
이전 댓글 표시
AppDesignerの画面上で、ボタンを押したら1mm/secごとに処理を実行しつづけるということをしたいと思っています。
こちらのページを見ながら👇
t = timer('TimerFcn',@(x,y)disp('Hello World!'),'StartDelay',5);
上記サンプルコードに倣って、画面に設置したボタンのコールバック内に、
押下2秒後、1mm/sec間隔で、5回処理繰り返しということで、
t = timer('TimerFcn',@(x,y)disp('Hello World!'),'StartDelay',2,'Period',0.001,'ExecutionMode','fixedRate','TasksToExecute',5);
start(t);
を記載して実施したら、コマンドウィンドウ上で5回「Hello World!」が出たのを確認できました。
動きはこれでいいのですが処理内容を色々変えたいので、直接ではなくプロパティ上に関数の内容を書こうと思って、以下のように書き直してみたのですが、
👇プロパティ・メソッド内
properties (Access = private)
ETimer % Timer object
end
methods (Access = private)
function ESpdFnc(app)
disp('Hello World!')
end
end
👇ボタン内
app.ETimer = timer('TimerFcn',"@ESpdFnc",'StartDelay',2,'Period',0.001,'ExecutionMode','fixedRate','TasksToExecute',5);
start(app.ETimer);
コマンドウィンドウでは「Hello World!」ではなく、
ans =
値をもつ function_handle:
@ESpdFnc
が5回出てきてうまくいかず、関数の定義の仕方がおかしいのかなとヘルプなど読みなおしたり、色々書き換えてみたのですがエラーが出るだけで理由がわかりませんでした。
直接ではなく、外部に関数処理内容を書く場合はどう書いたらよかったのでしょうか。
また直接指定している部分の、「@(x,y)disp('Hello World!')」の「@(x,y)」とはどういう意味なのかわからないので、関数ハンドルのところとかみたのですが分かりませんでした。どこかに説明ありますでしょうか。
もし分かる方がいらっしゃいましたらご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Downloads에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!