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

Parametre

Tanım

Bu yapıcı fonksiyonun parametresi yoktur.

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

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)

Parametre

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.

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

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 işlevlerin yürütülmesini duraklatmaz.

Usage:
event.broadcast()

Parametre

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)

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

Parametre

Tanım

event

Daha önce oluşturulan etkinlik nesnesinin adı.

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)