• 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
  • Αναφορά API VEX EXP
  • 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++
    • Σύστημα μετάδοσης κίνησης
    • Κινητήρες και Ελεγκτές Κινητήρων
    • Συσκευές 3 καλωδίων
    • Εγκέφαλος
    • Κονσόλα
    • Ελεγκτής
    • Λογική
    • Συσκευές Έξυπνης Θύρας
    • VEXlink
      • Σύνδεσμος μηνύματος
      • Σειριακός σύνδεσμος
    • CTE Workcell
  • Εκπαιδευτικά σεμινάρια 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 επιτρέπει την αποστολή μιας ροής ακατέργαστων bytes μεταξύ ρομπότ. Έχει σχεδιαστεί για επικοινωνία ρομπότ με ρομπότ, όπου το ρομπότ μετάδοσης και το ρομπότ λήψης κατανοούν και τα δύο τα περιεχόμενα της ροής δεδομένων.

Κάθε χρήση του send προσθέτει δεδομένα στην ουρά του συνδεδεμένου EXP Brain και η ουρά διαβάζεται με προτεραιότητα την είσοδο, την έξοδο (FIFO). Εάν αποσταλούν πολλά μηνύματα πριν τα λάβει ο άλλος χρήστης του EXP Brain, αυτά θα αποθηκευτούν και θα επιστραφούν ένα κάθε φορά με τη σειρά που στάλθηκαν. Επειδή τα μηνύματα μπορούν να περιέλθουν σε ουρά, η επαναλαμβανόμενη αποστολή της ίδιας κατάστασης σε κάθε βρόχο μπορεί να δημιουργήσει συσσώρευση δεδομένων. Για λογική που είναι κρίσιμη για τον χρόνο, στείλτε μόνο όταν αλλάζουν οι τιμές.

Σημαντικό: Και τα δύο ρομπότ πρέπει να εκτελούν έργα που χρησιμοποιούν 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Αυτές οι πληροφορίες χρησιμοποιούνται για τη σωστή διαμόρφωση του ραδιοφώνου και επίσης καθορίζουν το διαθέσιμο εύρος ζώνης για μετάδοση και λήψη. Ένα ρομπότ διαχείρισης έχει διπλάσιο διαθέσιμο εύρος ζώνης (1040 bytes/δευτερόλεπτο) για την αποστολή πληροφοριών στο ρομπότ εργασίας (520 bytes/δευτερόλεπτο).

  • linkType::manager — Το αντικείμενο serial_link είναι ένας διαχειριστής
  • linkType::worker — Το αντικείμενο serial_link είναι ένας εργάτης

isWired

bool

Εάν το αντικείμενο serial_link είναι ενσύρματο (προεπιλογή false):

  • true — Το αντικείμενο serial_link είναι ενσύρματο
  • false — Το αντικείμενο serial_link είναι ασύρματο

Σημειώσεις#

  • Το VEXlink υποστηρίζει τόσο ασύρματη όσο και ενσύρματη επικοινωνία, με τις ενσύρματες συνδέσεις να συνιστούν ένα τροποποιημένο έξυπνο καλώδιο για την αποφυγή προβλημάτων δρομολόγησης ρεύματος.

  • Για ασύρματη επικοινωνία, κάθε ρομπότ χρειάζεται ένα V5 Robot Radio συνδεδεμένο σε μια Έξυπνη Θύρα.

  • Το VEXlink Radio μπορεί να χρησιμοποιηθεί παράλληλα με το VEXnet radio ενός ελεγκτή EXP, το οποίο θα πρέπει να είναι συνδεδεμένο στην Smart Port με τον μεγαλύτερο αριθμό για την αποφυγή διενέξεων.

  • Για να δημιουργήσετε ένα VEXlink, και οι δύο εγκέφαλοι EXP πρέπει να είναι συνδεδεμένοι σε ένα ρομποτικό ραδιόφωνο V5.

Παράδειγμα#

Κωδικός για το Ρομπότ 1

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

Κωδικός για το Ρομπότ 2

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

Συναρτήσεις Μελών#

Η κλάση serial_link περιλαμβάνει τις ακόλουθες συναρτήσεις-μέλη:

  • isLinked — Ελέγχει εάν οι εγκέφαλοι EXP είναι ζευγαρωμένοι και επικοινωνούν σε αυτόν τον σύνδεσμο.

  • send — Στέλνει ένα μήνυμα στον ζευγαρωμένο εγκέφαλο.

  • receive — Περιμένει και επιστρέφει το επόμενο εισερχόμενο μήνυμα.

  • received — Καταχωρεί μια συνάρτηση που θα καλείται κάθε φορά που λαμβάνεται ένα νέο μήνυμα.

Πριν από την κλήση οποιασδήποτε συνάρτησης μέλους serial_link , πρέπει να δημιουργηθεί μια παρουσία serial_link , όπως φαίνεται παρακάτω:

Κωδικός για το Ρομπότ 1

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

Κωδικός για το Ρομπότ 2

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

isLinked#

Επιστρέφει εάν οι εγκέφαλοι EXP σε μια σειριακή σύνδεση είναι ζευγαρωμένοι μεταξύ τους.

Available Functions
bool isLinked();

Parameters

