Εκδηλώσεις#

Εισαγωγή#

Τα συμβάντα σάς επιτρέπουν να εκτελείτε συναρτήσεις παράλληλα. Αντί να καλείτε συναρτήσεις διαδοχικά, μπορείτε να καταχωρίσετε πολλές συναρτήσεις σε ένα συμβάν και να τις ενεργοποιήσετε όλες ταυτόχρονα. Κάθε καταχωρημένη συνάρτηση εκτελείται στο δικό της νήμα, επιτρέποντας στο ρομπότ σας να εκτελεί πολλαπλές εργασίες ταυτόχρονα, όπως την εμφάνιση τιμών στην οθόνη κατά την οδήγηση.

Για να δημιουργήσετε και στη συνέχεια να χρησιμοποιήσετε ένα Συμβάν, ακολουθήστε τα παρακάτω βήματα με τη σειρά:

  1. Δημιουργήστε το συμβάν με Event.

  2. Register a function to trigger when the Event is broadcast by calling the event object with the function as an argument.

  3. Broadcast an Event:

    • broadcast – Ενεργοποιεί όλες τις καταχωρημένες συναρτήσεις σε ένα αντικείμενο συμβάντος ώστε να εκτελούνται ταυτόχρονα.

    • broadcast_and_wait – Ενεργοποιεί όλες τις καταχωρημένες συναρτήσεις σε ένα αντικείμενο συμβάντος και περιμένει να ολοκληρωθούν πριν συνεχίσει.

Δημιουργήστε ένα συμβάν#

Event δημιουργεί ένα αντικείμενο συμβάντος που διαχειρίζεται την εκτέλεση συνάρτησης σε ξεχωριστά νήματα.

Usage:
Event()

Παράμετρος

Περιγραφή

Αυτός ο κατασκευαστής δεν έχει παραμέτρους.

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

Εγγραφή συναρτήσεων σε ένα συμβάν#

Όταν καταχωρείτε μια συνάρτηση σε ένα συμβάν, αυτή θα εκτελεστεί σε ξεχωριστό νήμα κατά την μετάδοση του συμβάντος.

Usage:
event(callback, args)

Παράμετρος

Περιγραφή

event

Το όνομα του αντικειμένου συμβάντος που δημιουργήθηκε προηγουμένως.

callback

Μια εκ των προτέρων καθορισμένη συνάρτηση που θα εκτελεστεί κατά την μετάδοση του συμβάντος.

args

Προαιρετικό. Μια πλειάδα ορισμάτων που θα διαβιβαστεί στη συνάρτηση επανάκλησης.

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

Μετάδοση ενός συμβάντος#

broadcast#

Η εκπομπή broadcast ενεργοποιεί ένα συμβάν, ξεκινώντας όλες τις καταχωρημένες συναρτήσεις σε ξεχωριστά νήματα. Αυτή η μέθοδος δεν διακόπτει την εκτέλεση οποιωνδήποτε επόμενων συναρτήσεων.

Usage:
event.broadcast()

Παράμετρος

Περιγραφή

event

Το όνομα του αντικειμένου συμβάντος που δημιουργήθηκε προηγουμένως.

# 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 ξεκινά ένα συμβάν αλλά περιμένει να ολοκληρωθούν όλες οι καταχωρημένες συναρτήσεις πριν συνεχίσει με τις επόμενες συναρτήσεις.

Usage:
event.broadcast_and_wait()

Παράμετρος

Περιγραφή

event

Το όνομα του αντικειμένου συμβάντος που δημιουργήθηκε προηγουμένως.

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)