已经好几次讨论这个问题了,Windows是非实时的。所以精确也高不到哪儿去,但是每两次的间隔时间很准确。
如果坚持要用它来精确定时。
程序的代码步骤如下。
使用timeSetEvent建立以个MM定时器,返回的是定时器的ID。timeSetEvent参数中有一个回调函数TimerProc(当然你可以用别的名字)就是周期性执行的函数。在这个函数体内执行你需要的代码。代码不要有等待等操作,而且执行时间要短(不要超过10ms)现在X86计算机Windows操作系统任务调度时间间隔为15.7ms左右(外频是33MHz整数倍的CPU,如果是100MHz整数倍可能是10ms)。
使用完定时后使用timeKillEvent关闭这个timer。
例子如下:
mTimer = timeSetEvent(20, 1, TimerProc, (DWORD)pParam, TIME_PERIODIC);
...
DWORD TimerProc(...)
{
//采集数据或者DAC输出
}
...
timeKillEvent(mTimer);