Langat#
Johdanto#
Säikeet mahdollistavat robotin suorittaa useita tehtäviä samanaikaisesti saman ohjelman sisällä. Ne mahdollistavat moniajon, jolloin robotti voi suorittaa itsenäisiä toimintoja samanaikaisesti.
Huomautus: Sinun on ensin määriteltävä funktio käyttääksesi sitä säikeen kanssa.
Konstruktori – Luo ja aloita uusia säikeitä.
Thread– Käynnistää uuden säikeen, joka suorittaa määritetyn funktion rinnakkain pääohjelman kanssa.
Toiminto – Hallitse käynnissä olevia säikeitä.
stop– Pysäyttää säikeen manuaalisesti, hyödyllinen taustalla tapahtuvan toiminnan pysäyttämiseksi.
Rakentaja#
Thread#
Thread luo ja aloittaa säikeen. Kun luot säikeen, voit nimetä sen pysäyttääksesi sen, kun sitä ei enää tarvita.
Käyttö:
my_thread = Thread(my_function)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Uuden ketjun nimi. |
|
Aiemmin määritellyn function nimi. |
Note: A function must always be defined before it is called.
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)
Toiminta#
stop#
stop pysäyttää säikeen manuaalisesti, mikä on hyödyllistä, kun tehtävää ei enää tarvita tai kun ohjelman on nollattava säikeet. Kun säie on pysäytetty, sitä ei voi käynnistää uudelleen. Suorittaaksesi sen uudelleen, sinun on luotava uusi säie käyttämällä Thread -funktiota.
Käyttö:
my_thread.stop()
Parametrit |
Kuvaus |
|---|---|
|
Aiemmin aloitettu säikeen objekti. Tämä on nimi, joka annettiin, kun säikeelle luotiin arvo |
"""
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()