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:
Sukurkite įvykį naudodami
Event.Užregistruokite funkciją, kuri suveiktų, kai transliuojamas
Event, iškviečianteventobjektą su funkcija kaip argumentu.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()
Parametras |
Aprašymas |
|---|---|
Šis konstruktorius neturi parametrų. |
def move_square():
for index in range(4):
drivetrain.drive_for(FORWARD, 150)
drivetrain.turn_for(RIGHT, 90)
# *** Creating the move_event Event ***
move_event = Event()
# Register move_square to move_event
move_event(move_square)
# Call all functions registered to move_event
move_event.broadcast()
Funkcijų registravimas įvykyje#
Kai užregistruosite funkciją įvykyje, ji bus vykdoma atskirame gijoje, kai įvykis bus transliuojamas.
Usage:
event(callback, args)
Parametras |
Aprašymas |
|---|---|
|
Anksčiau sukurto įvykio objekto pavadinimas. |
|
Anksčiau apibrėžta funkcija, kuri turi būti vykdoma, kai įvykis transliuojamas. |
|
Pasirinktinai. Argumentų tuple, kuris bus perduotas atgalinio iškvietimo funkcijai, rinkinys. |
def move_square():
for index in range(4):
drivetrain.drive_for(FORWARD, 150)
drivetrain.turn_for(RIGHT, 90)
# Creating the move_event Event
move_event = Event()
# *** Register move_square to move_event ***
move_event(move_square)
# Call all functions registered to move_event
move_event.broadcast()
Transliuoti įvykį#
broadcast#
broadcast sukelia įvykį, paleidžiantį visas registruotas funkcijas atskirose gijose. Šis metodas nesustabdo jokių vėlesnių funkcijų vykdymo.
Usage:
event.broadcast()
Parametras |
Aprašymas |
|---|---|
|
Anksčiau sukurto įvykio objekto pavadinimas. |
# Build Used: Super Code Base 2.0
def move_square():
for index in range(4):
drivetrain.drive_for(FORWARD, 150)
drivetrain.turn_for(RIGHT, 90)
move_event = Event()
move_event(move_square)
# Broadcasting the move_event Event
move_event.broadcast()
optical_sensor.set_light_power(100, PERCENT)
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()
Parametras |
Aprašymas |
|---|---|
|
Anksčiau sukurto įvykio objekto pavadinimas. |
def move_square():
for index in range(4):
drivetrain.drive_for(FORWARD, 150)
drivetrain.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()
optical_sensor.set_light_power(100, PERCENT)