Найдите объекты - таймеры
находит видимые объекты - таймеры и возвращает массив, out
= timerfindout
.
находит видимые объекты - таймеры, которые имеют значения свойств, совпадающие с переданными как out
= timerfind(Name,Value
)Name,Value
аргументы и возвращают массив out
Значение
может быть пустой массив. В этом случае, timerfind
находит таймеры, которые имеют пустые значения для свойства, заданного Name
.
соответствия out
= timerfind(t
,Name,Value
)Name,Value
парные аргументы к объектам - таймерам перечислены в t
, где t
может быть массив объектов - таймеров и возвращает массив, out
.
Создайте несколько отдельных таймеров и массив таймеров.
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)
Используйте timerfind
функционируйте, чтобы остановить несколько таймеров одновременно, даже когда переменные таймера были удалены из рабочей области.
Создайте два объекта - таймера, которые генерируют 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
Используйте timerfind
вручную остановить таймеры и проверить, что они больше не запускаются.
stop(timerfind) t1.Running
ans = 'off'
t2.Running
ans = 'off'
Удалите таймеры.
delete(timerfind)
Симулируйте имеющие существующие таймеры в памяти путем создания массива таймеров. Создайте таймер с пользовательским именем. Перечислите все видимые таймеры.
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 = []
t
— Объект - таймерТаймер, который будет найден в виде объекта - таймера или массива объектов - таймеров
Пример: out = timerfind(t)
S
имена полейСтруктура, которая имеет имена полей, соответствующие именам свойства таймера. Значения полей являются соответствующими значениями свойств.
Пример: out = timerfind(S)
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
out = timerfind('BusyMode','drop')
TimerFcn
— Функция обратного вызова таймераФункция обратного вызова таймера в виде вектора символов, строкового скаляра, указателя на функцию или массива ячеек. Необходимо задать это свойство, прежде чем можно будет запустить таймер. Чтобы обеспечить выполнение функций обратного вызова в конечном счете очередь, включайте вызов drawnow
функционируйте в своем коде. drawnow
функционируйте сбрасывает очередь событий.
Если вы задаете это свойство при помощи указателя на функцию, когда MATLAB® выполняет коллбэк, он передает timer
возразите и структура события против функции обратного вызова. Структура события содержит тип события в Type
поле и время события в Data
поле .
Если вы задаете это свойство при помощи вектора символов или строкового скаляра, когда MATLAB выполняет коллбэк, это оценивает код MATLAB, содержавшийся в векторе символов. При определении коллбэка, когда не рекомендуется вектор символов. Использование функции, заданной как указатель на функцию, позволяет MATLAB предоставить важную информацию вашей функции обратного вызова.
Если ваша функция обратного вызова принимает аргументы в дополнение к timer
данные объектов и данные о событиях, задайте это свойство как массив ячеек, содержащий указатель на функцию и дополнительные аргументы.
Для получения дополнительной информации смотрите Функции обратного вызова Таймера.
Пример: t = timer('TimerFcn',"MyTimerFunction(Input);")
StartFcn
— Таймер запускает функцию обратного вызоваТаймер запускает функцию обратного вызова в виде вектора символов, строкового скаляра, указателя на функцию или массива ячеек.
Если вы задаете это свойство при помощи указателя на функцию, когда MATLAB выполняет коллбэк, это передает timer
возразите и структура события против функции обратного вызова. Структура события содержит тип события в Type
поле и время события в Data
поле .
Если вы задаете это свойство при помощи вектора символов или строкового скаляра, когда MATLAB выполняет коллбэк, это оценивает код MATLAB, содержавшийся в векторе символов. При определении коллбэка, когда не рекомендуется вектор символов. Использование функции, заданной как указатель на функцию, позволяет MATLAB предоставить важную информацию вашей функции обратного вызова.
Если ваша функция обратного вызова принимает аргументы в дополнение к timer
данные объектов и данные о событиях, задайте это свойство как массив ячеек, содержащий указатель на функцию и дополнительные аргументы.
Для получения дополнительной информации смотрите Функции обратного вызова Таймера.
Пример: t = timer('StartFcn',@MyStartFunction(~,~))
StopFcn
— Функция обратного вызова остановки таймераФункция обратного вызова остановки таймера в виде вектора символов, строкового скаляра, указателя на функцию или массива ячеек.
Если вы задаете это свойство при помощи указателя на функцию, когда MATLAB выполняет коллбэк, это передает timer
возразите и структура события против функции обратного вызова. Структура события содержит тип события в Type
поле и время события в Data
поле .
Если вы задаете это свойство при помощи вектора символов или строкового скаляра, когда MATLAB выполняет коллбэк, это оценивает код MATLAB, содержавшийся в векторе символов. При определении коллбэка, когда не рекомендуется вектор символов. Использование функции, заданной как указатель на функцию, позволяет MATLAB предоставить важную информацию вашей функции обратного вызова.
Если ваша функция обратного вызова принимает аргументы в дополнение к timer
данные объектов и данные о событиях, задайте это свойство как массив ячеек, содержащий указатель на функцию и дополнительные аргументы.
Для получения дополнительной информации смотрите Функции обратного вызова Таймера.
Таймер останавливается когда:
Вы вызываете таймер stop
метод.
Таймер закончил выполнять TimerFcn
. Другими словами, значение TasksExecuted
достигает предела, установленного TasksToExecute
.
Ошибка происходит. ErrorFcn
коллбэк называется сначала, сопровождается StopFcn
'callback'.
Можно использовать StopFcn
задавать действия очистки, такие как удаление объекта - таймера из памяти.
Пример: t = timer('StopFcn',@MyStopFunction(~,~))
ErrorFcn
— Ошибочная функция обратного вызова таймераОшибочная функция обратного вызова таймера в виде вектора символов, строкового скаляра, указателя на функцию или массива ячеек. Если существует ошибка, эта функция выполняется, и затем вызывает StopFcn
.
Если вы задаете это свойство с помощью вектора символов или строкового скаляра, когда MATLAB выполняет коллбэк, это оценивает код MATLAB, содержавшийся в векторе символов.
Если вы задаете это свойство с помощью указателя на функцию, когда MATLAB выполняет коллбэк, это передает timer
возразите и структура события против функции обратного вызова. Структура события содержит тип события в Type
поле и время события в Data
поле .
Если ваша функция обратного вызова принимает аргументы в дополнение к timer
данные объектов и данные о событиях, задайте это свойство как массив ячеек, содержащий указатель на функцию и дополнительные аргументы.
Для получения дополнительной информации смотрите Функции обратного вызова Таймера.
Пример: t = timer('ErrorFcn','disp("An error has occured")')
Period
— Задержитесь между выполнениемЗадержитесь между выполнением, заданным, в секундах, как номер, больше, чем 0,001. Для таймера, чтобы использовать Period
, необходимо установить ExecutionMode
и TasksToExecute
запланировать несколько событий коллбэка объекта - таймера.
Пример: t = timer('Period',5)
StartDelay
— Задержитесь между запуском таймера и первым выполнениемЗадержитесь между запуском таймера и первым выполнением, заданным, в секундах, как номер, больше, чем или равный нулю. Когда Running = 'on'
, StartDelay
только для чтения.
Пример: t = timer('StartDelay',2)
TasksToExecute
— Функция обратного вызова таймера времен выполняетсяФункция обратного вызова таймера времен выполняется в виде номера, больше, чем нуль. Используйте TasksToExecute
свойство определить номер выполнения. Использовать TasksToExecute
, необходимо установить ExecutionMode
запланировать несколько событий коллбэка таймера.
Пример: t = timer('TasksToExecute',5)
BusyMode
— Организация очередей коллбэка таймерной функции'drop'
(значение по умолчанию) | 'error'
| 'queue'
Организация очередей коллбэка таймерной функции в виде одного из значений в таблице. Используйте это свойство задать меры, принятые, когда таймер должен будет выполнить TimerFcn
перед завершением предыдущего выполнения TimerFcn
. Когда Running
свойство установлено в 'on'
, BusyMode
свойство только для чтения.
| Поведение, если Пустая Очередь | Поведение, если Очередь, Не Пустая | Примечания |
---|---|---|---|
| Добавьте задачу поставить в очередь | Пропустите задачу | Возможный пропуск |
| Добавьте задачу поставить в очередь | Выполните задачу; выдайте ошибку, заданную | Таймер остановок после выполнения задачи в очереди выполнения |
| Добавьте задачу поставить в очередь | Ожидайте очереди, чтобы очистить, и затем ввести задачу в очередь | Настраивает |
См. Обработку конфликтов очереди таймера для получения дополнительной информации.
Пример: t = timer('BusyMode','error')
ExecutionMode
— Планирование коллбэка таймерной функции'singleShot'
(значение по умолчанию) | 'fixedRate'
| 'fixedDelay'
| 'fixedSpacing'
Планирование коллбэка таймерной функции в виде одного из значений в таблице. Когда Running='on'
, ExecutionMode
только для чтения. Эта таблица суммирует режимы выполнения.
Режим выполнения | Время |
---|---|
| Функция обратного вызова таймера только выполняется однажды. Поэтому |
| Запустите сразу после того, как функция обратного вызова таймера добавляется к очереди выполнения MATLAB |
| Запустите, когда коллбэк таймерной функции перезапустит выполнение после задержки из-за задержек очереди выполнения MATLAB. |
| Запустите, когда функция обратного вызова таймера закончит выполняться. |
'singleShot'
один режим выполнения для timer
класс, и является значением по умолчанию.
'fixedDelay'
, 'fixedRate'
, и 'fixedSpacing'
три поддерживаемых мультирежима выполнения. Эти режимы задают начальную точку Period
свойство. Period
свойство задает количество времени между выполнением, которое остается то же самое. Только точка, в которой начинается выполнение, отличается.
Пример: t = timer('ExecutionMode','fixedDelay')
Name
— Имя таймера'timer-i'
(значение по умолчанию) | вектор символов | строковый скалярИмя таймера в виде вектора символов или строкового скаляра.
Значения по умолчанию к 'timer-
i
'
, где i
номер, указывающий на i
объект - таймер th создал этот сеанс. Сбрасывать i
к 1, выполните clear classes
команда.
Пример: t = timer('Name','MyTimer')
Tag
— Метка объектовМетка объектов в виде вектора символов или строкового скаляра.
Пример: t = timer('Tag','TimerTag')
ObjectVisibility
ObjectVisibility'on'
(значение по умолчанию) | 'off'
Объектная видимость в виде 'on'
или 'off'
, так, чтобы можно было препятствовать доступу конечных пользователей к объектам - таймерам приложение создает. timerfind
функция не возвращает объект чей ObjectVisibility
свойство установлено в 'off'
. Объекты, которые не отображаются, все еще допустимы. Чтобы получить список всех объектов - таймеров в памяти, включая невидимые единицы, используют timerfindall
функция.
Пример: t = timer('ObjectVisibility','off')
UserData
— Поле для пользовательских данныхТиповое поле для данных, которые вы хотите добавить в объект.
Пример: t = timer('UserData',"This is my first timer!")
AveragePeriod
— Среднее время между выполнениемСреднее время между выполнением, заданным, в секундах, в виде числа. Значением является NaN
пока таймер не выполняет два коллбэка таймера.
InstantPeriod
— Время между последними двумя выполнениемNaN
(значение по умолчанию) | числовой скалярВремя между последними двумя выполнением, заданным, в секундах, в виде числа. Значением является NaN
пока таймер не выполняет два коллбэка таймера.
Running
— Индикатор активного выполнения функций обратного вызова'off'
| 'on'
Индикатор активного выполнения функций обратного вызова в виде 'off'
или 'on'
.
TasksExecuted
— Таймер числа раз выполнилсяТаймер числа раз выполнился в виде числового скаляра.
Type
— тип объекта'timer'
(значение по умолчанию)Вектор символов, который идентифицирует тип объекта.
out
— Найденные объекты - таймерыНайденные объекты - таймеры в виде массива объектов - таймеров.
Visible timer objects является объектами - таймерами, которые находятся в памяти и имеют ObjectVisibility
набор свойств к 'on'.
timerfind
находит только видимые объекты - таймеры. Видимые объекты - таймеры являются теми объектами, которые находятся в памяти и имеют ObjectVisibility
набор свойств к 'on'
. Найти объекты, которые скрыты, но все еще допустимые, timerfindall
использования.
timer
| delete
| get
| set
| timerfindall
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.