定时器类

创建对象的时间表执行MATLAB命令

描述

使用一个计时器目的调度MATLAB的执行®命令一次或多次。如果将计时器调度为多次执行,则可以定义执行之间的时间间隔以及如何处理队列冲突。

计时器对象使用回调函数执行命令。回调函数在某些事件期间执行代码。为计时器对象,你可以指定回调函数的函数柄或作为特征向量。如果回调函数是一个字符向量,MATLAB计算它的可执行代码。计时器对象支持回调功能的定时器启动万博1manbetx时(StartFcn),执行(TimerFcn),停止(StopFcn),或遇到错误(ErrorFcn)。

请注意

计时器对象是受硬件的操作系统的限制,以及软件。避免使用定时器对象的实时应用。

施工

t=计时器创建一个空计时器目的调度MATLAB命令的执行。如果计时器启动,则会发生错误TimerFcn没有定义。

t=计时器(名称,值)创建计时器对象,该对象具有使用一个或多个指定的附加选项名称,值对参数。

输入参数

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。名称参数名和是对应的值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数Name1, Value1,…,的家

参数名,名称,相当于计时器属性名。在构造函数中,使用以下命令指定属性值名称,值对参数。

“BusyMode”

指示在必须执行计时器时所采取的操作的字符向量或字符串标量TimerFcn在前一次执行完成之前TimerFcn。当运行=“上”,BusyMode为只读。此表总结了繁忙的模式。

BusyMode

队列为空时的行为

如果队列不是空的行为

笔记

“下降”

将任务添加到队列

滴任务

可能跳过TimerFcn调用

“错误”

将任务添加到队列

完成任务;指定的抛出错误。ErrorFcn;停止计时器

在执行队列中完成任务后停止计时器

'队列'

将任务添加到队列

队列等待清除,然后进入任务队列

调整属性来管理执行队列中的任务

看到处理定时器队列冲突为更多的信息。

默认值:“下降”

“ErrorFcn”

定义定时器在发生错误时执行的函数的字符向量、字符串标量、函数句柄或单元数组。如果有一个错误,这个函数执行,然后调用StopFcn

  • 如果你使用一个特征向量或字符串标量指定此属性,当MATLAB执行回调它计算包含在特征向量的MATLAB代码。

  • 如果使用指定的函数处理这个属性,当MATLAB执行回调它传递计时器对象和回调函数的事件结构。事件结构中包含事件的类型类型现场和事件的时间数据领域。

  • 如果回调函数除计时器对象和事件数据,将此属性指定为包含函数句柄和附加参数的单元格数组。

有关更多信息,请参见定时器回调函数

'ExecutionMode'

字符向量或字符串标量计时器对象调度计时器事件。当运行=“上”,ExecutionMode为只读。此表总结了执行模式。

执行模式

时间起点

'单发'

在这种模式下,定时器回调函数只执行一次。因此,财产没有影响。这是默认的执行模式。

“fixedRate”

计时器回调函数添加到MATLAB执行队列后立即开始

'FIXEDDELAY'

开始时的时间之后,定时器回调函数重新开始执行滞后由于在MATLAB执行队列延迟

'fixedSpacing'

计时器回调函数执行完毕时开始。

  • '单发'的单一执行模式计时器类,是默认值。

  • 'FIXEDDELAY',“fixedRate”'fixedSpacing'是三个支持multiexec万博1manbetxution模式。这些模式定义的起点财产。的属性指定的时间量执行之间,其保持不变。只有执行开始的点是不同的。

默认值:'单发'

“名字”

表示。的字符向量或字符串标量计时器的名字。

默认值:“timer-,在那里被指示的数这个timer对象创建了这个会话。重置执行清晰班命令。

“ObjectVisibility”

字符向量或字符串标量,可能的值为“上”要么“关闭”,提供了一个方法可以让你阻止最终用户访问Timer对象应用程序创建。的timerfind函数不返回一个对象,其ObjectVisibility属性设置为“关闭”。不可见的对象仍然是有效的。要检索内存中的所有计时器对象,包括那些看不见的列表,请使用timerfindall函数。

默认值:“上”

'期'

指定执行之间的延迟(以秒为单位)的大于0.001的数字TimerFcn。为使定时使用,你必须设置ExecutionModeTasksToExecute调度多个定时器对象回调事件。

