• 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āriet uz galveno saturu
Ctrl+K

< Back to Platform Select

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

Sadaļu navigācija

  • Bloki
  • Python
    • Piedziņa
    • Kustība
    • Skaņa
    • Vīzija
    • Ekrāns
    • Kontrolieris
    • Sensori
    • Inerciāls
    • 3 vadu ierīces
    • Pneimatiska
    • Smadzenes
    • SD karte
    • 6 asu roka
    • Signāla tornis
    • VEXlink
      • Ziņojuma saite
      • Seriālā saite
    • Konsole
    • Loģika
    • MicroPython bibliotēkas
  • C++
  • VEXkoda pamācības

Platformas navigācija

  • 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

Seriālā saite#

  • Ievads

  • Izveidot saiti

  • Pieejamās metodes

    • ir_saistīts

    • sūtīt

    • saņemt

    • saņemts

Ievads#

SerialLink ļauj divām EXP smadzenēm sazināties, nosūtot un saņemot neapstrādātus seriālos datus, izmantojot VEX Link. Marķētu ziņojumu vietā SerialLink pārraida buferi (virkni vai baitu masīvu). Tas padara to noderīgu progresīvai robotu savstarpējai saziņai, piemēram, sensoru datu straumēšanai, pielāgotu pakešu formātu sūtīšanai vai sava protokola izveidei, izmantojot baitus.

Katru reizi, kad tiek izmantota send, saistītā EXP Brain saņemšanas buferī tiek pievienoti dati. Dati tiek nolasīti to piegādes secībā (pirmais ienāk, pirmais ārā). Ja pirms otra EXP Brain izmanto receive, tiek nosūtīti vairāki buferi, tie paliek rindā un tiek atgriezti pa vienam tādā secībā, kādā tie tika nosūtīti. Tā kā dati var tikt ievietoti rindā, atkārtota lielu buferu sūtīšana katrā ciklā var radīt uzkrāšanos; laika ziņā kritiskām saitēm nosūtiet tikai to, kas jums nepieciešams.

Svarīgi: Abiem robotiem vienlaikus jādarbojas projektos, kas izmanto SerialLink , pretējā gadījumā dati netiks nosūtīti/saņemti.

Šajā lapā kā piemēra SerialLink nosaukums tiek izmantots link Ja nepieciešams, nomainiet to ar savu konfigurēto nosaukumu.

Zemāk ir pieejamo metožu saraksts:

  • is_linked – Atgriež, vai šīs smadzenes ir aktīvi savienotas ar pārī savienotajām smadzenēm.

  • send – Nosūta īsu ziņojumu (ar papildu int/float datiem) pārī savienotajām smadzenēm.

  • receive – Gaida un atgriež nākamo ienākošo ziņojumu.

  • received – Reģistrē funkciju, kas tiks izsaukta ikreiz, kad tiek saņemts jauns ziņojums.

Izveidot saiti#

Izveidojiet seriālo saiti abās EXP smadzenēs, lai izveidotu saziņas kanālu starp tām — vai nu bezvadu režīmā ar V5 robotu radio, vai izmantojot vadu viedkabeli —, lai roboti varētu viens otram sūtīt neapstrādātus seriālos datus.

SerialLink(smartport, name, linktype, wired)

Parametrs

Apraksts

smartport

Šai saitei izmantotā viedā pieslēgvieta — pieslēgvieta, kurai ir pievienots V5 robota radio (bezvadu savienojums) vai kurai ir pievienots viedais kabelis (vadu savienojums). Rakstīts kā Ports.PORTx , kur x ir pieslēgvietas numurs.

name

Unikālais nosaukums, kas šai saitei jāpiešķir kā virkne.
Piezīme: Šim nosaukumam jābūt pietiekami garam, lai izveidotu unikālu ID, lai tas nejauši nesakristu ar citas komandas saiti.

linktype

Loma, ko šīs smadzenes izmantos šim saišu pārim. Katrā pārī jāiekļauj viens vadītājs un viens darbinieks:

  • VexlinkType.MANAGER – Izmantojiet robotam, kas sūtīs vairāk vai lielākus ziņojumus. Vadītājiem ir lielāka izejošā joslas platums (~1040 baiti/s).
  • VexlinkType.WORKER – Izmantojiet robotam, kas sūtīs mazāk vai īsākus ziņojumus. Darbiniekiem ir mazāka izejošā joslas platums (~520 baiti/s).

wired

Pēc izvēles. Vai šī saite ir vadu vai bezvadu:

  • True – EXP smadzenes ir savienotas, izmantojot viedkabeli.
  • False (pēc noklusējuma) – EXP smadzenes izveido bezvadu savienojumu, izmantojot V5 robota radio.

1. robota kods

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

Robots 2 kods

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

Pieejamās metodes#

Kad jūsu SerialLink ir iestatīts un smadzenes ir savienotas, varat izmantot tālāk norādītās metodes, lai nosūtītu, saņemtu un atbildētu uz neapstrādātiem sērijas datiem.

is_linked#

