• 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 EXP
  • VEX EXP 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
    • Geluid
    • Visie
    • Scherm
    • Controller
    • Waarneming
    • Traagheid
    • 3-draads apparaten
    • Pneumatisch
    • Brein
    • SD-kaart
    • 6-assige arm
    • Signaaltoren
    • VEXlink
      • BerichtLink
      • SeriëleLink
    • Troosten
    • Logica
    • 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 EXP Brains door middel van korte berichten met optionele kleine gegevens. 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 EXP Brain, en de wachtrij wordt gelezen volgens het first-in, first-out (FIFO) principe. Als er meerdere berichten worden verzonden voordat de andere EXP 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 de gekoppelde hersenen.

  • 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 EXP 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 EXP Brains zijn verbonden via een Smart Cable.
  • False (standaard) – De EXP 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 EXP Brains op een MessageLink aan elkaar gekoppeld zijn.

  • True – De twee EXP Brains zijn gekoppeld en communiceren via deze link.

  • False – De twee EXP Brains zijn niet gekoppeld aan deze link.

Let op: Het is goede gewoonte om altijd te controleren of de EXP Brains aan het begin van een project zijn gekoppeld voordat je 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 decimaal getal naar de andere gekoppelde EXP Brain.

Usage:
send(string, integer, float)

Parameters

Beschrijving

string

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

integer

Optioneel. Een geheel getal om naar de andere gekoppelde EXP Brain te sturen.

float

Optioneel. Een zwevendekommagetal dat naar de andere gekoppelde EXP Brain wordt verzonden. Zwevendekommagetallen 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 EXP 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 en retourneert het volgende bericht uit de wachtrij van de andere gekoppelde EXP 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 Noneen blijft elk bericht dat daarna wordt verzonden in de wachtrij staan ​​om te worden gelezen wanneer receive de volgende keer wordt gebruikt.

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

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

Als de andere gekoppelde EXP 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 EXP 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 EXP 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)