MATLAB timer - eiichiromomma/CVMLAB GitHub Wiki

(MATLAB) timer object

一定間隔で処理を繰り返す

Mathworksのリファレンスは分かりにくいのでメモ。

使い方

概要

t = timer(設定)
start(t)

の形式になる。

設定項目

設定する項目の主なものは以下の通り

  • TimerFcn: 繰り返す処理。@+コールバック関数名と書く。引数を与える場合は {@コールバック関数名, 引数}とする。
  • TasksToExecute: TimerFcnを繰り返す回数。リファレンスだとTasksExecutedとゴッチャになってる。
  • ExecutionMode: 定期的に繰り返す場合はfixedDelay。
  • Period: 繰り返す間隔で0.001秒以上。

コールバック関数

必ず引数を2つ入れる。最初のはオブジェクトそのもの(ここではtimerオブジェクトになる)、2つ目はイベントになる。処理自体に何らかの引数を与えたい場合は3つ目以降に記す。

カウント

コールバック中のカウントはtimerオブジェクトのTasksExecutedを使う。

例:引数無しの場合

以下をmyCallback.mとしてパスの通ったフォルダに保存

function myCallback(obj, event)
datestr(now, 'HH:MM:SS.FFF')
disp(obj.TasksExecuted)

コマンドウィンドウ上で、上記コールバックを2.3秒間隔で実行する

t=timer('Period', 2.3,'TasksToExecute',10, 'TimerFcn', @myCallback, 'ExecutionMode', 'fixedDelay')

例:引数ありの場合

上の例と同様にmyCallback2.mとして保存

function myCallback2(obj, event, arg1)
disp(arg1)
datestr(now, 'HH:MM:SS.FFF')
disp(obj.TasksExecuted)

コマンドウィンドウ上で、同じく2.3秒間隔で実行

t=timer('Period', 2.3,'TasksToExecute',10, 'TimerFcn', {@myCallback2, 'Test'}, 'ExecutionMode', 'fixedDelay')