timer class

Создайте объект запланировать выполнение команд MATLAB

Описание

Используйте timer возразите, чтобы запланировать выполнение команд MATLAB® один или многократно. Если вы планируете таймер, чтобы выполниться многократно, можно задать время между выполнением и как обработать конфликты постановки в очередь.

timer возразите использует функции обратного вызова, чтобы выполнить команды. Функции обратного вызова выполняют код во время некоторого события. Для timer объект, можно задать функцию обратного вызова как указатель на функцию или как вектор символов. Если функция обратного вызова является вектором символов, MATLAB выполняет ее как исполняемый код. Объект - таймер поддерживает функции обратного вызова, когда таймер запускается (StartFcn), выполняется (TimerFcn), остановки (StopFcn), или обнаружение ошибка (ErrorFcn).

Примечание

timer объект подвергается ограничениям вашего оборудования, операционной системы и программного обеспечения. Избегайте использования объектов - таймеров для приложений реального времени.

Конструкция

t = timer создает пустой timer возразите, чтобы запланировать выполнение команд MATLAB. Ошибка происходит, если таймер запускается и TimerFcn не задан.

t = timer(Name,Value) создает timer объект с дополнительными опциями, что вы задаете использование одного или нескольких Name,Value парные аргументы.

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

Аргументы в виде пар имя-значение

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

Имя аргумента, Name, соответствует timer propertyName . В конструкторе значения свойств заданы с помощью Name,Value парные аргументы.

'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 'callback'.

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

'Tag'

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

'TasksToExecute'

Номер, больше, чем 0, указывая на число раз объект - таймер, должен выполнить TimerFcn 'callback'. Используйте 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

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

Методы

удалениеУдалите объект - таймер из памяти
получениеЗапросите значения свойств для объекта - таймера
isvalidОпределите валидность объекта - таймера
наборУстановите значения свойств для объекта - таймера
запускЗапустите объект - таймер
startatЗапланируйте таймер, чтобы стрелять в требуемое время
остановкаОстановите объект - таймер
timerfindНайдите объект - таймер
timerfindallНайдите объект - таймер, независимо от видимости
ожидатьБлокируйте командную строку, пока таймер не прекратит запускаться

Примеры

свернуть все

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

Ожидайте 3 секунды, и затем отображаются, сообщение ‘3 секунды протекли’.

t = timer;
t.StartDelay = 3;
t.TimerFcn = @(myTimerObj, thisEvent)disp('3 seconds have elapsed');
start(t)
3 seconds have elapsed

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

t.TimerFcn = @(~,~) disp('3 seconds have elapsed');
start(t)
3 seconds have elapsed

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

delete(t)

Отобразите событие и дату/время выход, когда таймер запустится, огни и остановки. Функция обратного вызова таймера будет выполняться 3 раза с 2 секундами между вызовами. Первые два аргумента передачи функции обратного вызова являются указателем на объект - таймер и структуру события. Структура события содержит два поля: Type вектор символов, который идентифицирует тип события, которое вызвало коллбэк и Data структура, которая содержит временной вектор даты того, когда событие имело место.

t = timer;
t.StartFcn = @(~,thisEvent)disp([thisEvent.Type ' executed '...
    datestr(thisEvent.Data.time,'dd-mmm-yyyy HH:MM:SS.FFF')]);
t.TimerFcn = @(~,thisEvent)disp([thisEvent.Type ' executed '...
     datestr(thisEvent.Data.time,'dd-mmm-yyyy HH:MM:SS.FFF')]);
t.StopFcn = @(~,thisEvent)disp([thisEvent.Type ' executed '...
    datestr(thisEvent.Data.time,'dd-mmm-yyyy HH:MM:SS.FFF')]);
t.Period = 2;
t.TasksToExecute = 3;
t.ExecutionMode = 'fixedRate';
start(t)
StartFcn executed 14-Mar-2013 09:08:50.865
TimerFcn executed 14-Mar-2013 09:08:50.865
TimerFcn executed 14-Mar-2013 09:08:52.865
TimerFcn executed 14-Mar-2013 09:08:54.866
StopFcn executed 14-Mar-2013 09:08:54.869

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

delete(t)

Создайте объект - таймер напомнить себе делать 30-секундные эргономические перерывы каждые 10 минут в течение 8 часов.

Создайте функцию в файле с именем createErgoTimer.m это возвращает объект - таймер. Имейте этот файл, включают три локальных функции, чтобы обработать таймер, запускаются, выполняются, и задачи остановки.

function t = createErgoTimer()
secondsBreak = 30;
secondsBreakInterval = 600;
secondsPerHour = 60^2;
secondsWorkTime = 8*secondsPerHour;

t = timer;
t.UserData = secondsBreak;
t.StartFcn = @ergoTimerStart;
t.TimerFcn = @takeBreak;
t.StopFcn = @ergoTimerCleanup;
t.Period = secondsBreakInterval+secondsBreak;
t.StartDelay = t.Period-secondsBreak;
t.TasksToExecute = ceil(secondsWorkTime/t.Period);
t.ExecutionMode = 'fixedSpacing';
end 

Используя StartDelay позволяет таймеру запускаться, не направляя вас, чтобы сразу сделать перерыв. Установите режим выполнения на 'fixedSpacing' так, чтобы 10 минуты и 30 секунды (t.Period) протекает после завершения TimerFcn выполнение. Это позволяет вам простираться для 30 за секунды до запуска следующего 10 мелкий интервал.

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

function ergoTimerStart(mTimer,~)
secondsPerMinute = 60;
secondsPerHour = 60*secondsPerMinute;
str1 = 'Starting Ergonomic Break Timer.  ';
str2 = sprintf('For the next %d hours you will be notified',...
    round(mTimer.TasksToExecute*(mTimer.Period + ...
    mTimer.UserData)/secondsPerHour));
str3 = sprintf(' to take a %d second break every %d minutes.',...
    mTimer.UserData, (mTimer.Period - ...
    mTimer.UserData)/secondsPerMinute);
disp([str1 str2 str3])
end

Добавьте локальную функцию, чтобы справиться с задачами, сопоставленными с подписанием таймера. TimerFcn коллбэк должен сказать вам брать 30 второй пропуск.

function takeBreak(mTimer,~)
disp('Take a 30 second break.')
end

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

function ergoTimerCleanup(mTimer,~)
disp('Stopping Ergonomic Break Timer.')
delete(mTimer)
end

Удаление объекта - таймера удаляет его из памяти.

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

t = createErgoTimer;
start(t)
Starting Ergonomic Break Timer.  For the next 8 hours you will be notified to take a 30 second break every 10 minutes.

Каждый 10 минуты, вам напомнят взять 30 второй пропуск.

Take a break.

Можно оставить таймер, запускающийся для 8 часы или остановка это вручную. Вспомните, что вы включали задачу удаления таймера из памяти в StopFcn 'callback'.

stop(t)
Stopping Ergonomic Break Timer.

Советы

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

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