timerfind

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

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

Синтаксис

out = timerfind
out = timerfind(Name,Value)
out = timerfind(t,Name,Value)
out = timerfind(S)

Описание

пример

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

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

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

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

'StopFcn'

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

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

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

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

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

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

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

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

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

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

'Tag'

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

'TasksToExecute'

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

Значение по умолчанию: Inf

'TimerFcn'

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

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

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

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

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

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

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

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