Evenementen#
Invoering#
Met gebeurtenissen kunt u functies parallel uitvoeren. In plaats van functies sequentieel aan te roepen, kunt u meerdere functies aan een gebeurtenis koppelen en ze allemaal tegelijk activeren. Elke geregistreerde functie wordt in een eigen thread uitgevoerd, waardoor uw robot meerdere taken tegelijk kan uitvoeren, zoals het weergeven van waarden op het scherm tijdens het rijden.
Om een evenement aan te maken en te gebruiken, volg je deze stappen in de juiste volgorde:
Maak het evenement aan met
Event.Register a function to trigger when the
Eventis broadcast by calling theeventobject with the function as an argument.Broadcast an
Event:broadcast– Activeert alle geregistreerde functies in een gebeurtenisobject om gelijktijdig te worden uitgevoerd.broadcast_and_wait– Activeert alle geregistreerde functies in een gebeurtenisobject en wacht tot ze klaar zijn voordat verder wordt gegaan.
Een evenement aanmaken#
Event creëert een gebeurtenisobject dat de uitvoering van functies in afzonderlijke threads beheert.
Usage:
Event()
Parameter |
Beschrijving |
|---|---|
Deze constructor heeft geen parameters. |
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()
Functies registreren voor een evenement#
Wanneer je een functie aan een gebeurtenis koppelt, wordt deze in een aparte thread uitgevoerd zodra de gebeurtenis wordt uitgezonden.
Usage:
event(callback, args)
Parameter |
Beschrijving |
|---|---|
|
De naam van het eerder aangemaakte gebeurtenisobject. |
|
Een vooraf gedefinieerde functie die wordt uitgevoerd wanneer de gebeurtenis wordt uitgezonden. |
|
Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. |
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()
Een evenement uitzenden#
broadcast#
broadcast activeert een gebeurtenis, waardoor alle geregistreerde functies in aparte threads worden gestart. Deze methode onderbreekt de uitvoering van eventuele daaropvolgende functies niet.
Usage:
event.broadcast()
Parameter |
Beschrijving |
|---|---|
|
De naam van het eerder aangemaakte gebeurtenisobject. |
# 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 start een gebeurtenis, maar wacht tot alle geregistreerde functies zijn voltooid voordat de volgende functies worden uitgevoerd.
Usage:
event.broadcast_and_wait()
Parameter |
Beschrijving |
|---|---|
|
De naam van het eerder aangemaakte gebeurtenisobject. |
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)