• VEXcode Robotics Logo VEX Robotics Logo
  • VEX API Home Button VEX API Home Button
  • VEX 123 logo in purple VEX 123 logo in white
  • VEX GO logo in lime green VEX GO logo in white
  • VEXcode AIM logo in blue VEXcode AIM logo in white
  • VEX IQ logo in blue VEX IQ logo in white
  • VEX EXP logo in red VEX EXP logo in white
  • VEX V5 logo in red VEX V5 logo in white
  • VEX CTE logo in green VEX CTE logo in white
  • VEX AIR logo in orange VEX AIR logo in white
  • VEXcode VR logo in gold VEXcode VR logo in white
Langsung ke konten utama
Ctrl+K

< Back to Platform Select

  • VEX V5
  • Referensi API VEX V5
  • VEXlink
  • Tautan Pesan
Bahasa Indonesia
  • English
  • العربية
  • বাংলা
  • Česky
  • Deutsch
  • Ελληνικά
  • Español
  • Español Latinoamericano
  • Suomi
  • Français
  • Gaeilge
  • हिंदी
  • Magyar
  • 日本語
  • 한국어
  • Lietuvių
  • Latviešu
  • മലയാളം
  • Nederlands
  • Polski
  • Português
  • Русский
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • 简体中文
  • 繁體中文
  • VEXcode Robotics Logo

Navigasi Bagian

  • Blok
  • Python
  • C++
    • Sistem penggerak
    • Motor dan Pengontrol Motor
    • Pengontrol
    • Otak
    • Kompetisi
    • Perangkat Port Pintar
    • Perangkat 3-Kabel
    • Menghibur
    • Logika
    • VEXlink
      • Tautan Pesan
      • Tautan Serial
    • Sel Kerja CTE
  • Tutorial VEXcode

Navigasi Platform

  • VEX 123 logo in purple VEX 123 logo in white
  • VEX GO logo in lime green VEX GO logo in white
  • VEXcode AIM logo in blue VEXcode AIM logo in white
  • VEX IQ logo in blue VEX IQ logo in white
  • VEX EXP logo in red VEX EXP logo in white
  • VEX V5 logo in red VEX V5 logo in white
  • VEX CTE logo in green VEX CTE logo in white
  • VEX AIR logo in orange VEX AIR logo in white
  • VEXcode VR logo in gold VEXcode VR logo in white

Tautan Pesan#

  • Perkenalan

  • Konstruktor Kelas

  • Destruktor Kelas

  • Parameter

  • Contoh

  • Fungsi Keanggotaan

    • terhubung

    • mengirim

    • menerima

    • diterima

Perkenalan#

Kelas message_link memungkinkan dua V5 Brain berkomunikasi dengan mengirimkan pesan string pendek dengan data kecil opsional. Kelas ini dirancang untuk koordinasi antar robot — seperti memulai rutinitas, berbagi hasil sensor, atau memicu perilaku pada robot lain.

Setiap penggunaan send menambahkan pesan ke antrian V5 Brain yang terhubung, dan antrian dibaca masuk pertama keluar pertama (FIFO). Jika beberapa pesan dikirim sebelum V5 Brain lainnya menggunakan receive, pesan-pesan tersebut akan disimpan dan dikembalikan satu per satu sesuai urutan pengirimannya. Karena pesan dapat mengantri, mengirim status yang sama berulang kali setiap putaran dapat menyebabkan penumpukan; untuk logika yang sensitif terhadap waktu, kirim hanya ketika nilai berubah.

Penting: Kedua robot harus menjalankan proyek yang menggunakan message_link secara bersamaan, jika tidak, tidak ada pesan yang akan dikirim/diterima.

Konstruktor Kelas#

message_link( 
  int32_t     index, 
  const char  *name, 
  linkType    type, 
  bool        isWired = false );

Destruktor Kelas#

Menghapus objek message_link dan melepaskan sumber daya terkait.

virtual ~message_link();

Parameter#

Parameter

Jenis

Keterangan

index

int32_t

Port Pintar yang terhubung dengan Radio V5, atau Kabel Pintar, ditulis sebagai PORTx, di mana x adalah nomor port (misalnya, PORT1).

name

char

Nama Tautan Pesan.

type

linkType

Jenis tautan, yaitu linkType::manager atau linkType::workerInformasi ini digunakan untuk mengkonfigurasi radio dengan benar dan juga menentukan bandwidth yang tersedia untuk transmisi dan penerimaan. Robot manajer memiliki bandwidth dua kali lipat (1040 byte/detik) untuk mengirim informasi ke robot pekerja (520 byte/detik).

  • linkType::manager - Objek message_link adalah manajer.
  • linkType::worker - Objek message_link adalah pekerja.

