• 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
Zum Hauptinhalt springen
Ctrl+K

< Back to Platform Select

  • VEX EXP
  • VEX EXP API-Referenz
  • VEXlink
  • MessageLink
Deutsch
  • English
  • العربية
  • বাংলা
  • Česky
  • Ελληνικά
  • 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

Abschnittsnavigation

  • Blöcke
  • Python
    • Antriebsstrang
    • Bewegung
    • Klang
    • Vision
    • Bildschirm
    • Regler
    • Sensorik
    • Trägheit
    • 3-Draht-Geräte
    • Pneumatisch
    • Gehirn
    • SD-Karte
    • 6-Achsen-Arm
    • Signalturm
    • VEXlink
      • MessageLink
      • SerialLink
    • Konsole
    • Logik
    • MicroPython-Bibliotheken
  • C++
  • VEXcode-Tutorials

Bahnsteignavigation

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

  • Einführung

  • Link erstellen

  • Verfügbare Methoden

    • ist_verknüpft

    • schicken

    • erhalten

    • erhalten

Einführung#

MessageLink ermöglicht die Kommunikation zwischen zwei EXP Brains durch den Austausch kurzer Nachrichten mit optionalen kleinen Datenmengen. Es ist für die Roboter-zu-Roboter-Koordination konzipiert – beispielsweise zum Starten von Routinen, zum Teilen von Sensordaten oder zum Auslösen von Verhaltensweisen bei einem anderen Roboter.

Jede Verwendung von send fügt eine Nachricht zur Warteschlange des verknüpften EXP Brain hinzu. Die Warteschlange wird nach dem FIFO-Prinzip (First-In, First-Out) gelesen. Werden mehrere Nachrichten gesendet, bevor das andere EXP Brain receive verwendet, werden diese in der Reihenfolge ihres Versands gespeichert und zurückgegeben. Da Nachrichten in einer Warteschlange landen können, kann das wiederholte Senden desselben Status in jeder Schleife zu einem Rückstau führen. Senden Sie daher für zeitkritische Logik nur Nachrichten, wenn sich Werte ändern.

Wichtig: Beide Roboter müssen gleichzeitig Projekte ausführen, die MessageLink verwenden, sonst werden keine Nachrichten gesendet/empfangen.

Diese Seite verwendet link als Beispielnamen für „ MessageLink . Ersetzen Sie ihn bei Bedarf durch Ihren eigenen Namen.

Nachfolgend finden Sie eine Liste der verfügbaren Methoden:

  • is_linked – Gibt zurück, ob dieses Gehirn aktiv mit seinem gepaarten Gehirn verbunden ist.

  • send – Sendet eine Nachricht an das gepaarte Gehirn.

  • receive – Wartet auf die nächste eingehende Nachricht und gibt sie zurück.

  • received – Registriert eine Funktion, die aufgerufen wird, sobald eine neue Nachricht empfangen wird.

Link erstellen#

Erstellen Sie auf beiden EXP Brains einen MessageLink, um einen Kommunikationskanal zwischen ihnen herzustellen – entweder drahtlos mit V5 Robot Radios oder über ein kabelgebundenes Smart Cable –, damit die Roboter sich gegenseitig Nachrichten senden können.

MessageLink(smartport, name, linktype, wired)

Parameter

Beschreibung

smartport

Der für diese Verbindung verwendete Smart Port – der Port, an den das V5 Robot Radio (drahtlos) oder das Smart Cable (kabelgebunden) angeschlossen ist. Er wird als Ports.PORTx geschrieben, wobei x die Portnummer ist.

name

Der eindeutige Name für diesen Link als Zeichenkette.
Hinweis: Dieser Name sollte lang genug sein, um eine eindeutige ID zu erzeugen, damit er nicht versehentlich mit dem Link eines anderen Teams übereinstimmt.

linktype

