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