淘宝店
Google
      
发新话题
打印

VB程序实现比较精确的毫秒级延时方法

VB程序实现比较精确的毫秒级延时方法

  平时使用VB编制PC程序,特别是控制单片机时,很难实现精确的毫秒级延时,参看了一些调用timeGetTime Lib "winmm.dll"或GetCurrentTime Lib "kernel32"的例子,经过实验,均不能精确到1毫秒的延时,最小增量只能为16毫秒。于是采用空循环延时的方法以作权宜之计,如下:

'置一个Timer控制,默认为disable,Interval=1000
'定义循环参数
Public PerSecond As Single


Private Sub Form_Load()
  ...
  ...
  Timer1.Enable=True
End Sub

'Form_load后启动Timer1,计算参数PerSecond,即延时1毫秒的循环数,如欲进一步精确,可计算多次,求出平均数.

Private Sub Timer1_Timer()
    Timer1.Enabled = False
    Dim I As Integer
    Dim J As Integer
    Dim ST As Single
    ST = Timer
    For I = 1 To 1000
        DoEvents
        For J = 1 To 100
            DoEvents
        Next
    Next
    ST = Timer - ST
    PerSecond = 1 / ST
End Sub

'延时子程序
Public Function MyDelayTime(WT As Long) As Long
    Dim II As Long
    Dim JJ As Integer
    For II = 1 To CLng(WT * PerSecond)
        DoEvents
        For JJ = 1 To 100
            DoEvents
        Next
    Next
End Function

经实验,效果非常好。

大家有什么好的方法,请不吝赐教。

TOP

自毕业以后就没搞过VB程序,看到有人用它写的程序还是很有些手痒,有时间一定写几个程序玩玩,顶了

TOP

发新话题