• 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
Přejít k hlavnímu obsahu
Ctrl+K

< Back to Platform Select

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

Navigace v sekcích

  • Bloky
  • Python
    • Hnací ústrojí
    • Pohyb
    • Vidění
    • Obrazovka
    • Ovladač
    • Snímání
    • Inerciální
    • 3vodičová zařízení
    • Pneumatika
    • Mozek
    • Zvuk
    • SD karta
    • VEXlink
      • Odkaz na zprávu
      • SerialLink
    • Utěšit
    • Logika
    • 6osé rameno
    • Magnet
    • Soutěž
    • Knihovny MicroPythonu
  • C++
  • Výukové programy VEXcode

Navigace na platformě

  • 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

Odkaz na zprávu#

  • Zavedení

  • Vytvořit odkaz

  • Dostupné metody

    • je_propojeno

    • poslat

    • dostávat

    • přijato

Zavedení#

MessageLink umožňuje dvěma robotům V5 Brains komunikaci odesíláním krátkých řetězcových zpráv s volitelnými malými daty. Je navržen pro koordinaci mezi roboty – například pro spouštění rutin, sdílení výsledků senzorů nebo spouštění chování u jiného robota.

Každé použití send přidá zprávu do fronty propojeného V5 Brainu a fronta se čte v systému FIFO (first in, first out). Pokud je odesláno více zpráv předtím, než druhý V5 Brain použije receive, budou uloženy a vráceny jedna po druhé v pořadí, v jakém byly odeslány. Protože se zprávy mohou řadit do fronty, opakované odesílání stejného stavu v každé smyčce může způsobit nahromadění zpráv; z časově kritické logiky odesílejte pouze při změně hodnot.

Důležité: Oba roboti musí současně spouštět projekty, které používají MessageLink , jinak nebudou odesílány/přijímány žádné zprávy.

Tato stránka používá jako příklad názvu MessageLink hodnotu link V případě potřeby jej nahraďte vlastním nakonfigurovaným názvem.

Níže je uveden seznam dostupných metod:

  • is_linked – Vrací, zda je tento mozek aktivně připojen k jeho spárovanému mozku.

  • send – Odešle zprávu spárovanému mozku.

  • receive – Čeká na další příchozí zprávu a vrací ji.

  • received – Registruje funkci, která má být volána při každém přijetí nové zprávy.

Vytvořit odkaz#

Vytvořte na obou robotech V5 Brains komunikační kanál MessageLink – buď bezdrátově s robotickými rádii V5, nebo pomocí kabelového chytrého kabelu – aby si roboti mohli navzájem posílat zprávy.

MessageLink(smartport, name, linktype, wired)

Parametr

Popis

smartport

Inteligentní port použitý pro toto propojení – port, ke kterému je připojeno robotické rádio V5 (bezdrátově) nebo je do něj zapojen inteligentní kabel (kabelově). Zapisuje se jako Ports.PORTx , kde x je číslo portu.

name

Jedinečný název, který se má tomuto odkazu zadat jako řetězec.
Poznámka: Tento název by měl být dostatečně dlouhý, aby vytvořil jedinečné ID a omylem se neshodoval s odkazem jiného týmu.

linktype

Role, kterou tento mozek použije pro tento pár odkazů. Každý pár musí obsahovat jednoho manažera a jednoho pracovníka:

  • VexlinkType.MANAGER – Použijte pro robota, který bude odesílat více zpráv nebo větší objem zpráv. Manažeři mají vyšší odchozí šířku pásma (~1040 bajtů/s).
  • VexlinkType.WORKER – Použijte pro robota, který bude odesílat méně zpráv nebo menší objem zpráv. Pracovníci mají nižší odchozí šířku pásma (~520 bajtů/s).

wired

Volitelné. Zda je toto připojení kabelové nebo bezdrátové:

  • True – Roboty V5 Brains jsou připojeny pomocí chytrého kabelu (Smart Cable).
  • False (výchozí) – Roboty V5 Brains se připojují bezdrátově pomocí rádií V5 Robot.

Kód pro robota 1

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

Kód pro Robota 2

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

Dostupné metody#

Jakmile je váš MessageLink nastaven a Brains jsou propojeny, můžete k odesílání, přijímání a odpovídání na zprávy použít níže uvedené metody.

is_linked#

Metoda is_linked vrací, zda jsou mozky V5 na MessageLink vzájemně spárovány.

  • True – Dva mozky V5 jsou spárované a komunikují prostřednictvím tohoto spojení.

  • False – Dva mozky V5 nejsou v tomto spojení spárovány.

Poznámka: Je dobrým zvykem vždy na začátku projektu zkontrolovat, zda jsou V5 Brains propojeny, než spustíte jakýkoli další kód.

Usage:
link.is_linked()

Parametry

Popis

Tato metoda nemá žádné parametry.

