• 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
    • Σύστημα μετάδοσης κίνησης
    • Κίνηση
    • Ήχος
    • Οραμα
    • Οθόνη
    • Ελεγκτής
    • Εξεύρεση της φόρας
    • Αδρανειακό
    • Συσκευές 3 καλωδίων
    • Πνευματικός
    • Εγκέφαλος
    • Κάρτα SD
    • Βραχίονας 6 αξόνων
    • Πύργος Σημάτων
    • VEXlink
      • Σύνδεσμος Μηνύματος
      • Σειριακός σύνδεσμος
    • Κονσόλα
    • Λογική
    • Βιβλιοθήκες MicroPython
  • 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

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

  • Εισαγωγή

  • Δημιουργία συνδέσμου

  • Διαθέσιμες μέθοδοι

    • είναι_συνδεδεμένο

    • στέλνω

    • λαμβάνω

    • έλαβε

Εισαγωγή#

Το MessageLink επιτρέπει σε δύο εγκεφάλους EXP να επικοινωνούν στέλνοντας σύντομα μηνύματα συμβολοσειράς με προαιρετικά μικρά δεδομένα. Έχει σχεδιαστεί για συντονισμό ρομπότ με ρομπότ — όπως η έναρξη ρουτινών, η κοινοποίηση αποτελεσμάτων αισθητήρων ή η ενεργοποίηση συμπεριφορών σε ένα άλλο ρομπότ.

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

Σημαντικό: Και τα δύο ρομπότ πρέπει να εκτελούν έργα που χρησιμοποιούν MessageLink ταυτόχρονα, διαφορετικά δεν θα αποστέλλονται/λαμβάνονται μηνύματα.

Αυτή η σελίδα χρησιμοποιεί το link ως παράδειγμα ονόματος MessageLink Αντικαταστήστε το με το δικό σας διαμορφωμένο όνομα, όπως απαιτείται.

Παρακάτω είναι μια λίστα με τις διαθέσιμες μεθόδους:

  • is_linked – Επιστρέφει εάν αυτός ο Εγκέφαλος είναι ενεργά συνδεδεμένος με τον συζευγμένο Εγκέφαλό του.

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

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

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

Δημιουργία συνδέσμου#

Δημιουργήστε ένα MessageLink και στους δύο εγκεφάλους EXP για να δημιουργήσετε ένα κανάλι επικοινωνίας μεταξύ τους —είτε ασύρματα με τα V5 Robot Radios είτε μέσω ενός ενσύρματου έξυπνου καλωδίου— ώστε τα ρομπότ να μπορούν να στέλνουν μηνύματα μεταξύ τους.

MessageLink(smartport, name, linktype, wired)

Παράμετρος

Περιγραφή

smartport

Η Έξυπνη Θύρα που χρησιμοποιείται για αυτήν τη σύνδεση—η θύρα στην οποία είναι συνδεδεμένο το Ρομποτικό Ραδιόφωνο V5 (ασύρματα) ή στην οποία είναι συνδεδεμένο το Έξυπνο Καλώδιο (ενσύρματα). Γράφεται ως Ports.PORTx όπου x είναι ο αριθμός θύρας.

name

Το μοναδικό όνομα που θα δοθεί σε αυτόν τον σύνδεσμο ως συμβολοσειρά.
Σημείωση: Αυτό το όνομα πρέπει να είναι αρκετά μεγάλο για να δημιουργήσει ένα μοναδικό αναγνωριστικό, ώστε να μην ταιριάζει κατά λάθος με τον σύνδεσμο άλλης ομάδας.

linktype

Ο ρόλος που θα χρησιμοποιήσει αυτός ο εγκέφαλος για αυτό το ζεύγος συνδέσμων. Κάθε ζεύγος πρέπει να περιλαμβάνει έναν Διευθυντή και έναν Εργαζόμενο:

  • VexlinkType.MANAGER – Χρησιμοποιείται για το ρομπότ που θα στέλνει περισσότερα ή μεγαλύτερα μηνύματα. Οι διαχειριστές έχουν υψηλότερο εύρος ζώνης εξερχόμενων δεδομένων (~1040 bytes/sec).
  • VexlinkType.WORKER – Χρησιμοποιείται για το ρομπότ που θα στέλνει λιγότερα ή μικρότερα μηνύματα. Οι εργαζόμενοι έχουν χαμηλότερο εύρος ζώνης εξερχόμενων δεδομένων (~520 bytes/sec).

wired

