• 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
Перейти до основного вмісту
Ctrl+K

< Back to Platform Select

  • VEX EXP
  • Довідник API VEX EXP
  • VEXlink
  • Серійне посилання
Українська
  • English
  • العربية
  • বাংলা
  • Česky
  • 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

Навігація розділів

  • Блоки
  • Python
    • Трансмісія
    • Рух
    • Звук
    • Бачення
    • Екран
    • Контролер
    • Зондування
    • Інерційний
    • 3-провідні пристрої
    • Пневматичний
    • Мозок
    • SD-карта
    • 6-осьова рука
    • Сигнальна вежа
    • VEXlink
      • Посилання на повідомлення
      • Серійне посилання
    • Консоль
    • Логіка
    • Бібліотеки MicroPython
  • C++
  • Підручники з VEXcode

Навігація по платформі

  • 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 дозволяє двом EXP Brains взаємодіяти, надсилаючи та отримуючи необроблені послідовні дані через VEX Link. Замість позначених повідомлень, SerialLink передає буфер (рядок або масив байтів). Це робить його корисним для просунутого зв’язку між роботами, такого як потокова передача даних датчиків, надсилання користувацьких форматів пакетів або створення власного протоколу поверх байтів.

Кожне використання send додає дані до буфера отримання пов’язаного EXP Brain. Дані зчитуються в порядку надходження (першим прийшов, першим вийшов). Якщо кілька буферів надсилається до того, як інший EXP Brain використовує receive, вони залишаються в черзі та повертаються по одному в порядку надсилання. Оскільки дані можуть стояти в черзі, багаторазове надсилання великих буферів у кожному циклі може створювати затримки; для критичних за часом посилань надсилайте лише те, що вам потрібно.

Важливо: Обидва роботи повинні одночасно запускати проекти, що використовують SerialLink , інакше дані не будуть надсилатися/отримуватися.

На цій сторінці як SerialLink використовується link За потреби замініть її власною налаштованою назвою.

Нижче наведено список доступних методів:

  • is_linked – Повертає, чи цей Мозок активно підключений до свого парного Мозку.

  • send – Надсилає коротке повідомлення (з необов’язковими цілочисельними/чисельними числами з плаваючою комою) парному Brain.

  • receive – Очікує та повертає наступне вхідне повідомлення.

  • received – Реєструє функцію, яка викликається щоразу, коли надходить нове повідомлення.

Створити посилання#

Створіть послідовний порт SerialLink на обох EXP Brains, щоб встановити канал зв’язку між ними — або бездротовим способом за допомогою радіостанцій V5 Robot Radio, або через дротовий Smart Cable — щоб роботи могли надсилати один одному необроблені послідовні дані.

SerialLink(smartport, name, linktype, wired)

Параметр

Опис

smartport

Розумний порт, що використовується для цього з’єднання — порт, до якого підключено радіо V5 Robot (бездротовий зв’язок) або до якого підключено розумний кабель (дротовий зв’язок). Записується як Ports.PORTx , де x — номер порту.

name

Унікальна назва, яка буде надана цьому посиланню у вигляді рядка.
Примітка: Ця назва має бути достатньо довгою, щоб створити унікальний ідентифікатор, щоб вона випадково не збігалася з посиланням іншої команди.

linktype

Роль, яку цей Мозок використовуватиме для цієї пари посилань. Кожна пара повинна містити одного Менеджера та одного Працівника:

  • VexlinkType.MANAGER – Використовується для робота, який надсилатиме більше або більші повідомлень. Менеджери мають вищу вихідну пропускну здатність (~1040 байт/сек).
  • VexlinkType.WORKER – Використовується для робота, який надсилатиме менше або менші повідомлень. Працівники мають нижчу вихідну пропускну здатність (~520 байт/сек).

wired

Необов’язково. Чи є це з’єднання дротовим, чи бездротовим:

  • True – EXP Brains підключені за допомогою Smart Cable.
  • False (за замовчуванням) – EXP Brains підключаються бездротово за допомогою радіостанцій V5 Robot.

Код для робота 1

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

Код для Робота 2

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

Доступні методи#

Після налаштування SerialLink та підключення модулів Brains ви можете використовувати наведені нижче методи для надсилання, отримання та відповіді на необроблені послідовні дані.

is_linked#

Метод is_linked повертає, чи пов’язані між собою EXP Brains на SerialLink.

  • True – Два EXP-мозки спарені та спілкуються через цей канал.

  • False – Два мізки EXP не спарені на цьому зв’язку.

Примітка: Рекомендується завжди перевіряти, чи пов’язані EXP Brains на початку проєкту, перш ніж запускати будь-який подальший код.

Usage:
link.is_linked()

