Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

timerfind

クラス: timer

timer オブジェクトの検索

説明

out = timerfind表示状態の timer オブジェクトを検索し、配列 out を返します。

out = timerfind(Name,Value) は、プロパティ値が Name,Value のペアの引数として渡された値と一致する表示状態の timer オブジェクトを検索し、配列 out を返します。

out = timerfind(t,Name,Value) は、Name,Value のペアの引数を t にリストされている timer オブジェクトに一致させ (ここで、t は timer オブジェクトの配列)、配列 out を返します。

out = timerfind(S) は、構造体 S で定義されたプロパティ値と一致し、配列 out を返します。S のフィールド名は、timer オブジェクトのプロパティ名であり、フィールド値はその対応するプロパティ値です。

入力引数

t

クラス timer のオブジェクトの配列。

S

timer オブジェクト プロパティ名に対応するフィールド名をもつ構造体。フィールド値は、対応するプロパティ値です。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

BusyMode

TimerFcn の前の実行が完了する前に、タイマーが TimerFcn を実行しなければならない場合に行う操作を示す文字ベクトルまたは string スカラー。Running='on' の場合、BusyMode は読み取り専用です。次の表は、ビジー モードをまとめたものです。

BusyMode の値

キューが空の場合の動作

キューが空でない場合の動作

メモ:

'drop'

キューにタスクを追加

タスクを無視

場合によって、TimerFcn 呼び出しをスキップ

'error'

キューにタスクを追加

タスクを完了。ErrorFcn で指定されたエラーをスロー。タイマーを停止

実行キュー内のタスクを実行した後、タイマーを停止

'queue'

キューにタスクを追加

キューが空になるまで待機してから、キューにタスクを格納

実行キューのタスクを管理するように、Period プロパティを調整

詳細については、タイマー キューの競合への対処を参照してください。

既定値: 'drop'

ErrorFcn

エラーの発生時にタイマーが実行する関数を定義する文字ベクトル、string スカラー、関数ハンドル、または cell 配列。エラーが発生すると、この関数が実行され、StopFcn が呼び出されます。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB® は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

ExecutionMode

timer オブジェクトがタイマー イベントのスケジュールを設定する方法を指定する文字ベクトルまたは string スカラー。Running='on' の場合、ExecutionMode は読み取り専用です。次の表は、実行モードをまとめたものです。

実行モード

Period 時間の開始点

'singleShot'

このモードでは、タイマー コールバック関数は一度だけ実行されます。このため、Period プロパティは効果がありません。これは、既定の実行モードです。

'fixedRate'

タイマー コールバック関数を MATLAB 実行キューに追加した直後に開始します。

'fixedDelay'

MATLAB 実行キューの遅延に起因するタイム ラグ後、タイマー関数コールバックの実行が再開された後に開始します。

'fixedSpacing'

タイマー コールバック関数の実行が終了すると開始します。

  • 'singleShot' は、timer クラスに対する単一実行モードで、既定の値です。

  • 'fixedDelay''fixedRate' および 'fixedSpacing' は、サポートされている 3 つのマルチ実行モードです。これらのモードは、Period プロパティの開始点を定義します。Period プロパティは、実行間の時間間隔 (実行間隔は同じ) を指定します。実行が始まる時点のみ異なります。

既定値: 'singleShot'

Name

timer の名前を表す文字ベクトルまたは string スカラー。

既定値: 'timer-i'。ここで i はこのセッションで作成された i 番目の Timer オブジェクトを示す番号です。i を 1 にリセットするには、clear classes コマンドを実行します。

ObjectVisibility

'on' または 'off' の値を取り得る文字ベクトルまたは string スカラー。アプリケーションによって作成された timer オブジェクトにエンド ユーザーが簡単にアクセスできないようにする方法を提供します。関数 timerfind は、ObjectVisibility プロパティが 'off' に設定されているオブジェクトを返しません。オブジェクトは、表示されませんが有効です。表示されないものも含めて、メモリ内にあるすべての timer オブジェクトのリストを抽出するには、関数 timerfindall を使用します。

既定値: 'on'

Period

TimerFcn の実行間の遅延を秒単位で設定する 0.001 より大きい数値。タイマーで Period を使用するには、複数の timer オブジェクトのコールバック イベントのスケジュールを設定するように、ExecutionModeTasksToExecute を設定しなければなりません。

