Siūlai#

Įvadas#

Gijos leidžia robotui vienu metu vykdyti kelias užduotis toje pačioje programoje. Jos įgalina daugiaprogramį darbą, leisdamos robotui atlikti nepriklausomus veiksmus tuo pačiu metu.

Pastaba: Norėdami naudoti funkciją su gijos, turite pirmiausia apibrėžti ją.

Konstruktorius – Kurkite ir pradėkite naujas gijas.

  • Threadgijos – Pradeda naują giją, kuri vykdo nurodytą funkciją lygiagrečiai su pagrindine programa.

Veiksmas – Valdykite veikiančias gijas.

  • stop – Sustabdo giją rankiniu būdu, naudinga norint sustabdyti foninį elgesį.

Konstruktorius#

Thread#

Thread gija sukuria ir pradeda giją. Sukūrę giją, galite ją pavadinti, kad sustabdytumėte ją, kai jos nebereikės.

Naudojimas:

my_thread = Thread(my_function)

Parametrai

Aprašymas

my_thread

Pasirinktinai. Naujo siūlelio pavadinimas.

my_function

Anksčiau apibrėžtos funkcijos pavadinimas.

Pastaba: Funkcija visada turi būti apibrėžta prieš ją iškviečiant.

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)

Veiksmas#

stop#

stop rankiniu būdu sustabdo giją, o tai naudinga, kai užduotis nebereikalinga arba kai programai reikia iš naujo nustatyti gijas. Sustabdžius giją, jos negalima paleisti iš naujo. Norėdami ją vėl paleisti, turite sukurti naują giją naudodami Thread.

Naudojimas:

my_thread.stop()

Parametrai

Aprašymas

my_thread

Anksčiau paleistas gijos objektas. Tai pavadinimas, priskirtas kuriant giją naudojant 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()