• VEXcode Robotics Logo VEX Robotics Logo
  • VEX API Home Button VEX API Home Button
  • VEX 123 logo in purple VEX 123 logo in white
  • VEX GO logo in lime green VEX GO logo in white
  • VEXcode AIM logo in blue VEXcode AIM logo in white
  • VEX IQ logo in blue VEX IQ logo in white
  • VEX EXP logo in red VEX EXP logo in white
  • VEX V5 logo in red VEX V5 logo in white
  • VEX CTE logo in green VEX CTE logo in white
  • VEX AIR logo in orange VEX AIR logo in white
  • VEXcode VR logo in gold VEXcode VR logo in white
মূল বিষয়বস্তুতে যান
Ctrl+K

< Back to Platform Select

  • VEX V5
  • VEX V5 API রেফারেন্স
  • VEXlink
  • সিরিয়াললিঙ্ক
বাংলা
  • English
  • العربية
  • Česky
  • Deutsch
  • Ελληνικά
  • Español
  • Español Latinoamericano
  • Suomi
  • Français
  • Gaeilge
  • हिंदी
  • Magyar
  • Bahasa Indonesia
  • 日本語
  • 한국어
  • Lietuvių
  • Latviešu
  • മലയാളം
  • Nederlands
  • Polski
  • Português
  • Русский
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • 简体中文
  • 繁體中文
  • VEXcode Robotics Logo

বিভাগ নেভিগেশন

  • ব্লক
  • Python
    • ড্রাইভট্রেন
    • গতি
    • দৃষ্টি
    • স্ক্রিন
    • নিয়ন্ত্রক
    • সংবেদন
    • জড়তা
    • ৩-তারের ডিভাইস
    • নিউম্যাটিক্স
    • মস্তিষ্ক
    • শব্দ
    • এসডি কার্ড
    • VEXlink
      • মেসেজলিঙ্ক
      • সিরিয়াললিঙ্ক
    • কনসোল
    • যুক্তি
    • ৬-অক্ষ বাহু
    • চুম্বক
    • প্রতিযোগিতা
    • মাইক্রোপাইথন লাইব্রেরি
  • C++
  • VEXcode টিউটোরিয়াল

প্ল্যাটফর্ম নেভিগেশন

  • VEX 123 logo in purple VEX 123 logo in white
  • VEX GO logo in lime green VEX GO logo in white
  • VEXcode AIM logo in blue VEXcode AIM logo in white
  • VEX IQ logo in blue VEX IQ logo in white
  • VEX EXP logo in red VEX EXP logo in white
  • VEX V5 logo in red VEX V5 logo in white
  • VEX CTE logo in green VEX CTE logo in white
  • VEX AIR logo in orange VEX AIR logo in white
  • VEXcode VR logo in gold VEXcode VR logo in white

সিরিয়াললিঙ্ক#

  • ভূমিকা

  • একটি লিঙ্ক তৈরি করুন

  • উপলব্ধ পদ্ধতি

    • সংযুক্ত আছে

    • পাঠান

    • গ্রহণ করুন

    • প্রাপ্ত

ভূমিকা#

সিরিয়াললিঙ্ক দুটি V5 ব্রেইনকে VEX লিঙ্কের মাধ্যমে সরাসরি সিরিয়াল ডেটা পাঠানো ও গ্রহণ করার সুযোগ দেয়। লেবেলযুক্ত বার্তার পরিবর্তে, সিরিয়াললিঙ্ক একটি বাফার (একটি স্ট্রিং বা একটি বাইটঅ্যারে) প্রেরণ করে। এটি উন্নত রোবট-টু-রোবট যোগাযোগের জন্য এটিকে উপযোগী করে তোলে, যেমন সেন্সর ডেটা স্ট্রিমিং, কাস্টম প্যাকেট ফরম্যাট পাঠানো, অথবা বাইটের উপর ভিত্তি করে নিজস্ব প্রোটোকল তৈরি করা।

send এর প্রতিটি ব্যবহার লিঙ্ক করা V5 ব্রেইনের রিসিভ বাফারে ডেটা যোগ করে। ডেটা আসার ক্রমানুসারে পড়া হয় (ফার্স্ট-ইন, ফার্স্ট-আউট)। যদি অন্য V5 ব্রেইন receive ব্যবহার করার আগে একাধিক বাফার পাঠানো হয়, তাহলে সেগুলি কিউতে থেকে যায় এবং পাঠানোর ক্রমানুসারে এক এক করে ফেরত আসে। যেহেতু ডেটা কিউতে জমা হতে পারে, তাই প্রতিটি লুপে বারবার বড় বাফার পাঠালে ব্যাকলগ তৈরি হতে পারে; সময়-সংবেদনশীল লিঙ্কগুলির জন্য, আপনার যা প্রয়োজন শুধু তাই পাঠান।

