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