isWired

bool

Apakah objek message_link terhubung melalui kabel.

  • true - Objek message_link terhubung melalui kabel.
  • false - Objek message_link terhubung secara nirkabel.

Contoh#

Kode untuk Robot 1

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::manager, // type
  true); // isWired

Kode untuk Robot 2

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::worker, // type
  true); // isWired

Fungsi Keanggotaan#

Kelas message_link mencakup fungsi anggota berikut:

  • isLinked — Mengembalikan apakah Otak ini terhubung secara aktif ke Otak pasangannya.

  • send — Mengirim pesan ke Otak yang berpasangan.

  • receive — Menunggu dan mengembalikan pesan masuk berikutnya.

  • received — Mendaftarkan fungsi yang akan dipanggil setiap kali pesan baru diterima.

Sebelum memanggil fungsi anggota message_link apa pun, sebuah instance message_link harus dibuat, seperti yang ditunjukkan di bawah ini:

Kode untuk Robot 1

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::manager, // type
  true); // isWired

Kode untuk Robot 2

// Create a wireless link in Port 1
message_link link = message_link(
  PORT1, // index
  "VEXRoboticsLink123456789", // name
  linkType::worker, // type
  true); // isWired

isLinked#

Metode isLinked mengembalikan nilai boolean yang menunjukkan apakah V5 Brains pada MessageLink sudah berpasangan satu sama lain.

Available Functions
bool isLinked();

Parameters

Fungsi ini tidak memiliki parameter apa pun.

Return Values

Fungsi ini mengembalikan nilai boolean.

  • true – Kedua Otak V5 dipasangkan dan berkomunikasi melalui tautan ini.

  • false – Kedua V5 Brain tidak terhubung pada tautan ini.

Notes

Sebaiknya selalu periksa untuk memastikan V5 Brains sudah terhubung di awal proyek sebelum menjalankan kode lebih lanjut.

Examples

Kode untuk Robot 1

// Tell the other robot when the screen is being pressed
  // Create the link
  message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

  // Do not run code UNTIL the Brains are linked
  while (!link.isLinked()){
    wait(0.1, seconds);
  }

  Brain.Screen.print("Robot 1 - Manager");

  // Continuously send if the screen is being pressed
  while (true){
    if (Brain.Screen.pressing()){
      link.send("pressed");
    } else {
      link.send("released");
    }
    wait(0.05, seconds);
  }

Kode untuk Robot 2

// Display if the other robot's screen is being pressed

  // Create the link
  message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);
  
  // Do not run code UNTIL the Brains are linked
  while (!link.isLinked()){
   wait(0.1, seconds);
  }

  // Continuously check if Robot 1 has sent "pressed"
  while (true){
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Robot 2 - Worker");
    Brain.Screen.newLine();
    char msg[32] = {0};                         // buffer for incoming message
    int32_t n = link.receive(msg, sizeof(msg), 100);  // wait up to 100ms
    if (n > 0 && strcmp(msg, "pressed") == 0) {
      Brain.Screen.newLine();
      Brain.Screen.print("Manager is being pressed!");
    }
    wait(0.05, seconds);
  }

send#

Mengirim pesan melalui koneksi tautan.

Available Functions

1 — Mengirimkan rangkaian pesan.

int32_t send( 
  const char *message );

2 — Mengirimkan string pesan dengan double.

int32_t send( 
  const char *message, 
  double      value );

3 — Mengirimkan string pesan dengan int32_t dan double.

int32_t send(
  const char *message, 
  int32_t     index, 
  double      value );

Parameters

Parameter

Jenis

Keterangan

message

const char*

Pesan yang akan dikirim ke V5 Brain lain yang terhubung.

index

int32_t

Bilangan bulat untuk dikirim ke V5 Brain lain yang terhubung.

value

double

Nilai double untuk dikirim ke V5 Brain lain yang terhubung. Nilai double diformat hingga 4 angka desimal; jika angka desimal yang diberikan kurang dari itu, angka nol di belakang koma akan ditambahkan hingga 4 angka desimal ditampilkan.

Return Values

Fungsi ini tidak mengembalikan nilai apa pun.

Notes

Jika hanya message yang dikirim, V5 Brain lain yang terhubung akan menerima pesan yang persis sama.

Jika nilai value (dan indeks index jika disediakan) disertakan, Otak penerima akan mendapatkan satu pesan terenkripsi yang menggabungkan semua bidang dalam urutan ini: .message_index_value

Examples

