• 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 EXP
  • VEX EXP 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
  • C++
    • ড্রাইভট্রেন
    • মোটর এবং মোটর কন্ট্রোলার
    • ৩-তারের ডিভাইস
    • মস্তিষ্ক
    • কনসোল
    • নিয়ন্ত্রক
    • যুক্তি
    • স্মার্ট পোর্ট ডিভাইস
    • VEXlink
      • বার্তা লিঙ্ক
      • সিরিয়াল লিঙ্ক
    • সিটিই ওয়ার্কসেল
  • 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

বার্তা লিঙ্ক#

  • ভূমিকা

  • ক্লাস কনস্ট্রাক্টর

  • ক্লাস ডেস্ট্রাক্টর

  • প্যারামিটার

  • উদাহরণ

  • সদস্যদের কার্যাবলী

    • সংযুক্ত

    • পাঠান

    • গ্রহণ করুন

    • প্রাপ্ত

ভূমিকা#

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

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

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

ক্লাস কনস্ট্রাক্টর#

message_link( 
  int32_t     index, 
  const char  *name, 
  linkType    type, 
  bool        isWired = false );

ক্লাস ডেস্ট্রাক্টর#

message_link অবজেক্টটি ধ্বংস করে এবং সংশ্লিষ্ট রিসোর্সসমূহ মুক্ত করে।

virtual ~message_link();

প্যারামিটার#

প্যারামিটার

প্রকার

বর্ণনা

index

int32_t

যে স্মার্ট পোর্টের সাথে V5 রেডিও বা স্মার্ট কেবলটি সংযুক্ত থাকে, তা PORTxহিসেবে লেখা হয়, যেখানে x হলো পোর্ট নম্বর (উদাহরণস্বরূপ, PORT1)।

name

char

মেসেজ লিঙ্কের নাম।

type

linkType

লিঙ্কের ধরণ, হয় linkType::manager অথবা linkType::workerএই তথ্যটি রেডিওকে সঠিকভাবে কনফিগার করতে ব্যবহৃত হয় এবং এটি ট্রান্সমিশন ও রিসেপশনের জন্য উপলব্ধ ব্যান্ডউইথও নির্ধারণ করে। একজন ম্যানেজার রোবটের কাছে ওয়ার্কার রোবটের (520 বাইট/সেকেন্ড) কাছে তথ্য পাঠানোর জন্য দ্বিগুণ উপলব্ধ ব্যান্ডউইথ (1040 বাইট/সেকেন্ড) থাকে।

  • linkType::manager - message_link অবজেক্টটি একটি ম্যানেজার।
  • linkType::worker - message_link অবজেক্টটি একটি ওয়ার্কার।

isWired

bool

message_link অবজেক্টটি তারযুক্ত কিনা।

  • true - message_link অবজেক্টটি তারযুক্ত।
  • false - message_link অবজেক্টটি তারবিহীন।

উদাহরণ#

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

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::manager, // type
  true); // isWired

রোবট ২ এর কোড

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::worker, // type
  true); // isWired

সদস্যদের কার্যাবলী#

message_link ক্লাসে নিম্নলিখিত সদস্য ফাংশনগুলো অন্তর্ভুক্ত রয়েছে:

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

  • send — জোড়া মস্তিষ্কে একটি বার্তা পাঠায়।

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

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

যেকোনো message_link মেম্বার ফাংশন কল করার আগে, message_link একটি ইনস্ট্যান্স তৈরি করতে হবে, যেমনটি নিচে দেখানো হয়েছে:

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

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::manager, // type
  true); // isWired

রোবট ২ এর কোড

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::worker, // type
  true); // isWired

isLinked#

isLinked মেথডটি রিটার্ন করে যে একটি MessageLink-এ থাকা EXP Brain-গুলো একে অপরের সাথে জোড়াবদ্ধ কিনা।

Available Functions
bool isLinked();

Parameters

এই ফাংশনটির কোনো প্যারামিটার নেই।

Return Values

