【精选】matlab timer详解(实例).docVIP

  • 10
  • 0
  • 约4.4千字
  • 约 6页
  • 2017-12-07 发布于贵州
  • 举报
【精选】matlab timer详解(实例)

MATLAB先天的多线程残疾,给编写实时程序带来了致命的打击。一般情况只能按堆栈的形式,排队执行Matlab命令,可是无巧不成书,有时我们偏偏需要进行多线程和实时编程。 比如: 1.我想实时更新一个电子表的时间,也就是每1s读取一次系统时间或者自动加1s 2.我需要这个程序在10s后终止 明显这些需要,使用一般的Matlab编程是没法或者说很难实现的。 还好Matlab自知在这方面亏欠大家太多,提供了唯一一个多线程的实现方法——Timer对象 一、Timer对象的创建 T = timer T = timer(PropertyName1, PropertyValue1, PropertyName2, PropertyValue2,...) 括号中的参数可以在创建Timer是给出,也可以通过以后的set/get命令设置和读取 二、Timer属性参数 1.属性设置 (1)创建的时候直接赋值 %创建一个Timer对象变量TaskTimer,并给出部分参数 TaskTimer=timer(... ? ? Name,Matlabsky,... ? ? TimerFcn,@ExecuteTask,... ? ? ErrorFcn,@ExecuteError,... ? ? Period,1,... ? ? ExecutionMode,fixedrate);?? (2)使用set/get设置和读取 %创建一个默认的Timer对象 TaskTimer=timer set(TaskTimer,Name,Matlabsky,TimerFcn,@ExecutTask) get(TaskTimer,Name) 其实set/get的使用方法不只这个,还其他形式,特别是在同时设置多个句柄的多个属性时,特别方便,感兴趣的网友可以直接参考Matlab的帮助文档 (3)使用结构体设置 TaskTimer=timer TaskTimer.Name=Matlabsky TaskTimer.TimerFcn=@ExecutTask 2.常用属性(下面是几个比较重要的,希望大家掌握) (1)ExecutionMode? ?执行的模式 就是确定TimerFcn执行周期计算的始末点 singleShot? ? :只能执行一次,故Period属性不起作用,其他模式都可以执行多次 fixedSpacing??:上一次TimerFcn执行完毕时刻到下一次TimerFcn被加入队列时刻之间的间隔 fixedDelay? ? :上一次开始执行到下一次被加入队列之间的间隔? ?? ?? fixedRate? ???:前后两次被加入到执行语句队列时刻之间的间隔 (2)Period??时间间隔(执行周期) 也就是每个Period执行一次TimerFcn,执行周期到底指的是哪两个时刻之间的间隔由ExecutionMode决定 (3)StartDelay? ?启动时延 从启动Timer开始到第一次把TimerFcn的加入到Matlab的执行语句队列中去的时延, 默认值为0s? ?? ?? ??? (4)TasksToExecute? ? 执行次数 TimerFcn被执行的次数,默认为1次,设置多次时需要设置执行周期Period (5)TimerFcn? ? Timer函数 是Timer对象的核心,Timer的多线就是通过执行这个TimerFcn来实现的,也是Timer对象的必选参数 当然还有其它属性,但是相对来说比较次要,更详细的说明,感兴趣网友可以自己查看MATLAB帮助文档 三、回调函数callback 1.callback的建立 Timer对象的回调函数有TimerFcn、ErrorFcn、StartFcn和StopFcn,其中TimerFcn是必选的 Timer的所有回调函数callback,至少有两个输入参数obj和event,其经典格式为 function my_callback_fcn(obj,event,p1, p2) %by dynamic %see also %20092.15 % %obj和event为必选输入参数 % %obj就是前面创建的Timer对象,它包含着Timer的所有参数 % %event是一个结构体,包含Type和Data两个字段,Type保存的是当前的Timer对象执行的时间,比如StartFcn、StopFcn等 % %而Data还是一个结构体,包含time一个字段,保存的是执行该事件的系统时间 % %所以event的使用是event.Type获取Timer到底在执行哪个事件,event.Data.time或者执行该时间的系统时间 % %p1,p2...等是其它自定义的输入参数,根据需要在自己添加 复制代码 2.

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档