বার্তা#
ভূমিকা#
দুটি VEX AIM কোডিং রোবটকে সংযুক্ত করা যায়, যাতে তারা কোনো প্রোজেক্ট চলাকালীন একে অপরের সাথে যোগাযোগ করতে পারে। মেসেজ মেথডের মাধ্যমে একটি রোবট অন্য রোবটকে বার্তা পাঠাতে পারে। একটি বার্তায় শুধু টেক্সট অথবা টেক্সটের সাথে সর্বোচ্চ তিনটি সংখ্যা থাকতে পারে।
প্রাপ্ত বার্তাগুলো একটি ফার্স্ট-ইন, ফার্স্ট-আউট (FIFO) কিউতে সংরক্ষিত হয়। এর মানে হলো, প্রথমে যে বার্তাটি আসে, সেটিই প্রথমে পড়া হয়।
কোনো মেসেজ পড়ার জন্য প্রস্তুত কিনা তা পরীক্ষা করতে is_message_available ব্যবহার করুন। তারপর পরবর্তী টেক্সট মেসেজটি পড়ার জন্য get_message ব্যবহার করুন। যদি মেসেজে সংখ্যাও থাকে, তাহলে টেক্সট এবং সংখ্যা একসাথে পড়ার জন্য get_message_and_data ব্যবহার করুন।
দ্রষ্টব্য: বার্তা পাঠানো এবং গ্রহণ করার জন্য, উভয় রোবটকে অবশ্যই লিঙ্ক করা থাকতে হবে এবং উভয় রোবটেই এমন প্রজেক্ট চালাতে হবে যেগুলোতে মেসেজ মেথড ব্যবহৃত হয়।
নিম্নে সকল পদ্ধতির একটি তালিকা দেওয়া হলো:
করণীয় — রোবটদের মধ্যে বার্তা প্রেরণ করুন।
send_message— লিঙ্ক করা রোবটকে টেক্সট এবং সর্বোচ্চ তিনটি নম্বরে পাঠায়।
গেটার — বার্তা পড়ুন বা সংযোগের অবস্থা পরীক্ষা করুন।
get_message— পরবর্তী প্রাপ্ত টেক্সট মেসেজটি ফেরত দেয়।get_message_and_data— পরবর্তী প্রাপ্ত টেক্সট মেসেজ এবং নম্বরগুলো ফেরত দেয়।is_connected— রোবটটি অন্য কোনো রোবটের সাথে সংযুক্ত আছে কিনা তা ফেরত দেয়।is_message_available— বার্তাটি পড়ার জন্য উপলব্ধ কিনা তা ফেরত দেয়।get_name— লিঙ্ক করা রোবটের নাম ফেরত দেয়।
কলব্যাক — মেসেজ ইভেন্ট ঘটলে ফাংশনগুলো রান করে।
handle_message— একটি নির্দিষ্ট বার্তা পেলে একটি ফাংশন চালায়।connected— যখন রোবটটি অন্য রোবটের সাথে সংযুক্ত থাকে তখন একটি ফাংশন চলে।disconnected— যখন রোবটটি অন্য রোবটের সাথে আর সংযুক্ত থাকে না তখন একটি ফাংশন চালায়।
পদক্ষেপ#
send_message#
send_message লিঙ্ক করা রোবটটিতে টেক্সট এবং সর্বোচ্চ তিনটি সংখ্যা পাঠায়। একটি রোবটে এই পদ্ধতিটি ব্যবহার করুন যখন অন্য রোবটটির কোনো কমান্ড, সিগন্যাল বা সংক্ষিপ্ত তথ্য গ্রহণ করার প্রয়োজন হয়। যখন বার্তাটি একাই যথেষ্ট, তখন শুধু টেক্সট পাঠান। যখন বার্তার সাথে সম্পর্কিত মানের প্রয়োজন হয়, তখন সংখ্যা যোগ করুন, যেমন রোবটটির বর্তমান হেডিং মান সহ “heading” পাঠানো।
প্রাপক রোবটে, একটি বার্তা এসেছে কিনা তা পরীক্ষা করতে is_message_available ব্যবহার করুন। তারপর শুধুমাত্র টেক্সট বার্তার জন্য get_message ব্যবহার করুন, অথবা সংখ্যা সহ বার্তার জন্য get_message_and_data ব্যবহার করুন।
Usage:
robot.link.send_message(message, arg1, arg2, arg3)
প্যারামিটার |
বর্ণনা |
|---|---|
|
সংযুক্ত রোবটকে পাঠানোর জন্য বার্তা। |
|
ঐচ্ছিক। বার্তার সাথে পাঠানোর জন্য একটি নম্বর। |
|
ঐচ্ছিক। বার্তার সাথে পাঠানোর জন্য একটি দ্বিতীয় নম্বর। |
|
ঐচ্ছিক। বার্তার সাথে পাঠানোর জন্য একটি তৃতীয় নম্বর। |
উদাহরণ
রোবট ১ এর জন্য কোড
# Press the screen to tell Robot 2 which way to turn
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("right")
রোবট ২ এর জন্য কোড
# Turn in the direction that Robot 1 sends
robot.screen.print("Robot 2")
while not robot.link.is_message_available():
wait(5, MSEC)
direction = robot.link.get_message()
if direction == "left":
robot.turn_for(LEFT, 90)
elif direction == "right":
robot.turn_for(RIGHT, 90)
# Robot 1: continuously send the current heading to Robot 2
robot.screen.print("Robot 1")
while True:
robot.link.send_message("heading", robot.inertial.get_heading())
wait(50, MSEC)
# Robot 2: turn to match Robot 1's heading
robot.screen.print("Robot 2")
while True:
if robot.link.is_message_available():
message, heading = robot.link.get_message_and_data()
robot.turn_to(heading)
wait(50, MSEC)
গেটার্স#
get_message#
get_message মেসেজ কিউ থেকে পরবর্তী প্রাপ্ত টেক্সট মেসেজটি ফেরত দেয়। লিঙ্ক করা রোবট যখন শুধুমাত্র টেক্সট মেসেজ পাঠায়, তখন গ্রহণকারী রোবটে এই মেথডটি ব্যবহার করুন। একটি সাধারণ ক্রম হলো, প্রথমে is_message_available ব্যবহার করে একটি মেসেজ এসেছে কিনা তা পরীক্ষা করা, তারপর ফেরত আসা টেক্সটটি প্রদর্শন, তুলনা বা অন্য কোনো মেথডে ব্যবহার করার আগে get_message ব্যবহার করা।
অন্য রোবটে শুধুমাত্র টেক্সট মেসেজ পাঠাতে send_message ব্যবহার করুন।
Usage:
robot.link.get_message(timeout)
প্যারামিটার |
বর্ণনা |
|---|---|
|
ঐচ্ছিক। পরবর্তী ধাপে যাওয়ার আগে একটি বার্তার জন্য অপেক্ষা করার সর্বোচ্চ সময় (মিলিসেকেন্ডে)। ডিফল্ট মান হলো |
উদাহরণ
রোবট ১ এর জন্য কোড
# Press the screen to send a message to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("Hello, Robot 2!")
রোবট ২ এর জন্য কোড
# Display the message sent by Robot 1
robot.screen.print("Robot 2")
robot.screen.next_row()
while not robot.link.is_message_available():
wait(5, MSEC)
message = robot.link.get_message()
robot.screen.print(message)
get_message_and_data#
get_message_and_data মেসেজ কিউ থেকে পরবর্তী প্রাপ্ত টেক্সট মেসেজ এবং নম্বরগুলো একটি টাপল হিসেবে ফেরত দেয়। যখন লিঙ্ক করা রোবট এক বা একাধিক নম্বর সহ টেক্সট পাঠায়, তখন গ্রহণকারী রোবটে এই পদ্ধতিটি ব্যবহার করুন। একটি সাধারণ ক্রম হলো, প্রথমে is_message_available ব্যবহার করে একটি মেসেজ এসেছে কিনা তা পরীক্ষা করা, তারপর ফেরত আসা টেক্সট এবং নম্বরগুলো ব্যবহার করার আগে get_message_and_data ব্যবহার করা।
অন্য রোবটে টেক্সট এবং নম্বর একসাথে পাঠাতে send_message ব্যবহার করুন।
Usage:
robot.link.get_message_and_data(timeout)
প্যারামিটার |
বর্ণনা |
|---|---|
|
ঐচ্ছিক। পরবর্তী ধাপে যাওয়ার আগে একটি বার্তার জন্য অপেক্ষা করার সর্বোচ্চ সময় (মিলিসেকেন্ডে)। ডিফল্ট মান হলো |
উদাহরণ
রোবট ১ এর জন্য কোড
# Continuously send the current heading to Robot 2
robot.screen.print("Robot 1")
while True:
robot.link.send_message("heading", robot.inertial.get_heading())
wait(50, MSEC)
রোবট ২ এর জন্য কোড
# Turn to match Robot 1's heading
robot.screen.print("Robot 2")
while True:
if robot.link.is_message_available():
message, heading = robot.link.get_message_and_data()
robot.turn_to(heading)
wait(50, MSEC)
is_connected#
is_connected রিটার্ন করে যে রোবটটি অন্য কোনো রোবটের সাথে সংযুক্ত আছে কিনা। যদি প্রজেক্টে রোবট-টু-রোবট সংযোগ প্রস্তুত কিনা তা পরীক্ষা করার প্রয়োজন হয়, তাহলে মেসেজ পাঠানোর বা অপেক্ষা করার আগে এই মেথডটি ব্যবহার করুন।
True— রোবটটি অন্য একটি রোবটের সাথে সংযুক্ত।False— রোবটটি অন্য কোনো রোবটের সাথে সংযুক্ত নয়।
Usage:
robot.link.is_connected()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# Display whether the robot is connected
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.link.is_connected())
wait(50, MSEC)
is_message_available#
is_message_available মেসেজ কিউতে কোনো মেসেজ অপেক্ষারত আছে কিনা তা ফেরত দেয়। get_message অথবা get_message_and_data এর আগে এই মেথডটি ব্যবহার করুন যাতে গ্রহণকারী রোবট কেবল একটি মেসেজ আসার পরেই তা পড়ার চেষ্টা করে।
True— পড়ার জন্য একটি বার্তা উপলব্ধ আছে।False— পড়ার জন্য কোনো বার্তা উপলব্ধ নেই।
Usage:
robot.link.is_message_available()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
উদাহরণ
রোবট ১ এর জন্য কোড
# Press the screen to send a message to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("Hello, Robot 2!")
রোবট ২ এর জন্য কোড
# Wait until a message is available, then display it
robot.screen.print("Robot 2")
robot.screen.next_row()
while not robot.link.is_message_available():
wait(5, MSEC)
message = robot.link.get_message()
robot.screen.print(message)
get_name#
get_name লিঙ্ক করা রোবটের নাম রিটার্ন করে। মেসেজ পাঠানো বা গ্রহণ করার আগে কোন রোবট সংযুক্ত আছে তা দেখতে এই মেথডটি ব্যবহার করুন। যদি কোনো রোবট লিঙ্ক করা না থাকে, তাহলে এই মেথডটি None রিটার্ন করে।
Usage:
robot.link.get_name()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# Display the name of the linked robot
robot.screen.print(robot.link.get_name())
কলব্যাক#
handle_message#
handle_message এমন একটি ফাংশন রেজিস্টার করে যা রোবট একটি নির্দিষ্ট টেক্সট মেসেজ পেলে রান করে। যখন রোবটকে লুপের মধ্যে মেসেজ কিউ চেক না করে, কোনো পরিচিত মেসেজের স্বয়ংক্রিয়ভাবে উত্তর দিতে হয়, তখন এই মেথডটি ব্যবহার করুন। প্রথমে কলব্যাক ফাংশনটি ডিফাইন করুন, তারপর handle_message এবং যে মেসেজ টেক্সটটির জন্য অপেক্ষা করতে হবে, তা দিয়ে এটিকে রেজিস্টার করুন।
Usage:
robot.link.handle_message(callback, message)
প্যারামিটার |
বর্ণনা |
|---|---|
|
পূর্বে সংজ্ঞায়িত একটি ফাংশন যা প্রাপ্ত বার্তা |
|
আগত বার্তাগুলো যাচাই করার জন্য টেক্সট। |
উদাহরণ
রোবট ১ এর জন্য কোড
# Press the screen to send "smile" to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("smile")
রোবট ২ এর জন্য কোড
# Show a happy emoji when Robot 1 sends "smile"
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.handle_message(robot_smile, "smile")
while True:
wait(50, MSEC)
connected#
connected এমন একটি ফাংশন রেজিস্টার করে যা একটি রোবট অন্য রোবটের সাথে সংযুক্ত হলে চলে। যখন রোবট-টু-রোবট সংযোগ স্থাপন হওয়ার সাথে সাথেই প্রজেক্টটি সাড়া দেবে, তখন এই মেথডটি ব্যবহার করুন। প্রথমে কলব্যাক ফাংশনটি সংজ্ঞায়িত করুন, তারপর connected দিয়ে এটি রেজিস্টার করুন।
Usage:
robot.link.connected(callback, args)
প্যারামিটার |
বর্ণনা |
|---|---|
|
পূর্বে সংজ্ঞায়িত একটি ফাংশন যা রোবটটি অন্য রোবটের সাথে সংযুক্ত হলে চলে। |
|
ঐচ্ছিক। কলব্যাক ফাংশনে পাস করার জন্য আর্গুমেন্ট ধারণকারী একটি টাপল। আরও তথ্যের জন্য প্যারামিটার সহ ফাংশনের ব্যবহার দেখুন। |
# Show a happy emoji when connected
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.connected(robot_smile)
disconnected#
disconnected এমন একটি ফাংশন রেজিস্টার করে যা রোবটটি অন্য কোনো রোবটের সাথে সংযুক্ত না থাকলে চলে। যখন রোবট-টু-রোবট সংযোগ বিচ্ছিন্ন হওয়ার সাথে সাথেই প্রজেক্টটির সাড়া দেওয়া উচিত, তখন এই মেথডটি ব্যবহার করুন। প্রথমে কলব্যাক ফাংশনটি সংজ্ঞায়িত করুন, তারপর disconnected দিয়ে এটি রেজিস্টার করুন।
Usage:
robot.link.disconnected(callback, args)
প্যারামিটার |
বর্ণনা |
|---|---|
|
পূর্বে সংজ্ঞায়িত একটি ফাংশন যা রোবটটি অন্য কোনো রোবটের সাথে সংযুক্ত না থাকলে চলে। |
|
ঐচ্ছিক। কলব্যাক ফাংশনে পাস করার জন্য আর্গুমেন্ট ধারণকারী একটি টাপল। আরও তথ্যের জন্য প্যারামিটার সহ ফাংশনের ব্যবহার দেখুন। |
# Show a sad emoji when disconnected
def robot_sad():
robot.screen.show_emoji(SAD)
robot.link.disconnected(robot_sad)