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

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

  • ভূমিকা

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

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

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

  • নোট

  • উদাহরণ

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

    • সংযুক্ত

    • পাঠান

    • গ্রহণ করুন

    • প্রাপ্ত

ভূমিকা#

serial_link ক্লাসটি রোবটগুলোর মধ্যে কাঁচা বাইটের একটি প্রবাহ পাঠানোর সুযোগ দেয়। এটি রোবট-টু-রোবট যোগাযোগের জন্য ডিজাইন করা হয়েছে, যেখানে প্রেরক এবং প্রাপক উভয় রোবটই ডেটা প্রবাহের বিষয়বস্তু বুঝতে পারে।

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

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

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

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

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

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

~serial_link();

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

প্যারামিটার

প্রকার

বর্ণনা

index

int32_t

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

name

const char*

এই লিঙ্কের নাম। এই অনন্য স্ট্রিংটি যথেষ্ট দীর্ঘ হওয়ার পরামর্শ দেওয়া হচ্ছে, যাতে ভেক্সোস (vexos) দ্বারা হ্যাশ করা হলে এটি একটি অনন্য আইডি তৈরি করতে পারে। “ভেক্সলিঙ্ক” (vexlink)-এর মতো সাধারণ কোনো নাম লিঙ্কের জন্য খারাপ হবে, কারণ এটি অন্য কোনো দল ব্যবহার করতে পারে।

type

linkType

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

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

isWired

bool

serial_link অবজেক্টটি তারযুক্ত কিনা (ডিফল্ট false):

  • false — serial_link অবজেক্টটি তারযুক্ত
  • true — serial_link অবজেক্টটি তারবিহীন

নোট#

  • VEXlink তারবিহীন এবং তারযুক্ত উভয় প্রকার যোগাযোগই সমর্থন করে, তবে তারযুক্ত সংযোগের ক্ষেত্রে পাওয়ার রাউটিং সংক্রান্ত সমস্যা এড়ানোর জন্য একটি পরিবর্তিত স্মার্ট ক্যাবল ব্যবহারের পরামর্শ দেওয়া হয়।

  • বেতার যোগাযোগের জন্য প্রতিটি রোবটের একটি স্মার্ট পোর্টের সাথে সংযুক্ত ভি৫ রোবট রেডিও প্রয়োজন।

  • VEXlink রেডিওটি একটি V5 কন্ট্রোলারের VEXnet রেডিওর পাশাপাশি ব্যবহার করা যেতে পারে, যা দ্বন্দ্ব এড়ানোর জন্য সর্বোচ্চ নম্বরযুক্ত স্মার্ট পোর্টে সংযুক্ত করা উচিত।

  • একটি VEXlink তৈরি করতে হলে, উভয় V5 Brain-কেই একটি V5 Robot Radio-র সাথে সংযুক্ত করতে হবে।

উদাহরণ#

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

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

রোবট ২ এর কোড

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

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

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

  • isLinked — V5 ব্রেইনগুলি জোড়া বাঁধা আছে এবং এই লিঙ্কে যোগাযোগ করছে কিনা তা পরীক্ষা করে।

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

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

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

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

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

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

রোবট ২ এর কোড

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

isLinked#

একটি সিরিয়াল লিঙ্কে থাকা V5 ব্রেইনগুলো একে অপরের সাথে জোড়বদ্ধ আছে কিনা তা ফেরত দেয়।

Available Functions
bool isLinked();

Parameters

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

Return Values

V5 ব্রেইনগুলো সংযুক্ত আছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান প্রদান করে:

  • true — The two V5 Brains are paired and communicating on this link.
  • false — The two V5 Brains are not paired on this link.
Notes
  • পরবর্তী যেকোনো কোড চালানোর আগে, প্রজেক্ট শুরুর সময়ে V5 ব্রেইনগুলো লিঙ্ক করা আছে কিনা তা সবসময় যাচাই করে নেওয়া একটি ভালো অভ্যাস।