এই ফাংশনটি একটি বুলিয়ান মান রিটার্ন করে।

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

  • false – এই লিঙ্কে দুটি EXP Brain জোড়া হিসেবে নেই।

Notes

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

Examples

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

// Tell the other robot when the screen is being pressed
  // Create the link
  message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

  // Do not run code UNTIL the Brains are linked
  while (!link.isLinked()){
    wait(0.1, seconds);
  }

  Brain.Screen.print("Robot 1 - Manager");

  // Continuously send if the screen is being pressed
  while (true){
    if (Brain.Screen.pressing()){
      link.send("pressed");
    } else {
      link.send("released");
    }
    wait(0.05, seconds);
  }

রোবট ২ এর কোড

// Display if the other robot's screen is being pressed

  // Create the link
  message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);
  
  // Do not run code UNTIL the Brains are linked
  while (!link.isLinked()){
   wait(0.1, seconds);
  }

  // Continuously check if Robot 1 has sent "pressed"
  while (true){
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Robot 2 - Worker");
    Brain.Screen.newLine();
    char msg[32] = {0};                         // buffer for incoming message
    int32_t n = link.receive(msg, sizeof(msg), 100);  // wait up to 100ms
    if (n > 0 && strcmp(msg, "pressed") == 0) {
      Brain.Screen.newLine();
      Brain.Screen.print("Manager is being pressed!");
    }
    wait(0.05, seconds);
  }

send#

লিঙ্ক সংযোগের মাধ্যমে একটি বার্তা পাঠায়।

Available Functions

1 — একটি বার্তা স্ট্রিং পাঠায়।

int32_t send( 
  const char *message );

2 — একটি double সহ একটি বার্তা স্ট্রিং পাঠায়।

int32_t send( 
  const char *message, 
  double      value );

3 — একটি int32_t এবং একটি double ব্যবহার করে একটি বার্তা স্ট্রিং পাঠায়।

int32_t send(
  const char *message, 
  int32_t     index, 
  double      value );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

message

const char*

অন্য সংযুক্ত EXP Brain-এ পাঠানোর জন্য বার্তা।

index

int32_t

অন্য সংযুক্ত EXP Brain-এ পাঠানোর জন্য একটি পূর্ণসংখ্যা।

value

double

অন্য লিঙ্ক করা EXP ব্রেইনে পাঠানোর জন্য একটি ডাবল। ডাবলগুলো ৪ দশমিক স্থান পর্যন্ত ফরম্যাট করা হয়; যদি এর চেয়ে কম দশমিক স্থান দেওয়া হয়, তবে ৪টি দশমিক স্থান না দেখানো পর্যন্ত শেষে শূন্য যোগ করা হয়।

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Notes

যদি শুধুমাত্র message পাঠানো হয়, তাহলে অন্য সংযুক্ত EXP Brain-টি ঠিক সেই বার্তাটিই গ্রহণ করে।

যদি value (এবং index যদি প্রদান করা হয়) অন্তর্ভুক্ত থাকে, তাহলে গ্রহণকারী ব্রেইন একটি একক এনকোডেড বার্তা পায় যা এই ক্রমে সমস্ত ক্ষেত্রকে একত্রিত করে: .message_index_value

Examples

link.send(“string”, 1, 2.55) পাওয়া যায় .string_1_2.5500.

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

// Tell the other robot when the screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}

Brain.Screen.print("Robot 1 - Manager");

// Continuously send if the screen is being pressed
while (true){
  if (Brain.Screen.pressing()){
    link.send("pressed");
  } else {
    link.send("released");
  }
  wait(0.05, seconds);
}

রোবট ২ এর কোড

// Display if the other robot's screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}
// Continuously check if Robot 1 has sent "pressed"
while (true){
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  char msg[32] = {0};  // buffer for incoming message
  int32_t n = link.receive(msg, sizeof(msg), 100);  // wait up to 100ms
  if (n > 0 && strcmp(msg, "pressed") == 0) {
    Brain.Screen.newLine();
    Brain.Screen.print("Manager is being pressed!");
  }
  wait(0.05, seconds);
}