গুরুত্বপূর্ণ: উভয় রোবটকে অবশ্যই একই সময়ে SerialLink ব্যবহার করে এমন প্রজেক্ট চালাতে হবে, অন্যথায় কোনো ডেটা পাঠানো বা গ্রহণ করা যাবে না।

এই পৃষ্ঠায় উদাহরণ link নাম হিসেবে SerialLink ব্যবহার করা হয়েছে। প্রয়োজন অনুযায়ী এটিকে আপনার নিজস্ব কনফিগার করা নাম দিয়ে প্রতিস্থাপন করুন।

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

  • is_linked – এই ব্রেইনটি তার জোড়া ব্রেইনের সাথে সক্রিয়ভাবে সংযুক্ত আছে কিনা তা ফেরত দেয়।

  • send – জোড়া ব্রেইনে একটি সংক্ষিপ্ত বার্তা পাঠায় (ঐচ্ছিক int/float ডেটা সহ)।

  • receive – পরবর্তী আগত বার্তার জন্য অপেক্ষা করে এবং তা ফেরত পাঠায়।

  • received – যখনই একটি নতুন বার্তা পাওয়া যাবে তখন কল করার জন্য একটি ফাংশন নিবন্ধন করে।

একটি লিঙ্ক তৈরি করুন#

উভয় V5 ব্রেইনে একটি সিরিয়াললিঙ্ক তৈরি করুন, যাতে তাদের মধ্যে একটি যোগাযোগ চ্যানেল স্থাপন করা যায়—হয় V5 রোবট রেডিওর মাধ্যমে তারবিহীনভাবে অথবা একটি তারযুক্ত স্মার্ট কেবলের মাধ্যমে—এবং রোবটগুলো একে অপরের কাছে র সিরিয়াল ডেটা পাঠাতে পারে।

SerialLink(smartport, name, linktype, wired)

প্যারামিটার

বর্ণনা

smartport

এই লিঙ্কের জন্য ব্যবহৃত স্মার্ট পোর্ট—যে পোর্টে V5 রোবট রেডিও সংযুক্ত থাকে (ওয়্যারলেস) অথবা স্মার্ট ক্যাবলটি প্লাগ করা থাকে (ওয়্যারড)। এটিকে Ports.PORTx হিসাবে লেখা হয়, যেখানে x হলো পোর্ট নম্বর।

name

এই লিঙ্কটিকে স্ট্রিং হিসেবে যে অনন্য নামটি দেওয়া হবে।
দ্রষ্টব্য: এই নামটি একটি অনন্য আইডি তৈরি করার জন্য যথেষ্ট দীর্ঘ হওয়া উচিত, যাতে এটি ভুলবশত অন্য কোনো দলের লিঙ্কের সাথে মিলে না যায়।

linktype

এই ব্রেইনটি এই লিঙ্ক পেয়ারের জন্য যে ভূমিকা পালন করবে। প্রতিটি পেয়ারে অবশ্যই একজন ম্যানেজার এবং একজন ওয়ার্কার থাকতে হবে:

  • VexlinkType.MANAGER – যে রোবট বেশি বা বড় মেসেজ পাঠাবে তার জন্য ব্যবহার করুন। ম্যানেজারদের আউটবাউন্ড ব্যান্ডউইথ বেশি (~১০৪০ বাইট/সেকেন্ড)।
  • VexlinkType.WORKER – যে রোবট কম বা ছোট মেসেজ পাঠাবে তার জন্য ব্যবহার করুন। ওয়ার্কারদের আউটবাউন্ড ব্যান্ডউইথ কম (~৫২০ বাইট/সেকেন্ড)।

wired

ঐচ্ছিক। এই সংযোগটি তারযুক্ত নাকি তারবিহীন:

  • True – ভি৫ ব্রেইনগুলো একটি স্মার্ট কেবলের মাধ্যমে সংযুক্ত।
  • False (ডিফল্ট) – ভি৫ ব্রেইনগুলো ভি৫ রোবট রেডিও ব্যবহার করে তারবিহীনভাবে সংযুক্ত হয়।

রোবট ১-এর জন্য কোড

"""
Create a wireless link in Port 1
name: VEXRoboticsLink123456789
linktype: Manager
"""
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

রোবট ২ এর কোড

"""
Create a wireless link in Port 1
name: VEXRoboticsLink123456789
linktype: Worker
"""
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

উপলব্ধ পদ্ধতি#

একবার আপনার SerialLink সেট আপ হয়ে গেলে এবং Brain-গুলো লিঙ্ক হয়ে গেলে, আপনি নিচের পদ্ধতিগুলো ব্যবহার করে র সিরিয়াল ডেটা পাঠাতে, গ্রহণ করতে এবং তার উত্তর দিতে পারবেন।

