कार्यक्रम#
परिचय#
इवेंट्स आपको फंक्शन्स को समानांतर रूप से चलाने की सुविधा देते हैं। फंक्शन्स को क्रमानुसार कॉल करने के बजाय, आप एक इवेंट में कई फंक्शन्स को रजिस्टर कर सकते हैं और उन सभी को एक साथ ट्रिगर कर सकते हैं। प्रत्येक रजिस्टर्ड फंक्शन अपने स्वयं के थ्रेड में चलता है, जिससे आपका रोबोट एक साथ कई कार्य कर सकता है—जैसे कि चलते समय स्क्रीन पर मान प्रदर्शित करना।
किसी इवेंट को बनाने और फिर उसका उपयोग करने के लिए, इन चरणों का क्रमवार पालन करें:
Eventके साथ इवेंट बनाएं।जब
Eventप्रसारित होता है तो ट्रिगर करने के लिए एक फ़ंक्शन को रजिस्टर करेंeventऑब्जेक्ट को फ़ंक्शन को तर्क के रूप में कॉल करके।Broadcast an
Event:broadcast— एक इवेंट ऑब्जेक्ट में सभी पंजीकृत कार्यों को एक साथ चलाने के लिए ट्रिगर करता है।broadcast_and_wait— एक इवेंट ऑब्जेक्ट में सभी पंजीकृत कार्यों को ट्रिगर करता है और जारी रखने से पहले उनके समाप्त होने की प्रतीक्षा करता है।
एक इवेंट बनाएं#
Event एक इवेंट ऑब्जेक्ट बनाता है जो अलग-अलग थ्रेड्स में फ़ंक्शन निष्पादन का प्रबंधन करता है।
Usage:
Event()
पैरामीटर |
विवरण |
|---|---|
इस कंस्ट्रक्टर में कोई पैरामीटर नहीं है। |
# Blink the screen while moving forward
# Create move_event as an Event object
move_event = Event()
def blink_screen():
while True:
brain.screen.clear_screen(Color.RED)
wait(0.5, SECONDS)
brain.screen.clear_screen()
wait(0.5, SECONDS)
move_event(blink_screen)
move_event.broadcast()
drivetrain.drive(FORWARD)
किसी कार्यक्रम में कार्यों को पंजीकृत करें#
जब आप किसी फ़ंक्शन को किसी इवेंट के लिए रजिस्टर करते हैं, तो इवेंट के ब्रॉडकास्ट होने पर वह एक अलग थ्रेड में एग्जीक्यूट होगा।
Usage:
event(callback, args)
पैरामीटर |
विवरण |
|---|---|
|
पहले से बनाए गए इवेंट ऑब्जेक्ट का नाम। |
|
किसी घटना के प्रसारित होने पर निष्पादित होने वाला पूर्व-परिभाषित फ़ंक्शन। |
|
वैकल्पिक। कॉलबैक फ़ंक्शन को पास करने के लिए तर्कों का एक टपल। |
# Blink the screen while turning
move_event = Event()
def blink_screen():
while True:
brain.screen.clear_screen(Color.RED)
wait(0.5, SECONDS)
brain.screen.clear_screen()
wait(0.5, SECONDS)
def turning():
drivetrain.turn(RIGHT)
# Register multiple functions to the Event object
move_event(blink_screen)
move_event(turning)
move_event.broadcast()
# Move in a specified direction
move_event = Event()
def move_distance(movement_angle):
drivetrain.turn_for(RIGHT, movement_angle, DEGREES)
drivetrain.drive_for(FORWARD, 100, MM)
# Change the parameter to modify how the robot moves
move_event(move_distance, (180,))
move_event.broadcast()
किसी कार्यक्रम का प्रसारण करें#
broadcast#
broadcast एक इवेंट को ट्रिगर करता है, जिससे सभी पंजीकृत फ़ंक्शन अलग-अलग थ्रेड्स में शुरू हो जाते हैं। यह विधि बाद के किसी भी फ़ंक्शन के निष्पादन को नहीं रोकती है।
Usage:
event.broadcast()
पैरामीटर |
विवरण |
|---|---|
|
पहले से बनाए गए इवेंट ऑब्जेक्ट का नाम। |
# Blink the screen while moving forward
# Create move_event as an Event object
move_event = Event()
def blink_screen():
while True:
brain.screen.clear_screen(Color.RED)
wait(0.5, SECONDS)
brain.screen.clear_screen()
wait(0.5, SECONDS)
move_event(blink_screen)
move_event.broadcast()
drivetrain.drive(FORWARD)
broadcast_and_wait#
broadcast_and_wait एक इवेंट शुरू करता है लेकिन बाद के कार्यों के साथ जारी रखने से पहले सभी पंजीकृत कार्यों के समाप्त होने की प्रतीक्षा करता है।
Usage:
event.broadcast_and_wait()
पैरामीटर |
विवरण |
|---|---|
|
पहले से बनाए गए इवेंट ऑब्जेक्ट का नाम। |
# Move after the screen is pressed
move_event = Event()
def move_and_turn():
drivetrain.drive_for(FORWARD, 150, MM)
drivetrain.turn_for(RIGHT, 90)
move_event(move_and_turn)
while True:
if brain.buttonCheck.pressing():
move_event.broadcast_and_wait()
break
brain.screen.print("Movement done.")