メッセージ#

導入#

VEX AIMコーディングロボットは2台接続することで、プロジェクト中に相互に通信させることができます。メッセージブロックを使用すると、一方のロボットからもう一方のロボットにメッセージを送信できます。メッセージには、テキストのみ、またはテキストと数値を組み合わせることができます。

受信したメッセージは、先入れ先出し(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] をスクリーンに表示 ▶
ずっと
もし <メッセージあり?> なら
データ付き最新メッセージを取得
ヘディング (最新データ) 度へ旋回 ▶
終わり
終わり

メッセージは利用可能ですか?#

メッセージは利用可能ですか? ブールブロックは、メッセージがメッセージキューで待機しているかどうかを報告します。受信ロボットがメッセージが到着した後にのみメッセージを保存しようとするように、最新メッセージの取得 または データ付き最新メッセージの取得 の前にこのブロックを使用してください。

  • 正解 — 読むことができるメッセージがあります。

  • 誤り — 閲覧可能なメッセージはありません。

メッセージは利用可能ですか?ブール値ブロック#
<メッセージあり?>

パラメータ

説明

このブロックにはパラメータがありません。

例

ロボット 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.]
(リンクされたロボット名) をスクリーンに表示 ▶

行動#

メッセージを送信する#

send messageスタックブロックは、リンクされたロボットにテキストを送信します。一方のロボットがコマンド、信号、または短い情報を受信する必要がある場合は、一方のロボットでこのブロックを使用します。受信側のロボットでは、is message available?を使用してメッセージが到着したことを確認し、get latest messageを使用してから、latest messageで読み取ります。

メッセージ送信スタックブロック#
メッセージ [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を報告した後、最新メッセージを使用する前に使用してください。これにより、受信側のロボットは、メッセージを表示、比較、または別のブロックで使用する前に、メッセージを保存することができます。

テキストのみのメッセージを送信するには、もう一方のロボットで send 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] をスクリーンに表示 ▶
スクリーンのカーソルを次の行へ移動
<メッセージあり?> まで待つ
最新メッセージを取得
(最新メッセージ) をスクリーンに表示 ▶

データを含む最新メッセージを取得する#

get latest message with data スタックブロックは、メッセージキューから次に受信したメッセージを取得し、そのメッセージ本体と送信された数値の両方を保存します。このブロックは、is message available? が True を報告した後、latest message または latest data を使用する前に使用してください。これにより、受信側のロボットは、他のロボットが送信した方向へ旋回するなど、両方の値を使用する前に保存することができます。

テキストと数値を一緒に送信するには、もう一方のロボットで データ付きメッセージを送信 を使用します。

データスタックブロックで最新のメッセージを取得する#
データ付き最新メッセージを取得

パラメータ

説明

このブロックにはパラメータがありません。

例

ロボット 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] をスクリーンに表示 ▶
ずっと
もし <メッセージあり?> なら
データ付き最新メッセージを取得
ヘディング (最新データ) 度へ旋回 ▶
終わり
終わり