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 и данные о событиях задайте это свойство как массив ячеек, содержащий указатель на функцию и дополнительные аргументы.

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

'ExecutionMode'

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

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

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

'singleShot'

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

'fixedRate'

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

'fixedDelay'

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

'fixedSpacing'

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

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

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

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

'Name'

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

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

'ObjectVisibility'

Вектор символов или строковый скаляр с возможными значениями 'on' или 'off', что предоставляет вам способ препятствовать доступу конечного пользователя к объектам-таймерам, созданным вашим приложением. The 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 и данные о событиях задайте это свойство как массив ячеек, содержащий указатель на функцию и дополнительные аргументы.

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

'StopFcn'

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

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

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

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

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

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

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

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

  • Возникает ошибка. The ErrorFcn сначала вызывается коллбэк, затем StopFcn коллбэк.

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

'Tag'

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

'TasksToExecute'

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

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

'TimerFcn'

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

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

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

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

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

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

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

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