• 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
  • SerialLink
Русский
  • 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
      • MessageLink
      • SerialLink
    • Консоль
    • Логика
    • Библиотеки 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#

  • Введение

  • Создать ссылку

  • Доступные методы

    • is_linked

    • отправлять

    • получать

    • полученный

Введение#

SerialLink позволяет двум модулям EXP Brain обмениваться данными, отправляя и принимая необработанные последовательные данные по каналу VEX Link. Вместо сообщений с метками SerialLink передает буфер (строку или массив байтов). Это делает его полезным для сложных задач связи между роботами, таких как потоковая передача данных с датчиков, отправка пользовательских форматов пакетов или создание собственного протокола на основе байтов.

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

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

На этой странице в качестве примера используется имя SerialLink SerialLink link . При необходимости замените его на собственное имя.

Ниже приведён список доступных методов:

  • is_linked – Возвращает значение, указывающее, активно ли данный мозг связан с парным мозгом.

  • send – Отправляет короткое сообщение (с необязательными данными типа int/float) в сопряженный Brain.

  • receive – Ожидает и возвращает следующее входящее сообщение.

  • received – Регистрирует функцию, которая будет вызываться при получении нового сообщения.

Создать ссылку#

Создайте интерфейс SerialLink на обоих блоках управления EXP, чтобы установить канал связи между ними — либо беспроводным способом с помощью радиомодулей V5 Robot Radios, либо через проводной интеллектуальный кабель — чтобы роботы могли обмениваться необработанными последовательными данными.

SerialLink(smartport, name, linktype, wired)

Параметр

Описание

smartport

Для этой связи используется «умный порт» — порт, к которому подключено радиоустройство робота V5 (беспроводное соединение) или в который вставлен «умный кабель» (проводное соединение). Записывается как Ports.PORTx , где x — номер порта.

name

Уникальное имя для этой ссылки в виде строки.
Примечание: Это имя должно быть достаточно длинным, чтобы создать уникальный идентификатор и избежать случайного совпадения со ссылкой другой команды.

linktype

Роль, которую этот «мозг» будет использовать для этой пары связей. Каждая пара должна включать одного менеджера и одного работника:

  • VexlinkType.MANAGER – Используется для робота, который будет отправлять больше или более крупные сообщения. У менеджеров более высокая исходящая пропускная способность (~1040 байт/сек).
  • VexlinkType.WORKER – Используется для робота, который будет отправлять меньше или более мелкие сообщения. У работников более низкая исходящая пропускная способность (~520 байт/сек).

wired

Необязательно. Тип соединения: проводное или беспроводное:

  • True – Блоки управления EXP подключены через интеллектуальный кабель.
  • False (по умолчанию) – Блоки управления EXP подключаются по беспроводной связи с помощью роботизированных радиомодулей V5.

Код для робота 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 и подключения модулей Brain вы можете использовать описанные ниже методы для отправки, получения и обработки необработанных последовательных данных.

is_linked#

Метод is_linked возвращает значение, указывающее, сопряжены ли модули EXP Brains на последовательном интерфейсе друг с другом.

  • 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

The data to send to the other linked EXP Brain. This can be a string or a 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] ( 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)

назад

MessageLink

вперёд

Консоль

На этой странице
  • Введение
  • Создать ссылку
  • Доступные методы
    • 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)