الفعاليات#

مقدمة#

تتيح لك الأحداث تشغيل الدوال بالتوازي. فبدلاً من استدعاء الدوال بالتتابع، يمكنك تسجيل عدة دوال في حدث واحد وتشغيلها جميعاً دفعة واحدة. تعمل كل دالة مسجلة في سلسلة عمليات خاصة بها، مما يمكّن الروبوت من أداء مهام متعددة في وقت واحد، مثل عرض القيم على الشاشة أثناء القيادة.

لإنشاء حدث واستخدامه، اتبع الخطوات التالية بالترتيب:

  1. أنشئ الحدث باستخدام Event.

  2. قم بتسجيل دالة لتشغيلها عند بث Event عن طريق استدعاء event object مع الدالة كوسيط.

  3. Broadcast an Event:

    • broadcast – يقوم بتشغيل جميع الوظائف المسجلة في كائن الحدث بشكل متزامن.

    • broadcast_and_wait – يقوم بتشغيل جميع الوظائف المسجلة في كائن الحدث وينتظر حتى تنتهي قبل المتابعة.

إنشاء حدث#

Event بإنشاء كائن حدث يدير تنفيذ الوظائف في سلاسل عمليات منفصلة.

Usage:
Event()

حدود

وصف

لا يحتوي هذا المُنشئ على أي معلمات.

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

تسجيل الوظائف في حدث#

عند تسجيل دالة لحدث ما، سيتم تنفيذها في سلسلة رسائل منفصلة عند بث الحدث.

Usage:
event(callback, args)

حدود

وصف

event

اسم كائن الحدث الذي تم إنشاؤه مسبقًا.

callback

دالة مُعرَّفة مسبقاً لتنفيذها عند بث الحدث.

args

Optional. A tuple of arguments to pass to the callback function.

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

بث حدث#

broadcast#

يؤدي بث broadcast حدث، مما يبدأ تشغيل جميع الدوال المسجلة في سلاسل عمليات منفصلة. لا توقف هذه الطريقة تنفيذ أي كود لاحق.

Usage:
event.broadcast()

حدود

وصف

event

اسم كائن الحدث الذي تم إنشاؤه مسبقًا.

# 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 يبدأ حدثًا ولكنه ينتظر حتى تنتهي جميع الوظائف المسجلة قبل المتابعة مع الوظائف اللاحقة.

Usage:
event.broadcast_and_wait()

حدود

وصف

event

اسم كائن الحدث الذي تم إنشاؤه مسبقًا.

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