Сообщение#
Введение#
Два программируемых робота VEX AIM можно соединить для обмена данными во время работы над проектом. Блоки сообщений позволяют одному роботу отправлять сообщение другому. Сообщение может содержать только текст или текст с числом.
Полученные сообщения хранятся в очереди по принципу «первым пришел — первым вышел» (FIFO). Это означает, что первое полученное сообщение будет первым прочитано.
Используйте блок получить последнее сообщение, чтобы сохранить следующее полученное сообщение. Затем используйте блок репортера последнее сообщение, чтобы прочитать сохраненный текст. Если сообщение также содержит число, используйте получить последнее сообщение с данными, чтобы сохранить оба значения, затем используйте последнее сообщение и последние данные, чтобы прочитать их.
Примечание: Для отправки и получения сообщений оба робота должны быть связаны и оба робота должны запускать проекты, использующие блоки сообщений.
Ниже приведён список всех блоков:
Значения — Прочтите информацию о сообщении или проверьте состояние сообщения и соединения.
последнее сообщение — Отображает последнее сохраненное текстовое сообщение.
последние данные — Сообщает последнее сохраненное число.
Доступно ли сообщение? — Сообщает, доступно ли сообщение для чтения.
подключен? — Сообщает, связан ли робот с другим роботом.
имя связанного робота — Сообщает имя связанного робота.
Действия — Отправка или сохранение полученных сообщений.
отправить сообщение — Отправляет текст связанному роботу.
отправить сообщение с данными — Отправляет текст и число связанному роботу.
получить последнее сообщение — Сохраняет следующее полученное текстовое сообщение.
получить последнее сообщение с данными — Сохраняет следующее полученное текстовое сообщение и номер.
Ценности#
последнее сообщение#
Блок «Последнее сообщение» отображает самое последнее сохраненное текстовое сообщение. Этот блок сам по себе не получает новое сообщение. Сначала используйте получить последнее сообщение или получить последнее сообщение с данными, затем используйте последнее сообщение для отображения сохраненного текста или используйте его в другом блоке.
(последнее сообщение)
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
Робот 1
когда экран [нажат 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
при запуске
[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
когда экран [нажат v]
[Code for Robot 1.]
[Press the screen to send a message to Robot 2.]
вывести [Robot 1] на экран ▶
отправить сообщение [message]
Робот 2
при запуске
[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
когда экран [нажат 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] на экран ▶
перенести курсор на следующую строку на экране
ждать пока <есть сообщение?>
получить последнее сообщение
вывести (последнее сообщение) на экран ▶
отправить сообщение с данными#
Блок стека отправить сообщение с данными отправляет текст и число связанному роботу. Используйте этот блок, когда сообщение должно содержать метку и число, например, для отправки заголовка с текущим значением заголовка робота. На принимающем роботе используйте доступно ли сообщение?, чтобы проверить, пришло ли сообщение, затем используйте получить последнее сообщение с данными, прежде чем прочитать текст с помощью последнее сообщение и число с помощью последние данные.
отправить сообщение [message] с данными [0]
Параметр |
Описание |
|---|---|
сообщение |
Текст, который нужно отправить связанному роботу. |
данные |
Номер, который нужно отправить вместе с сообщением. |
Пример
Робот 1
при запуске
[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] на экран ▶
вечно
если <есть сообщение?> то
получить последнее сообщение с данными
повернуть на курс (последние данные) градусов ▶
конец
конец
получить последнее сообщение#
Блок получить последнее сообщение в стеке принимает следующее полученное текстовое сообщение из очереди сообщений и сохраняет его, чтобы проект мог его использовать. Используйте этот блок после того, как есть ли сообщение? сообщит True, и перед использованием последнее сообщение. Это помогает принимающему роботу сохранить сообщение перед попыткой его отображения, сравнения или использования в другом блоке.
Используйте отправить сообщение на другом роботе, чтобы отправить сообщение только в текстовом формате.
получить последнее сообщение
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
Робот 1
когда экран [нажат 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] на экран ▶
перенести курсор на следующую строку на экране
ждать пока <есть сообщение?>
получить последнее сообщение
вывести (последнее сообщение) на экран ▶
получить последнее сообщение с данными#
Блок стека получить последнее сообщение с данными берет следующее полученное сообщение из очереди сообщений и сохраняет обе его части: текст сообщения и число, отправленное вместе с ним. Используйте этот блок после того, как сообщение доступно? сообщит True, и перед использованием последнее сообщение или последние данные. Это помогает принимающему роботу сохранить оба значения перед их использованием, например, при переходе к заголовку, отправленному другим роботом.
Используйте отправить сообщение с данными на другом роботе, чтобы отправить текст и число вместе.
получить последнее сообщение с данными
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
Робот 1
при запуске
[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] на экран ▶
вечно
если <есть сообщение?> то
получить последнее сообщение с данными
повернуть на курс (последние данные) градусов ▶
конец
конец