• 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
Ga direct naar de hoofdinhoud
Ctrl+K

< Back to Platform Select

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

Sectienavigatie

  • Blokken
  • Python
    • Aandrijving
    • Beweging
    • Visie
    • Scherm
    • Controller
    • Waarneming
    • Traagheid
    • 3-draads apparaten
    • Pneumatiek
    • Brein
    • Geluid
    • SD-kaart
    • VEXlink
      • BerichtLink
      • SeriëleLink
    • Troosten
    • Logica
    • 6-assige arm
    • Magneet
    • Concurrentie
    • MicroPython-bibliotheken
  • C++
  • VEXcode-handleidingen

Platformnavigatie

  • 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

BerichtLink#

  • Invoering

  • Een link maken

  • Beschikbare methoden

    • is_linked

    • versturen

    • ontvangen

    • ontvangen

Invoering#

MessageLink maakt communicatie mogelijk tussen twee V5 Brains door korte berichten te versturen met optioneel kleine hoeveelheden data. Het is ontworpen voor robot-naar-robot-coördinatie, zoals het starten van routines, het delen van sensorresultaten of het activeren van gedragingen op een andere robot.

Elke keer dat send wordt gebruikt, wordt een bericht toegevoegd aan de wachtrij van de gekoppelde V5 Brain, en de wachtrij wordt gelezen volgens het first-in, first-out (FIFO) principe. Als er meerdere berichten worden verzonden voordat de andere V5 Brain receive gebruikt, worden ze één voor één opgeslagen en geretourneerd in de volgorde waarin ze zijn verzonden. Omdat berichten in de wachtrij kunnen staan, kan het herhaaldelijk verzenden van dezelfde status in elke lus een opstopping veroorzaken; voor tijdskritieke logica is het raadzaam alleen te verzenden wanneer waarden veranderen.

Belangrijk: Beide robots moeten tegelijkertijd projecten uitvoeren die gebruikmaken van MessageLink , anders worden er geen berichten verzonden/ontvangen.

Op deze pagina wordt link als voorbeeld gebruikt voor de naam MessageLink Vervang deze door uw eigen geconfigureerde naam indien nodig.

Hieronder vindt u een lijst met beschikbare methoden:

  • is_linked – Geeft aan of dit brein actief verbonden is met het bijbehorende brein.

  • send – Verstuurt een bericht naar het gekoppelde brein.

  • receive – Wacht op het volgende binnenkomende bericht en retourneert dit.

  • received – Registreert een functie die wordt aangeroepen wanneer een nieuw bericht wordt ontvangen.

Een link maken#

Maak op beide V5 Brains een MessageLink aan om een ​​communicatiekanaal tussen hen tot stand te brengen – draadloos met V5 Robot Radios of via een bekabelde Smart Cable – zodat de robots berichten naar elkaar kunnen sturen.

MessageLink(smartport, name, linktype, wired)

Parameter

Beschrijving

smartport

De Smart Port die voor deze verbinding wordt gebruikt: de poort waarop de V5 Robot Radio is aangesloten (draadloos) of waarop de Smart Cable is aangesloten (bedraad). Dit wordt weergegeven als Ports.PORTx , waarbij x het poortnummer is.

name

De unieke naam die aan deze link moet worden gegeven, als tekenreeks.
Opmerking: Deze naam moet lang genoeg zijn om een ​​unieke ID te creëren, zodat deze niet per ongeluk overeenkomt met de link van een ander team.

linktype

De rol die dit brein zal vervullen voor dit linkpaar. Elk paar moet één manager en één werker bevatten:

  • VexlinkType.MANAGER – Gebruik voor de robot die meer of grotere berichten verzendt. Managers hebben een hogere uitgaande bandbreedte (~1040 bytes/sec).
  • VexlinkType.WORKER – Gebruik voor de robot die minder of kleinere berichten verzendt. Werkers hebben een lagere uitgaande bandbreedte (~520 bytes/sec).

wired

Optioneel. Of deze verbinding bedraad of draadloos is:

  • True – De V5 Brains zijn verbonden via een Smart Cable.
  • False (standaard) – De V5 Brains maken draadloos verbinding met behulp van V5 Robot Radios.

Code voor Robot 1

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

Code voor Robot 2

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

Beschikbare methoden#

Zodra je MessageLink is ingesteld en de Brains zijn gekoppeld, kun je de onderstaande methoden gebruiken om berichten te verzenden, te ontvangen en te beantwoorden.

is_linked#

is_linked methode retourneert of de V5 Brains op een MessageLink aan elkaar gekoppeld zijn.

  • True – De twee V5-hersenen zijn gekoppeld en communiceren via deze verbinding.

  • False – De twee V5-hersenen zijn niet gekoppeld op deze link.

Let op: Het is goede gewoonte om altijd te controleren of de V5 Brains aan het begin van een project zijn gekoppeld voordat u verdere code uitvoert.

Usage:
link.is_linked()

Parameters

Beschrijving

Deze methode heeft geen parameters.

Code voor 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 voor 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 verzendt een tekenreeks en/of een geheel getal en/of een zweefgetal naar de andere gekoppelde V5 Brain.

