我做了个延时程序,是当需要延时时,触发一个Timer控件。
Timer控件计算延时时间是做到了,
但是我没有办法阻止触发Timer控件后面的程序继续进行(就等于没有延时呀),
请问这要怎么办呀!!!
Private Sub Command1_Click()Image22.Picture = LoadPicture(Module1.TP(5)) '开泵
MSComm1.Output = Module1.OutData(1) '开泵Module1.YSSJ = 180 '延时3分钟
Module1.YSJS '触发Timer控件
''''''''''''''''''''''''''''''''''''''
''''''''''延时3分钟开阀'''''''''''''''
''''''''''''''''''''''''''''''''''''''
MSComm1.Output = Module1.OutData(3) '开启2号阀
Image9.Picture = LoadPicture(Module1.TP(1)) '开启2号阀Module1.YSSJ = 20
Module1.YSJS
''''''''''''''''''''''''''''''''''''''
''''''''''延时20秒请求水质''''''''''''
''''''''''''''''''''''''''''''''''''''
MSComm1.Output = Module1.OutData(5) '请求水质Label8.Caption = Module1.InData '读取串口Image22.Picture = LoadPicture(Module1.TP(6)) '关泵
MSComm1.Output = Module1.OutData(2) '关泵Image9.Picture = LoadPicture(Module1.TP(2)) '关闭2号阀End Sub
当
Module1.YSSJ = 180 '延时3分钟
Module1.YSJS '触发Timer控件
执行完后,下面的程序继续执行,
有没有别的办法不让下面的继续执行呀
Timer控件计算延时时间是做到了,
但是我没有办法阻止触发Timer控件后面的程序继续进行(就等于没有延时呀),
请问这要怎么办呀!!!
Private Sub Command1_Click()Image22.Picture = LoadPicture(Module1.TP(5)) '开泵
MSComm1.Output = Module1.OutData(1) '开泵Module1.YSSJ = 180 '延时3分钟
Module1.YSJS '触发Timer控件
''''''''''''''''''''''''''''''''''''''
''''''''''延时3分钟开阀'''''''''''''''
''''''''''''''''''''''''''''''''''''''
MSComm1.Output = Module1.OutData(3) '开启2号阀
Image9.Picture = LoadPicture(Module1.TP(1)) '开启2号阀Module1.YSSJ = 20
Module1.YSJS
''''''''''''''''''''''''''''''''''''''
''''''''''延时20秒请求水质''''''''''''
''''''''''''''''''''''''''''''''''''''
MSComm1.Output = Module1.OutData(5) '请求水质Label8.Caption = Module1.InData '读取串口Image22.Picture = LoadPicture(Module1.TP(6)) '关泵
MSComm1.Output = Module1.OutData(2) '关泵Image9.Picture = LoadPicture(Module1.TP(2)) '关闭2号阀End Sub
当
Module1.YSSJ = 180 '延时3分钟
Module1.YSJS '触发Timer控件
执行完后,下面的程序继续执行,
有没有别的办法不让下面的继续执行呀
那要是goto具体是怎么样的呢?
能不能详细点
Public Sub TimeDelay(DT As Long) Dim tt As Long
tt = GetTickCount
Do
DoEvents
Loop Until GetTickCount - tt >= DTEnd Sub
我刚学vb不久
GetTickCount是什么意思
GetTickCount是一个api函数
因为sleep好像就只能是1分钟左右我写的就是像lsftest()说的,但是第一次触发完Timer以后,他就会跳会程序继续向下执行
那是怎么样的
能大概讲讲不(越细越好)
都什么时候还来学vb阿我的建议是你如果要用time干脆把暂停后面的过程放在timer去因为time控件是过了那么长时间以后才运行的 你放进去以后就会等段时间后再运行你放进去的函数
你的程序做这样的修改:Private Sub Command1_Click()Image22.Picture = LoadPicture(Module1.TP(5)) '开泵
MSComm1.Output = Module1.OutData(1) '开泵Module1.YSSJ = 180 '延时3分钟
Module1.YSJS '触发Timer控件
''''''''''''''''''''''''''''''''''''''
''''''''''延时3分钟开阀''''''''''''''' '以下所有要延时的地方,都加雷同的代码
tt=3*60
timer2.enable=true
do
events
loop until tt>=0
timer2.enable=false''''''''''''''''''''''''''''''''''''''
MSComm1.Output = Module1.OutData(3) '开启2号阀
Image9.Picture = LoadPicture(Module1.TP(1)) '开启2号阀Module1.YSSJ = 20
Module1.YSJS
''''''''''''''''''''''''''''''''''''''
''''''''''延时20秒请求水质''''''''''''
''''''''''''''''''''''''''''''''''''''
MSComm1.Output = Module1.OutData(5) '请求水质Label8.Caption = Module1.InData '读取串口Image22.Picture = LoadPicture(Module1.TP(6)) '关泵
MSComm1.Output = Module1.OutData(2) '关泵Image9.Picture = LoadPicture(Module1.TP(2)) '关闭2号阀End Sub
MSComm1.Output = Module1.OutData(1) '开泵delaying = True
Module1.YSSJ = 180 '延时3分钟
Module1.YSJS '触发Timer控件
''''''''''''''''''''''''''''''''''''''
''''''''''延时3分钟开阀'''''''''''''''
''''''''''''''''''''''''''''''''''''''
Do While delaying
LoopMSComm1.Output = Module1.OutData(3) '开启2号阀
Image9.Picture = LoadPicture(Module1.TP(1)) '开启2号阀Module1.YSSJ = 20
Module1.YSJS
''''''''''''''''''''''''''''''''''''''
''''''''''延时20秒请求水质''''''''''''
''''''''''''''''''''''''''''''''''''''
Do While delaying
LoopMSComm1.Output = Module1.OutData(5) '请求水质Label8.Caption = Module1.InData '读取串口Image22.Picture = LoadPicture(Module1.TP(6)) '关泵
MSComm1.Output = Module1.OutData(2) '关泵Image9.Picture = LoadPicture(Module1.TP(2)) '关闭2号阀End SubPrivate Sub Timer1_Timer()
delaying = False
End Sub
Module1.YSSJ = 20
Module1.YSJS
''''''''''''''''''''''''''''''''''''''
''''''''''延时20秒请求水质''''''''''''
''''''''''''''''''''''''''''''''''''''
Do While delaying
Loop