既定値: 1.0

StartDelay

タイマーの開始から TimerFcn で指定された関数の最初の実行までの遅延を秒単位で指定する 0 以上の数値。Running = 'on' の場合、StartDelay は読み取り専用です。

既定値: 0

StartFcn

タイマーの開始時に実行される関数を定義する文字ベクトル、string スカラー、関数ハンドル、または cell 配列。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

StopFcn

タイマーの停止時に実行される関数を定義する文字ベクトル、string スカラー、関数ハンドル、または cell 配列。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

タイマーは、以下の状態のときに停止します。

  • タイマーの stop メソッドを呼び出した場合。

  • タイマーが TimerFcn の実行を終了した場合。つまり、TasksExecuted 値が TasksToExecute によって設定された制限に達した場合。

  • エラーが発生します。ErrorFcn コールバックが最初に呼び出され、その後に StopFcn コールバックが呼び出されます。

StopFcn を使用して、メモリからの timer オブジェクトの削除などのクリーンアップ操作を定義できます。

Tag

オブジェクトのラベルを表す文字ベクトルまたは string スカラー。

TasksToExecute

0 より大きい数値。timer オブジェクトが実行する TimerFcn コールバックの回数を示します。TasksToExecute プロパティを使用して、実行回数を設定します。TasksToExecute を使用するには、複数のタイマー コールバック イベントのスケジュールを設定するように、ExecutionMode を設定しなければなりません。

既定値: Inf

TimerFcn

タイマー コールバック関数を定義する文字ベクトル、string スカラー、関数ハンドル、または cell 配列。タイマーを開始する前に、このプロパティを定義しなければなりません。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

UserData

オブジェクトに追加するデータ用の汎用フィールド。

読み取り専用の名前と値のペアの引数

AveragePeriod

タイマー開始後の TimerFcn の平均実行間隔 (秒単位)。タイマーが 2回、タイマー コールバックを実行するまで、値は NaN です。

InstantPeriod

TimerFcn の最新 2 回の実行の間隔 (秒単位)。タイマーが 2回、タイマー コールバックを実行するまで、値は NaN です。

Running

'off' または 'on' として定義される文字ベクトル。タイマーが現在コールバック関数を実行中かどうかを示します。

TasksExecuted

タイマーが開始してから、タイマーが TimerFcn を呼び出した回数。

Type

オブジェクト タイプを識別する文字ベクトル。

すべて展開する

複数の個別のタイマーとタイマーの配列を作成します。

t1 = timer('Tag','broadcastProgress','UserData','Monday');
t2 = timer('Tag','displayProgress','UserData','Monday');
timerArr = [timer('Tag','broadcastProgress','UserData','Tuesday');
    timer('Tag','displayProgress','UserData','Tuesday');
    timer('Tag','displayProgress','UserData','Wednesday');];

メモリ内のすべてのタイマーを検索します。

out1 = timerfind
out1=1×6 object
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       fixedSpacing    30       @(~,~)logStack()        timer-1
   2       singleShot      1        ''                      timer-2
   3       singleShot      1        ''                      timer-3
   4       singleShot      1        ''                      timer-4
   5       singleShot      1        ''                      timer-5
   6       singleShot      1        ''                      timer-6

メモリ内に存在し、Tag プロパティの値が 'displayProgress' のタイマーのみを検索します。

out2 = timerfind('Tag','displayProgress')
out2=1×3 object
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-3
   2       singleShot      1        ''                      timer-5
   3       singleShot      1        ''                      timer-6

タイマーの検索対象を timerArr 内にある Tag プロパティの値が 'displayProgress' の timer オブジェクトに制限します。

out3 = timerfind(timerArr,'Tag','displayProgress')
out3=2×1 object
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-5
   2       singleShot      1        ''                      timer-6

対象となる Tag および UserData プロパティを含む struct を定義します。

searchStruct = struct('Tag','broadcastProgress','UserData','Monday')
searchStruct = struct with fields:
         Tag: 'broadcastProgress'
    UserData: 'Monday'

検索条件として struct を使用して、メモリ内の timer オブジェクトを検索します。

