• 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
Hoppa till huvudinnehåll
Ctrl+K

< Back to Platform Select

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

Sektionsnavigering

  • Block
  • Python
    • Drivlina
    • Rörelse
    • Vision
    • Skärm
    • Kontroller
    • Avkänning
    • Tröghets
    • 3-trådsenheter
    • Pneumatik
    • Hjärna
    • Ljud
    • SD-kort
    • VEXlänk
      • Meddelandelänk
      • Seriell länk
    • Trösta
    • Logik
    • 6-axlig arm
    • Magnet
    • Konkurrens
    • MicroPython-bibliotek
  • C++
  • VEXcode-handledning

Plattformsnavigering

  • 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

Meddelandelänk#

  • Introduktion

  • Skapa en länk

  • Tillgängliga metoder

    • är_länkad

    • skicka

    • få

    • mottagen

Introduktion#

MessageLink låter två V5-hjärnor kommunicera genom att skicka korta strängmeddelanden med valfri liten data. Den är utformad för samordning mellan robotar – som att starta rutiner, dela sensorresultat eller utlösa beteenden på en annan robot.

Varje gång man använder send läggs ett meddelande till i den länkade V5 Brains kö, och kön läses först in, först ut (FIFO). Om flera meddelanden skickas innan den andra V5 Brain använder receive, kommer de att lagras och returneras ett i taget i den ordning de skickades. Eftersom meddelanden kan köa kan det skapa en eftersläpning om man upprepar sändningar av samma status i varje loop; för tidskritisk logik, skicka endast när värdena ändras.

Viktigt: Båda robotarna måste köra projekt som använder MessageLink samtidigt, annars kommer inga meddelanden att skickas/tas emot.

Den här sidan använder link som exempelnamn MessageLink Ersätt det med ditt eget konfigurerade namn efter behov.

Nedan följer en lista över tillgängliga metoder:

  • is_linked – Returnerar om denna hjärna är aktivt ansluten till sin parade hjärna.

  • send – Skickar ett meddelande till den parade hjärnan.

  • receive – Väntar på och returnerar nästa inkommande meddelande.

  • received – Registrerar en funktion som ska anropas när ett nytt meddelande tas emot.

Skapa en länk#

Skapa en MessageLink på båda V5-hjärnorna för att upprätta en kommunikationskanal mellan dem – antingen trådlöst med V5-robotradior eller via en trådbunden Smart Cable – så att robotarna kan skicka meddelanden till varandra.

MessageLink(smartport, name, linktype, wired)

Parameter

Beskrivning

smartport

Smart Port som används för denna länk – porten som V5 Robot Radio är ansluten till (trådlös) eller Smart Cable är inkopplad i (kabelansluten). Skrivs som Ports.PORTx där x är portnumret.

name

Det unika namnet som ska anges som en sträng för denna länk.
Obs: Detta namn ska vara tillräckligt långt för att skapa ett unikt ID så att det inte av misstag matchar ett annat teams länk.

linktype

Den roll som denna hjärna kommer att använda för detta länkpar. Varje par måste innehålla en chef och en arbetare:

  • VexlinkType.MANAGER – Används för roboten som skickar fler eller större meddelanden. Chefer har högre utgående bandbredd (~1040 byte/sek).
  • VexlinkType.WORKER – Används för roboten som skickar färre eller mindre meddelanden. Arbetare har lägre utgående bandbredd (~520 byte/sek).

wired

Valfritt. Om denna länk är trådbunden eller trådlös:

  • True – V5 Brains är anslutna via en Smart Cable.
  • False (standard) – V5 Brains ansluts trådlöst med V5 Robot Radios.

Kod för robot 1

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

Kod för robot 2

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

Tillgängliga metoder#

När din MessageLink är konfigurerad och hjärnorna är länkade kan du använda metoderna nedan för att skicka, ta emot och svara på meddelanden.

is_linked#

is_linked -metoden returnerar om V5-hjärnorna på en MessageLink är parade med varandra.

  • True – De två V5-hjärnorna är parade ihop och kommunicerar på den här länken.

  • False – De två V5-hjärnorna är inte parade ihop på den här länken.

Obs! Det är god praxis att alltid kontrollera att V5-hjärnorna är länkade i början av ett projekt innan ytterligare kod körs.

Usage:
link.is_linked()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

Kod för 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)

Kod för 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 skickar en sträng och/eller ett heltal och/eller flyttal till den andra länkade V5-hjärnan.

