大家好,我是郭立员~
昨天有群友问我怎么写个定时的功能?
这代码挺简单,大概思路就是先做个时间记录,然后循环比对时间,看看有没有到时间。
举个例子,脚本每隔20秒执行一下A操作,其余时间执行B操作,想想这个操作该怎么写。
直接上代码:
启动定时()
Do
If 定时检测(20) Then //参数20代表20秒
TracePrint "执行a操作--------------"
启动定时()
Else
TracePrint "执行b操作"
End If
Delay 200
Loop
/*----以下代码直接放到脚本的最后面----*/
Function 启动定时()
file.Write("/sdcard/pictures/定时.txt",TickCount())
End Function
Function 定时检测(miao)
Dim t=file.read("/sdcard/pictures/定时.txt")
Dim n=1000*miao
If Len(t) = 0 Then
TracePrint "还未启动定时"
EndScript
End If
If TickCount() - t > n Then
定时检测 = true
Else
定时检测=false
End If
End Function
我的代码中写了2个函数,函数1是启动定时,函数2是定时检测。
你在写脚本的时候,如果是我这种定时思路,可以直接用我上面的框架,如果你是想要在你脚本中插入这个定时功能,可以这么写:
第一步:把两个函数放到你的脚本最下面。
/*----以下代码直接放到脚本的最后面----*/
Function 启动定时()
file.Write("/sdcard/pictures/定时.txt",TickCount())
End Function
Function 定时检测(miao)
Dim t=file.read("/sdcard/pictures/定时.txt")
Dim n=1000*miao
If Len(t) = 0 Then
TracePrint "还未启动定时"
EndScript
End If
If TickCount() - t > n Then
定时检测 = true
Else
定时检测=false
End If
End Function
第二步:在你需要定时的代码位置写上
启动定时()
第三步:检测到没到时间的代码位置写上
定时检测(20) //参数20代表20秒
这个函数有返回值,如果到时间了返回true,如果没有到时间返回false
你在使用的时候可以把返回值作为判断的条件,用来控制判断是否生效,把要执行的代码放入到判断里面。
平时我其实不用两个函数,这里为了方便大家使用,借助txt文本为媒介,并且把函数一分为二。
刚刚群里也有群友问这个问题。
定时运行,比如设置9点半,开始运行call xxx(),这种定时有没?
解决这个问题的核心是获取时间。
这里我用的是获取系统时间,具体代码如下:
If Timing(9, 30) Then
TracePrint "到时间了!call xxx()"
Else
Delay 1000
End If
Function Timing(hrs,min)
If hrs= DateTime.Hour() and min=DateTime.minute() Then
Timing = true
Else
Timing=false
End if
End Function
在代码中,我依然是封装了函数方便调用,使用时要循环执行timing()这个函数。
比如这样:
Do
If Timing(9, 30) Then
TracePrint "到时间了!call xxx()"
Else
Delay 1000
End If
Loop
每隔一秒钟监测一下是不是到时间了,这个间隔时间最大值是1分钟,如果超过1分钟就会出现到时间了也没有提示。
所以如果你想在等待时间内执行其他操作,必须在间隔1分钟以内就要执行一次监测代码。