is_linked#

is_linked মেথডটি রিটার্ন করে যে একটি SerialLink-এ থাকা V5 Brain-গুলো একে অপরের সাথে পেয়ার করা আছে কিনা।

  • True – দুটি ভি৫ ব্রেইন জোড়া বেঁধেছে এবং এই লিঙ্কে যোগাযোগ করছে।

  • False – এই লিঙ্কে দুটি V5 ব্রেইন জোড়া হিসেবে নেই।

দ্রষ্টব্য: পরবর্তী যেকোনো কোড চালানোর আগে, প্রজেক্ট শুরুর সময়ে V5 ব্রেইনগুলো লিঙ্ক করা আছে কিনা তা সবসময় যাচাই করে নেওয়া একটি ভালো অভ্যাস।

Usage:
link.is_linked()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

রোবট ১-এর জন্য কোড

# Send a message to the other robot

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

link.send("HELLO")

রোবট ২ এর কোড

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

send#

send অপর সংযুক্ত V5 ব্রেইনটিতে কাঁচা সিরিয়াল বাইট প্রেরণ করে।

receive দিয়ে সেই ডেটা পড়ার সময়, receive কেবল তখনই রিটার্ন করবে যখন এটি তার length প্যারামিটার দ্বারা নির্দিষ্ট সংখ্যক বাইট সংগ্রহ করবে। সেই কারণে, যদি আপনার কোড সর্বদা একটি নির্দিষ্ট lengthদিয়ে receive কল করে, তাহলে আপনাকে নিশ্চিত করতে হবে যে send দিয়ে পাঠানো প্রতিটি মেসেজ ঠিক তত বাইটের হয় (প্রায়শই প্যাডিং ব্যবহার করে) যাতে রিসিভার অতিরিক্ত বাইটের জন্য অপেক্ষা করে ব্লক না হয়।

যদি আপনি সঠিক বাইট সংখ্যার উপর নির্ভর করতে না চান, তাহলে পরিবর্তে received ব্যবহার করুন; এটি আপনাকে একটি নির্দিষ্ট দৈর্ঘ্যের প্রয়োজন ছাড়াই উপলব্ধ যেকোনো বাইট পরিচালনা করতে দেয়।

Usage:
send(buffer)

প্যারামিটার

বর্ণনা

buffer

অন্য সংযুক্ত V5 ব্রেইনে পাঠানোর জন্য ডেটা। এটি একটি string অথবা একটি bytearray হতে পারে।

রোবট ১-এর জন্য কোড

# Send a message to the other robot

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

link.send("HELLO")

রোবট ২ এর কোড

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

receive#

receive অপর সংযুক্ত V5 ব্রেইন থেকে FIFO ক্রমে (সবচেয়ে পুরোনো অপঠিত ডেটা প্রথমে) সিরিয়াল ডেটা ফেরত দেয়।

যেহেতু receive একটি নির্দিষ্ট সংখ্যক বাইটের জন্য অপেক্ষা করে, তাই send ব্যবহার করার সময় নির্দিষ্ট দৈর্ঘ্যের মেসেজিং-এ প্রায়শই প্যাডিং-এর প্রয়োজন হয়, যাতে প্রতিটি মেসেজ প্রত্যাশিত আকারে পৌঁছায়। যদি প্রেরক length বাইটের চেয়ে কম ডেটা প্রেরণ করে, তাহলে receive অবশিষ্ট বাইটগুলোর জন্য অপেক্ষা করতে থাকবে এবং কিছুই ফেরত পাঠাবে না।

If the queue is empty and you provide a timeout, receive waits up to that many milliseconds for new data. If nothing arrives in that window, it returns None. Any data sent afterward remains queued to be read later.

Usage:
receive(length, timeout)

প্যারামিটার

বর্ণনা

length

গ্রহণ করার জন্য বাইটের সংখ্যা। receive এই পরিমাণ বাইট আসা পর্যন্ত অপেক্ষা করে, তারপর সেগুলোকে একটি receiveহিসেবে ফেরত দেয়। যদি receive হয় bytearray, length সাথে সাথে length ফেরত দেয়। আপনি যদি প্রেরকের পাঠানো বাইটের চেয়ে বেশি বাইট অনুরোধ করেন, 0 অপেক্ষা করতে থাকবে। যদি প্রেরক এর চেয়ে বেশি পাঠায়, তাহলে ফেরত আসা বাফারটি None বাইটে সীমাবদ্ধ থাকবে।

timeout

