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

Parameter

Beskrivning

Denna konstruktor har inga parametrar.

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

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)

Parameter

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.

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

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 körningen av några efterföljande funktioner.

Usage:
event.broadcast()

Parameter

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)

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

Parameter

Beskrivning

event

Namnet på det tidigare skapade händelseobjektet.

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)