A parte de las maneras de estar mirando constantemente el tiempo, quizás con las macros
@SEC o @MSEC (o alguna llamada al sistema que haga algo similar) hay una muy cómoda, que consiste en poner un "avisador automático" cada segundo.
Tu programa está haciendo cualquier cosa (que puede ser simplemente estar esperando en un bucle que no hace nada) y cuando el tiempo del avisador termina automáticamente se ejecuta una función.
Se hace con las funciones
Adlib, en versiones anteriores se hacía con
AdlibEnable y
AdlibDisable, en la última versión de AutoIt se sustituye AdlibEnable por
AdlibRegister (se usan igual, la diferencia es que con la segunda puedes tener varios "avisadores" activos, y con la primera sólo uno).
Te muestro un pequeño ejemplo que muestra por consola los segundos que van pasando (yo uso
AdlibEnable porque aún estoy con la versión 3.3.0) :
Código: Seleccionar todo
HotKeySet("{ESC}", "_Fin") ;Para finalizar con tecla Escape
Global $segun = 0
AdlibEnable("_MuestraMensaje", 1000) ;Cada 1000 milisegundos (o sea, un segundo) se ejecuta la función _MuestraMensaje
While True
Sleep(10000) ;Ver comentarios después del dódigo...
WEnd
Func _MuestraMensaje()
$segun += 1
ConsoleWrite("Segundos transcurridos: " & $segun & @CRLF)
EndFunc
Func _Fin()
AdlibDisable()
ConsoleWrite("Proceso terminado." & @CRLF)
Exit
EndFunc
Como el ejemplo es muy simple no hago un GUI, así que pongo un hotkey para cerrar el programa, y muestro los mensajes por la consola, pero eso es secundario, tú puedes tener tu GUI cerrable con un botón, y cada segundo en vez de sacar el mensaje miras la velocidad y calculas las revoluciones.
Fíjate que el programa es interrumpido donde esté cuando acaba el tiempo adlib, ¡incluso en un
Sleep!. Esto es muy útil, y de hecho si mientras esperas a que pase el segundo no tienes que hacer nada es buena idea tenerlo en un bucle con Sleep, pues así la CPU queda muy liberada. Totalmente desaconsejado hacer algo así:
While True
Wend
Es decir, no poner ninguna pausa, en este caso la CPU te saltará al 100% y se quedará ahí, porque aunque el bucle no tenga instrucciones dentro, se están ejecutando las instrucciones del propio bucle...
Espero que sea esto lo que querías.
Talueeec