(%232*
% %%232*
$!%.,%232*
&(.5)+%*
4, /6*
虽然这样可以降低 的占有率,并在延时或定时期间也能处理其他的消息,但降
低了延时或定时精度。
方式五:与 (.5)函数类似的多媒体定时器函数 $$
(8,该函数定时精 度为 级,返回从 启动开始经
过的毫秒数。微软公司在其多媒体 中提供了精确定时器的底 层 9 持,
利用多媒体定时器可以很精确地读出系统的当前时间,并且能在非常精确的时间间
隔内完成一 个事件、函数或过程的调用。不同之处在于调用 $$
(8函数之前必须将 - :;和 <-,添加到工
程中,否则在编译时提示 $$(8函数未定义。由于使用该
函数是通过查询的方式进行定时控制的,所以,应该建立定时循环来进行定时事件
的控制。如示例工程中的 6 和 6#。
方式六:使用多媒体定时器 8函数,该函数定时精度为
级。利用该函数可以实现周期性的函数调用。如示例工程中的 = 和
=#。函数的原型如下:
8( )$ %<
) )
9>9? !.
$
@)8)
该函数设置一个定时回调事件,此事件可以是一个一次性事件或周期性事件。
事件一旦被激活,便调用指定的回调函数, 成功后返回事件的标识符代码,否则返
回 。函数的参数说明如下:
)$ %<:以毫秒指定事件的周期。
):以毫秒指定延时的精度,数值越小定时器事件分辨率
越高。缺省值为 #。
!.:指向一个回调函数。
$:存放用户提供的回调数据。
A)8:指定定时器事件类型:
B:)$ %< 毫秒后只产生一次事件
$:每隔 )$ %< 毫秒周期性地产生事件。
具体应用时,可以通过调用 8函数,将需要周期性执行的任务
定义在 !. 回调函数 中如:定时采样、控制等,从而完成所需处理的事
件。需要注意的是,任务处理的时间不能大于周期间隔时间。另外,在定时器使用
完毕后, 应及时调用 ? 8将之释放。
方式七:对于精确度要求更高的定时操作,则应该使用
C)<@%.AD).<和 C)<@%.)函数。这
两个函数是 提供的仅供 E6 及其后续版本使用的精确时间函数,并要
求计算机从硬件上支持精确定时器。如示例工程中的
F、F#、F、F"。
- 1
- 2
- 3
前往页