Dengan menggunakan link.send(“string”, 1, 2.55) diterima sebagai .string_1_2.5500.

Kode untuk Robot 1

// Tell the other robot when the screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}

Brain.Screen.print("Robot 1 - Manager");

// Continuously send if the screen is being pressed
while (true){
  if (Brain.Screen.pressing()){
    link.send("pressed");
  } else {
    link.send("released");
  }
  wait(0.05, seconds);
}

Kode untuk Robot 2

// Display if the other robot's screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}
// Continuously check if Robot 1 has sent "pressed"
while (true){
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  char msg[32] = {0};  // buffer for incoming message
  int32_t n = link.receive(msg, sizeof(msg), 100);  // wait up to 100ms
  if (n > 0 && strcmp(msg, "pressed") == 0) {
    Brain.Screen.newLine();
    Brain.Screen.print("Manager is being pressed!");
  }
  wait(0.05, seconds);
}

receive#

Menerima pesan dari koneksi tautan.

Available Functions
int32_t receive(
  char     *buffer,
  int32_t   length, 
  int32_t   timeoutMs = 500 );

Parameters

Parameter

Jenis

Keterangan

buffer

char*

Buffer untuk menyimpan pesan yang diterima.

length

int32_t

Panjang buffer.

timeoutMs

int32_t

Berapa lama dalam milidetik receive akan menunggu pesan baru hanya jika antrean kosong. Nilai default adalah 300.000 (300 detik).

Return Values

Fungsi ini mengembalikan jumlah byte yang diterima.

Notes
  • receive mengembalikan pesan antrean berikutnya dari V5 Brain lain yang terhubung. Pesan dibaca dalam urutan FIFO (pesan terlama yang belum dibaca terlebih dahulu). Jika antrean kosong saat receive dipanggil, ia menunggu hingga batas waktu timeout untuk pesan baru. Jika tidak ada pesan yang tiba dalam jangka waktu tersebut, receive mengembalikan 0, dan pesan apa pun yang dikirim setelahnya tetap berada dalam antrean untuk dibaca saat receive digunakan berikutnya.

  • Jika V5 Brain yang terhubung lainnya hanya mengirimkan string string, receive dan mengembalikan string yang persis sama.

  • Jika V5 Brain lain yang terhubung mengirimkan bilangan bulat dan/atau bilangan pecahan, receive mengembalikan satu string terenkripsi yang menggabungkan semua bidang dalam urutan ini: .string_integer_float

    • Misalnya, jika V5 Brain yang terhubung lainnya menggunakan link.send(“string”, 1, 2.55), maka menggunakan link.receive() akan mengembalikan string yang dikodekan seperti .string_1_2.5500. Anda dapat memisahkan string yang dikodekan ini (lihat contoh di bawah) untuk mengekstrak nama pesan, nilai integer, dan float.

    • Jika Anda lebih suka menghindari pemisahan/penguraian manual, gunakan received untuk mendaftarkan handler untuk nama pesan tertentu; handler menerima nilai yang dikirim sebagai argumen.

Examples

Dengan menggunakan link.send(“string”, 1, 2.55) diterima sebagai .string_1_2.5500.

Kode untuk Robot 1

// Tell the other robot when the screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}

Brain.Screen.print("Robot 1 - Manager");

// Continuously send if the screen is being pressed
while (true){
  if (Brain.Screen.pressing()){
    link.send("pressed");
  } else {
    link.send("released");
  }
  wait(0.05, seconds);
}

Kode untuk Robot 2

// Display if the other robot's screen is being pressed

// Create the link
message_link link = message_link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);

// Do not run code UNTIL the Brains are linked
while (!link.isLinked()){
  wait(0.1, seconds);
}
// Continuously check if Robot 1 has sent "pressed"
while (true){
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  char msg[32] = {0};   // buffer for incoming message
  int32_t n = link.receive(msg, sizeof(msg), 100);  // wait up to 100ms
  if (n > 0 && strcmp(msg, "pressed") == 0) {
    Brain.Screen.newLine();
    Brain.Screen.print("Manager is being pressed!");
  }
  wait(0.05, seconds);
}

received#

Mendaftarkan fungsi yang akan dipanggil setiap kali V5 Brain menerima pesan yang dikirim.

Available Functions

1 Mendaftarkan fungsi callback untuk semua pesan yang diterima (pesan + nilai).

void received(
    void (* callback)(const char *, const char *, double)
);

2 Mendaftarkan fungsi callback untuk semua pesan yang diterima (pesan + indeks + nilai).

void received(
    void (* callback)(const char *, const char *, int32_t, double)
);

