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()

Parameter

Beschrijving

Deze constructor heeft geen parameters.

def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

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

# Register move_square to move_event
move_event(move_square)

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

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)

Parameter

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.

def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

# Creating the move_event Event
move_event = Event()

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

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

Een evenement uitzenden#

broadcast#

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

Usage:
event.broadcast()

Parameter

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)

move_event = Event()
move_event(move_square)
# Broadcasting the move_event Event
move_event.broadcast()
optical_sensor.set_light_power(100, PERCENT)

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()

Parameter

Beschrijving

event

De naam van het eerder aangemaakte gebeurtenisobject.

def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

# 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()
optical_sensor.set_light_power(100, PERCENT)