一个timer放在一个单独的form里面,其timer控件为:
Private Sub Timer1_Timer()
gbTimeOut = True
End Sub
gbTimeOut 为一个全局变量,表示timerout的时间是否到了
另外一个函数ReadPort在一个module里,其功能是检测一端口的电平是否为高,如果在8秒以内电平变高,着ReadPort=True,否则ReadPort= False
Public Function SendReady() As Boolean
Dim Port as byte
Set frmDoCali = New frmTimer
frmDoCali.Timer1.Interval = 8000
frmDoCali.Timer1.Enabled = True
Do While gbTimeOut = False And Port = 0
Port = FunctionA (注:FunctionA是一个读取port的函数)
Loop
If Port= 1 and gbTimeOut= false Then
ReadPort= True
Else
ReadPort = False
End If
frmDoCali.Timer1.Enabled = False
Unload frmDoCali
Set frmDoCali = Nothing
End Function
如果你不是只计时一次的话,应该这样(
dim i as long
Private Sub Timer1_Timer()
i=i+1
if i>=8 then
gbTimeOut = True
i=0
else
gbTimeOut = false
end if
End Sub
注意frmDoCali.Timer1.Interval = 8000要改为:
frmDoCali.Timer1.Interval = 1000