Αυτή η συνάρτηση δεν έχει παραμέτρους.

Return Values

Επιστρέφει μια λογική τιμή που υποδεικνύει εάν οι εγκέφαλοι EXP είναι συνδεδεμένοι:

  • true — The two EXP Brains are paired and communicating on this link.
  • false — The two EXP Brains are not paired on this link.
Notes
  • Είναι καλή πρακτική να ελέγχετε πάντα για να βεβαιωθείτε ότι οι εγκέφαλοι EXP είναι συνδεδεμένοι στην αρχή ενός έργου πριν από την εκτέλεση οποιουδήποτε περαιτέρω κώδικα.

Examples

Κωδικός για το Ρομπότ 1

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

Κωδικός για το Ρομπότ 2

// 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 — Στέλνει ένα μήνυμα χρησιμοποιώντας ένα buffer byte.

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*

Το buffer που θα σταλεί στον άλλο συνδεδεμένο εγκέφαλο EXP.

length

int32_t

Το μήκος του buffer που θα αποσταλεί.

Return Values

Επιστρέφει την τιμή int32_t που αντιπροσωπεύει τον αριθμό των byte που στάλθηκαν.

Examples

Κωδικός για το Ρομπότ 1

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

Κωδικός για το Ρομπότ 2

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

Το μήκος του buffer.

timeoutMs

int32_t

Πόσο χρόνο σε χιλιοστά του δευτερολέπτου θα λάβει το receive θα περιμένει ένα νέο μήνυμα μόνο εάν η ουρά είναι κενή (προεπιλογή σε 500ms).

Return Values

Επιστρέφει την τιμή int32_t που αντιπροσωπεύει τον αριθμό των byte που λαμβάνονται.

Notes
  • Η συνάρτηση receive επιστρέφει το επόμενο μήνυμα στην ουρά από τον άλλο συνδεδεμένο εγκέφαλο EXP.

  • Τα μηνύματα διαβάζονται με σειρά FIFO (πρώτα τα παλαιότερα μη αναγνωσμένα).

  • Εάν η ουρά είναι άδεια όταν καλείται η εντολή receive , περιμένει έως το καθορισμένο χρονικό όριο timeoutMs για ένα νέο μήνυμα.

  • Εάν δεν φτάσει κανένα μήνυμα σε αυτό το παράθυρο, η συνάρτηση receive επιστρέφει 0και οποιοδήποτε μήνυμα αποστέλλεται στη συνέχεια παραμένει στην ουρά για ανάγνωση την επόμενη φορά που θα χρησιμοποιηθεί η συνάρτηση receive.

Examples

Κωδικός για το Ρομπότ 1

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

Κωδικός για το Ρομπότ 2

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

Καταγράφει μια συνάρτηση που θα καλείται κάθε φορά που ο εγκέφαλος EXP λαμβάνει ένα απεσταλμένο μήνυμα.

Available Functions

1 — Καταχωρεί μια συνάρτηση επανάκλησης για κάθε ληφθέν μήνυμα.

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

2 — Καταγράφει μια επανάκληση που καλείται για κάθε ληφθέν μήνυμα που περιλαμβάνει ένα επιπλέον πεδίο int32_t.

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 — Καταχωρεί μια επανάκληση που καλείται μόνο για ληφθέντα μηνύματα των οποίων το όνομα ταιριάζει με το μήνυμα, όπου το ωφέλιμο φορτίο μηνύματος περιλαμβάνει ένα επιπλέον πεδίο int32_t.

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

message

const char*

Το όνομα του μηνύματος (συμβολοσειρά) που θα ταιριάζει. Όταν το όνομα ενός ληφθέντος μηνύματος ταιριάζει με αυτήν την τιμή, καλείται η συνάρτηση callback.

callback

function

Μια προηγουμένως καθορισμένη συνάρτηση που εκτελείται όταν ο εγκέφαλος EXP λαμβάνει ένα μήνυμα που ταιριάζει με το μήνυμα message.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Notes
  • Οι επανακλήσεις received καλούνται με τέσσερα ορίσματα:

Callback Signature

callback(message, linkname, index, value)

Επιχείρημα

Περιγραφή

message

Το όνομα του μηνύματος που ελήφθη (για παράδειγμα, “add”).

linkname

Το όνομα του συνδέσμου από τον οποίο ελήφθη το μήνυμα.

index

Η ακέραια τιμή που αποστέλλεται με το μήνυμα (εάν παρέχεται).

value

Η τιμή float που αποστέλλεται με το μήνυμα (εάν παρέχεται).

Examples

Κωδικός για το Ρομπότ 1

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

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

Κωδικός για το Ρομπότ 2

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

προηγούμενο

Σύνδεσμος μηνύματος

επόμενο

CTE Workcell

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
Πολιτική απορρήτου ιστότοπου / Όροι χρήσης ιστότοπου / Πολιτική για τα cookie / Πολιτική απορρήτου λογισμικού

Επισκεφθείτε τη σελίδα VEX Robotics στο Facebook Επισκεφθείτε τη σελίδα VEX Robotics στο Twitter Επισκεφθείτε τη σελίδα VEX Robotics στο Instagram Επισκεφθείτε τη σελίδα VEX Robotics στο YouTube
Φόρμα σχολίων 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)