ঐচ্ছিক। কতক্ষণ (মিলিসেকেন্ডে receive মানে শুধুমাত্র কিউ খালি থাকলে নতুন বার্তার জন্য অপেক্ষা করবে। ডিফল্ট হলো ৩০০০০০ (৩০০ সেকেন্ড)।

রোবট ১-এর জন্য কোড

# Send a math problem for the other Brain to solve

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

"""
Change whether to "add" or "subtract",
then what numbers to use in the operation.
"""
packet = "add,7,2.5"

# Pad with spaces until it's exactly 16 bytes
while len(packet) < 16:
    packet = packet + " "

link.send(packet)

রোবট ২ এর কোড

# Solve the math problem that the other Brain sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

# Receive exactly 16 bytes
buffer = link.receive(16)

# Remove the added " " padding
text = buffer.decode().strip()

# Separate the operator and numbers
parts = text.split(",")

operator = parts[0]
a = float(parts[1])
b = float(parts[2])

# Use what operator was sent
if operator == "add":
    result = a + b
elif operator == "subtract":
    result = a - b
# If not "add" or "subtract", do nothing
else:
    pass

brain.screen.print("Result = ", result)

received#

received একটি ফাংশন রেজিস্টার করে, যা V5 Brain যখনই সিরিয়াল ডেটা গ্রহণ করবে তখনই কল করা হবে।

Usage:
link.received(callback)

প্যারামিটার

বর্ণনা

callback

পূর্বে সংজ্ঞায়িত একটি ফাংশন যা V5 ব্রেইন সিরিয়াল ডেটা গ্রহণ করলে কার্যকর হয়।

received কলব্যাক দুটি আর্গুমেন্ট সহ কল ​​করা হয়েছে:

কলব্যাক সিগনেচার:
callback(buffer, length)

যুক্তি

বর্ণনা

buffer

প্রাপ্ত সিরিয়াল ডেটা ধারণকারী একটি bytearray বাইটঅ্যারেটি প্রাপ্ত বার্তার চেয়ে বড় হতে পারে।

length

এই কলব্যাকের জন্য buffer -এ বৈধ বাইটের সংখ্যা পাওয়া গেছে। প্রাপ্ত ডেটা অ্যাক্সেস করতে buffer[:length] ব্যবহার করুন।

রোবট ১-এর জন্য কোড

# Send a message to the other robot

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 1 - Manager")

link.send("HELLO")

রোবট ২ এর কোড

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.WORKER)

# Do not run code UNTIL the Brains are linked
while not link.is_linked():
    wait(0.1, SECONDS)

brain.screen.print("Robot 2 - Worker")
brain.screen.next_row()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

পূর্ববর্তী

মেসেজলিঙ্ক

পরবর্তী

কনসোল

On this page
  • ভূমিকা
  • একটি লিঙ্ক তৈরি করুন
  • উপলব্ধ পদ্ধতি
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

VEX এবং VEX Robotics হলো Innovation First, Inc.-এর ট্রেডমার্ক বা সার্ভিস মার্ক। কপিরাইট ©২০২৬সর্বস্বত্ব সংরক্ষিত। VEX Robotics, Inc. হলো Innovation First International, Inc.-এর একটি সাবসিডিয়ারি। অন্যদের অন্যান্য সকল পণ্যের নাম / চিহ্ন তাদের নিজ নিজ মালিকদের সম্পত্তি। পেটেন্ট এবং/অথবা বিচারাধীন পেটেন্ট - innovationfirst.com/patents
সাইট গোপনীয়তা নীতি / সাইট ব্যবহারের শর্তাবলী / কুকি নীতি / সফটওয়্যার গোপনীয়তা নীতি

VEX Robotics ফেসবুক পেজটি দেখুন VEX রোবোটিক্সের টুইটার পেজটি দেখুন VEX Robotics-এর ইনস্টাগ্রাম পেজটি দেখুন VEX Robotics ইউটিউব পেজটি দেখুন
VEX API প্রতিক্রিয়া ফর্ম

আমরা আপনার মতামতকে গুরুত্ব দিই! VEX API সম্পর্কিত পরামর্শ, প্রশংসা জানাতে বা কোনো ত্রুটি রিপোর্ট করতে এই ফর্মটি ব্যবহার করুন। আপনার দেওয়া তথ্য আমাদের VEX API ডকুমেন্টেশন উন্নত করতে সাহায্য করে।

If you are experiencing technical issues or require customer support, please visit support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

দ্রষ্টব্য: আপনার বার্তার সাথে বর্তমান URL-টি শেয়ার করা হবে।

আপনার ইমেল ঠিকানা অন্তর্ভুক্ত করার মাধ্যমে, আপনি সম্মত হচ্ছেন যে আপনার মতামত সম্পর্কে আমাদের কোনো প্রশ্ন থাকলে VEX আপনাকে ইমেল পাঠাতে পারে।
গোপনীয়তা নীতি >
অনুগ্রহ করে আপনার মতামত দিন। মতামত সফলভাবে জমা দেওয়া হয়েছে!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)