out4 = timerfind(searchStruct)
out4 = 
   Timer Object: timer-2

   Timer Settings
      ExecutionMode: singleShot
             Period: 1
           BusyMode: drop
            Running: off

   Callbacks
           TimerFcn: ''
           ErrorFcn: ''
           StartFcn: ''
            StopFcn: ''

timer オブジェクトを削除します。

delete(t1)
delete(t2)
delete(timerArr)

タイマーの配列を作成して、メモリ内に既存のタイマーが存在することをシミュレートします。カスタム名が付けられた新しいタイマーを作成します。表示状態のすべてのタイマーを一覧表示します。

existingTimers = [timer timer timer];

myTimerName = 'myTimer';
anotherTimer = timer('Name',myTimerName);

timerfind
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-1
   2       singleShot      1        ''                      timer-2
   3       singleShot      1        ''                      timer-3
   4       singleShot      1        ''                      myTimer

指定されたタイマーを削除し、表示状態のすべてのタイマーを一覧表示します。

delete(timerfind('Name',myTimerName));
timerfind
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-1
   2       singleShot      1        ''                      timer-2
   3       singleShot      1        ''                      timer-3

表示状態のすべてのタイマーをメモリから削除します。

delete(timerfind)

timerfind を使用して、「失われた」timer オブジェクト参照を検索します。ワークスペースから timer オブジェクトをクリアすると参照は失われますが、メモリからは削除されません。

2 つの timer オブジェクトを作成します。コールバック関数は timer または event オブジェクトを必要としないため、チルダ (~) 演算子を使用して、関数ハンドルの入力を無視できます。

t1 = timer('TimerFcn',@(~,~)disp('Timer 1 Fired!'));
t2 = timer('TimerFcn',@(~,~)disp('Timer 2 Fired!'));
whos
  Name      Size            Bytes  Class    Attributes

  t1        1x1               104  timer              
  t2        1x1               104  timer   

ワークスペースから timer オブジェクトを 1 つをクリアします。メモリからタイマーを実際に削除するには、クリアと削除の両方を実行する必要があります。

clear t1
whos
  Name      Size            Bytes  Class    Attributes

  t2        1x1               104  timer              

タイマー t1 の削除を試みます。

delete(t1)
Undefined function or variable 't1'.

参照がクリアされているため、削除操作を使用してメモリからタイマー t1 を削除することはできません。

メモリ内にある有効な timer オブジェクトを検索します。

out = timerfind
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        1x1 function_handle arraytimer-1
   2       singleShot      1        1x1 function_handle arraytimer-2

2 つのタイマーが見つかったため、ワークスペースにどちらのタイマーが存在しないかを判別します。

out ~= t2
ans =

     1     0

out の最初の timer オブジェクトは t2 と等しくありません。これは以前は t1 でした。これを t1 に再度割り当てます。このオブジェクトはまだ有効なため、タイマーを開始できます。

t1 = out(1);
start(t1)
Timer 1 Fired!

timer オブジェクトを削除します。timerfind は、メモリ内の timer オブジェクトにアクセスする方法を提供します。オブジェクトはコピーされないため、メモリから out を削除する必要はありません。検証には timerfind を使用します。

delete(t1)
delete(t2)
timerfind
ans =

     []

4 つの timer オブジェクトを作成します。

t1 = timer('TimerFcn',@(~,~)disp('Timer 1 Fired!'));
t2 = timer('TimerFcn',@(~,~)disp('Timer 2 Fired!'));
t3 = timer('TimerFcn',@(~,~)disp('Timer 3 Fired!'));
t4 = timer('TimerFcn',@(~,~)disp('Timer 4 Fired!'));

ワークスペースから 2 つのタイマーをクリアします。

clear t2 t3

timerfinddelete に渡して、ワークスペース内に存在しているかどうかにかかわらず、メモリからすべての timer オブジェクトを削除します。

delete(timerfind)
timerfind
ans =

     []

詳細

すべて展開する

ヒント

  • timerfind表示状態の timer オブジェクト のみを検索します。表示状態の timer オブジェクトはメモリ内に存在し、ObjectVisibility プロパティが 'on' に設定されているオブジェクトです。非表示で有効なオブジェクトを検索するには、timerfindall を使用します。

R2006a より前に導入