Vītnes#

Ievads#

Pavedi ļauj robotam vienlaikus izpildīt vairākus uzdevumus vienas programmas ietvaros. Tie nodrošina vairākuzdevumu veikšanu, ļaujot robotam vienlaikus veikt neatkarīgas darbības.

Note: You must first define a function to use it with a thread.

Konstruktors — izveidojiet un sāciet jaunus pavedienus.

  • Thread pavediens — sāk jaunu pavedienu, kas paralēli galvenajai programmai palaiž norādīto funkciju.

Darbība — pārvaldīt darbojošos pavedienus.

  • stop – Manuāli aptur pavedienu, kas ir noderīgi fona darbību apturēšanai.

Konstruktors#

Thread#

Thread  pavediens izveido un sāk pavedienu. Izveidojot pavedienu, varat tam piešķirt nosaukumu, lai apturētu tā darbību, kad tas vairs nav nepieciešams.

Lietojums:

my_thread = Thread(my_function)

Parametri

Apraksts

my_thread

Neobligāti. Jaunā pavediena nosaukums.

my_function

Iepriekš definētas funkcijas nosaukums.

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)

Darbība#

stop#

stop manuāli aptur pavedienu, kas ir noderīgi, ja uzdevums vairs nav nepieciešams vai ja programmai ir jāatiestata pavedieni. Kad pavediens ir apturēts, to nevar restartēt. Lai to palaistu vēlreiz, ir jāizveido jauns pavediens, izmantojot Thread.

Lietojums:

my_thread.stop()

Parametri

Apraksts

my_thread

Iepriekš sākts pavediena objekts. Šis ir nosaukums, kas tika piešķirts, kad pavediens tika izveidots, izmantojot 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()