精确到1ms的定时器

  
SetTimer()设置的定时器的定时时间>50ms,这在实时数据采集中是不够的。用多媒体定时器能精确到1ms,效果很好。
//定时器------------------------
#define            TIMER_ACCURACY        1
int                   TimerID;
UINT              wAccuracy;
int                   InitTimer();
int                   ReleaseTimer();
void PASCAL TimerProc(UINT wTimerID,UINT msg,DWORD dwUser,DWORD dwParam,DWORD dlParam);
 
int     InitTimer()
{
       TIMECAPS       tc;
 
       if(timeGetDevCaps(&tc,sizeof(TIMECAPS))==TIMERR_NOERROR) //获取系统的取值范围
       {
              wAccuracy=min(max(tc.wPeriodMin,TIMER_ACCURACY),tc.wPeriodMax);
              timeBeginPeriod(wAccuracy);
              return 1;
       }
       else
       {
              MessageBox(NULL,"定时器无法使用!",NULL,NULL);
              return 0;
       }
}
 
int ReleaseTimer()
{
       timeKillEvent(TimerID);
       timeEndPeriod(wAccuracy);
       return 1;
}
 
/*名称:TimerProc
 功能:定时处理
 参数:wTimerID定时器ID,msg消息参数,dwUser使用者,dwParam参数1,dlParam参数2
*/
void PASCAL TimerProc(UINT wTimerID,UINT msg,DWORD dwUser,DWORD dwParam,DWORD dlParam)
{
}
//打开定时器
TimerID=timeSetEvent(1000,wAccuracy,(LPTIMECALLBACK)TimerProc,(DWORD)0,TIME_PERIODIC);        //1000为定时时间,表示1000ms
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值