• 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
Pereiti prie pagrindinio turinio
Ctrl+K

< Back to Platform Select

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

Skyriaus navigacija

  • Blokai
  • Python
    • Pavarų dėžė
    • Judesys
    • Garsas
    • Vizija
    • Ekranas
    • Valdiklis
    • Jutimas
    • Inercinis
    • 3 laidų įrenginiai
    • Pneumatinis
    • Smegenys
    • SD kortelė
    • 6 ašių svirtis
    • Signalinis bokštas
    • VEXlink
      • Žinutės nuoroda
      • Serijinė jungtis
    • Konsolė
    • Logika
    • „MicroPython“ bibliotekos
  • C++
  • VEXcode pamokos

Platformos navigacija

  • 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

Serijinė jungtis#

  • Įvadas

  • Sukurti nuorodą

  • Galimi metodai

    • yra_susietas

    • siųsti

    • gauti

    • gautas

Įvadas#

„SerialLink“ leidžia dviem EXP Brains bendrauti siunčiant ir gaunant neapdorotus nuosekliuosius duomenis per „VEX Link“. Vietoj paženklintų pranešimų „SerialLink“ perduoda buferį (eilutę arba baitų matricą). Tai naudinga pažangiam robotų tarpusavio ryšiui, pvz., jutiklių duomenų srautiniam perdavimui, pasirinktinių paketų formatų siuntimui arba savo protokolo kūrimui baitų pagrindu.

Kiekvieną kartą panaudojus send, duomenys pridedami prie susieto EXP Brain priėmimo buferio. Duomenys skaitomi tokia tvarka, kokia jie atkeliauja (pirmas įeina, pirmas išeina). Jei prieš tai, kai kitas EXP Brain panaudoja receive, išsiunčiami keli buferiai, jie lieka eilėje ir grąžinami po vieną tokia tvarka, kokia buvo išsiųsti. Kadangi duomenys gali būti eilėje, pakartotinai siunčiant didelius buferius kiekvienoje kilpoje gali susidaryti vėlavimas; laiko požiūriu kritiškiems ryšiams siųskite tik tai, ko jums reikia.

Svarbu: Abu robotai vienu metu turi vykdyti projektus, kurie naudoja SerialLink , kitaip duomenys nebus siunčiami / gaunami.

Šiame puslapyje kaip pavyzdinis SerialLink pavadinimas naudojamas link . Prireikus pakeiskite jį savo sukonfigūruotu pavadinimu.

Žemiau pateikiamas galimų metodų sąrašas:

  • is_linked – Grąžina, ar šios smegenys yra aktyviai prijungtos prie suporuotų smegenėlių.

  • send – Siunčia trumpą žinutę (su pasirinktinai sveikaisiais/slankiojančiais skaičiais) į suporuotas smegenis.

  • receive – Laukia ir grąžina kitą gaunamą pranešimą.

  • received – Registruoja funkciją, kuri bus iškviečiama gavus naują pranešimą.

Sukurti nuorodą#

Sukurkite nuoseklųjį ryšį abiejuose EXP Brain įrenginiuose, kad užmegztumėte ryšio kanalą tarp jų – belaidžiu būdu su V5 robotų radijo imtuvais arba laidiniu išmaniuoju kabeliu – kad robotai galėtų siųsti vienas kitam neapdorotus nuosekliuosius duomenis.

SerialLink(smartport, name, linktype, wired)

Parametras

Aprašymas

smartport

Šiam ryšiui naudojamas išmanusis prievadas – prievadas, prie kurio prijungtas V5 roboto radijas (belaidis ryšys) arba išmanusis kabelis (laidinis ryšys). Parašytas taip: Ports.PORTx , kur x yra prievado numeris.

name

Unikalus šios nuorodos pavadinimas eilutės forma.
Pastaba: Šis pavadinimas turėtų būti pakankamai ilgas, kad būtų sukurtas unikalus ID ir netyčia nesutaptų su kitos komandos nuoroda.

linktype

Rolė, kurią šios smegenys naudos šiai ryšių porai. Kiekvienoje poroje turi būti vienas vadovas ir vienas darbuotojas:

  • VexlinkType.MANAGER – Naudokite robotui, kuris siųs daugiau arba didesnes žinutes. Vadovai turi didesnį išeinantį pralaidumą (~1040 baitų/sek.).
  • VexlinkType.WORKER – Naudokite robotui, kuris siųs mažiau arba mažesnius pranešimus. Darbininkai turi mažesnį išeinantį pralaidumą (~520 baitų/sek.).

wired

Pasirinktinai. Ar ši jungtis laidinė, ar belaidė:

  • True – EXP smegenys sujungtos išmaniuoju kabeliu.
  • False (numatytasis) – EXP smegenys jungiasi belaidžiu būdu, naudodamos V5 roboto radijo imtuvus.

1 roboto kodas

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

Roboto 2 kodas

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

Galimi metodai#

Kai „SerialLink“ bus nustatytas ir „Brainsai“ bus susieti, galite naudoti toliau nurodytus metodus neapdorotiems serijiniams duomenims siųsti, gauti ir į juos atsakyti.

is_linked#

