信息#

介绍#

两台 VEX AIM 编程机器人可以连接起来,以便在项目进行过程中进行通信。消息模块允许一台机器人向另一台机器人发送消息。消息可以包含纯文本,也可以包含文本和数字。

接收到的消息会存储在先进先出(FIFO)队列中。这意味着最先接收到的消息将首先被读取。

使用 获取最新消息 代码块存储接收到的下一条消息。然后使用 最新消息 报告器代码块读取存储的文本。如果消息中还包含数字,则使用 获取带有数据的最新消息 代码块存储这两个值,然后使用 最新消息最新数据 代码块读取它们。

**注意:**要发送和接收消息,两个机器人必须已连接,并且两个机器人必须运行使用消息块的项目。

以下是所有模块的列表:

值 — 读取消息信息或检查消息和连接状态。

操作——发送或存储已接收的消息。

价值观#

最新消息#

“最新消息”报告模块会报告最近存储的文本消息。该模块本身不会获取新消息。请先使用 获取最新消息获取包含数据的最新消息,然后再使用 最新消息 模块来显示存储的文本,或将其用于其他模块。

最新消息 记者块#
(最新消息)

参数

描述

该块没有参数。

例子

机器人 1

按下屏幕时,向机器人 2 发送消息。#
当屏幕 [pressed 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

启动后,持续向机器人 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]▶
永久循环
如果 <有消息吗?> 那么
获取带有数据的最新消息
归位至 (最新数据) 度 ▶
结束
结束

有消息吗?#

“消息是否可用?”布尔块用于报告消息队列中是否有消息等待接收。请在调用 获取最新消息获取包含数据的最新消息 之前使用此块,以便接收机器人仅在收到消息后才尝试存储消息。

  • 正确 — 有一条消息可供阅读。

  • 错误 — 没有可阅读的消息。

消息是否可用?布尔块#
<有消息吗?>

参数

描述

该块没有参数。

例子

机器人 1

按下屏幕时,向机器人 2 发送消息。#
当屏幕 [pressed 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.]
永久循环
清屏
在屏幕上打印 <已连接?>▶
结束

链接机器人名称#

“已连接机器人名称”报告模块会报告已连接机器人的名称。使用此模块可以在发送或接收消息之前显示已连接的机器人。如果没有连接任何机器人,此模块将报告“无”。

链接机器人名称报告块#
(linked robot name)

参数

描述

该块没有参数。

例子

启动时,显示已链接机器人的名称。#
当开始
[Display the name of the robot that is linked.]
在屏幕上打印 (linked robot name)▶

行动#

发送消息#

发送消息堆栈块向连接的机器人发送文本。当一个机器人需要接收命令、信号或简短信息时,在一个机器人上使用此块。在接收机器人上,使用消息可用吗?检查消息是否已到达,然后使用获取最新消息读取消息,最后使用最新消息读取消息。

发送消息堆栈块#
发送消息 [message]

范围

描述

信息

要发送给关联机器人的文本。

例子

机器人 1

按下屏幕时,向机器人 2 发送消息。#
当屏幕 [pressed 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]▶
在屏幕上设定光标至下一行
等到 <有消息吗?>
获取最新消息
在屏幕上打印 (最新消息)▶

发送带有数据的消息#

发送带有数据的消息 堆栈块会向关联的机器人发送文本和一个数字。当消息需要标签和数字时,例如发送包含机器人当前航向值的航向消息,请使用此块。在接收机器人上,使用 消息是否可用? 检查消息是否已到达,然后使用 获取带有数据的最新消息,之后使用 最新消息 读取文本,并使用 最新数据 读取数字。

发送带有数据栈块的消息#
发送带有数据 [0]消息 [message]

范围

描述

信息

要发送给关联机器人的文本。

数据

要随消息一起发送的号码。

例子

机器人 1

启动后,持续向机器人 2 发送机器人 1 的航向。#
当开始
[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]▶
永久循环
如果 <有消息吗?> 那么
获取带有数据的最新消息
归位至 (最新数据) 度 ▶
结束
结束

获取最新消息#

“获取最新消息”堆栈块从消息队列中获取下一条接收到的文本消息并将其存储起来,以便项目可以使用。请在“消息是否可用?”(#is-message-available) 返回“真”之后、“获取最新消息”(#latest-message) 之前使用此块。这有助于接收机器人在尝试显示、比较或在其他块中使用消息之前将其保存。

对另一个机器人使用 发送消息 发送纯文本消息。

获取最新消息堆栈块#
获取最新消息

参数

描述

该块没有参数。

例子

机器人 1

按下屏幕时,向机器人 2 发送消息。#
当屏幕 [pressed 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

启动后,持续向机器人 2 发送机器人 1 的航向。#
当开始
[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]▶
永久循环
如果 <有消息吗?> 那么
获取带有数据的最新消息
归位至 (最新数据) 度 ▶
结束
结束