exponenta event banner

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 и 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('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