Pasākumi#

Ievads#

Notikumi ļauj funkcijas palaist paralēli. Tā vietā, lai funkcijas izsauktu secīgi, varat reģistrēt vairākas funkcijas vienam notikumam un aktivizēt tās visas vienlaikus. Katra reģistrētā funkcija darbojas savā pavedienā, ļaujot robotam vienlaikus veikt vairākus uzdevumus, piemēram, braukšanas laikā attēlot vērtības ekrānā.

Lai izveidotu un pēc tam izmantotu notikumu, veiciet tālāk norādītās darbības norādītajā secībā:

  1. Izveidojiet notikumu ar Event.

  2. Reģistrējiet funkciju, kas tiek aktivizēta, kad tiek pārraidīts Event izsaucot event objektu ar funkciju kā argumentu.

  3. Broadcast an Event:

    • broadcast – Ieslēdz visas notikuma objektā reģistrētās funkcijas, lai tās darbotos vienlaicīgi.

    • broadcast_and_wait – Iedarbina visas reģistrētās funkcijas notikuma objektā un gaida, līdz tās ir pabeigtas, pirms turpināt.

Izveidot notikumu#

Event  notikums izveido notikuma objektu, kas pārvalda funkciju izpildi atsevišķos pavedienos.

Usage:
Event()

Parametri

Apraksts

Šim konstruktoram nav parametru.

# 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)

def main():
    # Creating the move_event Event
    move_event = Event()
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Funkciju reģistrēšana notikumam#

Reģistrējot funkciju notikumam, tā tiks izpildīta atsevišķā pavedienā, kad notikums tiks pārraidīts.

Usage:
event(callback, args)

Parametri

Apraksts

event

Iepriekš izveidotā notikuma objekta nosaukums.

callback

Iepriekš definēta funkcija, kas jāizpilda, kad notikums tiek pārraidīts.

args

Neobligāti. Argumentu tuple kopa, kas jānodod atzvanīšanas funkcijai.

# 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)

def main():
    move_event = Event()
    # Register the move_square function to the move_event Event
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Notikuma pārraidīšana#

broadcast#

broadcast aktivizē notikumu, startējot visas reģistrētās funkcijas atsevišķos pavedienos. Šī metode neaptur neviena nākamā koda izpildi.

Usage:
event.broadcast()

Parametri

Apraksts

event

Iepriekš izveidotā notikuma objekta nosaukums.

# 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)

def main():
    move_event = Event()
    move_event(move_square)
    # Broadcasting the move_event Event
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

broadcast_and_wait#

broadcast_and_wait sāk notikumu, bet gaida, līdz visas reģistrētās funkcijas ir pabeigušas darbību, pirms turpina ar nākamajām funkcijām.

Usage:
event.broadcast_and_wait()

Parametri

Apraksts

event

Iepriekš izveidotā notikuma objekta nosaukums.

# 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)

def main():
    # 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()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)