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

my_thread

Valinnainen. Uuden ketjun nimi.

my_function

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

my_thread

Aiemmin aloitettu säikeen objekti. Tämä on nimi, joka annettiin, kun säikeelle luotiin arvo Thread.

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