• 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
Ugrás a fő tartalomra
Ctrl+K

< Back to Platform Select

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

Szakasz navigáció

  • Blokkok
  • Python
    • Hajtáslánc
    • Mozgás
    • Hang
    • Látomás
    • Képernyő
    • vezérlő
    • Érzékelés
    • Inerciális
    • 3 vezetékes eszközök
    • Pneumatikus
    • Agy
    • SD-kártya
    • 6 tengelyes kar
    • Jelzőtorony
    • VEXlink
      • Üzenetlink
      • Soros kapcsolat
    • Konzol
    • Logika
    • MicroPython könyvtárak
  • C++
  • VEXcode oktatóanyagok

Platformnavigáció

  • 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

Üzenetlink#

  • Bevezetés

  • Link létrehozása

  • Elérhető módszerek

    • összekapcsolva

    • elküld

    • kap

    • kapott

Bevezetés#

A MessageLink lehetővé teszi két EXP Brain közötti kommunikációt rövid, opcionálisan kis adatmennyiségekkel ellátott üzenetek küldésével. A rendszer robotok közötti koordinációra készült – például rutinok indítására, érzékelőeredmények megosztására vagy viselkedések kiváltására egy másik roboton.

A send minden egyes használata egy üzenetet ad a csatolt EXP Brain sorához, és a sor FIFO (first-in, first-out) elv alapján kerül olvasásra. Ha több üzenet is elküldésre kerül, mielőtt a másik EXP Brain a receive metódust használja, akkor azok egyenként, a küldés sorrendjében kerülnek tárolásra és visszaküldésre. Mivel az üzenetek sorba állíthatók, ugyanazon állapot ismételt elküldése minden ciklusban várakozást okozhat; időkritikus logika esetén csak akkor küldjön üzenetet, ha az értékek megváltoznak.

Fontos: Mindkét robotnak egyszerre kell olyan projekteket futtatnia, amelyek MessageLink használnak, különben nem lesznek üzenetek küldve/fogadva.

Ez az oldal link nevet használja példaként MessageLink névként. Szükség szerint cserélje le a saját konfigurált névre.

Az alábbiakban felsoroljuk az elérhető módszereket:

  • is_linked – Visszaadja, hogy ez az Agy aktívan csatlakozik-e a párosított Agyhoz.

  • send – Üzenetet küld a párosított Agynak.

  • receive – Várakozás a következő bejövő üzenetre, majd visszaküldi azt.

  • received – Regisztrál egy függvényt, amely minden új üzenet érkezésekor meghívódik.

Link létrehozása#

Hozz létre egy MessageLinket mindkét EXP Brain-en, hogy kommunikációs csatornát hozz létre közöttük – akár vezeték nélkül V5 Robot Radios-szal, akár vezetékes Smart Cable-en keresztül –, így a robotok üzeneteket küldhetnek egymásnak.

MessageLink(smartport, name, linktype, wired)

Paraméter

Leírás

smartport

Az ehhez a kapcsolathoz használt Smart Port – az a port, amelyhez a V5 Robot Radio csatlakozik (vezeték nélküli), vagy amelyhez a Smart Cable csatlakozik (vezetékes). Ports.PORTx formátumban írva, ahol x a portszám.

name

A link egyedi neve karakterláncként.
Megjegyzés: Ennek a névnek elég hosszúnak kell lennie ahhoz, hogy egyedi azonosítót hozzon létre, és ne egyezzen véletlenül egy másik csapat linkjével.

linktype

Az Agy szerepe, amelyet ez a kapcsolatpárhoz fog használni. Minden párnak tartalmaznia kell egy Menedzsert és egy Munkást:

  • VexlinkType.MANAGER – Használja azt a robotot, amely több vagy nagyobb üzeneteket fog küldeni. A Menedzserek nagyobb kimenő sávszélességgel rendelkeznek (~1040 bájt/sec).
  • VexlinkType.WORKER – Használja azt a robotot, amely kevesebb vagy kisebb üzeneteket fog küldeni. A Munkások alacsonyabb kimenő sávszélességgel rendelkeznek (~520 bájt/sec).

wired

Opcionális. Vezetékes vagy vezeték nélküli kapcsolatról van szó:

  • True – Az EXP agyak intelligens kábellel csatlakoznak.
  • False (alapértelmezett) – Az EXP agyak vezeték nélkül csatlakoznak V5 robotrádiók segítségével.

1. robot kódja

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

Robot 2 kódja

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

Elérhető módszerek#

Miután a MessageLink be van állítva és az Agyak össze vannak kapcsolva, az alábbi módszerekkel küldhetsz, fogadhatsz és válaszolhatsz üzenetekre.

is_linked#

is_linked A metódus visszaadja, hogy a MessageLink EXP Brainjei párosítva vannak-e egymással.

  • True – A két EXP agy párosítva van és ezen a kapcsolaton keresztül kommunikál.

  • False – A két EXP Brain nincs párosítva ezen a linken.

Megjegyzés: Jó gyakorlat, ha a projekt elején mindig ellenőrizzük, hogy az EXP Brain-ek össze vannak-e kapcsolva, mielőtt bármilyen további kódot futtatnánk.

Usage:
link.is_linked()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

1. robot kódja

# 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)

Robot 2 kódja

# 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 egy karakterláncot és/vagy egy egész számot és/vagy lebegőpontos számot küld a másik összekapcsolt EXP Brainnek.

Usage:
send(string, integer, float)

Paraméterek

Leírás

string

A másik összekapcsolt EXP Brainnek küldendő karakterlánc.

integer

Opcionális. Egy egész szám, amelyet el kell küldeni a másik összekapcsolt EXP Brainnek.

