roTimer
13 min
este objeto permite que el script active eventos en una fecha/hora específica o durante intervalos especificados los eventos se activan entregando objetos rotimerevent al puerto de mensajes especificado el equivalente en javascript es settimeout()/ setinterval() iftimer settime(hour as integer, minute as integer, second as integer, millisecond as integer) as void establece la hora para que se active el evento en general, si un valor es 1, entonces es un comodín y hará que el evento se active cada vez que coincida el resto de la especificación si no hay comodines, entonces el temporizador se activará solo una vez cuando ocurra la hora especificada no se admiten temporizadores periódicos que se activen cada segundo los parámetros segundos y milisegundos deben ser cero si hay comodines en cualquier otra parte settime(a as integer, b as integer, c as integer) setdate(year as integer, month as integer, day as integer) as void establece la fecha para que se active el evento en general, si un valor es 1, entonces es un comodín y hará que el evento se active cada vez que coincida el resto de la especificación si no hay comodines, entonces el temporizador se activará solo una vez cuando ocurra la fecha/hora especificada setdayofweek(day of week as integer) as void establece el día de la semana para que se active el evento en general, si un valor es 1, entonces es un comodín y hará que el evento se active cada vez que coincida el resto de la especificación si no hay comodines, entonces el temporizador se activará solo una vez cuando ocurra la fecha/hora especificada es posible, usando una combinación de llamadas a setdate() y setdayofweek(), especificar combinaciones no válidas que nunca ocurrirán si las especificaciones incluyen algún comodín, entonces las especificaciones de second y millisecond deben ser cero; los eventos se generarán como máximo una vez por minuto cerca del minuto completo setdatetime(date time as rodatetime) as void establece la hora en la que desea que se active el evento a partir de un objeto rodatetime no es posible establecer comodines usando este método start() as boolean inicia el temporizador basándose en los valores actuales especificados usando las funciones anteriores stop() as void detiene el temporizador setelapsed(seconds as integer, milliseconds as integer) configura un temporizador para activarse una vez que haya transcurrido el período de tiempo especificado a diferencia de los métodos de temporizador absoluto anteriores, los cambios en el reloj del sistema no afectarán el período del temporizador setelapsed() ifmessageport setport(port as romessageport) as void publica mensajes de tipo rotimerevent en el puerto de mensajes adjunto ifuserdata setuserdata(user data as object) establece los datos de usuario que se devolverán cuando se generen eventos getuserdata() as object devuelve los datos de usuario que se han establecido previamente mediante setuserdata() devolverá inválido si no se ha establecido ningún dato ifidentity getidentity() as integer devuelve un número único que puede utilizarse para identificar cuándo los eventos se originan en este objeto la interfaz ifidentity está obsoleta recomendamos usar la interfaz ifuserdata en su lugar ejemplos este script utiliza el método setelapsed() para crear un temporizador que se activa cada 30 segundos sub main() mp = createobject("romessageport") timer = createobject("rotimer") timer setport(mp) timer setelapsed(30, 0) print "start at "; uptime(0) timer start() while true ev = mp waitmessage(0) if type(ev) = "rotimerevent" then print "timer event received at "; uptime(0) timer start() else print "another event arrived "; type(ev) end if end while end sub este script crea un temporizador que se activa cada minuto usando comodines en la especificación del temporizador st=createobject("rosystemtime") timer=createobject("rotimer") mp=createobject("romessageport") timer setport(mp) timer setdate( 1, 1, 1) timer settime( 1, 1, 0, 0) timer start() while true ev = wait(0, mp) if (type(ev) = "rotimerevent") then print "timer event received" else print "unexpected event received" endif endwhile este script crea un temporizador que se activa una vez en una fecha/hora específica timer=createobject("rotimer") mp=createobject("romessageport") timer setport(mp) timer setdate(2008, 11, 1) timer settime(0, 0, 0, 0) timer start() while true ev = wait(0, mp) if (type(ev) = "rotimerevent") then print "timer event received" else print "unexpected event received" endif endwhile