Examples

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

// Create the link
  serial_link 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");
  Brain.Screen.newLine();
  Brain.Screen.print("Sending message...");

  // Message to send
  const char* message = "Hello Robot 2";

  // Send the message
  link.send((uint8_t*)message, strlen(message));

রোবট ২ এর কোড

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

  // Do not run code UNTIL the Brains are linked
  while (!link.isLinked()) {
    wait(0.1, seconds);
  }
  
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

  // Buffer to store incoming bytes
  uint8_t buffer[32] = {0};

  int32_t n = link.receive(buffer, sizeof(buffer) - 1);

  // Null-terminate
  if (n > 0) {
    buffer[n] = 0;

    // Display the message that was sent
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Robot 2 - Worker");
    Brain.Screen.newLine();
    Brain.Screen.print((char*)buffer);
  }
  else {
    Brain.Screen.newLine();
    Brain.Screen.print("No message received");
  }

send#

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

Available Functions

1 — বাইট বাফার ব্যবহার করে বার্তা পাঠায়।

int32_t send( 
  uint8_t *buffer, 
  int32_t  length );

2 — একটি ক্যারেক্টার বাফার ব্যবহার করে বার্তা পাঠায়।

int32_t send( 
  const char *buffer, 
  int32_t     length );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

buffer

uint8_t* or const char*

অন্য সংযুক্ত V5 ব্রেইনে পাঠানোর জন্য বাফার।

length

int32_t

প্রেরণ করার জন্য বাফারের দৈর্ঘ্য।

Return Values

প্রেরিত বাইটের সংখ্যা বোঝাতে একটি int32_t রিটার্ন করে।

Examples

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

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

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

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

  // Track last sent state
  uint8_t lastState = 255;  // impossible initial value

 // Tell Robot 2 when the screen is being pressed
  while (true) {
    uint8_t state = Brain.Screen.pressing() ? 1 : 0;

    // Only send if state changed
    if (state != lastState) {
      link.send(&state, 1);
      lastState = state;
    }

    wait(0.02, seconds);
  }

রোবট ২ এর কোড

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

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

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

  // Track the last state
  uint8_t lastShown = 255;

  while (true) {
    // Variable stores 1 - pressed, 0 - not pressed 
    uint8_t state = 0;
    int32_t n = link.receive(&state, 1, 200);

    // Only update screen if state changes
    if (n == 1 && state != lastShown) {
      Brain.Screen.clearScreen();
      Brain.Screen.setCursor(1, 1);
      Brain.Screen.print("Robot 2 - Worker");
      Brain.Screen.newLine();

      // Display text if Robot 1's screen is being pressed
      if (state == 1) {
        Brain.Screen.print("Manager IS being pressed!");
      } else {
        Brain.Screen.print("Manager is NOT being pressed");
      }

      lastShown = state;
    }
    wait(0.02, seconds);
  }

receive#

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

Available Functions

1 — ঐচ্ছিক টাইমআউট সহ একটি ক্যারেক্টার বাফারে বার্তা গ্রহণ করে।

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

Parameters

প্যারামিটার

প্রকার

বর্ণনা

buffer

char*

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

length

int32_t

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

timeoutMs

int32_t

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

Return Values

প্রাপ্ত বাইটের সংখ্যা বোঝাতে একটি int32_t রিটার্ন করে।

Notes
  • receive অন্য সংযুক্ত V5 ব্রেইন থেকে সারিতে থাকা পরবর্তী বার্তাটি ফেরত দেয়।

  • মেসেজগুলো FIFO ক্রমে পড়া হয় (সবচেয়ে পুরোনো অপঠিত মেসেজটি প্রথমে)।

  • যখন receive কল করা হয় এবং কিউটি খালি থাকে, তখন এটি একটি নতুন বার্তার জন্য নির্দিষ্ট timeoutMs পর্যন্ত অপেক্ষা করে।

  • যদি সেই নির্দিষ্ট সময়ের মধ্যে কোনো বার্তা না আসে, তাহলে receive returns 0, এবং এর পরে পাঠানো যেকোনো বার্তা পরবর্তীবার receive ব্যবহৃত হওয়ার জন্য সারিতে থেকে যায়।

