Сообщение#

Введение#

Два программируемых робота VEX AIM можно соединить для обмена данными во время работы над проектом. Блоки сообщений позволяют одному роботу отправлять сообщение другому. Сообщение может содержать только текст или текст с числом.

Полученные сообщения хранятся в очереди по принципу «первым пришел — первым вышел» (FIFO). Это означает, что первое полученное сообщение будет первым прочитано.

Используйте блок получить последнее сообщение, чтобы сохранить следующее полученное сообщение. Затем используйте блок репортера последнее сообщение, чтобы прочитать сохраненный текст. Если сообщение также содержит число, используйте получить последнее сообщение с данными, чтобы сохранить оба значения, затем используйте последнее сообщение и последние данные, чтобы прочитать их.

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

Ниже приведён список всех блоков:

Значения — Прочтите информацию о сообщении или проверьте состояние сообщения и соединения.

Действия — Отправка или сохранение полученных сообщений.

Ценности#

последнее сообщение#

Блок «Последнее сообщение» отображает самое последнее сохраненное текстовое сообщение. Этот блок сам по себе не получает новое сообщение. Сначала используйте получить последнее сообщение или получить последнее сообщение с данными, затем используйте последнее сообщение для отображения сохраненного текста или используйте его в другом блоке.

блок последнего сообщения репортера#
(последнее сообщение)

Параметры

Описание

Этот блок не имеет параметров.

Пример

Робот 1