is_linked metodas grąžina, ar EXP smegenys SerialLink yra suporuotos viena su kita.

  • True – Dvi EXP smegenys yra suporuotos ir bendrauja šiuo ryšiu.

  • False – Šioje jungtyje dvi EXP smegenys nėra suporuotos.

Pastaba: Prieš paleidžiant bet kokį tolesnį kodą, gera praktika yra visada patikrinti, ar EXP smegenys yra susietos projekto pradžioje.

Usage:
link.is_linked()

Parametrai

Aprašymas

Šis metodas neturi parametrų.

1 roboto kodas

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

Roboto 2 kodas

# 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 perduoda neapdorotus serijinius baitus į kitą susietą EXP Brain.

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.

Jei nenorite pasikliauti tiksliu baitų skaičiumi, naudokite received; tai leidžia tvarkyti bet kokius prieinamus baitus nereikalaujant konkretaus ilgio.

Usage:
send(buffer)

Parametrai

Aprašymas

buffer

Duomenys, kurie bus siunčiami į kitą susietą EXP smegenų bloką. Tai gali būti string arba bytearray.

1 roboto kodas

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

Roboto 2 kodas

# 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 grąžina serijinius duomenis iš kito susieto EXP Brain FIFO tvarka (pirmiausia seniausi neskaityti duomenys).

Kadangi receive laukia tikslaus baitų skaičiaus, fiksuoto ilgio pranešimams dažnai reikia užpildymo, kai naudojamas send , kad kiekvienas pranešimas pasiektų laukiamą dydį. Jei siuntėjas perduoda mažiau nei length baitus, receive toliau lauks likusių baitų ir nieko negrąžins.

Jei eilė tuščia ir nurodote timeout, receive funkcija laukia naujų duomenų iki nurodytos milisekundžių vertės. Jei per tą langą nieko negaunama, grąžinama None. Visi vėliau išsiųsti duomenys lieka eilėje, kad būtų nuskaityti vėliau.

Usage:
receive(length, timeout)

Parametrai

Aprašymas

length

Gaunamų baitų skaičius. receive laukia, kol ateis nurodytas baitų skaičius, tada grąžina juos kaip receiveJei length yra receive, bytearray nedelsdami grąžina length Jei užklausiate daugiau baitų, nei siuntėjas siunčia, 0 toliau lauks. Jei siuntėjas siunčia daugiau nei nurodyta, grąžinamas buferis yra apribotas iki None baitų.

timeout

Pasirinktinai. Kiek milisekundėmis lauks naujo pranešimo, jei eilė tuščia, jei receive Numatytoji reikšmė yra 300000 (300 sekundžių).

1 roboto kodas

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

Roboto 2 kodas

# 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 užregistruoja funkciją, kuri bus iškviečiama kaskart, kai EXP Brain gaus serijinius duomenis.

Usage:
link.received(callback)

Parametrai

Aprašymas

callback

Anksčiau apibrėžta function, kuri vykdoma, kai EXP Brain gauna serijinius duomenis.

received atgalinių iškvietimų iškviečiami su dviem argumentais:

Atgalinio iškvietimo parašas:
callback(buffer, length)

Argumentas

Aprašymas

buffer

bytearray , kuriame yra gauti serijiniai duomenys. Baitų masyvas gali būti didesnis nei gautas pranešimas.

length

Šiam grįžtamajam iškvietimui į buferį buffer galiojančių baitų skaičius. Gautiems duomenims pasiekti naudokite buffer[:length]

1 roboto kodas

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

Roboto 2 kodas

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

praeitas

Žinutės nuoroda

kitas

Konsolė

On this page
  • Įvadas
  • Sukurti nuorodą
  • Galimi metodai
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

„VEX“ ir „VEX Robotics“ yra „Innovation First, Inc.“ prekių ženklai arba paslaugų ženklai. Autorių teisės © 2026Visos teisės saugomos. „VEX Robotics, Inc.“ yra „Innovation First International, Inc.“ dukterinė įmonė. Visi kiti produktų pavadinimai / prekių ženklai yra jų atitinkamų savininkų nuosavybė. Patentai ir (arba) laukiami patentų patvirtinimai - innovationfirst.com/patents
Svetainės privatumo politika / Svetainės naudojimo sąlygos / Slapukų politika / Programinės įrangos privatumo politika

Apsilankykite „VEX Robotics“ „Facebook“ puslapyje Apsilankykite „VEX Robotics“ „Twitter“ puslapyje Apsilankykite „VEX Robotics“ „Instagram“ puslapyje Apsilankykite „VEX Robotics“ „YouTube“ puslapyje
VEX API atsiliepimų forma

Vertiname jūsų atsiliepimus! Norėdami pasidalyti pasiūlymais, komplimentais arba pranešti apie VEX API klaidas, naudokite šią formą. Jūsų indėlis padeda mums tobulinti VEX API dokumentaciją.

​

Jei kyla techninių problemų arba reikia klientų pagalbos, apsilankykite support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Pastaba: dabartinis URL bus bendrinamas su jūsų pranešimu

Įtraukdami savo el. pašto adresą, jūs sutinkate, kad VEX gali siųsti jums el. laiškus, jei turėsime klausimų dėl jūsų atsiliepimų.
Privatumo politika >
Prašome pateikti atsiliepimą. Atsiliepimas sėkmingai pateiktas!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)