Renginiai#

Įvadas#

Įvykiai leidžia vykdyti funkcijas lygiagrečiai. Užuot iškvietę funkcijas iš eilės, galite užregistruoti kelias funkcijas įvykyje ir suaktyvinti jas visas vienu metu. Kiekviena užregistruota funkcija veikia savo gijoje, todėl jūsų robotas gali atlikti kelias užduotis vienu metu, pavyzdžiui, rodyti reikšmes ekrane vairuodamas.

Norėdami sukurti ir naudoti įvykį, atlikite šiuos veiksmus tokia tvarka:

  1. Sukurkite įvykį naudodami Event.

  2. Užregistruokite funkciją, kuri suveiktų, kai transliuojamas Event , iškviečiant event objektą su funkcija kaip argumentu.

  3. Broadcast an Event:

    • broadcast – Suaktyvina visas įvykio objekte užregistruotas funkcijas, kad jos veiktų vienu metu.

    • broadcast_and_wait – Suaktyvina visas užregistruotas įvykio objekto funkcijas ir palaukia, kol jos bus baigtos, prieš tęsiant.

Sukurti įvykį#

Event įvykis sukuria įvykio objektą, kuris valdo funkcijų vykdymą atskirose gijose.

Usage:
Event()

Parametrai

Aprašymas

Šis konstruktorius neturi parametrų.

def move_square():
    for index in range(4):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.turn_for(RIGHT, 90)

# Creating the move_event Event
move_event = Event()
move_event(move_square)
move_event.broadcast()
robot.led.glow(GREEN)

Funkcijų registravimas įvykyje#

Kai užregistruosite funkciją įvykyje, ji bus vykdoma atskirame gijoje, kai įvykis bus transliuojamas.

Usage:
event(callback, args)

Parametrai

Aprašymas

event

Anksčiau sukurto įvykio objekto pavadinimas.

callback

Anksčiau apibrėžta funkcija, kuri turi būti vykdoma, kai įvykis transliuojamas.

args

Pasirinktinai. Argumentų tuple, kuris bus perduotas atgalinio iškvietimo funkcijai, rinkinys.

def move_square():
    for index in range(4):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.turn_for(RIGHT, 90)

move_event = Event()
# Register the move_square function to the move_event Event
move_event(move_square)
move_event.broadcast()
robot.led.glow(GREEN)

Transliuoti įvykį#

broadcast#

broadcast sukelia įvykį, paleidžiantį visas registruotas funkcijas atskirose gijose. Šis metodas nesustabdo jokio tolesnio kodo vykdymo.

Usage:
event.broadcast()

Parametrai

Aprašymas

event

Anksčiau sukurto įvykio objekto pavadinimas.

def move_square():
    for index in range(4):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.turn_for(RIGHT, 90)

move_event = Event()
move_event(move_square)
# Broadcasting the move_event Event
move_event.broadcast()
robot.led.glow(GREEN)

broadcast_and_wait#

broadcast_and_wait pradeda įvykį, bet palaukia, kol bus baigtos visos registruotos funkcijos, prieš tęsiant tolesnes funkcijas.

Usage:
event.broadcast_and_wait()

Parametrai

Aprašymas

event

Anksčiau sukurto įvykio objekto pavadinimas.

def move_square():
    for index in range(4):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.turn_for(RIGHT, 90)

# Set up and call the move_square event
move_event = Event()
move_event(move_square)
# Broadcast the move_event Event and wait
move_event.broadcast_and_wait()
robot.led.glow(GREEN)