is_linked metode atgriež, vai EXP smadzenes seriālajā saitē ir savienotas pārī viena ar otru.

  • True – Abas EXP smadzenes ir savienotas pārī un sazinās, izmantojot šo saiti.

  • False – Abas EXP smadzenes šajā saitē nav savienotas pārī.

Piezīme: Pirms jebkāda turpmāka koda palaišanas projekta sākumā vienmēr ir jāpārbauda, ​​vai EXP smadzenes ir saistītas.

Usage:
link.is_linked()

Parametri

Apraksts

Šai metodei nav parametru.

1. robota kods

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

Robots 2 kods

# 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 pārraida neapstrādātus seriālos baitus uz otru saistīto 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.

Ja nevēlaties paļauties uz precīzu baitu skaitu, izmantojiet received; tas ļauj apstrādāt visus pieejamos baitus, nepieprasot konkrētu garumu.

Usage:
send(buffer)

Parametri

Apraksts

buffer

Dati, kas jānosūta uz otru saistīto EXP Brain. Tā var būt string vai bytearray.

1. robota kods

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

Robots 2 kods

# 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 atgriež sērijas datus no otras saistītās EXP Brain FIFO secībā (vispirms vecākie nelasītie dati).

Tā kā receive gaida precīzu baitu skaitu, fiksēta garuma ziņojumapmaiņai, izmantojot send , bieži ir nepieciešama papildināšana, lai katrs ziņojums sasniegtu paredzēto izmēru. Ja sūtītājs pārsūta mazāk nekā length baitus, receive turpinās gaidīt atlikušos baitus un neko neatgriezīs.

Ja rinda ir tukša un jūs norādāt taimautu timeout, receive gaida jaunus datus līdz norādītajam milisekundēm. Ja šajā logā nekas neierodas, tā atgriež vērtību None. Visi pēc tam nosūtītie dati paliek rindā, lai tos nolasītu vēlāk.

Usage:
receive(length, timeout)

Parametri

Apraksts

length

Saņemamo baitu skaits. receive gaida, līdz ir saņemti norādītie baiti, un pēc tam atgriež tos kā bytearrayJa length ir 0, receive nekavējoties atgriež None Ja pieprasāt vairāk baitu, nekā sūtītājs pārsūta, receive turpinās gaidīt. Ja sūtītājs pārsūta vairāk nekā šis, atgrieztā bufera lielums ir ierobežots līdz length baitiem.

timeout

Neobligāti. Cik ilgi milisekundēs receive gaidīs jaunu ziņojumu tikai tad, ja rinda ir tukša. Noklusējuma vērtība ir 300000 (300 sekundes).

1. robota kods

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

Robots 2 kods

# 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 reģistrē funkciju, kas tiks izsaukta ikreiz, kad EXP Brain saņems seriālos datus.

Usage:
link.received(callback)

Parametri

Apraksts

callback

Iepriekš definēta funkcija, kas tiek izpildīta, kad EXP Brain saņem seriālos datus.

received atzvanīšanas signāli tiek izsaukti ar diviem argumentiem:

Atzvanīšanas paraksts:
callback(buffer, length)

Arguments

Apraksts

buffer

bytearray , kas satur saņemtos seriālos datus. Baitu masīvs var būt lielāks nekā saņemtais ziņojums.

length

The number of valid bytes received in buffer for this callback. Use buffer[:length] to access the received data.

1. robota kods

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

Robots 2 kods

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

iepriekšējs

Ziņojuma saite

nākošais

Konsole

On this page
  • Ievads
  • Izveidot saiti
  • Pieejamās metodes
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

VEX un VEX Robotics ir Innovation First, Inc. preču zīmes vai pakalpojumu zīmes. Autortiesības ©2026Visas tiesības aizsargātas. VEX Robotics, Inc. ir Innovation First International, Inc. meitasuzņēmums. Visi pārējie citu produktu nosaukumi/zīmes pieder to attiecīgajiem īpašniekiem. Patenti un/vai patenti gaida apstiprinājumu - innovationfirst.com/patents
Vietnes konfidencialitātes politika / Vietnes lietošanas noteikumi / Sīkfailu politika / Programmatūras konfidencialitātes politika

Apmeklējiet VEX Robotics Facebook lapu Apmeklējiet VEX Robotics Twitter lapu Apmeklējiet VEX Robotics Instagram lapu Apmeklējiet VEX Robotics YouTube lapu
VEX API atsauksmju veidlapa

Mēs novērtējam jūsu atsauksmes! Izmantojiet šo veidlapu, lai sniegtu ieteikumus, komplimentus vai ziņotu par kļūdām saistībā ar VEX API. Jūsu sniegtā informācija palīdz mums uzlabot VEX API dokumentāciju.

​

Ja rodas tehniskas problēmas vai nepieciešams klientu atbalsts, lūdzu, apmeklējiet vietni support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Piezīme. Pašreizējais URL tiks kopīgots ar jūsu ziņojumu.

Norādot savu e-pasta adresi, jūs piekrītat, ka VEX var jums sūtīt e-pastus, ja mums ir jautājumi par jūsu atsauksmēm.
Privātuma politika >
Lūdzu, sniedziet savu atsauksmi. Atsauksme iesniegta veiksmīgi!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)