有关定时器

fox2gg 2006-10-08 10:59:51
我用timeSetEvent定时,每100ms计一个数,然后由tcsv决定计数的个数,如tcsv=30,则定时3秒,
现在运行的结果为什么误差很大?是不是程序哪里有问题?
下面是我的部分代码

//RunDlg.cpp
{ ...
OnTime(tcsv);//tcsv个数
istc=1;
...
}

void CRunDlg::OnTime(int t)
{
CSPLCApp *app=(CSPLCApp*)AfxGetApp();
wAccuracy=app->wAccuracy;

timerID=timeSetEvent(100,wAccuracy,(LPTIMECALLBACK)PTIM,(DWORD)this,TIME_PERIODIC);
tsv=t;
}


void PASCAL PTIM(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
CRunDlg * pRunProc=(CRunDlg *) dwUser;

if(tsv==0)
{
timeKillEvent(pRunProc->timerID);
timeEndPeriod(pRunProc->wAccuracy);
pRunProc->tc[0]=1;
pRunProc->istc[0]=0;
return;
}
tsv--;
}
...全文
214 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickerliang 2006-10-08
  • 打赏
  • 举报
回复
请注意,timer是一个很不精确的时间消息来的
它的精确度与你的程序有很大关系(窗口过程和消息队列的消息个数)
fairyprince 2006-10-08
  • 打赏
  • 举报
回复
http://dev.yesky.com/53/2279553.shtml
fairyprince 2006-10-08
  • 打赏
  • 举报
回复
settime 精度只有 55ms 次数多了就差的多了呗

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