timerfindall

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

Описание

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

пример

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

пример

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

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

Примеры

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

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

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('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, независимо от того, были ли они в рабочей области.

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

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)

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

Создайте два объекта - таймера, который генерирует 100 случайных чисел и выполняется 1,000,000 раз. Задайте StopFcn коллбэк, который отображает сообщение 'Таймер, остановился'. Запустите таймеры и проверьте, что таймер запускается

t1 = timer('TimerFcn','rand(100,1);',...
    'ExecutionMode','fixedSpacing','TasksToExecute',1e6,...
    'StopFcn','disp(''Timer1 has stopped.'')');
t2 = timer('TimerFcn','rand(100,1);',...
    'ExecutionMode','fixedSpacing','TasksToExecute',1e6,...
    'StopFcn','disp(''Timer2 has stopped.'')');
start([t1 t2])

Очистите переменные таймера из рабочей области.

clear

Используйте timerfindall вручную остановить таймеры и проверить, что они больше не запускаются.

stop(timerfindall)
t1.Running
ans = 
'off'
t2.Running
ans = 
'off'

Удалите таймеры.

delete(timerfindall)

Входные параметры

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

Таймер, который будет найден в виде объекта - таймера или массива объектов - таймеров

Пример: out = timerfindall(t)

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

Пример: out = timerfindall(S)

Аргументы name-value

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

Пример: out = timerfind('BusyMode','drop')
Свойства функции обратного вызова

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

Функция обратного вызова таймера в виде вектора символов, строкового скаляра, указателя на функцию или массива ячеек. Необходимо задать это свойство, прежде чем можно будет запустить таймер. Чтобы обеспечить выполнение функций обратного вызова в конечном счете очередь, включайте вызов drawnow функционируйте в своем коде. drawnow функционируйте сбрасывает очередь событий.

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

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

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

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

Пример: t = timer('TimerFcn',"MyTimerFunction(Input);")

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

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

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

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

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

Пример: t = timer('StartFcn',@MyStartFunction(~,~))

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

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

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

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

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

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

  • Вы вызываете таймер stop метод.

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

  • Ошибка происходит. ErrorFcn коллбэк называется сначала, сопровождается StopFcn 'callback'.

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

Пример: t = timer('StopFcn',@MyStopFunction(~,~))

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

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

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

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

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

Пример: t = timer('ErrorFcn','disp("An error has occured")')

Синхронизация свойств

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

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

Пример: t = timer('Period',5)

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

Пример: t = timer('StartDelay',2)

Функция обратного вызова таймера времен выполняется в виде номера, больше, чем нуль. Используйте TasksToExecute свойство определить номер выполнения. Использовать TasksToExecute, необходимо установить ExecutionMode запланировать несколько событий коллбэка таймера.

Пример: t = timer('TasksToExecute',5)

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

BusyMode Значения

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

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

Примечания

'drop'

Добавьте задачу поставить в очередь

Пропустите задачу

Возможный пропуск TimerFcn вызовы

'error'

Добавьте задачу поставить в очередь

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

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

'queue'

Добавьте задачу поставить в очередь

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

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

См. Обработку конфликтов очереди таймера для получения дополнительной информации.

Пример: t = timer('BusyMode','error')

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

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

Время Period Стартовая точка

'singleShot'

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

'fixedRate'

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

'fixedDelay'

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

'fixedSpacing'

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

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

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

Пример: t = timer('ExecutionMode','fixedDelay')

Маркировка свойств

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

Имя таймера в виде вектора символов или строкового скаляра.

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

Пример: t = timer('Name','MyTimer')

Метка объектов в виде вектора символов или строкового скаляра.

Пример: t = timer('Tag','TimerTag')

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

Пример: t = timer('ObjectVisibility','off')

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

Пример: t = timer('UserData',"This is my first timer!")

Свойства только для чтения

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

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

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

Индикатор активного выполнения функций обратного вызова в виде 'off' или 'on'.

Таймер числа раз выполнился в виде числового скаляра.

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

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

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

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

Больше о

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

Смотрите также

| | | |

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