Usage:
send(string, integer, float)

Parameters

Beschrijving

string

De tekenreeks die naar de andere gekoppelde V5 Brain moet worden verzonden.

integer

Optioneel. Een geheel getal dat naar de andere gekoppelde V5 Brain moet worden verzonden.

float

Optioneel. Een float-waarde die naar de andere gekoppelde V5 Brain wordt verzonden. Float-waarden worden opgemaakt met 4 decimalen; als er minder decimalen worden opgegeven, worden er nullen achter de komma toegevoegd totdat er 4 worden weergegeven.

Als er slechts string wordt verzonden, ontvangt de andere gekoppelde V5 Brain precies diezelfde string.

Als integer en/of float zijn opgenomen, krijgt de ontvangende Brain een enkele gecodeerde tekenreeks die alle velden in deze volgorde combineert: .string_integer_float

Voorbeeld: Bij gebruik van link.send(“string”, 1, 2.55) ontvangen als .string_1_2.5500.

Code voor 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 voor 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 voor 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 voor 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 retourneert het volgende bericht uit de wachtrij van de andere gekoppelde V5 Brain. Berichten worden in FIFO-volgorde gelezen (oudste ongelezen eerst). Als de wachtrij leeg is wanneer receive wordt aangeroepen, wacht het tot de opgegeven timeout op een nieuw bericht. Als er binnen dat tijdsvenster geen bericht arriveert, retourneert receive receive, en blijft elk bericht dat daarna wordt verzonden in de wachtrij staan ​​om te worden gelezen wanneer None de volgende keer wordt gebruikt.

Als de andere gekoppelde V5 Brain alleen een string, receive precies die string terug.

Als de andere gekoppelde V5 Brain een geheel getal en/of een drijvende-kommawaarde heeft verzonden, ontvangt receive een enkele gecodeerde tekenreeks die alle velden in deze volgorde combineert: .string_integer_float

Als de andere gekoppelde V5 Brain bijvoorbeeld link.send(“string”, 1, 2.55)gebruikt, dan retourneert link.receive() een gecodeerde tekenreeks zoals .string_1_2.5500Je kunt deze gecodeerde tekenreeks splitsen (zie de voorbeelden hieronder) om de berichtnaam, de gehele getallen en de drijvende-kommawaarden te extraheren.

Als je liever handmatig splitsen/parsen vermijdt, gebruik dan received om een ​​handler te registreren voor een specifieke berichtnaam; de handler ontvangt de verzonden waarden als argumenten.

Usage:
receive(timeout)

Parameters

Beschrijving

timeout

Optioneel. Hoe lang in milliseconden receive een nieuw bericht, maar alleen als de wachtrij leeg is. Standaardwaarde is 300.000 (300 seconden).

Code voor 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 voor 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 voor 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 voor 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 registreert een functie die moet worden aangeroepen wanneer de V5 Brain een verzonden bericht ontvangt.

Usage:
link.received(message, arg)

Parameters

Beschrijving

message

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

callback

Een eerder gedefinieerde functie die wordt uitgevoerd wanneer de V5 Brain een bericht ontvangt dat overeenkomt met bericht message.

Er zijn received argumenten:

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

Argument

Beschrijving

message

De naam van het ontvangen bericht (bijvoorbeeld “add”).

linkname

De naam van de link waarvan het bericht afkomstig is.

index

De integerwaarde die met het bericht is meegestuurd (indien opgegeven).

value

De zwevendekommagetalwaarde die met het bericht is meegestuurd (indien aanwezig).

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

vorige

VEXlink

volgende

SeriëleLink

On this page
  • Invoering
  • Een link maken
  • Beschikbare methoden
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

VEX en VEX Robotics zijn handelsmerken of dienstmerken van Innovation First, Inc. Copyright ©2026Alle rechten voorbehouden. VEX Robotics, Inc. is een dochteronderneming van Innovation First International, Inc. Alle andere productnamen/merken van derden zijn eigendom van hun respectievelijke eigenaren. Octrooien en/of aangevraagde octrooien - innovationfirst.com/patents
Privacybeleid website / Gebruiksvoorwaarden website / Cookiebeleid / Privacybeleid software

Bezoek de Facebookpagina van VEX Robotics Bezoek de Twitterpagina van VEX Robotics Bezoek de Instagrampagina van VEX Robotics Bezoek de VEX Robotics YouTube-pagina.
VEX API-feedbackformulier

Wij stellen uw feedback zeer op prijs! Gebruik dit formulier om suggesties, complimenten of fouten met betrekking tot de VEX API te delen. Uw input helpt ons de VEX API-documentatie te verbeteren.

​

Als u technische problemen ondervindt of klantondersteuning nodig heeft, ga dan naar support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Let op: de huidige URL wordt met uw bericht gedeeld.

Door uw e-mailadres op te geven, gaat u ermee akkoord dat VEX u e-mails mag sturen als we vragen hebben over uw feedback.
Privacybeleid >
Geef alstublieft uw feedback. Feedback succesvol verzonden!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)