Eventos#

Introducción#

Los eventos permiten ejecutar funciones en paralelo. En lugar de llamarlas secuencialmente, puedes registrar varias funciones en un evento y activarlas todas a la vez. Cada función registrada se ejecuta en su propio hilo, lo que permite que tu robot realice varias tareas simultáneamente, como mostrar valores en la pantalla mientras se desplaza.

Para crear y luego usar un evento, siga estos pasos en orden:

  1. Crea el evento con Event.

  2. Registre una función para activarse cuando se transmita el evento Event llamando al objeto event con la función como argumento.

  3. Broadcast an Event:

    • broadcast – Activa todas las funciones registradas en un objeto de evento para que se ejecuten simultáneamente.

    • broadcast_and_wait – Activa todas las funciones registradas en un objeto de evento y espera a que terminen antes de continuar.

Crear un evento#

El evento Event crea un objeto de evento que gestiona la ejecución de funciones en hilos separados.

Usage:
Event()

Parámetro

Descripción

Este constructor no tiene parámetros.

def move_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

# *** Creating the move_event Event ***
move_event = Event()

# Register move_square to move_event
move_event(move_y)

# Call all functions registered to move_event
move_event.broadcast()

Registrar funciones en un evento#

Cuando se registra una función en un evento, esta se ejecutará en un hilo independiente cuando se transmita dicho evento.

Usage:
event(callback, args)

Parámetro

Descripción

event

El nombre del objeto de evento creado previamente.

callback

Una función definida previamente que se ejecutará cuando se transmita el evento.

args

Opcional. Una tupla de argumentos para pasar a la función de devolución de llamada.

def move_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

# Creating the move_event Event
move_event = Event()

# *** Register move_square to move_event ***
move_event(move_y)

# Call all functions registered to move_event
move_event.broadcast()

Transmitir un evento#

broadcast#

broadcast triggers an event, starting all registered functions in separate threads. This method does not pause execution of any subsequent functions.

Usage:
event.broadcast()

Parámetro

Descripción

event

El nombre del objeto de evento creado previamente.

# Build Used: Super Code Base 2.0
def move_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

move_event = Event()
move_event(move_y)
# Broadcasting the move_event Event
move_event.broadcast()
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)

broadcast_and_wait#

broadcast_and_wait inicia un evento pero espera a que todas las funciones registradas terminen antes de continuar con las funciones subsiguientes.

Usage:
event.broadcast_and_wait()

Parámetro

Descripción

event

El nombre del objeto de evento creado previamente.

def move_y():
    for index in range(4):
        arm.move_inc(0, 100, 0)

# Set up and call the move_square event
move_event = Event()
move_event(move_y)
# Broadcast the move_event Event and wait
move_event.broadcast_and_wait()
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)