Usage:
send(string, integer, float)

Parametrar

Beskrivning

string

Strängen som ska skickas till den andra länkade V5-hjärnan.

integer

Valfritt. Ett heltal att skicka till den andra länkade V5-hjärnan.

float

Valfritt. Ett flyttal att skicka till den andra länkade V5 Brain. Flyttalen formateras till 4 decimaler; om färre decimaler anges läggs efterföljande nollor till tills 4 visas.

Om endast string skickas, tar den andra länkade V5-hjärnan emot exakt den strängen.

Om integer och/eller float inkluderas, får den mottagande hjärnan en enda kodad sträng som kombinerar alla fält i denna ordning: .string_integer_float

Exempel: Med link.send(“string”, 1, 2.55) emot som .string_1_2.5500.

Kod för 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)

Kod för 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)

Kod för 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)

Kod för 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 returnerar nästa meddelande i kö från den andra länkade V5-hjärnan. Meddelanden läses i FIFO-ordning (äldsta olästa först). Om kön är tom när receive anropas, väntar den upp till den angivna timeout på ett nytt meddelande. Om inget meddelande anländer i det fönstret, returnerar receive None, och alla meddelanden som skickas efteråt finns kvar i kön för att läsas nästa gång receive används.

Om den andra länkade V5-hjärnan bara skickade en string, receive exakt den strängen.

Om den andra länkade V5-hjärnan skickade ett heltal och/eller flyttal, returnerar receive en enda kodad sträng som kombinerar alla fält i denna ordning: .string_integer_float

Om till exempel den andra länkade V5-hjärnan använder link.send(“string”, 1, 2.55), returnerar link.receive() en kodad sträng som .string_1_2.5500. Du kan dela denna kodade sträng (se exemplen nedan) för att extrahera meddelandenamnet, heltal och flyttal.

Om du hellre vill undvika manuell delning/parsning, använd received för att registrera en hanterare för ett specifikt meddelandenamn; hanteraren tar emot de skickade värdena som argument.

Usage:
receive(timeout)

Parametrar

Beskrivning

timeout

Valfritt. Hur länge i millisekunder receive väntar på ett nytt meddelande endast om kön är tom. Standard är 300 000 (300 sekunder).

Kod för 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)

Kod för 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)

Kod för 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)

Kod för 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 registrerar en funktion som ska anropas när V5-hjärnan tar emot ett skickat meddelande.

Usage:
link.received(message, arg)

Parametrar

Beskrivning

message

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

callback

En tidigare definierad funktion som körs när V5-hjärnan tar emot ett meddelande som matchar message.

received återanrop anropas med fyra argument:

Återuppringningssignatur:
callback(message, linkname, index, value)

Argument

Beskrivning

message

Meddelandenamnet som mottogs (till exempel “add”).

linkname

Länknamnet som meddelandet mottogs från.

index

Heltalsvärdet som skickas med meddelandet (om det anges).

value

Flyttalsvärdet som skickas med meddelandet (om det anges).

Kod för 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)

Kod för 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)

föregående

VEXlänk

nästa

Seriell länk

On this page
  • Introduktion
  • Skapa en länk
  • Tillgängliga metoder
    • is_linked
    • send
    • receive
    • received
Innovation First, International

VEX and VEX Robotics are trademarks or service marks of Innovation First, Inc. Copyright ©2026. All Rights Reserved. VEX Robotics, Inc. is a subsidiary of Innovation First International, Inc. All other product names / marks of others are the property of their respective owners. Patents and / or Patents Pending - innovationfirst.com/patents
Site Privacy Policy / Site Terms of Use / Cookie Policy / Software Privacy Policy

Besök VEX Robotics Facebook-sida Besök VEX Robotics Twitter-sida Besök VEX Robotics Instagram-sida Besök VEX Robotics YouTube-sida
VEX API-feedbackformulär

Vi värdesätter din feedback! Använd det här formuläret för att dela förslag, komplimanger eller rapportera fel med VEX API. Dina synpunkter hjälper oss att förbättra VEX API-dokumentationen.

​

Om du upplever tekniska problem eller behöver kundsupport, besök support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Obs: den aktuella URL:en kommer att delas med ditt meddelande

Genom att ange din e-postadress samtycker du till att VEX kan skicka e-postmeddelanden till dig om vi har frågor om din feedback.
Integritetspolicy >
Vänligen ge din feedback. Feedback skickad!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)