• 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
Passer au contenu principal
Ctrl+K

< Back to Platform Select

  • VEX V5
  • Référence de l’API VEX V5
  • VEXlink
  • Lien vers le message
Français
  • English
  • العربية
  • বাংলা
  • Česky
  • Deutsch
  • Ελληνικά
  • Español
  • Español Latinoamericano
  • Suomi
  • Gaeilge
  • हिंदी
  • Magyar
  • Bahasa Indonesia
  • 日本語
  • 한국어
  • Lietuvių
  • Latviešu
  • മലയാളം
  • Nederlands
  • Polski
  • Português
  • Русский
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • 简体中文
  • 繁體中文
  • VEXcode Robotics Logo

Navigation de section

  • Blocs
  • Python
    • Transmission
    • Mouvement
    • Vision
    • Écran
    • Contrôleur
    • Détection
    • Inertiel
    • Dispositifs à 3 fils
    • Pneumatique
    • Cerveau
    • Son
    • Carte SD
    • VEXlink
      • Lien vers le message
      • Lien série
    • Console
    • Logique
    • Bras à 6 axes
    • Aimant
    • Concours
    • Bibliothèques MicroPython
  • C++
  • Tutoriels VEXcode

Navigation de la plateforme

  • 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

Lien vers le message#

  • Introduction

  • Créer un lien

  • Méthodes disponibles

    • est_lié

    • envoyer

    • recevoir

    • reçu

Introduction#

MessageLink permet à deux modules V5 Brain de communiquer en envoyant de courts messages contenant éventuellement de petites quantités de données. Il est conçu pour la coordination entre robots, notamment pour lancer des routines, partager des données de capteurs ou déclencher des actions sur un autre robot.

Chaque utilisation de send ajoute un message à la file d’attente du V5 Brain lié, et cette file est lue selon le principe du premier entré, premier sorti (FIFO). Si plusieurs messages sont envoyés avant que l’autre V5 Brain n’utilise receive, ils seront stockés et renvoyés un par un, dans l’ordre de leur envoi. Étant donné que les messages peuvent être mis en file d’attente, l’envoi répété du même statut à chaque boucle peut engendrer un engorgement ; pour une logique critique en termes de temps, n’envoyez des messages que lorsque les valeurs changent.

Important : Les deux robots doivent exécuter simultanément des projets utilisant MessageLink , sinon aucun message ne sera envoyé/reçu.

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

Vous trouverez ci-dessous une liste des méthodes disponibles :

  • is_linked – Renvoie si ce cerveau est activement connecté à son cerveau apparié.

  • send – Envoie un message au cerveau apparié.

  • receive – Attend et renvoie le prochain message entrant.

  • received – Enregistre une fonction à appeler chaque fois qu’un nouveau message est reçu.

Créer un lien#

Créez un MessageLink sur les deux V5 Brains pour établir un canal de communication entre eux, soit sans fil avec les radios des robots V5, soit par l’intermédiaire d’un câble intelligent câblé, afin que les robots puissent s’envoyer des messages.

MessageLink(smartport, name, linktype, wired)

Paramètre

Description

smartport

Le port intelligent utilisé pour cette liaison est celui auquel la radio du robot V5 est connectée (sans fil) ou celui auquel le câble intelligent est branché (avec fil). Il est indiqué sous la forme Ports.PORTx , où x représente le numéro du port.

name

The unique name to give this link as a string.
Note: This name should be long enough to create a unique ID so it doesn’t accidentally match another team’s link.

linktype

Rôle attribué à cette paire de liens par le Cerveau. Chaque paire doit inclure un Gestionnaire et un Travailleur :

  • VexlinkType.MANAGER – À utiliser pour le robot qui enverra des messages plus nombreux ou plus volumineux. Les Gestionnaires disposent d’une bande passante sortante plus élevée (environ 1 040 octets/s).
  • VexlinkType.WORKER – À utiliser pour le robot qui enverra des messages moins nombreux ou plus courts. Les Travailleurs disposent d’une bande passante sortante plus faible (environ 520 octets/s).

wired

Facultatif. Indique si la liaison est filaire ou sans fil :

  • True – Les modules V5 sont connectés via un câble intelligent.
  • False (par défaut) – Les modules V5 se connectent sans fil à l’aide des radios des robots V5.

Code pour le robot 1

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

Code pour Robot 2

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

Méthodes disponibles#

Une fois votre MessageLink configuré et les Brains connectés, vous pouvez utiliser les méthodes ci-dessous pour envoyer, recevoir et répondre aux messages.

is_linked#

La méthode is_linked renvoie si les V5 Brains d’un MessageLink sont appariés entre eux.

  • True – Les deux cerveaux V5 sont appariés et communiquent sur cette liaison.

  • False – Les deux cerveaux V5 ne sont pas appariés sur cette liaison.

