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.

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)

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.

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)

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ı.

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 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ı.

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)