メッセージ#
導入#
VEX AIMコーディングロボットは2台接続することで、プロジェクト中に相互に通信させることができます。メッセージブロックを使用すると、一方のロボットからもう一方のロボットにメッセージを送信できます。メッセージには、テキストのみ、またはテキストと数値を組み合わせることができます。
受信したメッセージは、先入れ先出し(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] をスクリーンに表示 ▶
ずっと
もし <メッセージあり?> なら
データ付き最新メッセージを取得
ヘディング (最新データ) 度へ旋回 ▶
終わり
終わり
メッセージは利用可能ですか?#
メッセージは利用可能ですか? ブールブロックは、メッセージがメッセージキューで待機しているかどうかを報告します。受信ロボットがメッセージが到着した後にのみメッセージを保存しようとするように、最新メッセージの取得 または データ付き最新メッセージの取得 の前にこのブロックを使用してください。
正解 — 読むことができるメッセージがあります。
誤り — 閲覧可能なメッセージはありません。
<メッセージあり?>
パラメータ |
説明 |
|---|---|
このブロックにはパラメータがありません。 |
例
ロボット 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.]
(リンクされたロボット名) をスクリーンに表示 ▶
行動#
メッセージを送信する#
send messageスタックブロックは、リンクされたロボットにテキストを送信します。一方のロボットがコマンド、信号、または短い情報を受信する必要がある場合は、一方のロボットでこのブロックを使用します。受信側のロボットでは、is message available?を使用してメッセージが到着したことを確認し、get latest messageを使用してから、latest messageで読み取ります。
メッセージ [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を報告した後、最新メッセージを使用する前に使用してください。これにより、受信側のロボットは、メッセージを表示、比較、または別のブロックで使用する前に、メッセージを保存することができます。
テキストのみのメッセージを送信するには、もう一方のロボットで send 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] をスクリーンに表示 ▶
スクリーンのカーソルを次の行へ移動
<メッセージあり?> まで待つ
最新メッセージを取得
(最新メッセージ) をスクリーンに表示 ▶
データを含む最新メッセージを取得する#
get latest message with data スタックブロックは、メッセージキューから次に受信したメッセージを取得し、そのメッセージ本体と送信された数値の両方を保存します。このブロックは、is message available? が True を報告した後、latest message または latest data を使用する前に使用してください。これにより、受信側のロボットは、他のロボットが送信した方向へ旋回するなど、両方の値を使用する前に保存することができます。
テキストと数値を一緒に送信するには、もう一方のロボットで データ付きメッセージを送信 を使用します。
データ付き最新メッセージを取得
パラメータ |
説明 |
|---|---|
このブロックにはパラメータがありません。 |
例
ロボット 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] をスクリーンに表示 ▶
ずっと
もし <メッセージあり?> なら
データ付き最新メッセージを取得
ヘディング (最新データ) 度へ旋回 ▶
終わり
終わり