Fils#
Introduction#
Les threads permettent à un robot d’exécuter plusieurs tâches simultanément au sein d’un même programme. Ils rendent possible le multitâche, permettant au robot d’effectuer des actions indépendantes en même temps.
Remarque : Vous devez d’abord définir une fonction pour l’utiliser avec un thread.
Constructeur – Créer et démarrer de nouveaux threads.
Thread– Démarre un nouveau thread qui exécute la fonction spécifiée en parallèle avec le programme principal.
Action – Contrôler les threads en cours d’exécution.
stop– Arrête un thread manuellement, utile pour interrompre le comportement en arrière-plan.
Constructeur#
Thread#
La commande Thread crée et démarre un thread. Lorsque vous créez un thread, vous pouvez le nommer pour l’arrêter lorsqu’il n’est plus nécessaire.
Usage:
my_thread = Thread(my_function)
Paramètres |
Description |
|---|---|
|
Facultatif. Un nom pour la nouvelle discussion. |
|
Le nom d’une fonction précédemment définie. |
Remarque : Une fonction doit toujours être définie avant d’être appelée.
def move_square():
# Move in a square path
while True:
arm.move_inc(100, 0, 0)
arm.move_inc(0, 100, 0)
arm.move_inc(-100, 0, 0)
arm.move_inc(0, 100, 0)
move_square_thread = Thread(move_square)
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)
# Run multiple threads simultaneously
def move_square():
# Move in a square path
while True:
arm.move_inc(100, 0, 0)
arm.move_inc(0, 100, 0)
arm.move_inc(-100, 0, 0)
arm.move_inc(0, 100, 0)
def lights():
while True:
# Turn on all LEDs
signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
wait(0.25, SECONDS)
# Turn on just the red LED
signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
wait(0.25, SECONDS)
move_square_thread = Thread(move_square)
lights_thread = Thread(lights)
Action#
stop#
stop arrête manuellement un thread, ce qui est utile lorsqu’une tâche n’est plus nécessaire ou lorsqu’un programme doit réinitialiser les threads. Une fois arrêté, un thread ne peut pas être redémarré. Pour l’exécuter à nouveau, vous devez créer un nouveau thread à l’aide de Thread.
Usage:
my_thread.stop()
Paramètres |
Description |
|---|---|
|
Objet thread précédemment démarré. Il s’agit du nom attribué lors de la création du thread à l’aide de |
"""
Run multiple threads simultaneously
Move the end effector, flash lights and display the x position at once
Stop blinking after 2 seconds
"""
def lights():
while True:
# Turn on all LEDs
signal_tower.set_colors(SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON, SignalTower.ON)
wait(0.25, SECONDS)
# Turn on just the red LED
signal_tower.set_colors(SignalTower.ON, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF, SignalTower.OFF)
wait(0.25, SECONDS)
def display_x():
while True:
brain.clear_row()
brain.set_cursor(1, 1)
brain.print("X Position: {}".format(arm.get_x()))
wait(50, MSEC)
lights_thread = Thread(lights)
display_x_thread = Thread(display_x)
arm.move_to(200, 140, 210)
wait(2, SECONDS)
lights_thread.stop()