Параметри

Опис

Цей метод не має параметрів.

Код для робота 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")

Код для Робота 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 передає необроблені послідовні байти до іншого підключеного EXP Brain.

Під час читання цих даних за допомогою receive, receive поверне значення лише після того, як збере кількість байтів, визначену параметром length Через це, якщо ваш код завжди викликає receive з фіксованою довжиною length, вам слід переконатися, що кожне повідомлення, надіслане за допомогою send містить саме таку кількість байтів (часто шляхом доповнення), щоб одержувач не блокував очікування додаткових байтів.

Якщо ви не хочете залежати від точної кількості байтів, використовуйте замість цього received; це дозволяє обробляти будь-які доступні байти без вимоги до певної довжини.

Usage:
send(buffer)

Параметри

Опис

buffer

Дані, які потрібно надіслати іншому підключеному EXP Brain. Це може бути рядок string або масив bytearray.

Код для робота 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")

Код для Робота 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 повертає послідовні дані з іншого підключеного EXP Brain у порядку FIFO (спочатку найстаріші непрочитані дані).

Оскільки receive очікує на точну кількість байтів, обмін повідомленнями фіксованої довжини часто потребує доповнення при використанні send , щоб кожне повідомлення досягало очікуваного розміру. Якщо відправник передає менше ніж length байтів, receive продовжуватиме очікувати на решту байтів і нічого не повертатиме.

Якщо черга порожня, і ви вкажете тайм-аут timeout, receive то очікування нових даних триватиме до певної кількості мілісекунд. Якщо в цьому вікні нічого не надходить, повертається NoneБудь-які дані, надіслані після цього, залишаються в черзі для подальшого зчитування.

Usage:
receive(length, timeout)

Параметри

Опис

length

Кількість байтів для отримання. receive чекає, поки не надійде така кількість байтів, а потім повертає їх як масив bytearrayЯкщо length дорівнює 0, receive негайно повертає None Якщо ви запитуєте більше байтів, ніж відправник передає, receive продовжуватиме очікування. Якщо відправник передає більше, ніж це, повернений буфер обмежений length байтами.

timeout

Необов’язково. Скільки часу в мілісекундах receive очікуватиме на нове повідомлення, лише якщо черга порожня. Значення за замовчуванням — 300000 (300 секунд).

Код для робота 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)

Код для Робота 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 реєструє функцію, яка викликається щоразу, коли EXP Brain отримує послідовні дані.

Usage:
link.received(callback)

Параметри

Опис

callback

Раніше визначена функція, яка виконується, коли EXP Brain отримує послідовні дані.

received викликів зворотних викликів з двома аргументами:

Підпис зворотного виклику:
callback(buffer, length)

Аргумент

Опис

buffer

A bytearray containing the received serial data. The bytearray may be larger than the received message.

length

Кількість дійсних байтів, отриманих у буфері buffer для цього зворотного виклику. Використовуйте buffer[:length] для доступу до отриманих даних.

Код для робота 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")

Код для Робота 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)

попередній

Посилання на повідомлення

наступний

Консоль

On this page
  • Вступ
  • Створити посилання
  • Доступні методи
    • is_linked
    • send
    • receive
    • received
Innovation First, International
​

VEX та VEX Robotics є торговими марками або знаками обслуговування Innovation First, Inc. Авторське право ©2026Усі права захищено. VEX Robotics, Inc. є дочірньою компанією Innovation First International, Inc. Усі інші назви продуктів/марки інших є власністю їхніх відповідних власників. Патенти та/або патенти, що очікують розгляду - innovationfirst.com/patents
Політика конфіденційності сайту / Умови використання сайту / Політика щодо файлів cookie / Політика конфіденційності програмного забезпечення

Відвідайте сторінку VEX Robotics у Facebook Відвідайте сторінку VEX Robotics у Твіттері Відвідайте сторінку VEX Robotics в Instagram Відвідайте сторінку VEX Robotics на YouTube
Форма зворотного зв'язку VEX API

Ми цінуємо ваш відгук! Скористайтеся цією формою, щоб поділитися пропозиціями, похвалами або повідомити про помилки, пов'язані з VEX API. Ваш внесок допоможе нам покращити документацію VEX API.

​

Якщо у вас виникли технічні проблеми або вам потрібна підтримка клієнтів, відвідайте support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Примітка: поточна URL-адреса буде надана разом із вашим повідомленням

Вказуючи свою адресу електронної пошти, ви погоджуєтеся з тим, що VEX може надсилати вам електронні листи, якщо у нас виникнуть запитання щодо вашого відгуку.
Політика конфіденційності >
Будь ласка, надайте свій відгук. Відгук успішно надіслано!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)