Olaylar#

giriiş#

Olaylar, fonksiyonları paralel olarak çalıştırmanıza olanak tanır. Fonksiyonları sırayla çağırmak yerine, bir olaya birden fazla fonksiyon kaydedebilir ve hepsini aynı anda tetikleyebilirsiniz. Kaydedilen her fonksiyon kendi iş parçacığında çalışır ve robotunuzun aynı anda birden fazla görevi yerine getirmesini sağlar; örneğin, sürüş sırasında ekranda değerleri görüntülemek gibi.

Bir etkinlik oluşturmak ve ardından kullanmak için şu adımları sırasıyla izleyin:

  1. Event ile olayı oluşturun.

  2. Event nesnesi fonksiyonu argüman olarak çağırarak event yayınlandığında tetiklenecek bir fonksiyon kaydedin.

  3. Broadcast an Event:

    • broadcast – Bir olay nesnesinde kayıtlı tüm işlevlerin eş zamanlı olarak çalışmasını tetikler.

    • broadcast_and_wait – Bir olay nesnesinde kayıtlı tüm işlevleri tetikler ve devam etmeden önce bunların bitmesini bekler.

Etkinlik Oluştur#

Event ayrı iş parçacıklarında fonksiyon yürütmeyi yöneten bir olay nesnesi oluşturur.

Usage:
Event()

Parametreler

Tanım

Bu yapıcı fonksiyonun parametresi yoktur.

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

Bir Etkinliğe Fonksiyonları Kaydet#

Bir fonksiyonu bir olaya kaydettiğinizde, olay yayınlandığında ayrı bir iş parçacığında çalıştırılır.

Usage:
event(callback, args)

Parametreler

Tanım

event

Daha önce oluşturulan etkinlik nesnesinin adı.

callback

Olay yayınlandığında yürütülecek önceden tanımlanmış bir fonksiyon.

args

İsteğe bağlı. Geri çağrı fonksiyonuna iletilecek argümanların tuple.

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

Bir Etkinlik Yayınla#

broadcast#

broadcast , bir olayı tetikler ve kayıtlı tüm işlevleri ayrı iş parçacıklarında başlatır. Bu yöntem, sonraki kodların yürütülmesini duraklatmaz.

Usage:
event.broadcast()

Parametreler

Tanım

event

Daha önce oluşturulan etkinlik nesnesinin adı.

# 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 bir olayı başlatır ancak sonraki işlevlere devam etmeden önce kayıtlı tüm işlevlerin bitmesini bekler.

Usage:
event.broadcast_and_wait()

Parametreler

Tanım

event

Daha önce oluşturulan etkinlik nesnesinin adı.

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