Remarque : Il est recommandé de toujours vérifier que les modules V5 Brains sont bien liés au début d’un projet avant d’exécuter tout autre code.

Usage:
link.is_linked()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

Code pour le 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)

Code pour 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 envoie une chaîne et/ou un entier et/ou un nombre flottant à l’autre cerveau V5 lié.

Usage:
send(string, integer, float)

Paramètres

Description

string

La chaîne de caractères à envoyer à l’autre cerveau V5 lié.

integer

Facultatif. Un entier à envoyer à l’autre cerveau V5 lié.

float

Facultatif. Nombre décimal à envoyer à l’autre V5 Brain connecté. Les nombres décimaux sont formatés avec 4 décimales ; si moins de décimales sont fournies, des zéros sont ajoutés à la fin jusqu’à ce que 4 décimales soient affichées.

Si seule la chaîne string est envoyée, l’autre cerveau V5 lié reçoit exactement cette chaîne.

Si les champs integer et/ou float sont inclus, le système Brain reçoit une seule chaîne encodée qui combine tous les champs dans cet ordre : .string_integer_float

Exemple : En utilisant link.send(“string”, 1, 2.55) est reçu comme .string_1_2.5500.

Code pour le 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)

Code pour 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)

Code pour le 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)

Code pour 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.

Si l’autre V5 Brain lié a envoyé uniquement une chaîne string, receive renvoie cette chaîne exacte.

Si l’autre V5 Brain lié a envoyé un entier et/ou un nombre à virgule flottante, receive renvoie une seule chaîne encodée qui combine tous les champs dans cet ordre : .string_integer_float

Par exemple, si l’autre V5 Brain lié utilise link.send(“string”, 1, 2.55), alors link.receive() renvoie une chaîne encodée telle que .string_1_2.5500. Vous pouvez diviser cette chaîne encodée (voir les exemples ci-dessous) pour extraire le nom du message, l’entier et les valeurs flottantes.

Si vous préférez éviter le fractionnement/l’analyse manuel, utilisez received pour enregistrer un gestionnaire pour un nom de message spécifique ; le gestionnaire reçoit les valeurs envoyées comme arguments.

Usage:
receive(timeout)

Paramètres

Description

timeout

Optionnel. Durée (en millisecondes receive la réception d’un nouveau message est attendue uniquement si la file d’attente est vide. Valeur par défaut : 300 000 (300 secondes).

Code pour le 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)

Code pour 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)

Code pour le 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)

Code pour 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 enregistre une fonction à appeler chaque fois que le V5 Brain reçoit un message envoyé.

Usage:
link.received(message, arg)

Paramètres

Description

message

Nom du message (chaîne de caractères) à rechercher. Lorsqu’un message reçu trouve un nom correspondant à cette valeur, la fonction de rappel callback est appelée.

callback

Une fonction précédemment définie qui s’exécute lorsque le cerveau V5 reçoit un message correspondant au message message.

received rappel est appelé avec quatre arguments :

Signature de rappel :
callback(message, linkname, index, value)

Argument

Description

message

Le nom du message reçu (par exemple, “add”).

linkname

Nom du lien à partir duquel le message a été reçu.

index

La valeur entière envoyée avec le message (si elle est fournie).

value

La valeur flottante envoyée avec le message (si elle est fournie).

Code pour le 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)

Code pour 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)

précédent

VEXlink

suivant

Lien série

Sur cette page
  • Introduction
  • Créer un lien
  • Méthodes disponibles
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

VEX et VEX Robotics sont des marques commerciales ou des marques de service d'Innovation First, Inc. Copyright © 2026Tous droits réservés. VEX Robotics, Inc. est une filiale d'Innovation First International, Inc. Tous les autres noms de produits/marques appartiennent à leurs propriétaires respectifs. Brevets et/ou demandes de brevets en cours - innovationfirst.com/patents
Politique de confidentialité du site / Conditions d'utilisation du site / Politique relative aux cookies / Politique de confidentialité des logiciels

Visitez la page Facebook de VEX Robotics Visitez la page Twitter de VEX Robotics Visitez la page Instagram de VEX Robotics Visitez la chaîne YouTube de VEX Robotics
Formulaire de commentaires sur l'API VEX

Vos commentaires sont précieux ! Utilisez ce formulaire pour nous faire part de vos suggestions, compliments ou pour signaler des erreurs concernant l’API VEX. Vos contributions nous aident à améliorer la documentation de l’API VEX.

​

Si vous rencontrez des problèmes techniques ou avez besoin d'assistance client, veuillez consulter support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Remarque : l’URL actuelle sera partagée avec votre message.

En indiquant votre adresse électronique, vous acceptez que VEX puisse vous envoyer des courriels si nous avons des questions concernant vos commentaires.
Politique de confidentialité >
Veuillez nous faire part de vos commentaires. Commentaires envoyés avec succès !
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)