Tapahtumat#

Johdanto#

Tapahtumien avulla voit suorittaa funktioita rinnakkain. Sen sijaan, että kutsuisit funktioita peräkkäin, voit rekisteröidä useita funktioita samaan tapahtumaan ja laukaista ne kaikki kerralla. Jokainen rekisteröity funktio suoritetaan omassa säikeessään, jolloin robottisi voi suorittaa useita tehtäviä samanaikaisesti – kuten näyttää arvoja näytöllä ajon aikana.

Voit luoda ja käyttää tapahtumaa noudattamalla seuraavia ohjeita annetussa järjestyksessä:

  1. Luo tapahtuma käyttämällä Event.

  2. Rekisteröi funktio, joka laukeaa, kun tapahtuma Event lähetetään, kutsumalla tapahtumaevent objektia käyttäen funktiota argumenttina.

  3. Broadcast an Event:

    • broadcast – Käynnistää kaikki tapahtumaobjektin rekisteröidyt funktiot samanaikaisesti.

    • broadcast_and_wait – Käynnistää kaikki tapahtumaobjektin rekisteröidyt funktiot ja odottaa niiden päättymistä ennen jatkamista.

Luo tapahtuma#

Event luo tapahtumaobjektin, joka hallitsee funktion suoritusta erillisissä säikeissä.

Usage:
Event()

Parametrit

Kuvaus

Tällä konstruktorilla ei ole parametreja.

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

Rekisteröi funktiot tapahtumaan#

Kun rekisteröit funktion tapahtumaan, se suoritetaan erillisessä säikeessä, kun tapahtuma lähetetään.

Usage:
event(callback, args)

Parametrit

Kuvaus

event

Aiemmin luodun tapahtumaobjektin nimi.

callback

Aiemmin määritelty funktio, joka suoritetaan, kun tapahtuma lähetetään.

args

Valinnainen. Argumenttien tuple välitettäväksi takaisinkutsufunktiolle.

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

Lähetä tapahtuma#

broadcast#

broadcast laukaisee tapahtuman, joka käynnistää kaikki rekisteröidyt funktiot erillisissä säikeissä. Tämä metodi ei keskeytä minkään seuraavan koodin suorittamista.

Usage:
event.broadcast()

Parametrit

Kuvaus

event

Aiemmin luodun tapahtumaobjektin nimi.

# 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 käynnistää tapahtuman, mutta odottaa kaikkien rekisteröityjen funktioiden päättymistä ennen kuin jatkaa seuraavilla funktioilla.

Usage:
event.broadcast_and_wait()

Parametrit

Kuvaus

event

Aiemmin luodun tapahtumaobjektin nimi.

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