• 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
  • SerialLink
Č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

SerialLink#

  • Zavedení

  • Vytvořit odkaz

  • Dostupné metody

    • je_propojeno

    • poslat

    • dostávat

    • přijato

Zavedení#

SerialLink umožňuje dvěma robotům V5 Brains komunikovat odesíláním a přijímáním nezpracovaných sériových dat přes VEX Link. Místo označených zpráv přenáší SerialLink vyrovnávací paměť (řetězec nebo pole bajtů). Díky tomu je užitečný pro pokročilou komunikaci mezi roboty, jako je streamování dat ze senzorů, odesílání vlastních formátů paketů nebo vytváření vlastního protokolu na základě bajtů.

Každé použití send přidává data do přijímacího bufferu propojeného V5 Brain. Data se čtou v pořadí, v jakém dorazí (first in, first out). Pokud je odesláno více bufferů předtím, než druhý V5 Brain použije receive, zůstanou zařazeny do fronty a vracejí se jeden po druhém v pořadí, v jakém byly odeslány. Protože se data mohou čekat ve frontě, opakované odesílání velkých bufferů v každé smyčce může způsobit nahromadění dat; u časově kritických odkazů odesílejte pouze to, co potřebujete.

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

Tato stránka používá jako SerialLink název 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 krátkou zprávu (s volitelnými daty int/float) spárovanému Brainu.

  • 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 sériový kanál SerialLink, abyste mezi nimi navázali komunikační kanál – buď bezdrátově s robotickými rádii V5, nebo prostřednictvím kabelového inteligentního kabelu Smart Cable – aby si roboti mohli navzájem posílat nezpracovaná sériová data.

SerialLink(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 jsou připojeny pomocí chytrého kabelu (Smart Cable).
  • False (výchozí) – Roboty V5 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 = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

Kód pro Robota 2

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

Dostupné metody#

Jakmile je SerialLink nastaven a Brains propojeny, můžete k odesílání, přijímání a odpovídání na nezpracovaná sériová data použít níže uvedené metody.

is_linked#

Metoda is_linked vrací, zda jsou V5 Brainy na SerialLinku 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

# Send a message to the other robot

# Create the link
link = SerialLink(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")

link.send("HELLO")

Kód pro Robota 2

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(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()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

send#

send odesílá nezpracované sériové bajty do druhého připojeného V5 Brainu.

Při čtení těchto dat pomocí receive se receive vrátí pouze tehdy, když shromáždí počet bajtů určený parametrem length Pokud tedy váš kód vždy volá receive s pevnou délkou length, měli byste zajistit, aby každá zpráva odeslaná pomocí send měla přesně tento počet bajtů (často doplněním), aby přijímač neblokoval čekání na další bajty.

Pokud se nechcete spoléhat na přesný počet bajtů, použijte místo toho received; to vám umožní zpracovat libovolné dostupné bajty bez nutnosti specifické délky.

Usage:
send(buffer)

Parametry

Popis

buffer

The data to send to the other linked V5 Brain. This can be a string or a bytearray.

Kód pro robota 1

# Send a message to the other robot

# Create the link
link = SerialLink(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")

link.send("HELLO")

Kód pro Robota 2

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(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()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

receive#

receive vrací sériová data z druhého propojeného V5 Brainu v pořadí FIFO (nejstarší nepřečtená data jako první).

Protože receive čeká na přesný počet bajtů, zprávy s pevnou délkou často vyžadují při použití funkcí send doplnění, aby každá zpráva dosáhla očekávané velikosti. Pokud odesílatel odešle méně než length bajtů, receive bude pokračovat v čekání na zbývající bajty a nic nevrátí.

Pokud je fronta prázdná a zadáte časový limit timeout receive čeká na nová data až po dobu odpovídajícího počtu milisekund. Pokud v tomto okně nic nedorazí, vrátí hodnotu NoneVeškerá data odeslaná poté zůstanou zařazena do fronty pro pozdější čtení.

Usage:
receive(length, timeout)

Parametry

Popis

length

Počet bajtů k přijetí. Funkce receive čeká, dokud nedorazí tento počet bajtů, a poté je vrátí jako pole bytearrayPokud je length 0, receive okamžitě vrátí None Pokud požadujete více bajtů, než odesílatel odešle, receive bude nadále čekat. Pokud odesílatel odešle více než toto, vrácená vyrovnávací paměť je omezena na length bajtů.

timeout

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

Kód pro robota 1

# Send a math problem for the other Brain to solve

# Create the link
link = SerialLink(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.
"""
packet = "add,7,2.5"

# Pad with spaces until it's exactly 16 bytes
while len(packet) < 16:
    packet = packet + " "

link.send(packet)

Kód pro Robota 2

# Solve the math problem that the other Brain sends

# Create the link
link = SerialLink(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()

# Receive exactly 16 bytes
buffer = link.receive(16)

# Remove the added " " padding
text = buffer.decode().strip()

# Separate the operator and numbers
parts = text.split(",")

operator = parts[0]
a = float(parts[1])
b = float(parts[2])

# Use what operator was sent
if operator == "add":
    result = a + b
elif operator == "subtract":
    result = a - b
# If not "add" or "subtract", 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 sériová data.

Usage:
link.received(callback)

Parametry

Popis

callback

Dříve definovaná function, která se provede, když V5 Brain přijme sériová data.

received zpětných volání je voláno se dvěma argumenty:

Podpis zpětného volání:
callback(buffer, length)

Argument

Popis

buffer

Pole bajtů o velikosti bytearray obsahující přijatá sériová data. Pole bajtů může být větší než přijatá zpráva.

length

Počet platných bajtů přijatých v buffer pro toto zpětné volání. Pro přístup k přijatým datům použijte buffer[:length]

Kód pro robota 1

# Send a message to the other robot

# Create the link
link = SerialLink(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")

link.send("HELLO")

Kód pro Robota 2

# Display the message that Robot 1 sends

# Create the link
link = SerialLink(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()

def received_message(bytearray, length):
    # Slice the bytearray to the valid data
    data = bytearray[:length]  
    # Decode and strip the message before displaying it
    text = data.decode().strip()
    brain.screen.print("Got: ", text)

# Call received_message whenever a message is received
link.received(received_message)

předchozí

Odkaz na zprávu

další

Utěšit

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)