float

Opcionális. Egy lebegőpontos szám, amelyet a másik összekapcsolt EXP Brain-nek kell elküldeni. A lebegőpontos számok 4 tizedesjegyre vannak formázva; ha kevesebb tizedesjegyet adunk meg, akkor a záró nullák addig kerülnek hozzáadásra, amíg 4 nem jelenik meg.

Ha csak string kerül elküldésre, akkor a másik összekapcsolt EXP Brain pontosan ezt a karakterláncot kapja meg.

Ha integer és/vagy float szerepel, a fogadó Brain egyetlen kódolt karakterláncot kap, amely az összes mezőt ebben a sorrendben kombinálja: .string_integer_float

Példa: A link.send(“string”, 1, 2.55) értéke .string_1_2.5500 lesz.

1. robot kódja

# 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)

Robot 2 kódja

# 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)

1. robot kódja

# 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)

Robot 2 kódja

# 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 parancs visszaadja a következő sorban álló üzenetet a másik összekapcsolt EXP Brain-ből. Az üzenetek FIFO sorrendben kerülnek olvasásra (a legrégebbi olvasatlan először). Ha a várólista üres receive hívásakor, akkor a megadott timeout vár új üzenetre. Ha ebben az ablakban nem érkezik üzenet, receive parancs Noneértéket adja vissza, és minden ezután küldött üzenet a sorban marad, hogy receive parancs következő használatakor beolvassák.

Ha a másik összekapcsolt EXP Brain csak egy string, receive pontosan ezt a karakterláncot adja vissza.

Ha a másik összekapcsolt EXP Brain egész és/vagy lebegőpontos számot küldött, receive egyetlen kódolt karakterláncot ad vissza, amely az összes mezőt ebben a sorrendben kombinálja: .string_integer_float

Például, ha a másik összekapcsolt EXP Brain a link.send(“string”, 1, 2.55)függvényt használja, akkor link.receive() használata egy kódolt karakterláncot ad vissza, például .string_1_2.5500Ezt a kódolt karakterláncot feloszthatja (lásd az alábbi példákat), hogy kinyerje az üzenet nevét, egész számát és lebegőpontos értékeit.

Ha inkább elkerülnéd a manuális felosztást/elemzést, használd a received függvényt egy adott üzenetnévhez tartozó kezelő regisztrálásához; a kezelő argumentumként fogadja az elküldött értékeket.

Usage:
receive(timeout)

Paraméterek

Leírás

timeout

Opcionális. Mennyi ideig vár receive ezredmásodpercben az új üzenetre, ha a sor üres. Az alapértelmezett érték 300 000 (300 másodperc).

1. robot kódja

# 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)

Robot 2 kódja

# 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)

1. robot kódja

# 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)

Robot 2 kódja

# 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 regisztrál egy függvényt, amely minden alkalommal meghívódik, amikor az EXP Brain elküldött üzenetet kap.

Usage:
link.received(message, arg)

Paraméterek

Leírás

message

Az egyeztetendő üzenet neve (karakterlánc). Amikor egy fogadott üzenet neve megegyezik ezzel az értékkel, a callback függvény meghívódik.

callback

Egy korábban definiált függvény, amely akkor fut le, amikor az EXP Brain kap egy message megfelelő üzenetet.

received visszahívásokat négy argumentummal hívjuk meg:

Visszahívási aláírás:
callback(message, linkname, index, value)

Érv

Leírás

message

A fogadott üzenet neve (például “add”).

linkname

A hivatkozás neve, amelyről az üzenet érkezett.

index

Az üzenettel együtt küldött egész szám (ha meg van adva).

value

Az üzenettel együtt küldött lebegőpontos érték (ha meg van adva).

1. robot kódja

# 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)

Robot 2 kódja

# 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)

előző

VEXlink

következő

Soros kapcsolat

On this page
  • Bevezetés
  • Link létrehozása
  • Elérhető módszerek
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

A VEX és a VEX Robotics az Innovation First, Inc. védjegyei vagy szolgáltatásjegyei. Copyright ©2026Minden jog fenntartva. A VEX Robotics, Inc. az Innovation First International, Inc. leányvállalata. Minden más terméknév/védjegy a megfelelő tulajdonosok tulajdona. Szabadalmak és/vagy függőben lévő szabadalmak - innovationfirst.com/patents
Webhely adatvédelmi szabályzata / Webhely felhasználási feltételei / Süti szabályzat / Szoftver adatvédelmi szabályzata

Látogassa meg a VEX Robotics Facebook oldalát Látogassa meg a VEX Robotics Twitter-oldalát Látogassa meg a VEX Robotics Instagram oldalát Látogassa meg a VEX Robotics YouTube oldalát
VEX API visszajelző űrlap

Visszajelzése nagyra értékeljük! Ezen az űrlapon javaslatokat, dicséreteket oszthat meg, vagy hibákat jelenthet a VEX API-val kapcsolatban. Hozzászólása segít nekünk a VEX API dokumentációjának fejlesztésében.

​

Ha technikai problémákat tapasztal, vagy ügyfélszolgálatra van szüksége, kérjük, látogasson el support.vex.comweboldalra.

  • Send Happy Feedback
  • Send Sad Feedback

Megjegyzés: az aktuális URL-cím megosztásra kerül az üzenettel.

Az e-mail címed megadásával hozzájárulsz ahhoz, hogy a VEX e-maileket küldjön neked, ha kérdéseink vannak a visszajelzéseddel kapcsolatban.
Adatvédelmi irányelvek >
Kérjük, adja meg visszajelzését. Visszajelzés sikeresen elküldve!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)