VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 利用 timeGetTime 更精准地计算时间差
发表评论(0)作者:, 平台:, 阅读:21108, 日期:2000-03-12
利用 timeGetTime 更精准地计算时间差。

我想每 0.005 秒做某一件工作, 所以撰写了以下程序:

Dim tm1 As Single

Do

tm1 = Timer

While Timer - tm1 < 0.005 ' 等于 0.005 秒

DoEvents

Wend

...做某一件工作

Loop

但实际上, 在 While 循环里面, Timer 函数几乎每次都得到相同的时间,只有

大约隔了 0.05秒才会得到不同的时间, 也就是说 Timer 的准确性只有 0.05 秒,

但我希望进行的工作却是每 0.005 秒一次, 该怎么办呢?

可以改用 Windows API 的 timeGetTime 函数, 此一函数会传回 Windows 开机以

来所经过的时间,时间单位是 1/1000 秒, 举例来说, 开机经过 2 分钟, 则传

回值等于 2*60*1000, timeGetTime 的优点是时间可以精确到 1/1000 秒, 所以

可以用来解决上述的问题,细节如下:

1. API 的声明:

Private Declare Function timeGetTime Lib "winmm.dll" Alias "timeGetTime"

() As Long

注:如果以上的声明放在「一般模块」底下, 应将 Declare 之前的 Private 保

留字去掉。

2. 程序范例:

Dim tm1 As Long

Do

tm1 = timeGetTime

While timeGetTime - tm1 < 5 ' 等于 5/1000 = 0.005 秒

DoEvents

Wend

...做某一件工作

Loop