ইভেন্টগুলি#

ভূমিকা#

ইভেন্ট অবজেক্ট ব্যবহার করে আপনি ফাংশনগুলোকে সমান্তরালভাবে চালাতে পারেন। একটির পর একটি ফাংশন বা থ্রেড কল করার পরিবর্তে, ইভেন্ট আপনাকে ফাংশন রেজিস্টার করতে এবং তারপর সেগুলোকে একসাথে ট্রিগার করতে দেয়। প্রতিটি রেজিস্টার করা ফাংশন তার নিজস্ব থ্রেডে চলে, ফলে আপনার রোবট একই সময়ে একাধিক কাজ করতে পারে—যেমন টাচএলইডি জ্বালানো-নেভানো এবং চালানো।

নিম্নে উপলব্ধ মেথড এবং কনস্ট্রাক্টরগুলোর একটি তালিকা দেওয়া হলো:

  • Event – একটি নতুন ইভেন্ট অবজেক্ট তৈরি করে।

  • broadcast – একটি ইভেন্ট অবজেক্টে নিবন্ধিত সমস্ত ফাংশনকে সমান্তরালভাবে চালানোর জন্য ট্রিগার করে।

  • broadcast_and_wait – একটি ইভেন্ট অবজেক্টে নিবন্ধিত সমস্ত ফাংশন ট্রিগার করে এবং চালিয়ে যাওয়ার আগে সেগুলি শেষ হওয়ার জন্য অপেক্ষা করে।

  • event – ইভেন্ট অবজেক্টে একটি ফাংশন নিবন্ধন করে, ঐচ্ছিকভাবে আর্গুমেন্ট সহ।

Create an Event Object#

Event একটি ইভেন্ট অবজেক্ট তৈরি করে যা পৃথক থ্রেডে ফাংশন নির্বাহ পরিচালনা করে।

Usage:
Event()

প্যারামিটার

বর্ণনা

এই কনস্ট্রাক্টরের কোনো প্যারামিটার নেই।

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 একটি ইভেন্ট ট্রিগার করে, যা সমস্ত নিবন্ধিত ফাংশনকে পৃথক থ্রেডে চালু করে। এই পদ্ধতিটি পরবর্তী কোনো ফাংশনের নির্বাহ থামায় না।

Usage:
my_event.broadcast()

প্যারামিটার

বর্ণনা

event

পূর্বে তৈরি করা ইভেন্ট অবজেক্টটির নাম।

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 একটি ইভেন্ট শুরু করে, কিন্তু পরবর্তী ফাংশনগুলিতে যাওয়ার আগে সমস্ত নিবন্ধিত ফাংশন শেষ হওয়ার জন্য অপেক্ষা করে।

Usage:
my_event.broadcast_and_wait()

প্যারামিটার

বর্ণনা

event

পূর্বে তৈরি করা ইভেন্ট অবজেক্টটির নাম।

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#

যখন আপনি কোনো ইভেন্টে একটি ফাংশন রেজিস্টার করেন, তখন ইভেন্টটি ব্রডকাস্ট হলে সেটি একটি আলাদা থ্রেডে এক্সিকিউট হবে।

Usage:
event(callback, args)

প্যারামিটার

বর্ণনা

event

পূর্বে তৈরি করা ইভেন্ট অবজেক্টটির নাম।

callback

ইভেন্টটি সম্প্রচারিত হলে কার্যকর করার জন্য পূর্বে সংজ্ঞায়িত একটি ফাংশন।

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)