कार्यक्रम#

परिचय#

इवेंट ऑब्जेक्ट का उपयोग करके आप फ़ंक्शंस को समानांतर रूप से चला सकते हैं। फ़ंक्शंस या थ्रेड्स को एक के बाद एक कॉल करने के बजाय, इवेंट्स आपको फ़ंक्शंस को रजिस्टर करने और फिर उन्हें एक साथ ट्रिगर करने की सुविधा देते हैं। प्रत्येक रजिस्टर्ड फ़ंक्शन अपने स्वयं के थ्रेड में चलता है, इसलिए आपका रोबोट एक ही समय में कई काम कर सकता है—जैसे टचएलईडी को ब्लिंक करना और चलना।

नीचे उपलब्ध विधियों और कंस्ट्रक्टरों की सूची दी गई है:

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