Die Rolle, die dieses Brain für dieses Linkpaar verwendet. Jedes Paar muss einen Manager und einen Worker enthalten:

  • VexlinkType.MANAGER – Für den Roboter verwenden, der mehr oder größere Nachrichten sendet. Manager haben eine höhere ausgehende Bandbreite (~1040 Byte/Sek.).
  • VexlinkType.WORKER – Für den Roboter verwenden, der weniger oder kleinere Nachrichten sendet. Worker haben eine geringere ausgehende Bandbreite (~520 Byte/Sek.).

wired

Optional. Ob diese Verbindung kabelgebunden oder drahtlos ist:

  • True – Die EXP Brains sind über ein Smart Cable verbunden.
  • False (Standard) – Die EXP Brains verbinden sich drahtlos über V5 Robot Radios.

Code für Roboter 1

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

Code für Roboter 2

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

Verfügbare Methoden#

Sobald MessageLink eingerichtet und die Brains verbunden sind, können Sie die folgenden Methoden verwenden, um Nachrichten zu senden, zu empfangen und zu beantworten.

is_linked#

Die Methode is_linked gibt zurück, ob die EXP Brains eines MessageLink miteinander gepaart sind.

  • True – Die beiden EXP Brains sind gepaart und kommunizieren über diese Verbindung.

  • False – Die beiden EXP Brains sind über diese Verbindung nicht gekoppelt.

Hinweis: Es empfiehlt sich, zu Beginn eines Projekts immer zu überprüfen, ob die EXP Brains verknüpft sind, bevor weiterer Code ausgeführt wird.

Usage:
link.is_linked()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

Code für Roboter 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)

Code für Roboter 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 sendet eine Zeichenkette und/oder eine ganze Zahl und/oder eine Gleitkommazahl an das andere verbundene EXP Brain.

Usage:
send(string, integer, float)

Parameter

Beschreibung

string

Die Zeichenkette, die an das andere verbundene EXP Brain gesendet werden soll.

integer

Optional. Eine Ganzzahl, die an das andere verbundene EXP Brain gesendet werden soll.

float

Optional. Eine Gleitkommazahl, die an das andere verknüpfte EXP Brain gesendet werden soll. Gleitkommazahlen werden auf vier Dezimalstellen formatiert; werden weniger Dezimalstellen angegeben, werden nachfolgende Nullen hinzugefügt, bis vier angezeigt werden.

Wenn nur string gesendet werden, empfängt das andere verbundene EXP Brain genau diese Zeichenkette.

Wenn integer und/oder float enthalten sind, erhält das empfangende Gehirn eine einzelne kodierte Zeichenkette, die alle Felder in dieser Reihenfolge kombiniert: .string_integer_float

Beispiel: Bei Verwendung link.send(“string”, 1, 2.55) als .string_1_2.5500 empfangen.

Code für Roboter 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)

Code für Roboter 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)

Code für Roboter 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)

Code für Roboter 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 gibt die nächste Nachricht aus der Warteschlange des anderen verbundenen EXP Brain zurück. Nachrichten werden in FIFO-Reihenfolge gelesen (älteste ungelesene zuerst). Wenn die Warteschlange leer ist, wenn receive aufgerufen wird, wartet sie bis zum angegebenen timeout auf eine neue Nachricht. Wenn innerhalb dieses Zeitfensters keine Nachricht eintrifft, gibt receive Nonezurück, und alle danach gesendeten Nachrichten bleiben in der Warteschlange, um beim nächsten Aufruf von receive gelesen zu werden.

Wenn das andere verbundene EXP Brain nur eine string, receive und gibt genau diese Zeichenkette zurück.

Wenn das andere verbundene EXP Brain eine Ganzzahl und/oder eine Gleitkommazahl gesendet hat, gibt receive eine einzelne kodierte Zeichenkette zurück, die alle Felder in dieser Reihenfolge kombiniert: .string_integer_float