При нажатии на экран отправляет сообщение Роботу 2.#
когда экран [нажат v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
вывести [Robot 1] на экран ▶
отправить сообщение [Hello, Robot 2!]

Робот 2

При запуске отображается последнее сохраненное сообщение.#
при запуске
[Code for Robot 2.]
[Display the message Robot 1 sends.]
вывести [Robot 2] на экран ▶
перенести курсор на следующую строку на экране
ждать пока <есть сообщение?>
получить последнее сообщение
вывести (последнее сообщение) на экран ▶

последние данные#

Блок «Последние данные» выводит последнее сохраненное число из сообщения, содержащего данные. Этот блок сам по себе не получает новое число. Сначала используйте получить последнее сообщение с данными, а затем используйте последние данные в другом блоке, например, расстояние поездки, направление поворота или значение скорости.

блок последних данных#
(последние данные)

Параметры

Описание

Этот блок не имеет параметров.

Пример

Робот 1

При запуске непрерывно передает роботу 1 направление движения роботу 2.#
при запуске
[Code for Robot 1.]
[Continuously send the current heading to Robot 2.]
вывести [Robot 1] на экран ▶
вечно
отправить сообщение [heading] с данными (курс в градусах)
конец

Робот 2

При запуске система переключается в соответствии с последними сохраненными данными.#
при запуске
[Code for Robot 2.]
[Turn to match Robot 1's heading.]
вывести [Robot 2] на экран ▶
вечно
если <есть сообщение?> то
получить последнее сообщение с данными
повернуть на курс (последние данные) градусов ▶
конец
конец

Сообщение доступно?#

Блок логического значения is message available? сообщает, ожидает ли сообщение в очереди сообщений. Используйте этот блок перед get latest message или get latest message with data, чтобы принимающий робот пытался сохранить сообщение только после того, как оно уже поступило.

  • Верно — Доступно для прочтения сообщение.

  • Ложь — Нет сообщений, доступных для прочтения.

Доступно ли сообщение? Логический блок#
<есть сообщение?>

Параметры

Описание

Этот блок не имеет параметров.

Пример

Робот 1

При нажатии на экран отправляет сообщение Роботу 2.#
когда экран [нажат v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
вывести [Robot 1] на экран ▶
отправить сообщение [message]

Робот 2

При запуске отображает сообщение, когда робот 1 отправляет сообщение.#
при запуске
[Code for Robot 2.]
[Display a message when Robot 1 sends a message.]
вывести [Robot 2] на экран ▶
перенести курсор на следующую строку на экране
ждать пока <есть сообщение?>
вывести [Received!] на экран ▶

Связано?#

Логический блок подключено? сообщает, связан ли робот с другим роботом. Используйте этот блок перед отправкой или ожиданием сообщений, если проекту необходимо проверить готовность соединения между роботами.

  • Верно — Робот связан с другим роботом.

  • Неверно — Робот не связан с другим роботом.

Подключено? Логический блок#
<подключён?>

Параметры

Описание

Этот блок не имеет параметров.

Пример

При запуске отображается информация о подключении робота.#
при запуске
[Turn off one of the linked robots to see the message change.]
вечно
очистить экран
вывести <подключён?> на экран ▶
конец

имя связанного робота#

Блок «Имя связанного робота» отображает имя связанного робота. Используйте этот блок, чтобы показать, какой робот подключен, прежде чем отправлять или получать сообщения. Если ни один робот не связан, этот блок отображает «Нет».

связанный блок репортера имени робота#
(имя связанного робота)

Параметры

Описание

Этот блок не имеет параметров.

Пример

При запуске отображается имя подключенного робота.#
при запуске
[Display the name of the robot that is linked.]
вывести (имя связанного робота) на экран ▶

Действия#

отправить сообщение#

Блок отправить сообщение отправляет текст связанному роботу. Используйте этот блок на одном роботе, когда другому роботу необходимо получить команду, сигнал или короткий фрагмент информации. На принимающем роботе используйте доступно ли сообщение?, чтобы проверить, пришло ли сообщение, затем используйте получить последнее сообщение, прежде чем прочитать его с помощью последнее сообщение.

отправить блок стека сообщений#
отправить сообщение [message]

Параметр

Описание

сообщение

Текст, который нужно отправить связанному роботу.

Пример

Робот 1

При нажатии на экран отправляет сообщение Роботу 2.#
когда экран [нажат v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
вывести [Robot 1] на экран ▶
отправить сообщение [Hello, Robot 2!]

Робот 2

При запуске отображает сообщение, отправленное роботом 1.#
при запуске
[Code for Robot 2.]
[Display the message Robot 1 sends.]
вывести [Robot 2] на экран ▶
перенести курсор на следующую строку на экране
ждать пока <есть сообщение?>
получить последнее сообщение
вывести (последнее сообщение) на экран ▶

отправить сообщение с данными#

Блок стека отправить сообщение с данными отправляет текст и число связанному роботу. Используйте этот блок, когда сообщение должно содержать метку и число, например, для отправки заголовка с текущим значением заголовка робота. На принимающем роботе используйте доступно ли сообщение?, чтобы проверить, пришло ли сообщение, затем используйте получить последнее сообщение с данными, прежде чем прочитать текст с помощью последнее сообщение и число с помощью последние данные.

отправить сообщение с блоком стека данных#
отправить сообщение [message] с данными [0]

Параметр

Описание

сообщение

Текст, который нужно отправить связанному роботу.

данные

Номер, который нужно отправить вместе с сообщением.

Пример

Робот 1

При запуске непрерывно передает роботу 1 направление движения роботу 2.#
при запуске
[Code for Robot 1.]
[Continuously send the current heading to Robot 2.]
вывести [Robot 1] на экран ▶
вечно
отправить сообщение [heading] с данными (курс в градусах)
конец

Робот 2

При начале движения робот поворачивает в соответствии с направлением, заданным роботом 1.#
при запуске
[Code for Robot 2.]
[Turn to match Robot 1's heading.]
вывести [Robot 2] на экран ▶
вечно
если <есть сообщение?> то
получить последнее сообщение с данными
повернуть на курс (последние данные) градусов ▶
конец
конец

получить последнее сообщение#

Блок получить последнее сообщение в стеке принимает следующее полученное текстовое сообщение из очереди сообщений и сохраняет его, чтобы проект мог его использовать. Используйте этот блок после того, как есть ли сообщение? сообщит True, и перед использованием последнее сообщение. Это помогает принимающему роботу сохранить сообщение перед попыткой его отображения, сравнения или использования в другом блоке.

Используйте отправить сообщение на другом роботе, чтобы отправить сообщение только в текстовом формате.

получить последний блок стека сообщений#
получить последнее сообщение

Параметры

Описание

Этот блок не имеет параметров.

Пример

Робот 1

При нажатии на экран отправляет сообщение Роботу 2.#
когда экран [нажат v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
вывести [Robot 1] на экран ▶
отправить сообщение [Hello, Robot 2!]

Робот 2

При запуске сохраняет и отображает сообщение, отправленное роботом 1.#
при запуске
[Code for Robot 2.]
[Display the message Robot 1 sends.]
вывести [Robot 2] на экран ▶
перенести курсор на следующую строку на экране
ждать пока <есть сообщение?>
получить последнее сообщение
вывести (последнее сообщение) на экран ▶

получить последнее сообщение с данными#

Блок стека получить последнее сообщение с данными берет следующее полученное сообщение из очереди сообщений и сохраняет обе его части: текст сообщения и число, отправленное вместе с ним. Используйте этот блок после того, как сообщение доступно? сообщит True, и перед использованием последнее сообщение или последние данные. Это помогает принимающему роботу сохранить оба значения перед их использованием, например, при переходе к заголовку, отправленному другим роботом.

Используйте отправить сообщение с данными на другом роботе, чтобы отправить текст и число вместе.

получить последнее сообщение с помощью блока стека данных#
получить последнее сообщение с данными

Параметры

Описание

Этот блок не имеет параметров.

Пример

Робот 1

При запуске непрерывно передает роботу 1 направление движения роботу 2.#
при запуске
[Code for Robot 1.]
[Continuously send the current heading to Robot 2.]
вывести [Robot 1] на экран ▶
вечно
отправить сообщение [heading] с данными (курс в градусах)
конец

Робот 2

При запуске устройство сохраняет данные сообщения и поворачивает, чтобы следовать курсу Робота 1.#
при запуске
[Code for Robot 2.]
[Turn to match Robot 1's heading.]
вывести [Robot 2] на экран ▶
вечно
если <есть сообщение?> то
получить последнее сообщение с данными
повернуть на курс (последние данные) градусов ▶
конец
конец