exponenta event banner

timerfind

Класс: таймер

Найти объект таймера

Описание

пример

out = timerfind находит видимые объекты таймера и возвращает массив, out.

пример

out = timerfind(Name,Value) находит видимые объекты таймера со значениями свойств, соответствующими переданным как Name,Value пара аргументов и возвращает массив, out.

пример

out = timerfind(t,Name,Value) матчи Name,Value связать аргументы с объектами таймера, перечисленными в t, где t может быть массивом объектов таймера и возвращает массив, out.

пример

out = timerfind(S) соответствует значениям свойств, определенным в структуре, Sи возвращает массив, out. Имена полей S являются именами свойств объекта таймера, а значения полей являются соответствующими значениями свойств.

Входные аргументы

t

Массив объектов класса timer

S

Структура с именами полей, соответствующими timer имена свойств объекта. Значения полей являются соответствующими значениями свойств.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

'BusyMode'

Вектор символов или строковый скаляр, указывающий действие, выполняемое при выполнении таймера TimerFcn до завершения предыдущего выполнения TimerFcn. Когда Running='on', BusyMode только для чтения. В этой таблице представлены режимы занятости.

BusyMode Ценности

Поведение, если очередь пуста

Поведение, если очередь не пуста

Примечания

'drop'

Добавление задачи в очередь

Удаление задачи

Возможно пропуск TimerFcn требования

'error'

Добавление задачи в очередь

Завершает задачу; выдает ошибку, указанную ErrorFcn; останавливает таймер

Останавливает таймер после завершения задачи в очереди выполнения

'queue'

Добавление задачи в очередь

Ожидает очистки очереди, а затем вводит задачу в очередь

Приспосабливается Period свойство для управления задачами в очереди выполнения

Дополнительные сведения см. в разделе Обработка конфликтов очередей таймеров.

По умолчанию: 'drop'

'ErrorFcn'

Символьный вектор, строковый скаляр, дескриптор функции или массив ячеек, определяющий функцию, выполняемую таймером при возникновении ошибки. При возникновении ошибки эта функция выполняется, а затем вызывает StopFcn.

  • Если это свойство задается с помощью вектора символов или скаляра строк, то при выполнении обратного вызова MATLAB ® вычисляет код MATLAB, содержащийся в векторе символов.

  • При указании этого свойства с помощью дескриптора функции, когда MATLAB выполняет обратный вызов, он передает timer объект и структуру события для функции обратного вызова. Структура события содержит тип события в Type поле и время события в Data поле.

  • Если функция обратного вызова принимает аргументы в дополнение к timer object и event data, укажите это свойство как массив ячеек, содержащий дескриптор функции и дополнительные аргументы.

Дополнительные сведения см. в разделе Функции обратного вызова по таймеру.

'ExecutionMode'

Вектор символов или строковый скаляр, определяющий способ timer объект планирует события таймера. Когда Running='on', ExecutionMode только для чтения. В этой таблице представлены режимы выполнения.

Режим выполнения

Время Period Начальная точка

'singleShot'

В этом режиме функция обратного вызова таймера выполняется только один раз. Следовательно, Period свойство не имеет эффекта. Это режим выполнения по умолчанию.

'fixedRate'

Запускается сразу после добавления функции обратного вызова таймера в очередь выполнения MATLAB

'fixedDelay'

Запускается, когда функция обратного вызова таймера перезапускает выполнение после задержки времени из-за задержек в очереди выполнения MATLAB

'fixedSpacing'

Запускается после завершения выполнения функции обратного вызова таймера.

  • 'singleShot' - режим одиночного выполнения для timer класс и является значением по умолчанию.

  • 'fixedDelay', 'fixedRate', и 'fixedSpacing' являются тремя поддерживаемыми режимами многократного выполнения. Эти режимы определяют начальную точку Period собственность. Period свойство указывает время между выполнением, которое остается неизменным. Отличается только точка, в которой начинается выполнение.

По умолчанию: 'singleShot'

'Name'

Вектор символа или строковый скаляр, представляющий timer имя.

По умолчанию: 'timer-i', где i - число, указывающее i«Объект таймера, созданный в этом сеансе». Перезагружать i в 1, выполните команду clear classes команда.

'ObjectVisibility'

Вектор символа или строковый скаляр с возможными значениями 'on' или 'off', что дает возможность запретить конечным пользователям доступ к созданным приложением объектам таймера. timerfind функция не возвращает объект, ObjectVisibility свойство имеет значение 'off'. Невидимые объекты остаются действительными. Чтобы получить список всех объектов таймера в памяти, включая невидимые, используйте timerfindall функция.

По умолчанию: 'on'

'Period'

Число больше 0,001, которое определяет задержку в секундах между выполнением TimerFcn. Для использования таймера Period, необходимо установить ExecutionMode и TasksToExecute для планирования событий обратного вызова нескольких объектов таймера.

По умолчанию: 1.0

'StartDelay'

Число, большее или равное 0, которое указывает задержку в секундах между запуском таймера и первым выполнением функции, указанной в TimerFcn. Когда Running = 'on', StartDelay только для чтения.

По умолчанию: 0

'StartFcn'