默认值:1.0

'startDelay所占用的'

指定从计时器开始到中指定的函数的第一次执行之间的延迟(以秒为单位)的大于或等于0的数TimerFcn。当运行= '在',startDelay所占用的为只读。

默认值:0

'StartFcn'

定义定时器启动时执行的函数的字符向量、字符串标量、函数句柄或单元数组。

  • 如果你使用一个特征向量或字符串标量指定此属性,当MATLAB执行回调它计算包含在特征向量的MATLAB代码。

  • 如果使用指定的函数处理这个属性,当MATLAB执行回调它传递计时器对象和回调函数的事件结构。事件结构中包含事件的类型类型现场和事件的时间数据领域。

  • 如果回调函数除计时器对象和事件数据,将此属性指定为包含函数句柄和附加参数的单元格数组。

有关更多信息,请参见定时器回调函数

“StopFcn”

定义定时器停止时执行的函数的字符向量、字符串标量、函数句柄或单元数组。

  • 如果你使用一个特征向量或字符串标量指定此属性,当MATLAB执行回调它计算包含在特征向量的MATLAB代码。

  • 如果使用指定的函数处理这个属性,当MATLAB执行回调它传递计时器对象和回调函数的事件结构。事件结构中包含事件的类型类型现场和事件的时间数据领域。

  • 如果回调函数除计时器对象和事件数据,将此属性指定为包含函数句柄和附加参数的单元格数组。

有关更多信息,请参见定时器回调函数

计时器停止时

  • 你调用定时器停止方法。

  • 计时器执行完毕TimerFcn。换句话说,就是TasksExecuted达到由极限集TasksToExecute

  • 出现一个错误。的ErrorFcn先调用回调,然后调用StopFcn回调。

您可以使用StopFcn定义清理操作,例如从存储器中删除该定时器对象。

'标签'

字符向量或标量的字符串,它表示该对象的标签。

'TasksToExecute'

数大于0,表示的次数的定时器目的是执行该TimerFcn回调。使用TasksToExecute属性设置执行次数。使用TasksToExecute,你必须设置ExecutionMode调度多个计时器回调事件。

默认值:

'TimerFcn'

定义定时器回调函数的字符向量、字符串标量、函数句柄或单元格数组。在开始计时器之前,必须定义此属性。

  • 如果你使用一个特征向量或字符串标量指定此属性,当MATLAB执行回调它计算包含在特征向量的MATLAB代码。

  • 如果使用指定的函数处理这个属性,当MATLAB执行回调它传递计时器对象和回调函数的事件结构。事件结构中包含事件的类型类型现场和事件的时间数据领域。

  • 如果回调函数除计时器对象和事件数据,将此属性指定为包含函数句柄和附加参数的单元格数组。

有关更多信息,请参见定时器回调函数

“用户数据”

要添加到对象的数据的泛型字段。

属性

AveragePeriod

在秒之间的平均时间TimerFcn由于定时器执行开始。值直到计时器执行其中的两个计时器回调。

InstantPeriod

最后两次执行之间以秒为单位TimerFcn。值直到计时器执行其中的两个计时器回调。

运行

字符向量定义为“关闭”要么“上”,指示计时器是否正在执行回调函数。

TasksExecuted

计时器调用的次数TimerFcn由于定时器启动。

类型

标识对象类型字符向量。

方法

删除 从内存中删除定时器对象
得到 查询定时器对象的属性值
isvalid 确定计时器对象的有效性
为timer对象设置属性值
开始 启动定时器对象
startat 计划计时器在指定的时间触发
停止 停止定时器对象
timerfind 查找定时器对象
timerfindall 查找Timer对象,无论知名度
等待 阻塞命令提示符,直到计时器停止运行

复制语义

句柄。要了解如何处理类影响复制操作,请参阅复制对象

例子

全部折叠

使用匿名函数作为回调函数显示一条消息。值得注意的是,前两个参数的回调函数通行证的句柄定时器对象和事件的结构是很重要的。即使功能不使用这些参数,函数定义需要他们。

等待3.秒,然后显示消息“3秒已经过去”。

