• 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
Saltar al contenido principal
Ctrl+K

< Back to Platform Select

  • VEX V5
  • Bienvenido al sitio de referencia de API para VEX V5
  • VEXlink
  • Enlace de mensaje
Spanish
  • English
  • 简体中文
  • VEXcode Robotics Logo

Navegación de la sección

  • Bloques
  • Python
    • Tren de transmisión
    • Movimiento
    • Visión
    • Pantalla
    • Controlador
    • Detección
    • Inercial
    • Dispositivos de 3 cables
    • Neumática
    • Cerebro
    • Tarjeta SD
    • VEXlink
      • Enlace de mensaje
      • Enlace serial
    • Consola
    • Lógica
    • Imán
    • Competencia
    • Bibliotecas de MicroPython
  • C++

Navegación de la plataforma

  • 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

Enlace de mensaje#

  • Introducción

  • Crear un enlace

  • Métodos disponibles

    • está_vinculado

    • enviar

    • recibir

    • recibió

Introducción#

MessageLink permite que dos V5 Brains se comuniquen enviando mensajes cortos con datos adicionales opcionales. Está diseñado para la coordinación entre robots, como iniciar rutinas, compartir resultados de sensores o activar comportamientos en otro robot.

Every usage of send adds a message to the linked V5 Brain’s queue, and the queue is read first-in, first-out (FIFO). If multiple messages are sent before the other V5 Brain uses receive, they will be stored and returned one at a time in the order they were sent. Because messages can queue, repeatedly sending the same status every loop may create backlog; for time-critical logic, send only when values change.

Important: Both robots must be running projects that use MessageLink at the same time, or no messages will be sent/received.

This page uses link as the example MessageLink name. Replace it with your own configured name as needed.

A continuación se muestra una lista de los métodos disponibles:

  • is_linked – Returns whether this Brain is actively connected to its paired Brain.

  • send – Sends a message to the paired Brain.

  • receive – Waits for and returns the next incoming message.

  • received – Registers a function to be called whenever a new message is received.

Crear un enlace#

Crea un MessageLink en ambos V5 Brains para establecer un canal de comunicación entre ellos, ya sea de forma inalámbrica con las radios de robot V5 o mediante un cable inteligente, para que los robots puedan enviarse mensajes entre sí.

MessageLink(smartport, name, linktype, wired)

Parámetro

Descripción

smartport

The Smart Port used for this link—the port the V5 Robot Radio is connected to (wireless) or the Smart Cable is plugged into (wired). Written as Ports.PORTx where x is the port number.

name

El nombre único que se le dará a este enlace como una cadena.
Nota: Este nombre debe ser lo suficientemente largo para crear una identificación única para que no coincida accidentalmente con el enlace de otro equipo.

linktype

The role this Brain will use for this link pair. Each pair must include one Manager and one Worker:

  • VexlinkType.MANAGER – Use for the robot that will send more or larger messages. Managers have higher outbound bandwidth (~1040 bytes/sec).
  • VexlinkType.WORKER – Use for the robot that will send fewer or smaller messages. Workers have lower outbound bandwidth (~520 bytes/sec).

wired

Optional. Whether this link is wired or wireless:

  • True – The V5 Brains are connected via a Smart Cable.
  • False (default) – The V5 Brains connect wirelessly using V5 Robot Radios.

Código para el Robot 1

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

Código para el Robot 2

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

Métodos disponibles#

Una vez que MessageLink esté configurado y los sistemas estén conectados, podrá utilizar los métodos que se describen a continuación para enviar, recibir y responder mensajes.

is_linked#

is_linked method returns whether the V5 Brains on a MessageLink are paired with one another.

  • True – The two V5 Brains are paired and communicating on this link.

  • False – The two V5 Brains are not paired on this link.

Nota: Es recomendable comprobar siempre que los V5 Brains estén conectados al inicio de un proyecto antes de ejecutar cualquier otro código.

Usage:
link.is_linked()

Parámetros

Descripción