Wenn beispielsweise das andere verknüpfte EXP Brain link.send(“string”, 1, 2.55)verwendet, gibt link.receive() eine kodierte Zeichenkette wie .string_1_2.5500zurück. Diese kodierte Zeichenkette lässt sich aufteilen (siehe Beispiele unten), um den Nachrichtennamen, die Ganzzahl- und die Gleitkommawerte zu extrahieren.

Wenn Sie das manuelle Aufteilen/Parsen lieber vermeiden möchten, verwenden Sie received, um einen Handler für einen bestimmten Nachrichtennamen zu registrieren; der Handler empfängt die gesendeten Werte als Argumente.

Usage:
receive(timeout)

Parameter

Beschreibung

timeout

Optional. Wartezeit in Millisekunden receive Wartezeit auf neue Nachrichten nur bei leerer Warteschlange). Standardwert: 300.000 Millisekunden (300 Sekunden).

Code für Roboter 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)

Code für Roboter 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)

Code für Roboter 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)

Code für Roboter 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 registriert eine Funktion, die aufgerufen werden soll, sobald das EXP Brain eine gesendete Nachricht empfängt.

Usage:
link.received(message, arg)

Parameter

Beschreibung

message

Der Name der zu vergleichenden Nachricht (Zeichenkette). Wenn der Name einer empfangenen Nachricht mit diesem Wert übereinstimmt, wird die Rückruffunktion callback aufgerufen.

callback

Eine zuvor definierte Funktion, die ausgeführt wird, wenn das EXP Brain eine Nachricht empfängt, die mit message übereinstimmt.

received Rückruffunktion wird mit vier Argumenten aufgerufen:

Callback-Signatur:
callback(message, linkname, index, value)

Argument

Beschreibung

message

Der Name der empfangenen Nachricht (z. B. “add”).

linkname

Der Name des Links, von dem die Nachricht empfangen wurde.

index

Der mit der Nachricht gesendete ganzzahlige Wert (falls angegeben).

value

Der mit der Nachricht gesendete Gleitkommawert (falls angegeben).

Code für Roboter 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)

Code für Roboter 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)

zurück

VEXlink

weiter

SerialLink

On this page
  • Einführung
  • Link erstellen
  • Verfügbare Methoden
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

VEX und VEX Robotics sind Marken oder Dienstleistungsmarken von Innovation First, Inc. Copyright ©2026Alle Rechte vorbehalten. VEX Robotics, Inc. ist eine Tochtergesellschaft von Innovation First International, Inc. Alle anderen Produktnamen/Marken Dritter sind Eigentum ihrer jeweiligen Inhaber. Patente und/oder Patentanmeldungen - innovationfirst.com/patents
Datenschutzrichtlinie der Website / Nutzungsbedingungen der Website / Cookie-Richtlinie / Datenschutzrichtlinie für Software

Besuchen Sie die Facebook-Seite von VEX Robotics. Besuchen Sie die Twitter-Seite von VEX Robotics. Besuchen Sie die Instagram-Seite von VEX Robotics. Besuchen Sie die YouTube-Seite von VEX Robotics.
VEX API-Feedbackformular

Wir freuen uns über Ihr Feedback! Nutzen Sie dieses Formular, um uns Anregungen und Lob mitzuteilen oder Fehler in der VEX-API zu melden. Ihre Rückmeldung hilft uns, die VEX-API-Dokumentation zu verbessern.

​

Falls Sie technische Probleme haben oder Kundensupport benötigen, besuchen Sie bitte support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Hinweis: Die aktuelle URL wird mit Ihrer Nachricht geteilt.

Mit der Angabe Ihrer E-Mail-Adresse erklären Sie sich damit einverstanden, dass VEX Ihnen E-Mails senden darf, falls wir Fragen zu Ihrem Feedback haben.
Datenschutzrichtlinie >
Bitte geben Sie uns Ihr Feedback. Feedback erfolgreich übermittelt!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)