Acara#
Perkenalan#
Event memungkinkan Anda menjalankan fungsi secara paralel dengan menggunakan objek event. Alih-alih memanggil fungsi atau thread satu per satu, event memungkinkan Anda mendaftarkan fungsi dan kemudian memicunya sekaligus. Setiap fungsi yang terdaftar berjalan dalam thread-nya sendiri, sehingga robot Anda dapat melakukan banyak hal—seperti menyalakan dan mematikan TouchLED dan bergerak—secara bersamaan.
Berikut adalah daftar metode dan konstruktor yang tersedia:
Event– Membuat objek event baru.broadcast– Memicu semua fungsi terdaftar dalam objek peristiwa untuk berjalan secara paralel.broadcast_and_wait– Memicu semua fungsi terdaftar dalam objek peristiwa dan menunggu hingga selesai sebelum melanjutkan.event– Mendaftarkan fungsi ke objek event, opsional dengan argumen.
Create an Event Object#
Event membuat objek event yang mengelola eksekusi fungsi dalam thread terpisah.
Usage:
Event()
Parameter |
Keterangan |
|---|---|
Konstruktor ini tidak memiliki parameter. |
def dash_lines():
# Move the pen up and down
while True:
pen.move(DOWN)
wait(0.5, SECONDS)
pen.move(UP)
wait(0.5, SECONDS)
def main():
# Set the event
move_event = Event()
move_event(dash_lines)
# Draw the dash line while driving forward
move_event.broadcast()
drivetrain.drive_for(FORWARD, 1000, MM)
# VR threads — Do not delete
vr_thread(main)
Broadcast#
broadcast memicu suatu kejadian, memulai semua fungsi yang terdaftar dalam thread terpisah. Metode ini tidak menghentikan eksekusi fungsi selanjutnya.
Usage:
my_event.broadcast()
Parameter |
Keterangan |
|---|---|
|
Nama objek event yang telah dibuat sebelumnya. |
def dash_lines():
# Move the pen up and down
while True:
pen.move(DOWN)
wait(0.5, SECONDS)
pen.move(UP)
wait(0.5, SECONDS)
def main():
# Set the event
move_event = Event()
move_event(dash_lines)
# Draw the dash line while driving forward
move_event.broadcast()
drivetrain.drive_for(FORWARD, 1000, MM)
# VR threads — Do not delete
vr_thread(main)
Broadcast and wait#
broadcast_and_wait memulai sebuah event tetapi menunggu semua fungsi yang terdaftar selesai sebelum melanjutkan ke fungsi berikutnya.
Usage:
my_event.broadcast_and_wait()
Parameter |
Keterangan |
|---|---|
|
Nama objek event yang telah dibuat sebelumnya. |
def move_and_turn():
# Drive forward and turn
drivetrain.drive_for(FORWARD, 150, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
def main():
# Wait for the event to finish after 3 seconds
move_event = Event()
move_event(move_and_turn)
while True:
if brain.timer_time(SECONDS) > 3:
move_event.broadcast_and_wait()
break
wait(5, MSEC)
brain.print("Movement done.")
# VR threads — Do not delete
vr_thread(main)
Register Functions to an Event#
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 |
|---|---|
|
Nama objek event yang telah dibuat sebelumnya. |
|
Fungsi yang telah didefinisikan sebelumnya untuk dieksekusi ketika peristiwa tersebut disiarkan. |
def dash_lines():
# Move the pen up and down
while True:
pen.move(DOWN)
wait(0.5, SECONDS)
pen.move(UP)
wait(0.5, SECONDS)
def main():
# Set and call the event and start driving
move_event = Event()
move_event(dash_lines)
move_event.broadcast()
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)