Este método no tiene parámetros.

Código para el Robot 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)

Código para el Robot 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 sends a string and/or an integer and/or float to the other linked V5 Brain.

Usage:
send(string, integer, float)

Parámetros

Descripción

string

La cadena que se enviará al otro cerebro V5 vinculado.

integer

Opcional. Un número entero para enviar al otro cerebro V5 vinculado.

float

Opcional. Un número decimal para enviar al otro V5 Brain vinculado. Los números decimales se formatean con 4 cifras decimales; si se proporcionan menos, se añaden ceros al final hasta que se muestren 4.

If only string is sent, the other linked V5 Brain receives that exact string.

If integer and/or float are included, the receiving Brain gets a single encoded string that combines all fields in this order: .string_integer_float

Example: Using link.send(“string”, 1, 2.55) is received as .string_1_2.5500.

Código para el Robot 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)

Código para el Robot 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)

Código para el Robot 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)

Código para el Robot 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 V5 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.

If the other linked V5 Brain sent only a string, receive returns that exact string.

If the other linked V5 Brain sent an integer and/or float, receive returns a single encoded string that combines all fields in this order: .string_integer_float

For example, if the other linked V5 Brain uses link.send(“string”, 1, 2.55), then using link.receive() returns an encoded string such as .string_1_2.5500. You can split this encoded string (see the examples below) to extract the message name, integer, and float values.

If you’d rather avoid manual splitting/parsing, use received to register a handler for a specific message name; the handler receives the sent values as arguments.

Usage:
receive(timeout)

Parámetros

Descripción

timeout

Optional. How long in milliseconds receive will wait for a new message only if the queue is empty. Default is 300,000 (300 seconds).

Código para el Robot 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)

Código para el Robot 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)

Código para el Robot 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)

Código para el Robot 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 registers a function to be called whenever the V5 Brain receives a sent message.

Usage:
link.received(message, arg)

Parámetros

Descripción

message

The message name (string) to match. When a received message’s name matches this value, the callback function is called.

callback

A previously defined function that runs when the V5 Brain receives a message matching message.

received callbacks are called with four arguments:

Callback Signature:
callback(message, linkname, index, value)

Argumento

Descripción

message

The message name that was received (for example, “add”).

linkname

El nombre del enlace desde el que se recibió el mensaje.

index

El valor entero enviado con el mensaje (si se proporciona).

value

El valor flotante enviado con el mensaje (si se proporciona).

Código para el Robot 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)

Código para el Robot 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)

anterior

VEXlink

siguiente

Enlace serial

En esta página
  • Introducción
  • Crear un enlace
  • Métodos disponibles
    • is_linked
    • send
    • receive
    • received
Innovation First, International

VEX y VEX Robotics son marcas comerciales o marcas de servicio de Innovation First, Inc. Copyright ©2026. Todos los derechos reservados. VEX Robotics, Inc. es una subsidiaria de Innovation First International, Inc. Todos los demás nombres/marcas de productos de terceros son propiedad de sus respectivos dueños. Patentes y/o Patentes en trámite - innovationfirst.com/patents
Política de privacidad del sitio / Términos de uso del sitio / Política de cookies / Política de privacidad del software

Visita la página de Facebook de VEX Robotics Visita la página de Twitter de VEX Robotics Visita la página de Instagram de VEX Robotics Visita la página de YouTube de VEX Robotics
Formulario de comentarios de la API de VEX

¡Valoramos tus comentarios! Usa este formulario para compartir sugerencias, felicitaciones o informar errores con la API de VEX. Tus comentarios nos ayudan a mejorar la documentación de la API de VEX.

Si tiene problemas técnicos o necesita asistencia al cliente, visite support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Nota: la URL actual se compartirá con tu mensaje.

Al incluir su dirección de correo electrónico, usted acepta que VEX puede enviarle correos electrónicos si tenemos preguntas sobre sus comentarios.
Política de privacidad >
Por favor, envíenos sus comentarios. ¡Comentarios enviados exitosamente!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)