• 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
  • Soros kapcsolat
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

Soros kapcsolat#

  • Bevezetés

  • Link létrehozása

  • Elérhető módszerek

    • összekapcsolva

    • elküld

    • kap

    • kapott

Bevezetés#

A SerialLink lehetővé teszi két EXP Brain közötti kommunikációt nyers soros adatok küldésével és fogadásával a VEX Linken keresztül. A címkézett üzenetek helyett a SerialLink egy puffert (egy karakterláncot vagy egy bájtcsobányi tömböt) továbbít. Ez hasznossá teszi a fejlett robot-robot kommunikációhoz, például érzékelőadatok streameléséhez, egyéni csomagformátumok küldéséhez vagy saját protokoll bájtokra építéséhez.

A send minden egyes használata adatokat ad hozzá a csatolt EXP Brain fogadó pufferéhez. Az adatok beolvasása érkezési sorrendben történik (elsőként be, elsőként ki). Ha több puffer is elküldésre kerül, mielőtt a másik EXP Brain a receive utasítást használja, azok sorban maradnak, és egyenként, a küldés sorrendjében kerülnek visszaadásra. Mivel az adatok sorban állhatnak, a nagy pufferek ismételt küldése minden ciklusban várakozást okozhat; időkritikus kapcsolatok esetén csak azt küldje el, amire szüksége van.

Fontos: Mindkét robotnak egyszerre kell olyan projekteket futtatnia, amelyek SerialLink használnak, különben nem történik adatküldés/fogadás.

Ez az oldal link nevet használja példaként SerialLink névhez. Szükség szerint cserélje ki 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 – Rövid üzenetet küld (opcionális int/float adatokkal) a párosított Brainnek.

  • 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 soros kapcsolatot 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 a V5 Robot Radios segítségével, akár vezetékes Smart Cable-en keresztül –, így a robotok nyers soros adatokat küldhetnek egymásnak.

SerialLink(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 = SerialLink(Ports.PORT1, "VEXRoboticsLink123456789", VexlinkType.MANAGER)

Robot 2 kódja

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

Elérhető módszerek#

Miután a SerialLink beállítása és a Brains összekapcsolása megtörtént, az alábbi módszerek segítségével küldhet, fogadhat és válaszolhat nyers soros adatokra.

is_linked#

is_linked A metódus visszaadja, hogy a SerialLinken lévő EXP Brain-ek 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

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

Robot 2 kódja

# 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 nyers soros bájtokat küld a másik összekapcsolt EXP Brainnek.

When reading that data with receive, receive will only return once it has collected the number of bytes specified by its length parameter. Because of that, if your code always calls receive with a fixed length, you should ensure each message sent with send is exactly that many bytes (often by padding) so the receiver doesn’t block waiting for additional bytes.

Ha nem szeretnél pontos bájtszámtól függeni, használd a received függvényt; ez lehetővé teszi, hogy a rendelkezésre álló bájtokat kezeld anélkül, hogy egy adott hosszt kellene megadnod.

Usage:
send(buffer)

Paraméterek

Leírás

buffer

A másik összekapcsolt EXP Brain-nek küldendő adatok. Ez lehet egy string vagy egy bytearray.

1. robot kódja

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

Robot 2 kódja

# 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 FIFO sorrendben adja vissza a másik összekapcsolt EXP Brain soros adatait (a legrégebbi olvasatlan adattal kezdődően).

Mivel receive pontos bájtszámra vár, a fix hosszúságú üzenetküldés gyakran kitöltést igényel send használatakor, hogy minden üzenet elérje a várt méretet. Ha a küldő kevesebb, mint length bájtot küld, receive továbbra is a fennmaradó bájtokra vár, és nem ad vissza semmit.

Ha a várólista üres és timeout, receive függvény ennyi milliszekundumot vár az új adatokra. Ha az adott ablakban semmi sem érkezik, akkor Noneértéket ad vissza. A később küldött adatok a sorban maradnak, hogy később beolvassák őket.

Usage:
receive(length, timeout)

Paraméterek

Leírás

length

A fogadandó bájtok száma. receive megvárja, amíg ennyi bájt megérkezik, majd bytearrayHa length értéke 0, receive azonnal None értéket ad vissza. Ha több bájtot kérsz, mint amennyit a küldő elküld, receive tovább várakozik. Ha a küldő ennél többet küld, a visszaadott puffer length bájtra korlátozódik.

timeout

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

1. robot kódja

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

Robot 2 kódja

# 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 regisztrál egy függvényt, amely akkor hívódik meg, amikor az EXP Brain soros adatokat fogad.

Usage:
link.received(callback)

Paraméterek

Leírás

callback

Egy korábban definiált függvény, amely akkor hajtódik végre, amikor az EXP Brain soros adatokat fogad.

received visszahívásokat két argumentummal hívjuk meg:

Visszahívási aláírás:
callback(buffer, length)

Érv

Leírás

buffer

Egy bytearray tömb, amely a fogadott soros adatokat tartalmazza. A bájtos tömb nagyobb lehet, mint a fogadott üzenet.

length

Az érvényes bájtok száma, amelyeket az buffer pufferben fogadott ez a visszahívás. A buffer[:length] paraméterrel férhet hozzá a fogadott adatokhoz.

1. robot kódja

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

Robot 2 kódja

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

előző

Üzenetlink

következő

Konzol

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)