龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

利用timeGetTime函数更精准地计算差

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
我想每0.005秒做某一件工作,所以撰写了以下程序: Dimtm1AsSingle Do tm1=Timer WhileTimer-tm10.005等于0.005秒 DoEvents Wend ...做某一件工作 Loop 但实际上,在While循环里面,Timer函数几乎每次都得到相
我想每0.005秒做某一件工作,所以撰写了以下程序:
  Dimtm1AsSingle
  Do
  tm1=Timer
  WhileTimer-tm1<0.005'等于0.005秒
  DoEvents
  Wend
  ...做某一件工作
  Loop

但实际上,在While循环里面,Timer函数几乎每次都得到相同的时间,只有大约隔了0.05秒才会得到不同的时间,也就是说Timer的准确性只有0.05秒,但我希望进行的工作却是每0.005秒一次,该怎么办呢?可以改用WindowsAPI的timeGetTime函数,此一函数会传回Windows开机以来所经过的时间,时间单位是1/1000秒,举例来说,开机经过2分钟,则传回值等于2*60*1000,timeGetTime的优点是时间可以精确到1/1000秒,所以可以用来解决上述的问题,细节如下:

1.API的声明:
  PrivateDeclareFunctiontimeGetTimeLib"winmm.dll"Alias"timeGetTime"
  ()AsLong
  注:如果以上的声明放在「一般模块」底下,应将Declare之前的Private保
  留字去掉。

2.程序范例:
  Dimtm1AsLong
  Do
  tm1=timeGetTime
  WhiletimeGetTime-tm1<5'等于5/1000=0.005秒
  DoEvents
  Wend
  ...做某一件工作
  Loop

->

精彩图集

赞助商链接