如何实现微秒级的精确延时(在WIN95/98)中?(100分)

  • 主题发起人 主题发起人 陈新龙
  • 开始时间 开始时间
搞错了是0.01毫秒,不好意思。
陈新龙: 我刚刚测试过我得控件没问题的。
是不是delphi版本不一样,我用的是delphi3。
 
看来只有从代码级来考虑了?
 
别闹了啦,老早说过了,除非用硬件,否则靠PC是不行的啦。
谢谢 MM:-)))
 
CJ:
别揭我老底了!求求你了;)
 
urus:
我用的是delphi4.0,可能是版本不同造成的,怎样才能在D4中用上你的Supertimer呢?
 
一般是D4数据类型检测比较严格的缘故,自己做点类型转换应该可以。
amo:搞笑:)
 
amo是MM!?真的吗!
to urus:
把你的实现原理简单讲讲好吗?
 
如果真行,也妹我一份?多谢了
 
我懒的用delphi4,我觉的delphi3挺好,但我想4应该
向下兼容啊。
原理我在下载包里已经带了。这里可以再说一下:
我本来想用读去系统时间的方法来实现,但发现系统时间也不精确。
后来我发现了两个函数QueryPerformanceFrequency和
QueryPerformanceCounter 。这是标准的API函数。实现原理是利用计
算机中的8253,8254可编程时间间隔定时器芯片实现的。在计算机内
部有三个独立的16位计数器。计数器可以以二进制或二—十进制(BDC)
计数。计数器每秒产生1193180次脉冲,每次脉冲使计数器的数字减一,
产生频率是可变的,用QueryPerformanceFrequency可以得到,一般情况
下都是1193180。QueryPerformanceCounter可以得到当前的计数器
值。所以只要你的计算机够快,理论上精度可以达到1/1193180秒。
具体实现方法就看代码吧。
 
直接控制端口,用汇编
 
还来欠款,利息后补,感谢你的帮助。
 
多人接受答案了。
 
后退
顶部