Προαιρετικό. Είτε αυτή η σύνδεση είναι ενσύρματη είτε ασύρματη:

  • True – Οι εγκέφαλοι EXP συνδέονται μέσω ενός έξυπνου καλωδίου.
  • False (προεπιλογή) – Οι εγκέφαλοι EXP συνδέονται ασύρματα χρησιμοποιώντας ρομποτικά ραδιόφωνα V5.

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

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

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

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

Διαθέσιμες μέθοδοι#

Μόλις ρυθμιστεί το MessageLink και συνδεθούν οι Brains, μπορείτε να χρησιμοποιήσετε τις παρακάτω μεθόδους για να στέλνετε, να λαμβάνετε και να απαντάτε σε μηνύματα.

is_linked#

Η μέθοδος is_linked επιστρέφει εάν οι εγκέφαλοι EXP σε ένα MessageLink είναι ζευγαρωμένοι μεταξύ τους.

  • True – Οι δύο εγκέφαλοι EXP είναι ζευγαρωμένοι και επικοινωνούν σε αυτόν τον σύνδεσμο.

  • False – Οι δύο εγκέφαλοι EXP δεν είναι ζευγαρωμένοι σε αυτόν τον σύνδεσμο.

Σημείωση: Είναι καλή πρακτική να ελέγχετε πάντα για να βεβαιωθείτε ότι οι εγκέφαλοι EXP είναι συνδεδεμένοι στην αρχή ενός έργου πριν από την εκτέλεση οποιουδήποτε περαιτέρω κώδικα.

Usage:
link.is_linked()

Παράμετροι

Περιγραφή

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

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

# Tell the other robot when the screen is being pressed

