Acara#

Perkenalan#

Event memungkinkan Anda menjalankan fungsi secara paralel. Alih-alih memanggil fungsi secara berurutan, Anda dapat mendaftarkan beberapa fungsi ke suatu event dan memicunya sekaligus. Setiap fungsi yang terdaftar berjalan dalam thread-nya sendiri, memungkinkan robot Anda untuk melakukan banyak tugas secara bersamaan—seperti menampilkan nilai di layar sambil mengemudi.

Untuk membuat dan kemudian menggunakan sebuah Acara, ikuti langkah-langkah berikut secara berurutan:

  1. Buat acara dengan 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 – Memicu semua fungsi terdaftar dalam objek peristiwa untuk berjalan secara bersamaan.

    • broadcast_and_wait – Memicu semua fungsi terdaftar dalam objek peristiwa dan menunggu hingga selesai sebelum melanjutkan.

Buat Acara#

Event membuat objek event yang mengelola eksekusi fungsi dalam thread terpisah.

Usage:
Event()

Parameter

Keterangan

Konstruktor ini tidak memiliki parameter.

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)

Mendaftarkan Fungsi ke Suatu Acara#

Saat Anda mendaftarkan sebuah fungsi ke suatu event, fungsi tersebut akan dieksekusi dalam thread terpisah ketika event tersebut disiarkan.

Usage:
event(callback, args)

Parameter

Keterangan

event

Nama objek event yang telah dibuat sebelumnya.

callback

Fungsi yang telah didefinisikan sebelumnya untuk dieksekusi ketika peristiwa tersebut disiarkan.

args

Opsional. Sebuah tuple argumen untuk diteruskan ke fungsi callback.

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)

Siarkan Acara#

broadcast#

broadcast memicu suatu kejadian, memulai semua fungsi yang terdaftar dalam thread terpisah. Metode ini tidak menghentikan eksekusi kode selanjutnya.

Usage:
event.broadcast()

Parameter

Keterangan

event

Nama objek event yang telah dibuat sebelumnya.

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 memulai sebuah event tetapi menunggu semua fungsi yang terdaftar selesai sebelum melanjutkan ke fungsi berikutnya.

Usage:
event.broadcast_and_wait()

Parameter

Keterangan

event

Nama objek event yang telah dibuat sebelumnya.

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)