Evenementen#

Invoering#

Met gebeurtenissen kunt u functies parallel uitvoeren. In plaats van functies sequentieel aan te roepen, kunt u meerdere functies aan een gebeurtenis koppelen en ze allemaal tegelijk activeren. Elke geregistreerde functie wordt in een eigen thread uitgevoerd, waardoor uw robot meerdere taken tegelijk kan uitvoeren, zoals het weergeven van waarden op het scherm tijdens het rijden.

Om een ​​evenement aan te maken en te gebruiken, volg je deze stappen in de juiste volgorde:

  1. Maak het evenement aan met Event.

  2. Register a function to trigger when the Event is broadcast by calling the event object with the function as an argument.

  3. Broadcast an Event:

    • broadcast – Activeert alle geregistreerde functies in een gebeurtenisobject om gelijktijdig te worden uitgevoerd.

    • broadcast_and_wait – Activeert alle geregistreerde functies in een gebeurtenisobject en wacht tot ze klaar zijn voordat verder wordt gegaan.

Een evenement aanmaken#

Event creëert een gebeurtenisobject dat de uitvoering van functies in afzonderlijke threads beheert.

Usage:
Event()

Parameters

Beschrijving

Deze constructor heeft geen parameters.

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    # Creating the move_event Event
    move_event = Event()
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Functies registreren voor een evenement#

Wanneer je een functie aan een gebeurtenis koppelt, wordt deze in een aparte thread uitgevoerd zodra de gebeurtenis wordt uitgezonden.

Usage:
event(callback, args)

Parameters

Beschrijving

event

De naam van het eerder aangemaakte gebeurtenisobject.

callback

Een vooraf gedefinieerde functie die wordt uitgevoerd wanneer de gebeurtenis wordt uitgezonden.

args

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven.

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    move_event = Event()
    # Register the move_square function to the move_event Event
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Een evenement uitzenden#

broadcast#

broadcast activeert een gebeurtenis, waardoor alle geregistreerde functies in aparte threads worden gestart. Deze methode onderbreekt de uitvoering van de daaropvolgende code niet.

Usage:
event.broadcast()

Parameters

Beschrijving

event

De naam van het eerder aangemaakte gebeurtenisobject.

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    move_event = Event()
    move_event(move_square)
    # Broadcasting the move_event Event
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

broadcast_and_wait#

broadcast_and_wait start een gebeurtenis, maar wacht tot alle geregistreerde functies zijn voltooid voordat de volgende functies worden uitgevoerd.

Usage:
event.broadcast_and_wait()

Parameters

Beschrijving

event

De naam van het eerder aangemaakte gebeurtenisobject.

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    # Set up and call the move_square event
    move_event = Event()
    move_event(move_square)
    # Broadcast the move_event Event and wait
    move_event.broadcast_and_wait()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)