receive#

লিঙ্ক সংযোগ থেকে একটি বার্তা গ্রহণ করে।

Available Functions
int32_t receive(
  char     *buffer,
  int32_t   length, 
  int32_t   timeoutMs = 500 );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

buffer

char

প্রাপ্ত বার্তা সংরক্ষণের জন্য বাফার।

length

int32_t

বাফারের দৈর্ঘ্য।

timeoutMs

int32_t

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

Return Values

এই ফাংশনটি প্রাপ্ত বাইটের সংখ্যা ফেরত দেয়।

Notes
  • receive অন্য লিঙ্ক করা EXP Brain থেকে কিউতে থাকা পরবর্তী বার্তাটি ফেরত দেয়। বার্তাগুলি FIFO ক্রমে (সবচেয়ে পুরানো অপঠিত বার্তা প্রথমে) পড়া হয়। receive কল করার সময় যদি কিউ খালি থাকে, তবে এটি একটি নতুন বার্তার জন্য নির্দিষ্ট timeout পর্যন্ত অপেক্ষা করে। যদি সেই সময়ের মধ্যে কোনো বার্তা না আসে, receive ফেরত দেয় 0, এবং এর পরে পাঠানো যেকোনো বার্তা কিউতে থেকে যায় যা পরবর্তীবার receive ব্যবহার করার সময় পড়া হবে।

  • যদি অন্য লিঙ্ক করা EXP Brain শুধুমাত্র একটি string, receive ঠিক সেই স্ট্রিংটিই ফেরত দেয়।

  • যদি অন্য লিঙ্ক করা EXP Brain একটি পূর্ণসংখ্যা এবং/অথবা ফ্লোট পাঠায়, receive একটি একক এনকোডেড স্ট্রিং ফেরত দেয় যা এই ক্রমে সমস্ত ক্ষেত্রকে একত্রিত করে: .string_integer_float

    • উদাহরণস্বরূপ, যদি অন্য লিঙ্ক করা EXP Brain link.send(“string”, 1, 2.55)ব্যবহার করে, তাহলে link.receive() ব্যবহার করলে .string_1_2.5500এর মতো একটি এনকোডেড স্ট্রিং ফেরত আসে। আপনি এই এনকোডেড স্ট্রিংটি বিভক্ত করে (নীচের উদাহরণগুলি দেখুন) বার্তার নাম, পূর্ণসংখ্যা এবং ফ্লোট মানগুলি বের করতে পারেন।

    • আপনি যদি ম্যানুয়াল বিভাজন/পার্সিং এড়াতে চান, তাহলে একটি নির্দিষ্ট বার্তার নামের জন্য একটি হ্যান্ডলার নিবন্ধন করতে received ব্যবহার করুন; হ্যান্ডলারটি প্রেরিত মানগুলিকে আর্গুমেন্ট হিসাবে গ্রহণ করে।

Examples

link.send(“string”, 1, 2.55) পাওয়া যায় .string_1_2.5500.

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

// Tell the other robot when the screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}

Brain.Screen.print("Robot 1 - Manager");

// Continuously send if the screen is being pressed
while (true){
  if (Brain.Screen.pressing()){
    link.send("pressed");
  } else {
    link.send("released");
  }
  wait(0.05, seconds);
}

রোবট ২ এর কোড

// Display if the other robot's screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}
// Continuously check if Robot 1 has sent "pressed"
while (true){
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  char msg[32] = {0};   // buffer for incoming message
  int32_t n = link.receive(msg, sizeof(msg), 100);  // wait up to 100ms
  if (n > 0 && strcmp(msg, "pressed") == 0) {
    Brain.Screen.newLine();
    Brain.Screen.print("Manager is being pressed!");
  }
  wait(0.05, seconds);
}

received#

