Tapahtumat#
Johdanto#
Tapahtumien avulla voit suorittaa funktioita rinnakkain. Sen sijaan, että kutsuisit funktioita peräkkäin, voit rekisteröidä useita funktioita samaan tapahtumaan ja käynnistää 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ä:
Luo tapahtuma käyttämällä
Event.Rekisteröi funktio, joka laukeaa, kun tapahtuma
Eventlähetetään, kutsumalla tapahtumaeventobjektia käyttäen funktiota argumenttina.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()
Parametri |
Kuvaus |
|---|---|
Tällä konstruktorilla ei ole parametreja. |
def move_y():
for index in range(4):
arm.move_inc(0, 100, 0)
# *** Creating the move_event Event ***
move_event = Event()
# Register move_square to move_event
move_event(move_y)
# Call all functions registered to move_event
move_event.broadcast()
Rekisteröi funktiot tapahtumaan#
Kun rekisteröit funktion tapahtumaan, se suoritetaan erillisessä säikeessä, kun tapahtuma lähetetään.
Usage:
event(callback, args)
Parametri |
Kuvaus |
|---|---|
|
Aiemmin luodun tapahtumaobjektin nimi. |
|
Aiemmin määritelty funktio, joka suoritetaan, kun tapahtuma lähetetään. |
|
Valinnainen. Argumenttien tuple välitettäväksi takaisinkutsufunktiolle. |
def move_y():
for index in range(4):
arm.move_inc(0, 100, 0)
# Creating the move_event Event
move_event = Event()
# *** Register move_square to move_event ***
move_event(move_y)
# Call all functions registered to move_event
move_event.broadcast()
Lähetä tapahtuma#
broadcast#
broadcast laukaisee tapahtuman, joka käynnistää kaikki rekisteröidyt funktiot erillisissä säikeissä. Tämä metodi ei keskeytä minkään seuraavien funktioiden suoritusta.
Usage:
event.broadcast()
Parametri |
Kuvaus |
|---|---|
|
Aiemmin luodun tapahtumaobjektin nimi. |
# Build Used: Super Code Base 2.0
def move_y():
for index in range(4):
arm.move_inc(0, 100, 0)
move_event = Event()
move_event(move_y)
# Broadcasting the move_event Event
move_event.broadcast()
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)
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()
Parametri |
Kuvaus |
|---|---|
|
Aiemmin luodun tapahtumaobjektin nimi. |
def move_y():
for index in range(4):
arm.move_inc(0, 100, 0)
# Set up and call the move_square event
move_event = Event()
move_event(move_y)
# Broadcast the move_event Event and wait
move_event.broadcast_and_wait()
signal_tower.set_color(SignalTower.BLUE, SignalTower.BLINK)