---
title: roTimer
slug: develop/es/rotimer
docTags: 
createdAt: 2025-03-11T07:07:17.200Z
---

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.

:::hint{type="info"}
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.

:::hint{type="info"}
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.

:::hint{type="info"}
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:

```text
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:

```text
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.

```text
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
```

