Événements#
Introduction#
Les événements permettent d’exécuter des fonctions en parallèle. Au lieu d’appeler les fonctions séquentiellement, vous pouvez associer plusieurs fonctions à un événement et les déclencher simultanément. Chaque fonction associée s’exécute dans son propre thread, ce qui permet à votre robot d’effectuer plusieurs tâches en même temps, comme afficher des valeurs à l’écran pendant qu’il se déplace.
Pour créer puis utiliser un événement, suivez ces étapes dans l’ordre :
Créez l’événement avec
Event.Enregistrez une fonction à déclencher lorsque l’événement
Eventest diffusé en appelant l’objeteventavec la fonction comme argument.Broadcast an
Event:broadcast– Déclenche l’exécution simultanée de toutes les fonctions enregistrées dans un objet événement.broadcast_and_wait– Déclenche toutes les fonctions enregistrées dans un objet événement et attend qu’elles se terminent avant de continuer.
Créer un événement#
L’événement Event crée un objet événement qui gère l’exécution des fonctions dans des threads séparés.
Usage:
Event()
Paramètres |
Description |
|---|---|
Ce constructeur n’a pas de paramètres. |
# 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)
Inscrire des fonctions à un événement#
Lorsque vous enregistrez une fonction pour un événement, elle s’exécutera dans un thread séparé lorsque l’événement sera diffusé.
Usage:
event(callback, args)
Paramètres |
Description |
|---|---|
|
Le nom de l’objet événement précédemment créé. |
|
Une fonction préalablement définie à exécuter lorsque l’événement est diffusé. |
|
Facultatif. Un tuple d’arguments à passer à la fonction de rappel. |
# 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)
Diffuser un événement#
broadcast#
La diffusion broadcast déclenche un événement, lançant toutes les fonctions enregistrées dans des threads séparés. Cette méthode n’interrompt pas l’exécution du code suivant.
Usage:
event.broadcast()
Paramètres |
Description |
|---|---|
|
Le nom de l’objet événement précédemment créé. |
# 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 lance un événement mais attend que toutes les fonctions enregistrées se terminent avant de poursuivre avec les fonctions suivantes.
Usage:
event.broadcast_and_wait()
Paramètres |
Description |
|---|---|
|
Le nom de l’objet événement précédemment créé. |
# 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)