• 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
  • เอกสารอ้างอิง API VEX V5
  • วีเอ็กซ์ลิงก์
  • ลิงก์ข้อความ
ไทย
  • 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++
    • ระบบขับเคลื่อน
    • มอเตอร์และตัวควบคุมมอเตอร์
    • ตัวควบคุม
    • สมอง
    • การแข่งขัน
    • อุปกรณ์สมาร์ทพอร์ต
    • อุปกรณ์ 3 สาย
    • คอนโซล
    • ตรรกะ
    • วีเอ็กซ์ลิงก์
      • ลิงก์ข้อความ
      • ลิงก์อนุกรม
    • เวิร์กเซลล์ CTE
  • บทเรียน 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 ช่วยให้หุ่นยนต์ V5 Brain สองตัวสื่อสารกันได้โดยการส่งข้อความสตริงสั้นๆ พร้อมข้อมูลขนาดเล็กเพิ่มเติม ออกแบบมาเพื่อการประสานงานระหว่างหุ่นยนต์ เช่น การเริ่มต้นรูทีน การแบ่งปันผลลัพธ์จากเซ็นเซอร์ หรือการสั่งการให้หุ่นยนต์อีกตัวแสดงพฤติกรรมบางอย่าง

ทุกครั้งที่ใช้ send จะเพิ่มข้อความลงในคิวของ V5 Brain ที่เชื่อมโยง และคิวจะถูกอ่านแบบเข้าก่อนออกก่อน (FIFO) หากมีการส่งข้อความหลายข้อความก่อนที่ V5 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ข้อมูลนี้ใช้ในการกำหนดค่าวิทยุอย่างถูกต้อง และยังกำหนดแบนด์วิดท์ที่ใช้ได้สำหรับการส่งและรับข้อมูลด้วย หุ่นยนต์ผู้จัดการมีแบนด์วิดท์ที่ใช้ได้เป็นสองเท่า (1040 ไบต์/วินาที) เพื่อส่งข้อมูลไปยังหุ่นยนต์ผู้ปฏิบัติงาน (520 ไบต์/วินาที)

  • linkType::manager - อ็อบเจ็กต์ message_link เป็นผู้จัดการ
  • linkType::worker - อ็อบเจ็กต์ message_link เป็นผู้ปฏิบัติงาน

isWired

bool

ตรวจสอบว่าอ็อบเจ็กต์ message_link เชื่อมต่อด้วยสายหรือไม่

  • true - อ็อบเจ็กต์ message_link เชื่อมต่อด้วยสาย
  • false - อ็อบเจ็กต์ message_link เชื่อมต่อแบบไร้สาย

ตัวอย่าง#

รหัสสำหรับหุ่นยนต์ตัวที่ 1

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

โค้ดสำหรับหุ่นยนต์ตัวที่ 2

// 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 ดังแสดงด้านล่าง:

รหัสสำหรับหุ่นยนต์ตัวที่ 1

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

โค้ดสำหรับหุ่นยนต์ตัวที่ 2

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

isLinked#

เมธอด isLinked จะส่งคืนค่าว่า V5 Brains บน MessageLink นั้นจับคู่กันหรือไม่

Available Functions
bool isLinked();

Parameters

ฟังก์ชันนี้ไม่มีพารามิเตอร์ใดๆ

Return Values

ฟังก์ชันนี้จะส่งคืนค่าบูลีน

  • true – สมอง V5 ทั้งสองตัวจับคู่กันและสื่อสารกันผ่านลิงก์นี้

  • false – สมอง V5 ทั้งสองตัวไม่ได้จับคู่กันในลิงก์นี้

Notes

เป็นเรื่องที่ควรปฏิบัติเสมอให้แน่ใจว่าได้เชื่อมต่อ V5 Brains แล้วในตอนเริ่มต้นโปรเจ็กต์ ก่อนที่จะรันโค้ดใดๆ ต่อไป

Examples

รหัสสำหรับหุ่นยนต์ตัวที่ 1

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

โค้ดสำหรับหุ่นยนต์ตัวที่ 2

// 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*

ข้อความที่จะส่งไปยัง V5 Brain อีกเครื่องที่เชื่อมต่ออยู่

index

int32_t

ตัวเลขจำนวนเต็มที่จะส่งไปยัง V5 Brain อีกตัวที่เชื่อมต่ออยู่

value

double

ค่าตัวเลขทศนิยม (double) ที่จะส่งไปยัง V5 Brain ที่เชื่อมต่ออยู่ ค่าตัวเลขทศนิยมจะถูกจัดรูปแบบให้มีทศนิยม 4 ตำแหน่ง หากระบุทศนิยมน้อยกว่านั้น จะมีการเพิ่มเลขศูนย์ต่อท้ายจนกว่าจะแสดงครบ 4 ตำแหน่ง

Return Values

ฟังก์ชันนี้ไม่ส่งค่าใดๆ กลับมา

Notes

ถ้าส่งข้อความ message เท่านั้น สมอง V5 ที่เชื่อมต่ออีกตัวจะได้รับข้อความนั้นเช่นกัน