Kód pro robota 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)

Kód pro Robota 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 odešle řetězec a/nebo celé číslo a/nebo číslo s plovoucí desetinnou čárkou do druhého propojeného V5 Brainu.

Usage:
send(string, integer, float)

Parametry

Popis

string

Řetězec, který se má odeslat do druhého propojeného mozku V5.

integer

Volitelné. Celé číslo, které se má odeslat do druhého propojeného mozku V5.

float

Volitelné. Číslo s plovoucí desetinnou čárkou, které se odešle do druhého propojeného V5 Brainu. Čísla s plovoucí desetinnou čárkou jsou formátována na 4 desetinná místa; pokud je zadáno méně desetinných míst, přidávají se koncové nuly, dokud se nezobrazí 4.

Pokud je odeslán pouze řetězec string Brain obdrží přesně tento řetězec.

Pokud je zahrnuto integer a/nebo float , přijímající Brain dostane jeden zakódovaný řetězec, který kombinuje všechna pole v tomto pořadí: .string_integer_float

Příklad: Použitím link.send(“string”, 1, 2.55) přijata jako .string_1_2.5500.

Kód pro robota 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)

Kód pro Robota 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)

Kód pro robota 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)

Kód pro Robota 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#

Funkce receive vrací další zprávu ve frontě z druhého propojeného V5 Brainu. Zprávy se čtou v pořadí FIFO (nejstarší nepřečtené jako první). Pokud je fronta při volání funkce receive prázdná, čeká na novou zprávu až do zadaného časového limitu timeout receive vrátí hodnotu Nonea všechny zprávy odeslané poté zůstanou ve frontě pro přečtení při příštím použití funkce receive.

Pokud druhý propojený V5 Brain odeslal pouze řetězec string, receive vrátí přesný řetězec.

Pokud druhý propojený V5 Brain odeslal celé číslo a/nebo číslo s plovoucí čárkou, receive vrátí jeden zakódovaný řetězec, který kombinuje všechna pole v tomto pořadí: .string_integer_float

Například pokud druhý propojený V5 Brain používá link.send(“string”, 1, 2.55), pak použití link.receive() vrátí zakódovaný řetězec, například .string_1_2.5500. Tento zakódovaný řetězec můžete rozdělit (viz níže uvedené příklady) a extrahovat tak název zprávy, celé číslo a hodnotu s desetinnou čárkou.

Pokud se raději vyhnete ručnímu dělení/parsování, použijte received k registraci obslužné rutiny pro konkrétní název zprávy; obslužná rutina přijímá odeslané hodnoty jako argumenty.

Usage:
receive(timeout)

Parametry

Popis

timeout

Volitelné. Jak dlouho v milisekundách receive bude čekat na novou zprávu, pouze pokud je fronta prázdná. Výchozí hodnota je 300 000 (300 sekund).

Kód pro robota 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)

Kód pro Robota 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)

Kód pro robota 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)

Kód pro Robota 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 registruje funkci, která má být volána vždy, když V5 Brain přijme odeslanou zprávu.

Usage:
link.received(message, arg)

Parametry

Popis

message

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

callback

Dříve definovaná function, která se spustí, když V5 Brain obdrží zprávu odpovídající message.

received zpětných volání se čtyřmi argumenty:

Podpis zpětného volání:
callback(message, linkname, index, value)

Argument

Popis

message

Název přijaté zprávy (například “add”).

linkname

Název odkazu, ze kterého byla zpráva přijata.

index

Celočíselná hodnota odeslaná se zprávou (pokud je zadána).

value

Hodnota s desetinnou čárkou odeslaná se zprávou (pokud je zadána).

Kód pro robota 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)

Kód pro Robota 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)

předchozí

VEXlink

další

SerialLink

On this page
  • Zavedení
  • Vytvořit odkaz
  • Dostupné metody
    • 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

Navštivte stránku VEX Robotics na Facebooku Navštivte stránku VEX Robotics na Twitteru Navštivte instagramovou stránku VEX Robotics Navštivte stránku VEX Robotics na YouTube
Formulář pro zpětnou vazbu k VEX API

Vážíme si vaší zpětné vazby! Pomocí tohoto formuláře se s námi podělte o návrhy, pochvaly nebo nahlaste chyby týkající se VEX API. Vaše podněty nám pomohou vylepšit dokumentaci k VEX API.

​

Pokud máte technické problémy nebo potřebujete zákaznickou podporu, navštivte prosím support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Poznámka: Aktuální URL adresa bude sdílena s vaší zprávou

Uvedením své e-mailové adresy souhlasíte s tím, že vám společnost VEX může zasílat e-maily, pokud budeme mít dotazy k vaší zpětné vazbě.
Zásady ochrany osobních údajů >
Prosím, poskytněte nám svůj názor. Zpětná vazba byla úspěšně odeslána!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)