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 — Darbojošos pavedienu kontrole.

  • 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.

# Drive forward while blinking lights
def blink_lights():
    while True:
        robot.led.on(ALL_LEDS, RED)
        wait(0.5, SECONDS)
        robot.led.on(ALL_LEDS, BLUE)
        wait(0.5, SECONDS)
blink_lights_thread = Thread(blink_lights)
robot.move_at(0)

# Run multiple threads simultaneously
# Turn right, blink lights and display heading at once
def blink_lights():
    while True:
        robot.led.on(ALL_LEDS, RED)
        wait(0.5, SECONDS)
        robot.led.on(ALL_LEDS, GREEN)
        wait(0.5, SECONDS)

def display_heading():
    while True:
        robot.screen.clear_row()
        robot.screen.set_cursor(1, 1)
        robot.screen.print(f"Heading: {robot.inertial.get_yaw()}")
        wait(50, MSEC)

blink_lights_thread = Thread(blink_lights)     
display_heading_thread = Thread(display_heading)
robot.turn(RIGHT)

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
Turn right, blink lights and display heading at once
Stop blinking lights after 2 seconds
"""
def blink_lights():
    while True:
        robot.led.on(ALL_LEDS, RED)
        wait(0.5, SECONDS)
        robot.led.off(ALL_LEDS)
        wait(0.5, SECONDS)

def display_heading():
    while True:
        robot.screen.clear_row()
        robot.screen.set_cursor(1, 1)
        robot.screen.print(f"Heading: {robot.inertial.get_yaw()}")
        wait(50, MSEC)

blink_lights_thread = Thread(blink_lights)     
display_heading_thread = Thread(display_heading)
robot.turn(RIGHT)

wait(2, SECONDS)
blink_lights_thread.stop()