Händelser#

Introduktion#

Händelser låter dig köra funktioner parallellt. Istället för att anropa funktioner sekventiellt kan du registrera flera funktioner till en händelse och utlösa dem alla samtidigt. Varje registrerad funktion körs i sin egen tråd, vilket gör att din robot kan utföra flera uppgifter samtidigt – som att visa värden på skärmen under körning.

För att skapa och sedan använda en händelse, följ dessa steg i ordning:

  1. Skapa händelsen med Event.

  2. Registrera en funktion som ska utlösas när Event sänds genom att anropa event object med funktionen som argument.

  3. Broadcast an Event:

    • broadcast – Utlöser att alla registrerade funktioner i ett händelseobjekt körs samtidigt.

    • broadcast_and_wait – Utlöser alla registrerade funktioner i ett händelseobjekt och väntar på att de ska slutföras innan den fortsätter.

Skapa ett evenemang#

Event skapar ett händelseobjekt som hanterar funktionskörning i separata trådar.

Usage:
Event()

Parametrar

Beskrivning

Denna konstruktor har inga parametrar.

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

Registrera funktioner till en händelse#

När du registrerar en funktion till en händelse kommer den att köras i en separat tråd när händelsen sänds.

Usage:
event(callback, args)

Parametrar

Beskrivning

event

Namnet på det tidigare skapade händelseobjektet.

callback

En tidigare definierad funktion som ska köras när händelsen sänds.

args

Valfritt. En tupel argument som ska skickas till återanropsfunktionen.

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

Sänd ett evenemang#

broadcast#

broadcast utlöser en händelse, vilket startar alla registrerade funktioner i separata trådar. Den här metoden pausar inte exekveringen av någon efterföljande kod.

Usage:
event.broadcast()

Parametrar

Beskrivning

event

Namnet på det tidigare skapade händelseobjektet.

# 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 startar en händelse men väntar tills alla registrerade funktioner är klara innan den fortsätter med efterföljande funktioner.

Usage:
event.broadcast_and_wait()

Parametrar

Beskrivning

event

Namnet på det tidigare skapade händelseobjektet.

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