t =定时器;t。StartDelay = 3;t。TimerFcn = @(myTimerObj, thisEvent)“3秒钟过去”);开始(t)
3秒过去了

假设函数不需要定时器或事件对象。使用波浪号(~)操作者忽略该输入。

t.TimerFcn = @(〜,〜)DISP(“3秒钟过去”);开始(t)
3秒过去了

删除timer对象。

删除(t)

在计时器启动、触发和停止时显示事件和日期/时间输出。计时器回调函数将执行3次,每次调用间隔2秒。回调函数传递的前两个参数是timer对象的句柄和一个事件结构。事件结构包含两个字段:类型是标识引起回调的事件类型的字符向量,和数据是包含事件发生时间的日期时间向量的结构。

t =定时器;t.StartFcn = @(〜,thisEvent)DISP([thisEvent.Type“执行”...datestr (thisEvent.Data.time“dd-mmm-yyyy HH: MM: SS.FFF”)));t。thisEvent TimerFcn = @ (~), disp ([thisEvent.Type“执行”...datestr (thisEvent.Data.time“dd-mmm-yyyy HH: MM: SS.FFF”)));t。thisEvent StopFcn = @ (~), disp ([thisEvent.Type“执行”...datestr (thisEvent.Data.time“dd-mmm-yyyy HH: MM: SS.FFF”)));t.Period= 2; t.TasksToExecute = 3; t.ExecutionMode =“fixedRate”;开始(t)
TimerFcn执行14-Mar-2013 09:08:52.865 TimerFcn执行14-Mar-2013 09:08:52.865 TimerFcn执行14-Mar-2013 09:08:54.866 StopFcn执行14-Mar-2013 09:08:54.869

删除timer对象。

删除(t)

创建一个计时器对象,提醒自己在8个小时的过程中,每10分钟休息30秒。

在一个名为的文件中创建一个函数createErgoTimer.m返回一个timer对象。让这个文件包含三个本地函数来处理计时器启动、执行和停止任务。

功能t = createErgoTimer()秒break = 30;secondsBreakInterval = 600;secondsPerHour = 60 ^ 2;secondsWorkTime = 8 * secondsPerHour;t =定时器;t。用户数据= 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';结束

使用startDelay所占用的允许定时器启动时不指导您立即休息。设置执行模式'fixedSpacing'以便10分钟,三十秒(t.Period)完成一项工作后消失TimerFcn执行。这可以让你伸展三十下一秒开始前的几秒10分钟的间隔。

在里面createErgoTimer.m文件,添加一个本地函数来处理与启动计时器相关的任务。默认情况下,计时器对象本身和事件数据传递到回调函数。该函数忽略了事件的数据。

功能ergoTimerStart(mTimer,〜)secondsPerMinute = 60;secondsPerHour = 60 * secondsPerMinute;STR1 =开始人体工程学的休息计时器。”;str2 = sprintf (“在接下来的%d小时,你将被告知”,...轮(mTimer.TasksToExecute * (mTimer。期+...mTimer.UserData) / secondsPerHour));str3 = sprintf (“采取%d第二打破每%d分钟。”,...mTimer。用户数据,(mTimer。期,...mTimer.UserData)/ secondsPerMinute);DISP([STR1 STR2 STR3])结束

添加一个本地函数来处理与执行计时器相关的任务。的TimerFcn回调应该告诉你取a三十第二次破发。

功能takeBreak (mTimer ~) disp (“休息30秒。”)结束

添加一个本地函数来处理与停止计时器相关的任务。

功能ergoTimerCleanup (mTimer ~) disp (停止人体工程学的休息计时器。)删除(mTimer)结束

删除定时器对象将它从内存中删除。

从命令行调用createErgoTimer函数来创建和启动计时器。

t = createErgoTimer;开始(t)
启动人体工学休息定时器。对于接下来的8个小时,您将会收到通知采取30秒的休息每隔10分钟。

每一个10分钟,你会被提醒采取三十第二次破发。

休息一下。

您可以将定时器运行8或者手动停止。方法中包含从内存中删除计时器的任务StopFcn回调。

停止(T)
停止人体工程学的休息计时器。

提示

  • 若要强制执行事件队列中的回调函数,请包括对drawnow功能在你的代码。的drawnow函数刷新事件队列。

R2006a前推出