• 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

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

  • Εισαγωγή

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

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

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

    • στέλνω

    • λαμβάνω

    • έλαβε

Εισαγωγή#

Το SerialLink επιτρέπει σε δύο εγκεφάλους EXP να επικοινωνούν στέλνοντας και λαμβάνοντας ακατέργαστα σειριακά δεδομένα μέσω του VEX Link. Αντί για μηνύματα με ετικέτες, το SerialLink μεταδίδει ένα buffer (μια συμβολοσειρά ή ένα bytearray). Αυτό το καθιστά χρήσιμο για προηγμένη επικοινωνία μεταξύ ρομπότ, όπως ροή δεδομένων αισθητήρων, αποστολή προσαρμοσμένων μορφών πακέτων ή δημιουργία του δικού σας πρωτοκόλλου πάνω από bytes.

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

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

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

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

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

  • send – Στέλνει ένα σύντομο μήνυμα (με προαιρετικά δεδομένα int/float) στον ζευγαρωμένο εγκέφαλο.

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

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

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

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

SerialLink(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 = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

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

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

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

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

is_linked#

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

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

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

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

Usage:
link.is_linked()

Παράμετροι

Περιγραφή

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

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

# Send a message to the other robot

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

link.send("HELLO")

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

# Display the message that Robot 1 sends

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

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

send#

send μεταδίδει ακατέργαστα σειριακά bytes στον άλλο συνδεδεμένο εγκέφαλο EXP.

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

Αν δεν θέλετε να βασίζεστε σε έναν ακριβή αριθμό byte, χρησιμοποιήστε την received. Σας επιτρέπει να χειρίζεστε όποια byte είναι διαθέσιμα χωρίς να απαιτείται συγκεκριμένο μήκος.

Usage:
send(buffer)

Παράμετροι

Περιγραφή

buffer

Τα δεδομένα που θα σταλούν στον άλλο συνδεδεμένο εγκέφαλο EXP. Αυτά μπορεί να είναι μια συμβολοσειρά string ή ένας πίνακας bytearray bytearray.

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

# Send a message to the other robot

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

link.send("HELLO")

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

# Display the message that Robot 1 sends

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

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

receive#

Η συνάρτηση receive επιστρέφει σειριακά δεδομένα από τον άλλο συνδεδεμένο εγκέφαλο EXP με σειρά FIFO (πρώτα τα παλαιότερα μη αναγνωσμένα δεδομένα).

Επειδή receive περιμένει έναν ακριβή αριθμό byte, η ανταλλαγή μηνυμάτων σταθερού μήκους συχνά απαιτεί συμπλήρωση όταν χρησιμοποιείται η εντολή send , έτσι ώστε κάθε μήνυμα να φτάσει στο αναμενόμενο μέγεθος. Εάν ο αποστολέας μεταδώσει λιγότερα από length , receive θα συνεχίσει να περιμένει τα υπόλοιπα byte και δεν θα επιστρέψει τίποτα.

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

Usage:
receive(length, timeout)

Παράμετροι

Περιγραφή

length

The number of bytes to receive. receive waits until this many bytes have arrived, then returns them as a bytearray. If length is 0, receive returns None immediately. If you request more bytes than the sender transmits, receive will keep waiting. If the sender transmits more than this, the returned buffer is limited to length bytes.

timeout

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

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

# Send a math problem for the other Brain to solve

# Create the link
link = SerialLink(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.
"""
packet = "add,7,2.5"

# Pad with spaces until it's exactly 16 bytes
while len(packet) < 16:
    packet = packet + " "

link.send(packet)

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

# Solve the math problem that the other Brain sends

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

# Receive exactly 16 bytes
buffer = link.receive(16)

# Remove the added " " padding
text = buffer.decode().strip()

# Separate the operator and numbers
parts = text.split(",")

operator = parts[0]
a = float(parts[1])
b = float(parts[2])

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

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

received#

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

Usage:
link.received(callback)

Παράμετροι

Περιγραφή

callback

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

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

Υπογραφή επανάκλησης:
callback(buffer, length)

Επιχείρημα

Περιγραφή

buffer

Ένα bytearray bytearray που περιέχει τα ληφθέντα σειριακά δεδομένα. Το bytearray μπορεί να είναι μεγαλύτερο από το ληφθέν μήνυμα.

length

Ο αριθμός των έγκυρων byte που ελήφθησαν στο buffer για αυτήν την επανάκληση. Χρησιμοποιήστε το buffer[:length] για πρόσβαση στα δεδομένα που ελήφθησαν.

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

# Send a message to the other robot

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

link.send("HELLO")

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

# Display the message that Robot 1 sends

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

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

προηγούμενο

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

επόμενο

Κονσόλα

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)