timerfindall

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

Найдите объект-таймер, независимо от видимости

Описание

пример

out = timerfindall находит объекты-таймеры, существующие в памяти, независимо от видимости и возвращает массив, out. Используйте ObjectVisibility свойство, чтобы задать видимость объекта.

пример

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

пример

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

пример

out = timerfindall(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('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!'));

Установите таймеры t2 и t4 быть невидимым.

t2.ObjectVisibility = 'off';
t4.ObjectVisibility = 'off';

Очистить таймеры t1 и t2 из рабочей области.

clear t1 t2
whos
  Name      Size            Bytes  Class    Attributes

  t3        1x1               104  timer              
  t4        1x1               104  timer              

Найти все видимые таймеры в памяти.

timerfind
Timer Object Array

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

timerfind находит только таймеры t1 и t2, так как они видны. Значения таймера t2 все еще действителен и находится в памяти, хотя он был удален из рабочей области

Найти все таймеры в памяти.

timerfindall
Timer Object Array

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

timerfindall находит все четыре допустимых таймера в памяти, хотя t2 и t4 невидимы и t1 и t2 были удалены из рабочей области.

Удалите все таймеры из памяти.

delete(timerfindall)

Создайте несколько отдельных таймеров и массив таймеров.

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

Создайте таймер t1 и timerArr(2) невидимый.

t1.ObjectVisibility = 'off';
timerArr(2).ObjectVisibility = 'off';

Найти все таймеры в памяти используя timerfind.

out1 = timerfind
Timer Object Array

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

timerfind не находит скрытые таймеры.

Найти все таймеры в памяти используя timerfindall.

out2 = timerfindall
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        ''                      timer-4
   5       singleShot      1        ''                      timer-5

timerfindall находит все таймеры, даже невидимые таковые.

Найдите только те таймеры в памяти, которые имеют значение, 'displayProgress', как Tag свойство.

out3 = timerfindall('Tag','displayProgress')
Timer Object Array

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

Ограничьте поиск таймеров, которые имеют значение, 'displayProgress', как Tag свойство для объектов-таймеров в timerArr.

out4 = timerfindall(timerArr,'Tag','displayProgress')
Timer Object Array

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

Задайте struct содержащий Tag и UserData интересующие свойства.

searchStruct = struct('Tag','broadcastProgress','UserData','Monday')
searchStruct = 

         Tag: 'broadcastProgress'
    UserData: 'Monday'

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

out5 = timerfindall(searchStruct)
   Timer Object: timer-1

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

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

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

delete(timerfindall)

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

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

Установите таймеры t2 и t4 быть невидимым и очищать таймеры t1 и t2 из рабочей области.

t2.ObjectVisibility = 'off';
t4.ObjectVisibility = 'off';
clear t1 t2; 
whos
  Name      Size            Bytes  Class    Attributes

  t3        1x1               104  timer              
  t4        1x1               104  timer              

Найти все допустимые невидимые таймеры.

out = timerfindall('ObjectVisibility','off')
Timer Object Array

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

Оба допустимых невидимых таймера найдены по timerfindall, независимо от того, находились ли они в рабочей области.

Совет

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

См. также

| |

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