যখনই EXP Brain কোনো প্রেরিত বার্তা গ্রহণ করে, তখন কল করার জন্য একটি ফাংশন নিবন্ধন করে।

Available Functions

1 প্রাপ্ত সকল বার্তার (বার্তা + মান) জন্য একটি কলব্যাক নিবন্ধন করে।

void received(
    void (* callback)(const char *, const char *, double)
);

2 প্রাপ্ত সকল বার্তার (বার্তা + সূচক + মান) জন্য একটি কলব্যাক নিবন্ধন করে।

void received(
    void (* callback)(const char *, const char *, int32_t, double)
);

3 একটি নির্দিষ্ট বার্তার (বার্তা + মান) জন্য একটি কলব্যাক নিবন্ধন করে।

void received(
    const char *message,
    void      (* callback)(const char *, const char *, double)
);

4 একটি নির্দিষ্ট বার্তার (বার্তা + সূচক + মান) জন্য একটি কলব্যাক নিবন্ধন করে।

void received(
    const char *message,
    void      (* callback)(const char *, const char *, int32_t, double)
);

Parameters

প্যারামিটার

প্রকার

বর্ণনা

message

const char *

যে বার্তার জন্য অপেক্ষা করতে হবে তার নাম। এটি বাদ দিলে, প্রাপ্ত সমস্ত বার্তার জন্য কলব্যাকটি চলবে।

callback

ফাংশন পয়েন্টার

একটি ফাংশন যা কোনো বার্তা পেলে কার্যকর হয়।

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Callback Signature

1 প্রেরকের নাম, বার্তার নাম এবং মান গ্রহণ করে।

void callback(const char *, const char *, double)

2 প্রেরকের নাম, বার্তার নাম, সূচক এবং মান গ্রহণ করে।

void callback(const char *, const char *, int32_t, double)

প্রকার

বর্ণনা

1st const char *

প্রেরক লিঙ্কের নাম।

2nd const char *

বার্তার নাম পাওয়া গেছে।

int32_t

বার্তাটির সাথে সংশ্লিষ্ট সূচক।

double

বার্তাটির সাথে সংশ্লিষ্ট মান।

Examples

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

// Send whether screen is pressed on left or right
void screen_pressed() {
  if (Brain.Screen.xPosition() < 240) {
    link.send("left");
  } else {
    link.send("right");
  }
}

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();
  
// Create the link
  message_link link(PORT1, "LeftRightLink", linkType::manager, true);

// Do not run code UNTIL the Brains are linked
  while (!link.isLinked()) {
    wait(0.1, seconds);
  }

  Brain.Screen.print("Robot 1 - Manager");

  Brain.Screen.pressed(screen_pressed);

  while (true) {
    wait(10, msec);
  }
}

রোবট ২ এর কোড

// Create variable to track where screen is pressed
int lastPress = 0;

// Update the variable whenever a new message is received
void message_received(const char* message, const char* linkname, double timestamp) {
  if (strcmp(message, "left") == 0)  lastPress = 1;
  if (strcmp(message, "right") == 0) lastPress = 2;
}

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

// Create the link
  message_link link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);

// Do not run code UNTIL the Brains are linked
  while (!link.isLinked()) {
    wait(0.1, seconds);
  }

  link.received(message_received);

  // Display if Robot 1's screen was pressed on the left or right
  while (true) {
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Robot 2 - Worker");
    Brain.Screen.newLine();

    if (lastPress == 1) {
      Brain.Screen.print("Manager pressed LEFT");
    } else if (lastPress == 2) {
      Brain.Screen.print("Manager pressed RIGHT");
    } else {
      Brain.Screen.print("Waiting...");
    }

    wait(0.1, seconds);
  }
}

পূর্ববর্তী

VEXlink

পরবর্তী

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

On this page
  • ভূমিকা
  • ক্লাস কনস্ট্রাক্টর
  • ক্লাস ডেস্ট্রাক্টর
  • প্যারামিটার
  • উদাহরণ
  • সদস্যদের কার্যাবলী
    • isLinked
    • 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)