# Create the link
link = MessageLink(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")

# Continuously send if the screen is being pressed
while True:
    if brain.screen.pressing():
        link.send("pressed")
    else:
        link.send("released")

    wait(50, MSEC)

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

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

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

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

# Continuously check if Robot 1 has sent "pressed"
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Robot 2 - Worker")
    brain.screen.next_row()

    if link.receive() == "pressed":
        brain.screen.new_line()
        brain.screen.print("Manager is being pressed!")

    wait(50, MSEC)

send#

Η συνάρτηση send στέλνει μια συμβολοσειρά ή/και έναν ακέραιο ή/και έναν αριθμό float στον άλλο συνδεδεμένο εγκέφαλο EXP.

Usage:
send(string, integer, float)

Παράμετροι

Περιγραφή

string

Η συμβολοσειρά που θα σταλεί στον άλλο συνδεδεμένο εγκέφαλο EXP.

integer

Προαιρετικό. Ένας ακέραιος αριθμός για αποστολή στον άλλο συνδεδεμένο εγκέφαλο EXP.

float

Προαιρετικό. Ένας αριθμός κινητής υποδιαστολής για αποστολή στον άλλο συνδεδεμένο εγκέφαλο EXP. Οι αριθμοί κινητής υποδιαστολής μορφοποιούνται σε 4 δεκαδικά ψηφία. Εάν παρέχονται λιγότερα δεκαδικά ψηφία, προστίθενται μηδενικά στο τέλος μέχρι να εμφανιστούν 4.

Εάν σταλεί μόνο string , ο άλλος συνδεδεμένος εγκέφαλος EXP λαμβάνει αυτήν ακριβώς τη συμβολοσειρά.

Εάν συμπεριληφθούν οι αριθμοί integer και/ή float , ο εγκέφαλος λήψης λαμβάνει μια ενιαία κωδικοποιημένη συμβολοσειρά που συνδυάζει όλα τα πεδία με την εξής σειρά: .string_integer_float

Παράδειγμα: Χρησιμοποιώντας link.send(“string”, 1, 2.55) λαμβάνεται ως .string_1_2.5500.

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

# Tell the other robot when the screen is being pressed

# Create the link
link = MessageLink(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")

# Continuously send if the screen is being pressed
while True:
    if brain.screen.pressing():
        link.send("pressed")
    else:
        link.send("released")

    wait(50, MSEC)

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

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

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

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

# Continuously check if Robot 1 has sent "pressed"
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Robot 2 - Worker")
    brain.screen.next_row()

    if link.receive() == "pressed":
        brain.screen.new_line()
        brain.screen.print("Manager is being pressed!")

    wait(50, MSEC)

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

# Tell the other robot where the screen was pressed

# Create the link
link = MessageLink(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")
brain.screen.next_row()
brain.screen.print("Tap to send circles")

# Send the coordinates whenever the screen is pressed
while True:
    if brain.screen.pressing():
        x = brain.screen.x_position()
        y = brain.screen.y_position()

        link.send("touch", x, y)

    wait(10, MSEC)

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

# Draw a circle where Robot 1's screen was pressed

# Create the link
link = MessageLink(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")

while True:
    # Get the full encoded string
    circle_coordinates = link.receive(200)

    if circle_coordinates:

        # Split the encoded string by _
        parts = circle_coordinates.split("_")

        if len(parts) == 3:
            # Convert the coordinates back into numbers
            x = float(parts[1])
            y = float(parts[2])

            brain.screen.set_fill_color(Color.WHITE)
            brain.screen.draw_circle(x, y, 20)

    wait(10, MSEC)

receive#

receive returns the next queued message from the other linked EXP Brain. Messages are read in FIFO order (oldest unread first). If the queue is empty when receive is called, it waits up to the specified timeout for a new message. If no message arrives in that window, receive returns None, and any message sent afterward remains in the queue to be read the next time receive is used.

Εάν ο άλλος συνδεδεμένος εγκέφαλος EXP έστειλε μόνο μια συμβολοσειρά string, receive επιστρέφει αυτήν ακριβώς τη συμβολοσειρά.

Εάν το άλλο συνδεδεμένο EXP Brain έστειλε έναν ακέραιο ή/και έναν αριθμό float, η συνάρτηση receive επιστρέφει μια ενιαία κωδικοποιημένη συμβολοσειρά που συνδυάζει όλα τα πεδία με αυτήν τη σειρά: .string_integer_float

Για παράδειγμα, εάν το άλλο συνδεδεμένο EXP Brain χρησιμοποιεί link.send(“string”, 1, 2.55), τότε χρησιμοποιώντας link.receive() επιστρέφει μια κωδικοποιημένη συμβολοσειρά όπως .string_1_2.5500. Μπορείτε να διαχωρίσετε αυτήν την κωδικοποιημένη συμβολοσειρά (δείτε τα παρακάτω παραδείγματα) για να εξαγάγετε τις τιμές ονόματος μηνύματος, ακεραίου και κινητής υποδιαστολής.

Αν προτιμάτε να αποφύγετε τον χειροκίνητο διαχωρισμό/ανάλυση, χρησιμοποιήστε την εντολή received για να καταχωρήσετε έναν χειριστή για ένα συγκεκριμένο όνομα μηνύματος. Ο χειριστής λαμβάνει τις τιμές που αποστέλλονται ως ορίσματα.

Usage:
receive(timeout)

Παράμετροι

Περιγραφή

timeout

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

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

# Tell the other robot when the screen is being pressed

# Create the link
link = MessageLink(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")

# Continuously send if the screen is being pressed
while True:
    if brain.screen.pressing():
        link.send("pressed")
    else:
        link.send("released")

    wait(50, MSEC)

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

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

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

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

# Continuously check if Robot 1 has sent "pressed"
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Robot 2 - Worker")
    brain.screen.next_row()

    if link.receive() == "pressed":
        brain.screen.new_line()
        brain.screen.print("Manager is being pressed!")

    wait(50, MSEC)

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

# Send a math problem for the other Brain to solve

# Create the link
link = MessageLink(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.
"""
link.send("add", 7, 2.5)

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

# Solve the math problem that the other Brain sends

# Create the link
link = MessageLink(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()

math_problem = link.receive()

if math_problem:

    # Split the encoded string by _
    parts = math_problem.split("_")

    if len(parts) == 3:
        # Remove the . from the beginning of the string
        operator = "".join([c for c in parts[0] if c.isalpha()])

        # Separate out the numbers for the operation
        a = int(parts[1])
        b = float(parts[2])

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

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

received#

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

Usage:
link.received(message, arg)

Παράμετροι

Περιγραφή

message

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

callback

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

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

Υπογραφή Επανάκλησης:
callback(message, linkname, index, value)

Επιχείρημα

Περιγραφή

message

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

linkname

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

index

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

value

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

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

# Send a math problem for the other Brain to solve

# Create the link
link = MessageLink(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.
"""
link.send("add", 7, 2.5)

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

# Solve the math problem that the other Brain sends

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

while not link.is_linked():
    wait(0.1, SECONDS)

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

# add if "add" is received
def add_cmd(message, linkname, a, b):
    result = a + b
    brain.screen.print("Result = ", result)

# subtract if ""subtract" is received
def subtract_cmd(message, linkname, a, b):
    result = a - b
    brain.screen.print("Result = ", result)

# Create event handlers for "add" and "subtract"
link.received("add", add_cmd)
link.received("subtract", subtract_cmd)

προηγούμενο

VEXlink

επόμενο

Σειριακός σύνδεσμος

On this page
  • Εισαγωγή
  • Δημιουργία συνδέσμου
  • Διαθέσιμες μέθοδοι
    • is_linked
    • 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)