Examples

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

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

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

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

  // Track last sent state
  uint8_t lastState = 255;  // impossible initial value

 // Tell Robot 2 when the screen is being pressed
  while (true) {
    uint8_t state = Brain.Screen.pressing() ? 1 : 0;

    // Only send if state changed
    if (state != lastState) {
      link.send(&state, 1);
      lastState = state;
    }

    wait(0.02, seconds);
  }

রোবট ২ এর কোড

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

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

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

  // Track the last state
  uint8_t lastShown = 255;

  while (true) {
    // Variable stores 1 - pressed, 0 - not pressed 
    uint8_t state = 0;
    int32_t n = link.receive(&state, 1, 200);

    // Only update screen if state changes
    if (n == 1 && state != lastShown) {
      Brain.Screen.clearScreen();
      Brain.Screen.setCursor(1, 1);
      Brain.Screen.print("Robot 2 - Worker");
      Brain.Screen.newLine();

      // Display text if Robot 1's screen is being pressed
      if (state == 1) {
        Brain.Screen.print("Manager IS being pressed!");
      } else {
        Brain.Screen.print("Manager is NOT being pressed");
      }

      lastShown = state;
    }
    wait(0.02, seconds);
  }

received#

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

Available Functions

1 — প্রতিটি প্রাপ্ত বাইট বাফারের জন্য একটি কলব্যাক ফাংশন নিবন্ধন করে।

void received( 
  void (* callback)(uint8_t *, int32_t) );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

callback

void (*)(uint8_t *, int32_t)

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

Return Values

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

Notes
  • received কলব্যাক দুটি আর্গুমেন্ট সহ কল ​​করা হয়: একটি বাইট বাফার এবং প্রাপ্ত বাইটের সংখ্যা।

  • প্রাপ্ত ডেটা নাল-টার্মিনেটেড নাও হতে পারে। যদি কলব্যাক ডেটাটিকে একটি স্ট্রিং হিসাবে বিবেচনা করে, তবে প্রাপ্ত বাইটগুলিকে একটি ক্যারেক্টার অ্যারেতে কপি করুন এবং একটি নাল টার্মিনেটর যোগ করুন।

Callback Signature

callback(buffer, length)

যুক্তি

বর্ণনা

buffer

প্রাপ্ত বাইট বাফারের একটি পয়েন্টার।

length

প্রাপ্ত বাইটের সংখ্যা।

Examples

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

// Create the link.
serial_link link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

// Send left or right when pressed.
void screen_pressed() {
  if (Brain.Screen.xPosition() < 240) {
    link.send((uint8_t*)"left", 4);
  } else {
    link.send((uint8_t*)"right", 5);
  }
}

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

  // 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);
  }
}

রোবট ২ এর কোড

// Called when message received.
void received_callback(uint8_t *buffer, int32_t length) {
  char msg[32];

  // Copy safely and null terminate.
  int n = (length < 31) ? length : 31;
  memcpy(msg, buffer, n);
  msg[n] = '\0';

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();

  // Display if Robot 1's screen is pressed on left or right
  if (strcmp(msg, "left") == 0) {
    Brain.Screen.print("Manager pressed LEFT");
  }
  else if (strcmp(msg, "right") == 0) {
    Brain.Screen.print("Manager pressed RIGHT");
  }
}

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

  // Create the link.
  serial_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(received_callback);

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

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

পূর্ববর্তী

বার্তা লিঙ্ক

পরবর্তী

সিটিই ওয়ার্কসেল

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)