那位高手知道如何在c/c++下,实现微秒级的精确计时???,知道原码下载的也可以!!! 我要在c/c++环境下,要实现微秒的精确计时,delay(),Sleep()都不能实现该功能,请教高手!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般的时间控制函数: vc程序员都会利用windows的WM_TIMER消息映射来进行简单的时间控制 1、调用函数SetTimer() 函数设置时间间隔 2、在应用程序中增加定时响应函数OnTimer()并且在该函数中添加相应的处理语句。 这种定时的方法比较简单,但是其定时功能于Sleep()函数的延时功能一样,精度很低,只能用来显示诸如位图的动态显示等对定时的精度要求不高的情况。 精度时间控制函数 在误差要求不大于一毫秒的情况下,可以采用GetTickCount()函数来计时。该函数的返回值时DWORD型,标识以毫秒为单位的计算机清洞后经历的时间间隔。DWORD dwStart ,dwStop ;//设置起始值和终止值dwStop = GetTickCount(); while(TRUE) { dwStart = dwStop; // 上一次的终止值变成新的起始值 // 此处添加相应控制语句 do { dwStop = GetTickCount(); }while(dwStop - 50 < dwStart); } 高精度时间控制函数:对于一般的实时控制,是用函数GetTickCount()可以满足精度的要求,但是要进一步的提高计时的精度,就要调用QueryPerfoemanceFrequency()函数QueryPerformanceCounter()函数。 delay,sleep,当然都不行了,它们顶多就是ms级的你可以使用QueryPerfomanceFrequency()(得到高精度计时器的频率:一般是1193180Hz),再用QueryPerfomanceCounter()得到计数个数;剩下的就好办了:时间=计数个数/频率。更具体的用法,你可以参看msdn帮助。 《com+编程指南》中有个例子,用QueryPerfomanceFrequency()QueryPerfomanceCounter()实现的,可以从www.osborne.com上下载源代码 VOID GetSystemTime( LPSYSTEMTIME lpSystemTime ) 高精度计时一般都要用操作系统调用来实现吧在WINDOWS下可以用QueryPerfomanceFrequency()QueryPerfomanceCounter()也可以用timeSetEvent...系列的多媒体计时器API 地图放大或缩小后如何恢复成原图 存储过程有OUTPUT参数又要返加记录集,为什么只要我取记录集就不能取返回的OUTPUT参数 谁能给个用com做的插件的例子 VC生成的DLL怎样放到别的机器上使用,我一拿到别的地方他就报错,找不到MFC的dll库。 求一解决方案,很少有人有好的方案? 怎么改变Button的背景颜色?急问 请教图像处理高手一个关于图像边缘连接问题 怎样在界面中移动控件的位置? 那位做过asp调用com组件,在com中实现ado访问数据库。帮帮忙解决以下我的问题。。 VC++ 的使用故障??? 简单~问题~~ 如何把数据库中的查找出来的结果数据写如文本文件中!
vc程序员都会利用windows的WM_TIMER消息映射来进行简单的时间控制
1、调用函数SetTimer() 函数设置时间间隔
2、在应用程序中增加定时响应函数OnTimer()并且在该函数中添加相应的处理语句。
这种定时的方法比较简单,但是其定时功能于Sleep()函数的延时功能一样,精度很低,只能用来显示诸如位图的动态显示等对定时的精度要求不高的情况。
精度时间控制函数
在误差要求不大于一毫秒的情况下,可以采用GetTickCount()函数来计时。该函数的返回值时DWORD型,标识以毫秒为单位的计算机清洞后经历的时间间隔。
DWORD dwStart ,dwStop ;
//设置起始值和终止值
dwStop = GetTickCount(); while(TRUE)
{
dwStart = dwStop;
// 上一次的终止值变成新的起始值
// 此处添加相应控制语句
do
{
dwStop = GetTickCount();
}while(dwStop - 50 < dwStart);
} 高精度时间控制函数:
对于一般的实时控制,是用函数GetTickCount()可以满足精度的要求,但是要进一步的提高计时的精度,就要调用QueryPerfoemanceFrequency()函数QueryPerformanceCounter()函数。
你可以使用QueryPerfomanceFrequency()(得到高精度计时器的频率:一般是1193180Hz),再用QueryPerfomanceCounter()得到计数个数;剩下的就好办了:时间=计数个数/频率。更具体的用法,你可以参看msdn帮助。
LPSYSTEMTIME lpSystemTime )
在WINDOWS下可以用QueryPerfomanceFrequency()QueryPerfomanceCounter()
也可以用timeSetEvent...系列的多媒体计时器API