3 Mendaftarkan fungsi callback untuk pesan tertentu (pesan + nilai).

void received(
    const char *message,
    void      (* callback)(const char *, const char *, double)
);

4 Mendaftarkan fungsi callback untuk pesan tertentu (pesan + indeks + nilai).

void received(
    const char *message,
    void      (* callback)(const char *, const char *, int32_t, double)
);

Parameters

Parameter

Jenis

Keterangan

message

const char *

Nama pesan yang akan dipantau. Jika diabaikan, fungsi callback akan dijalankan untuk semua pesan yang diterima.

callback

void (*)(const char *, const char , double) or void ()(const char *, const char *, int32_t, double)

Sebuah fungsi yang dijalankan ketika sebuah pesan diterima.

Return Values

Fungsi ini tidak mengembalikan nilai apa pun.

Callback Signature

1 Menerima nama pengirim, nama pesan, dan nilai.

void callback(const char *, const char *, double)

2 Menerima nama pengirim, nama pesan, indeks, dan nilai.

void callback(const char *, const char *, int32_t, double)

Jenis

Keterangan

1st const char *

Nama tautan pengirim.

2nd const char *

Nama pesan yang diterima.

int32_t

Indeks yang terkait dengan pesan tersebut.

double

Nilai yang terkait dengan pesan tersebut.

Examples

Kode untuk Robot 1

// Create the link.
message_link link(PORT1, "LeftRightLink", linkType::manager, true);

// Send whether screen is pressed on left or right.
void screen_pressed() {
  if (Brain.Screen.xPosition() < 240) {
    link.send("left");
  } else {
    link.send("right");
  }
}

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();
  
  // Do not run code UNTIL the Brains are linked.
  while (!link.isLinked()) {
    wait(0.1, seconds);
  }

  Brain.Screen.print("Robot 1 - Manager");

  Brain.Screen.pressed(screen_pressed);

  while (true) {
    wait(10, msec);
  }
}

Kode untuk Robot 2

// Create variable to track where screen is pressed.
int lastPress = 0;

// Update the variable whenever a new message is received.
void message_received(const char* message, const char* linkname, double timestamp) {
  if (strcmp(message, "left") == 0)  lastPress = 1;
  if (strcmp(message, "right") == 0) lastPress = 2;
}

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Create the link.
  message_link link(PORT1, "VEXRoboticsLink123456789", linkType::worker, true);

  // Do not run code UNTIL the Brains are linked.
  while (!link.isLinked()) {
    wait(0.1, seconds);
  }

  link.received(message_received);

  // Display if Robot 1's screen was pressed on the left or right
  while (true) {
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Robot 2 - Worker");
    Brain.Screen.newLine();

    if (lastPress == 1) {
      Brain.Screen.print("Manager pressed LEFT");
    } else if (lastPress == 2) {
      Brain.Screen.print("Manager pressed RIGHT");
    } else {
      Brain.Screen.print("Waiting...");
    }

    wait(0.1, seconds);
  }
}

sebelum

VEXlink

berikut

Tautan Serial

On this page
  • Perkenalan
  • Konstruktor Kelas
  • Destruktor Kelas
  • Parameter
  • Contoh
  • Fungsi Keanggotaan
    • isLinked
    • send
    • receive
    • received
Innovation First, International

VEX and VEX Robotics are trademarks or service marks of Innovation First, Inc. Copyright ©2026. All Rights Reserved. VEX Robotics, Inc. is a subsidiary of Innovation First International, Inc. All other product names / marks of others are the property of their respective owners. Patents and / or Patents Pending - innovationfirst.com/patents
Site Privacy Policy / Site Terms of Use / Cookie Policy / Software Privacy Policy

Kunjungi Halaman Facebook VEX Robotics Kunjungi Halaman Twitter VEX Robotics Kunjungi Halaman Instagram VEX Robotics Kunjungi Halaman YouTube VEX Robotics
Formulir Umpan Balik API VEX

Kami menghargai masukan Anda! Gunakan formulir ini untuk berbagi saran, pujian, atau melaporkan kesalahan pada API VEX. Masukan Anda membantu kami meningkatkan dokumentasi API VEX.

​

Jika Anda mengalami masalah teknis atau memerlukan dukungan pelanggan, silakan kunjungi support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Catatan: URL saat ini akan dibagikan bersama pesan Anda.

Dengan mencantumkan alamat email Anda, Anda setuju bahwa VEX dapat mengirimkan email kepada Anda jika kami memiliki pertanyaan tentang masukan Anda.
Kebijakan Privasi >
Mohon berikan masukan Anda. Masukan berhasil dikirim!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)