Pesan#
Perkenalan#
Dua Robot Pemrograman VEX AIM dapat dihubungkan sehingga mereka dapat berkomunikasi selama suatu proyek. Metode pengiriman pesan memungkinkan satu robot mengirim pesan ke robot lainnya. Sebuah pesan dapat berupa teks saja, atau teks dengan maksimal tiga angka.
Pesan yang diterima disimpan dalam antrian first-in, first-out (FIFO). Ini berarti pesan pertama yang diterima adalah pesan pertama yang akan dibaca.
Gunakan is_message_available untuk memeriksa apakah pesan siap dibaca. Kemudian gunakan get_message untuk membaca pesan teks berikutnya. Jika pesan juga menyertakan angka, gunakan get_message_and_data untuk membaca teks dan angka secara bersamaan.
Catatan: Agar pesan dapat dikirim dan diterima, kedua robot harus terhubung dan kedua robot harus menjalankan proyek yang menggunakan metode Message.
Berikut adalah daftar semua metode:
Aksi — Mengirim pesan antar robot.
send_message— Mengirim teks dan hingga tiga angka ke robot yang terhubung.
Getter — Membaca pesan atau memeriksa status koneksi.
get_message— Mengembalikan pesan teks yang diterima berikutnya.get_message_and_data— Mengembalikan pesan teks dan angka yang diterima berikutnya.is_connected— Mengembalikan apakah robot terhubung dengan robot lain.is_message_available— Mengembalikan apakah pesan tersedia untuk dibaca.get_name— Mengembalikan nama robot yang terhubung.
Callback — Menjalankan fungsi ketika peristiwa pesan terjadi.
handle_message— Menjalankan fungsi ketika pesan tertentu diterima.connected— Menjalankan fungsi ketika robot terhubung dengan robot lain.disconnected— Menjalankan fungsi ketika robot tidak lagi terhubung dengan robot lain.
Tindakan#
send_message#
send_message mengirimkan teks dan hingga tiga angka ke robot yang terhubung. Gunakan metode ini pada satu robot ketika robot lain perlu menerima perintah, sinyal, atau informasi singkat. Kirim teks saja ketika pesan sudah cukup. Tambahkan angka ketika pesan membutuhkan nilai terkait, seperti mengirimkan “heading” dengan nilai arah robot saat ini.
Pada robot penerima, gunakan is_message_available untuk memeriksa apakah pesan telah tiba. Kemudian gunakan get_message untuk pesan teks saja, atau get_message_and_data untuk pesan yang berisi angka.
Usage:
robot.link.send_message(message, arg1, arg2, arg3)
Parameter |
Keterangan |
|---|---|
|
Teks yang akan dikirim ke robot yang terhubung. |
|
Opsional. Nomor yang akan dikirim bersama pesan. |
|
Opsional. Nomor kedua untuk dikirim bersama pesan. |
|
Opsional. Nomor ketiga untuk dikirim bersama pesan. |
Contoh
Kode untuk Robot 1
# Press the screen to tell Robot 2 which way to turn
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("right")
Kode untuk Robot 2
# Turn in the direction that Robot 1 sends
robot.screen.print("Robot 2")
while not robot.link.is_message_available():
wait(5, MSEC)
direction = robot.link.get_message()
if direction == "left":
robot.turn_for(LEFT, 90)
elif direction == "right":
robot.turn_for(RIGHT, 90)
# Robot 1: continuously send the current heading to Robot 2
robot.screen.print("Robot 1")
while True:
robot.link.send_message("heading", robot.inertial.get_heading())
wait(50, MSEC)
# Robot 2: turn to match Robot 1's heading
robot.screen.print("Robot 2")
while True:
if robot.link.is_message_available():
message, heading = robot.link.get_message_and_data()
robot.turn_to(heading)
wait(50, MSEC)
Pencari#
get_message#
get_message mengembalikan pesan teks berikutnya yang diterima dari antrian pesan. Gunakan metode ini pada robot penerima ketika robot yang terhubung mengirim pesan hanya berupa teks. Urutan umum adalah menggunakan is_message_available untuk memeriksa apakah pesan telah tiba, kemudian menggunakan get_message sebelum menampilkan, membandingkan, atau menggunakan teks yang dikembalikan dalam metode lain.
Gunakan send_message pada robot lain untuk mengirim pesan teks saja.
Usage:
robot.link.get_message(timeout)
Parameter |
Keterangan |
|---|---|
|
Opsional. Waktu maksimum, dalam milidetik, untuk menunggu pesan sebelum melanjutkan. Nilai default adalah |
Contoh
Kode untuk Robot 1
# Press the screen to send a message to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("Hello, Robot 2!")
Kode untuk Robot 2
# Display the message sent by Robot 1
robot.screen.print("Robot 2")
robot.screen.next_row()
while not robot.link.is_message_available():
wait(5, MSEC)
message = robot.link.get_message()
robot.screen.print(message)
get_message_and_data#
get_message_and_data mengembalikan pesan teks dan angka yang diterima berikutnya dari antrian pesan sebagai tuple. Gunakan metode ini pada robot penerima ketika robot yang terhubung mengirim teks dengan satu atau lebih angka. Urutan umum adalah menggunakan is_message_available untuk memeriksa apakah pesan telah tiba, kemudian menggunakan get_message_and_data sebelum menggunakan teks dan angka yang dikembalikan.
Gunakan send_message pada robot lain untuk mengirim teks dan angka bersama-sama.
Usage:
robot.link.get_message_and_data(timeout)
Parameter |
Keterangan |
|---|---|
|
Opsional. Waktu maksimum, dalam milidetik, untuk menunggu pesan sebelum melanjutkan. Nilai default adalah |
Contoh
Kode untuk Robot 1
# Continuously send the current heading to Robot 2
robot.screen.print("Robot 1")
while True:
robot.link.send_message("heading", robot.inertial.get_heading())
wait(50, MSEC)
Kode untuk Robot 2
# Turn to match Robot 1's heading
robot.screen.print("Robot 2")
while True:
if robot.link.is_message_available():
message, heading = robot.link.get_message_and_data()
robot.turn_to(heading)
wait(50, MSEC)
is_connected#
is_connected mengembalikan nilai boolean yang menunjukkan apakah robot terhubung dengan robot lain. Gunakan metode ini sebelum mengirim atau menunggu pesan jika proyek perlu memeriksa apakah koneksi antar robot sudah siap.
True— Robot tersebut terhubung dengan robot lain.False— Robot tersebut tidak terhubung dengan robot lain.
Usage:
robot.link.is_connected()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
# Display whether the robot is connected
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.link.is_connected())
wait(50, MSEC)
is_message_available#
is_message_available mengembalikan apakah ada pesan yang menunggu di antrian pesan. Gunakan metode ini sebelum get_message atau get_message_and_data sehingga robot penerima hanya mencoba membaca pesan setelah pesan tersebut tiba.
True— Ada pesan yang tersedia untuk dibaca.False— Tidak ada pesan yang tersedia untuk dibaca.
Usage:
robot.link.is_message_available()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
Contoh
Kode untuk Robot 1
# Press the screen to send a message to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("Hello, Robot 2!")
Kode untuk Robot 2
# Wait until a message is available, then display it
robot.screen.print("Robot 2")
robot.screen.next_row()
while not robot.link.is_message_available():
wait(5, MSEC)
message = robot.link.get_message()
robot.screen.print(message)
get_name#
get_name mengembalikan nama robot yang terhubung. Gunakan metode ini untuk menampilkan robot mana yang terhubung sebelum mengirim atau menerima pesan. Jika tidak ada robot yang terhubung, metode ini mengembalikan None.
Usage:
robot.link.get_name()
Parameter |
Keterangan |
|---|---|
Metode ini tidak memiliki parameter. |
# Display the name of the linked robot
robot.screen.print(robot.link.get_name())
Panggilan balik#
handle_message#
handle_message mendaftarkan sebuah fungsi yang akan dijalankan ketika robot menerima pesan teks tertentu. Gunakan metode ini ketika robot harus merespons secara otomatis terhadap pesan yang dikenal, alih-alih memeriksa antrian pesan dalam sebuah loop. Definisikan fungsi callback terlebih dahulu, kemudian daftarkan dengan handle_message dan teks pesan yang akan dipantau.
Usage:
robot.link.handle_message(callback, message)
Parameter |
Keterangan |
|---|---|
|
Fungsi yang telah didefinisikan sebelumnya yang dijalankan ketika pesan yang diterima cocok dengan pesan |
|
Teks yang digunakan untuk memeriksa pesan masuk. |
Contoh
Kode untuk Robot 1
# Press the screen to send "smile" to Robot 2
robot.screen.print("Robot 1")
while not robot.screen.pressing():
wait(5, MSEC)
robot.link.send_message("smile")
Kode untuk Robot 2
# Show a happy emoji when Robot 1 sends "smile"
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.handle_message(robot_smile, "smile")
while True:
wait(50, MSEC)
connected#
connected mendaftarkan fungsi yang berjalan ketika robot terhubung dengan robot lain. Gunakan metode ini ketika proyek harus merespons segera setelah koneksi antar robot terjalin. Definisikan fungsi callback terlebih dahulu, lalu daftarkan dengan connected.
Usage:
robot.link.connected(callback, args)
Parameter |
Keterangan |
|---|---|
|
Fungsi yang telah didefinisikan sebelumnya yang dijalankan ketika robot terhubung dengan robot lain. |
|
Opsional. Sebuah tuple yang berisi argumen untuk diteruskan ke fungsi callback. Lihat Menggunakan Fungsi dengan Parameter untuk informasi selengkapnya. |
# Show a happy emoji when connected
def robot_smile():
robot.screen.show_emoji(HAPPY)
robot.link.connected(robot_smile)
disconnected#
disconnected mendaftarkan fungsi yang berjalan ketika robot tidak lagi terhubung dengan robot lain. Gunakan metode ini ketika proyek harus merespons segera setelah koneksi antar robot terputus. Definisikan fungsi callback terlebih dahulu, lalu daftarkan dengan disconnected.
Usage:
robot.link.disconnected(callback, args)
Parameter |
Keterangan |
|---|---|
|
Fungsi yang telah didefinisikan sebelumnya yang dijalankan ketika robot tidak lagi terhubung dengan robot lain. |
|
Opsional. Sebuah tuple yang berisi argumen untuk diteruskan ke fungsi callback. Lihat Menggunakan Fungsi dengan Parameter untuk informasi selengkapnya. |
# Show a sad emoji when disconnected
def robot_sad():
robot.screen.show_emoji(SAD)
robot.link.disconnected(robot_sad)