ถ้าค่า value (และดัชนี index ถ้ามีการระบุไว้) สมองที่รับข้อความจะได้รับข้อความที่เข้ารหัสเพียงข้อความเดียวซึ่งรวมฟิลด์ทั้งหมดตามลำดับนี้: .message_index_value

Examples

เมื่อใช้ link.send(“string”, 1, 2.55) จะได้รับเป็น .string_1_2.5500.

รหัสสำหรับหุ่นยนต์ตัวที่ 1

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

โค้ดสำหรับหุ่นยนต์ตัวที่ 2

// 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 จะเกิดขึ้นก็ต่อเมื่อคิวว่างเท่านั้น ค่าเริ่มต้นคือ 300,000 (300 วินาที)

Return Values

ฟังก์ชันนี้จะส่งคืนจำนวนไบต์ที่ได้รับ

Notes
  • receive ส่งคืนข้อความถัดไปที่อยู่ในคิวจาก V5 Brain ที่เชื่อมต่ออีกตัว ข้อความจะถูกอ่านตามลำดับ FIFO (ข้อความที่เก่าที่สุดที่ยังไม่ได้อ่านจะถูกอ่านก่อน) หากคิวว่างเมื่อเรียกใช้ receive ระบบจะรอข้อความใหม่จนถึงเวลาหมดเวลา receive หากไม่มีข้อความใดมาถึงภายในช่วงเวลานั้น receive จะส่งคืนค่า 0และข้อความใดๆ ที่ส่งมาหลังจากนั้นจะยังคงอยู่ในคิวเพื่อรออ่านในครั้งถัดไปที่ใช้ timeout

  • หาก V5 Brain ที่เชื่อมต่ออีกตัวส่งสตริง string, receive จะส่งสตริงนั้นกลับมา

  • หาก V5 Brain ตัวอื่นที่เชื่อมต่อส่งค่าจำนวนเต็มและ/หรือค่าทศนิยมมา receive และส่งคืนค่าสตริงที่เข้ารหัสเพียงค่าเดียวซึ่งรวมฟิลด์ทั้งหมดตามลำดับนี้: .string_integer_float

    • ตัวอย่างเช่น หาก V5 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.

รหัสสำหรับหุ่นยนต์ตัวที่ 1

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

โค้ดสำหรับหุ่นยนต์ตัวที่ 2

// 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#

ลงทะเบียนฟังก์ชันที่จะถูกเรียกใช้ทุกครั้งที่ V5 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

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

ฟังก์ชันที่จะทำงานเมื่อได้รับข้อความ

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

รหัสสำหรับหุ่นยนต์ตัวที่ 1

// Create the link.
message_link link(PORT1, "LeftRightLink", linkType::manager, true);

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

โค้ดสำหรับหุ่นยนต์ตัวที่ 2

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

previous

วีเอ็กซ์ลิงก์

next

ลิงก์อนุกรม

On this page
  • การแนะนำ
  • ตัวสร้างคลาส
  • ตัวทำลายคลาส
  • พารามิเตอร์
  • ตัวอย่าง
  • ฟังก์ชันสมาชิก
    • isLinked
    • send
    • receive
    • received
Innovation First, International
​

VEX และ VEX Robotics เป็นเครื่องหมายการค้าหรือเครื่องหมายบริการของ Innovation First, Inc. ลิขสิทธิ์ ©2026สงวนลิขสิทธิ์ทุกประการ VEX Robotics, Inc. เป็นบริษัทในเครือของ Innovation First International, Inc. ชื่อผลิตภัณฑ์/เครื่องหมายอื่นๆ ทั้งหมดเป็นทรัพย์สินของเจ้าของที่เกี่ยวข้อง สิทธิบัตรและ/หรือสิทธิบัตรที่อยู่ระหว่างการยื่นขอ - innovationfirst.com/patents
นโยบายความเป็นส่วนตัวของเว็บไซต์ / ข้อกำหนดการใช้งานเว็บไซต์ / นโยบายคุกกี้ / นโยบายความเป็นส่วนตัวของซอฟต์แวร์

เยี่ยมชมเพจ Facebook ของ VEX Robotics เยี่ยมชมหน้าทวิตเตอร์ของ VEX Robotics เยี่ยมชมเพจ Instagram ของ VEX Robotics ได้ที่นี่ เยี่ยมชมเพจ YouTube ของ VEX Robotics
แบบฟอร์มแสดงความคิดเห็น VEX API

เราให้ความสำคัญกับข้อเสนอแนะของคุณ! โปรดใช้แบบฟอร์มนี้เพื่อแบ่งปันข้อเสนอแนะ คำชม หรือรายงานข้อผิดพลาดเกี่ยวกับ VEX API ข้อมูลของคุณช่วยเราปรับปรุงเอกสารประกอบการใช้งาน VEX API ให้ดียิ่งขึ้น

​

หากคุณประสบปัญหาทางเทคนิคหรือต้องการความช่วยเหลือจากฝ่ายบริการลูกค้า โปรดไปที่ 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)