Символьный вектор, строковый скаляр, дескриптор функции или массив ячеек, определяющий функцию, выполняемую при запуске таймера.

  • Если это свойство задается с помощью вектора символов или скаляра строк, то при выполнении обратного вызова MATLAB вычисляет код MATLAB, содержащийся в векторе символов.

  • При указании этого свойства с помощью дескриптора функции, когда MATLAB выполняет обратный вызов, он передает timer объект и структуру события для функции обратного вызова. Структура события содержит тип события в Type поле и время события в Data поле.

  • Если функция обратного вызова принимает аргументы в дополнение к timer object и event data, укажите это свойство как массив ячеек, содержащий дескриптор функции и дополнительные аргументы.

Дополнительные сведения см. в разделе Функции обратного вызова по таймеру.

'StopFcn'

Символьный вектор, строковый скаляр, дескриптор функции или массив ячеек, определяющий функцию, выполняемую при остановке таймера.

  • Если это свойство задается с помощью вектора символов или скаляра строк, то при выполнении обратного вызова MATLAB вычисляет код MATLAB, содержащийся в векторе символов.

  • При указании этого свойства с помощью дескриптора функции, когда MATLAB выполняет обратный вызов, он передает timer объект и структуру события для функции обратного вызова. Структура события содержит тип события в Type поле и время события в Data поле.

  • Если функция обратного вызова принимает аргументы в дополнение к timer object и event data, укажите это свойство как массив ячеек, содержащий дескриптор функции и дополнительные аргументы.

Дополнительные сведения см. в разделе Функции обратного вызова по таймеру.

Таймер останавливается, когда

  • Вы вызываете таймер stop способ.

  • Таймер завершает выполнение TimerFcn. Другими словами, значение TasksExecuted достигает предела, установленного TasksToExecute.

  • Возникает ошибка. ErrorFcn обратный вызов вызывается первым, за которым следует StopFcn обратный вызов.

Вы можете использовать StopFcn для определения действий очистки, таких как удаление объекта таймера из памяти.

'Tag'

Вектор символов или строковый скаляр, представляющий метку для объекта.

'TasksToExecute'

Число больше 0, указывающее количество запусков объекта таймера TimerFcn обратный вызов. Используйте TasksToExecute для установки количества выполнений. Использовать TasksToExecute, необходимо установить ExecutionMode для планирования нескольких событий обратного вызова по таймеру.

По умолчанию: Inf

'TimerFcn'

Символьный вектор, строковый скаляр, дескриптор функции или массив ячеек, определяющий функцию обратного вызова таймера. Перед запуском таймера необходимо определить это свойство.

  • Если это свойство задается с помощью вектора символов или скаляра строк, то при выполнении обратного вызова MATLAB вычисляет код MATLAB, содержащийся в векторе символов.

  • При указании этого свойства с помощью дескриптора функции, когда MATLAB выполняет обратный вызов, он передает timer объект и структуру события для функции обратного вызова. Структура события содержит тип события в Type поле и время события в Data поле.

  • Если функция обратного вызова принимает аргументы в дополнение к timer object и event data, укажите это свойство как массив ячеек, содержащий дескриптор функции и дополнительные аргументы.

Дополнительные сведения см. в разделе Функции обратного вызова по таймеру.

'UserData'

Универсальное поле для данных, которые требуется добавить к объекту.

Аргументы пары имя-значение только для чтения

AveragePeriod

Среднее время в секундах между TimerFcn с момента запуска таймера. Значение равно NaN до тех пор, пока таймер не выполнит два обратных вызова таймера.

InstantPeriod

Время в секундах между двумя последними исполнениями TimerFcn. Значение равно 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'.

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

Определение struct содержащий Tag и UserData представляющие интерес свойства.

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

Используйте struct в качестве критерия поиска объектов таймера в памяти.

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

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

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

Удалите объекты таймера.

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 для поиска ссылок на объекты таймера «» lost «». Ссылки теряются при удалении объекта таймера из рабочей области, но не удаляются из памяти.

Создайте два объекта таймера. Поскольку функция обратного вызова не требует таймера или объекта события, можно использовать тильду (~), чтобы игнорировать входы в дескрипторе функции.

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   

Удалите один из объектов таймера из рабочей области. Чтобы фактически удалить таймер из памяти, необходимо как очистить его, так и удалить.

clear t1
whos
  Name      Size            Bytes  Class    Attributes

  t2        1x1               104  timer              

Попробуйте удалить таймер, t1.

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

Таймер, t1, не может быть удален из памяти с помощью удаления, так как его ссылка очищена.

Найти допустимые объекты таймера в памяти.

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

Так как найдены два таймера, определите, какой таймер не существует в рабочей области.

out ~= t2
ans =

     1     0

Первый объект таймера в out не равно t2. Это было ранее t1. Он переназначен t1. Поскольку он остается действительным, таймер может быть запущен.

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

Удаление объектов таймера. timerfind предоставляет способ доступа к объектам таймера в памяти. Он не копирует объекты; поэтому удалять не нужно out из памяти. Для проверки используйте timerfind.

delete(t1)
delete(t2)
timerfind
ans =

     []

Создайте четыре объекта таймера.

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!'));

Удаление двух таймеров из рабочей области.

clear t2 t3

Проход timerfind кому delete для удаления всех объектов таймера из памяти независимо от того, существуют ли они в рабочей области.

delete(timerfind)
timerfind
ans =

     []

Подробнее

развернуть все

Совет

  • timerfind находит только видимые объекты таймера. Видимые объекты таймера - это объекты, которые находятся в памяти и имеют ObjectVisibility свойство имеет значение 'on'. Чтобы найти скрытые, но все еще допустимые объекты, используйте timerfindall.

См. также

| |

Представлен до R2006a