timer

Запланируйте выполнение команд MATLAB

Описание

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

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

Создание

Описание

пример

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

Таймер t имеет свойства, которые управляют его поведением. Доступ к свойству при помощи p = t.Property и измените одно использование t.Property = p. Сохранить и восстановить все свойства t, можно использовать A = get(t) и set(t,A), соответственно.

пример

t = timer(Name,Value) Задает дополнительные опции, которые используют один или несколько Name-Value аргументы.

Свойства

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

Свойства функции обратного вызова

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

  • Если вы задаете это свойство при помощи указателя на функцию, когда 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(~,~))

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

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

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

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

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

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

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

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

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

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

Пример: 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)

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

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

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

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

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

BusyMode свойство влияет на поведение только когда ExecutionMode свойство установлено в FixedRate. Для других значений ExecutionMode, там не может перекрывать попытки выполнить функцию обратного вызова таймера, потому что задержка между выполнением всегда относительно завершения предыдущего выполнения.

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 создал этот сеанс.

Пример: 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'.

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

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

Функции объекта

deleteУдалите файлы или объекты
getЗапросите свойства графического объекта
isvalidОпределите допустимые указатели
setУстановите свойства графического объекта
startЗапуск таймера
startatЗапланируйте таймер, чтобы стрелять в требуемое время
stopОстановка таймера
timerfindНайдите объекты - таймеры
timerfindallНайдите все объекты - таймеры
waitБлокируйте командную строку, пока таймер не прекратит запускаться

Примеры

свернуть все

Отобразите сообщение после задержки 3 секунд при помощи объекта - таймера.

Создайте timer объект. Задайте сообщение, чтобы отобразиться путем установки TimerFcn свойство. Задайте задержку 3 секунд путем установки StartDelay свойство к 3.

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

Запустите таймер.

start(t)

После трех секунд отображено сообщение.

3 seconds have elapsed

Отобразите дату и время, когда таймер запускается и снова 2 секунды спустя, когда таймер останавливается.

Отобразите дату и время, когда таймер запустится путем установки StartFcn свойство к функции обратного вызова. Первыми двумя аргументами к функции обратного вызова является timer возразите и структура события с Type и Data поля . Точно так же отобразите дату и время, когда таймер зайдет в установку StopFcn свойство.

t = timer;
t.StartFcn = @(~,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;
start(t)
StartFcn executed 14-Jan-2020 09:08:50.865
StopFcn executed 14-Jan-2020 09:08:52.869

Отобразите дату и время три раза во время выполнения с двухсекундной паузой между сообщениями. Задайте сообщение, чтобы отобразиться путем установки TimerFcn свойство. Затем укажите на число раз, чтобы отобразить сообщение и задержку между каждым сообщением при помощи TasksToExecute и Period свойства. ExecutionMode указывает, что таймер периода запускается когда TimerFcn называется.

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

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

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

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

function t = createErgoTimer()

t = timer;
t.StartFcn = @ergoTimerStart;
t.TimerFcn = @takeBreak;
t.StopFcn = @ergoTimerCleanup;

% 10 minutes between breaks + 30 second break
t.Period = 600+30;

% time till first break
t.StartDelay = t.Period-30; 

% Number of breaks during 8-hr period
t.TasksToExecute = ceil(8*60^2/t.Period);
t.ExecutionMode = 'fixedSpacing';
end 

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

function ergoTimerStart(mTimer,~)
disp("Starting Ergonomic Break Timer." + newline +...
"For the next 8 hours you will be notified " +...
"to take a 30 second break every 10 minutes.")
end

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

stop(t)
Stopping Ergonomic Break Timer.

Ограничения

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

  • Используя wait в таймере функции обратного вызова препятствуется.

Советы

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

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