Εκδηλώσεις#

Εισαγωγή#

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

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

  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):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.turn_for(RIGHT, 90)

# Creating the move_event Event
move_event = Event()
move_event(move_square)
move_event.broadcast()
robot.led.glow(GREEN)

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

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

Usage:
event(callback, args)

Παράμετροι

Περιγραφή

event

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

callback

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

args

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

def move_square():
    for index in range(4):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.turn_for(RIGHT, 90)

move_event = Event()
# Register the move_square function to the move_event Event
move_event(move_square)
move_event.broadcast()
robot.led.glow(GREEN)

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

broadcast#

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

Usage:
event.broadcast()

Παράμετροι

Περιγραφή

event

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

def move_square():
    for index in range(4):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.turn_for(RIGHT, 90)

move_event = Event()
move_event(move_square)
# Broadcasting the move_event Event
move_event.broadcast()
robot.led.glow(GREEN)

broadcast_and_wait#

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

Usage:
event.broadcast_and_wait()

Παράμετροι

Περιγραφή

event

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

def move_square():
    for index in range(4):
        robot.drive_for(FORWARD, 1, STEPS)
        robot.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()
robot.led.glow(GREEN)