• 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
Ana içeriğe atla
Ctrl+K

< Back to Platform Select

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

Bölüm Gezinme

  • Bloklar
  • Python
  • C++
    • Aktarma organları
    • Motorlar ve Motor Kontrol Cihazları
    • Kontrolör
    • Beyin
    • Yarışma
    • Akıllı Bağlantı Noktası Cihazları
    • 3 Kablolu Cihazlar
    • Konsol
    • Mantık
    • VEXlink
      • Mesaj Bağlantısı
      • Seri Bağlantı
    • CTE Çalışma Hücresi
  • VEXcode Eğitimleri

Platform Navigasyonu

  • 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

Mesaj Bağlantısı#

  • giriiş

  • Sınıf Oluşturucuları

  • Sınıf Yıkıcısı

  • Parametreler

  • Örnek

  • Üye Fonksiyonları

    • Bağlantılı

    • Göndermek

    • almak

    • kabul edilmiş

giriiş#

message_link sınıfı, iki V5 Beyninin isteğe bağlı küçük verilerle birlikte kısa dize mesajları göndererek iletişim kurmasını sağlar. Robotlar arası koordinasyon için tasarlanmıştır; örneğin rutinleri başlatmak, sensör sonuçlarını paylaşmak veya başka bir robottaki davranışları tetiklemek gibi.

send’nin her kullanımı, bağlantılı V5 Beyninin kuyruğuna bir mesaj ekler ve kuyruk ilk giren ilk çıkar (FIFO) prensibiyle okunur. Diğer V5 Beyni receive’i kullanmadan önce birden fazla mesaj gönderilirse, bunlar depolanır ve gönderildikleri sırayla tek tek geri döndürülür. Mesajlar kuyruğa alınabildiğinden, her döngüde aynı durumu tekrar tekrar göndermek birikmeye neden olabilir; zaman açısından kritik mantık için, yalnızca değerler değiştiğinde gönderin.

Önemli: Her iki robot da aynı anda message_link kullanan projeleri çalıştırıyor olmalıdır, aksi takdirde hiçbir mesaj gönderilmez/alınmaz.

Sınıf Oluşturucuları#

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

Sınıf Yıkıcısı#

message_link nesnesini yok eder ve ilişkili kaynakları serbest bırakır.

virtual ~message_link();

Parametreler#

Parametre

Tip

Tanım

index

int32_t

V5 Radyonun veya Akıllı Kablonun bağlı olduğu Akıllı Bağlantı Noktası, PORTxşeklinde yazılır; burada x bağlantı noktası numarasıdır (örneğin, PORT1).

name

char

Mesaj bağlantısının adı.

type

linkType

Bağlantı türü, ya linkType::manager ya da linkType::worker. Bu bilgi, radyonun doğru şekilde yapılandırılması ve ayrıca iletim ve alım için kullanılabilir bant genişliğinin belirlenmesi için kullanılır. Bir yönetici robot, işçi robota bilgi göndermek için iki kat daha fazla kullanılabilir bant genişliğine (1040 bayt/saniye) sahiptir (520 bayt/saniye).

  • linkType::manager - message_link nesnesi bir yöneticidir.
  • linkType::worker - message_link nesnesi bir işçidir.

isWired

bool

message_link nesnesinin kablolu olup olmadığı.

  • true - message_link nesnesi kablolu.
  • false - message_link nesnesi kablosuz.

Örnek#

Robot 1 için Kod

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

Robot 2 için Kod

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

Üye Fonksiyonları#

message_link sınıfı aşağıdaki üye fonksiyonlarını içerir:

  • isLinked — Bu Beynin eşleştirilmiş Beyne aktif olarak bağlı olup olmadığını döndürür.

  • send — Eşleştirilmiş Beyne bir mesaj gönderir.

  • receive — Bir sonraki gelen mesajı bekler ve geri döndürür.

  • received — Yeni bir mesaj alındığında çağrılacak bir fonksiyonu kaydeder.

Herhangi bir message_link üye fonksiyonunu çağırmadan önce, aşağıda gösterildiği gibi bir message_link örneği oluşturulmalıdır:

Robot 1 için Kod

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

Robot 2 için Kod

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

isLinked#

isLinked yöntemi, bir MessageLink üzerindeki V5 Brain’lerin birbiriyle eşleştirilip eşleştirilmediğini döndürür.

Available Functions
bool isLinked();

Parameters

Bu fonksiyonun herhangi bir parametresi yoktur.

Return Values

Bu fonksiyon bir boolean değer döndürür.

  • true – İki V5 Beyni eşleştirilmiş ve bu bağlantı üzerinden iletişim kuruyor.

  • false – Bu bağlantıda iki V5 Beyni eşleştirilmemiş.

Notes

Herhangi bir kod çalıştırmadan önce, projenin başlangıcında V5 Brains’in bağlantılı olduğundan emin olmak her zaman iyi bir uygulamadır.

Examples

Robot 1 için Kod

// 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);
  }

Robot 2 için Kod

// 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#

Bağlantı üzerinden bir mesaj gönderir.

Available Functions

1 — Bir mesaj dizisi gönderir.

int32_t send( 
  const char *message );

2 — double içeren bir mesaj dizesi gönderir.

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

3 — int32_t ve double içeren bir mesaj dizesi gönderir.

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

Parameters

Parametre

Tip

Tanım

message

const char*

Bağlantılı diğer V5 Beynine gönderilecek mesaj.

index

int32_t

Diğer bağlantılı V5 Beynine gönderilecek bir tamsayı.

value

double

Diğer bağlantılı V5 Beynine gönderilecek çift duyarlıklı sayı. Çift duyarlıklı sayılar 4 ondalık basamağa kadar biçimlendirilir; daha az ondalık basamak verilirse, 4 görünene kadar sonuna sıfırlar eklenir.

Return Values

Bu fonksiyon herhangi bir değer döndürmez.

Notes

Yalnızca message gönderilirse, bağlantılı diğer V5 Beyni tam olarak bu mesajı alır.

Eğer value (ve sağlanmışsa index ) dahil edilirse, alıcı Beyin tüm alanları şu sırayla birleştiren tek bir kodlanmış mesaj alır: .message_index_value

Examples

link.send(“string”, 1, 2.55) .string_1_2.5500 olarak alınır.

Robot 1 için Kod

// 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);
}

Robot 2 için Kod

// 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#

Bağlantıdan bir mesaj alır.

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

Parameters

Parametre

Tip

Tanım

buffer

char*

Alınan mesajı saklamak için kullanılan tampon bellek.

length

int32_t

Tamponun uzunluğu.

timeoutMs

int32_t

receive milisaniye ise yalnızca kuyruk boşsa yeni bir mesaj bekleyecektir. Varsayılan değer 300.000’dir (300 saniye).

Return Values

Bu fonksiyon alınan bayt sayısını döndürür.

Notes
  • receive diğer bağlantılı V5 Beyninden kuyruğa alınmış bir sonraki mesajı döndürür. Mesajlar FIFO sırasına göre (en eski okunmamış olan önce) okunur. receive çağrıldığında kuyruk boşsa, belirtilen timeout kadar yeni bir mesaj bekler. Bu süre içinde hiçbir mesaj gelmezse, receive 0döndürür ve daha sonra gönderilen herhangi bir mesaj, bir sonraki receive kullanıldığında okunmak üzere kuyrukta kalır.

  • Eğer diğer bağlantılı V5 Beyin yalnızca stringve receive.

  • Diğer bağlantılı V5 Brain bir tamsayı ve/veya ondalık sayı gönderirse, receive alanları şu sırayla birleştiren tek bir kodlanmış dize döndürür: .string_integer_float

    • Örneğin, diğer bağlantılı V5 Brain link.send(“string”, 1, 2.55)kullanıyorsa, link.receive() kullanmak .string_1_2.5500gibi kodlanmış bir dize döndürür. Bu kodlanmış dizeyi (aşağıdaki örneklere bakın) bölerek mesaj adını, tamsayı ve ondalık sayı değerlerini çıkarabilirsiniz.

    • Eğer manuel bölme/ayrıştırmadan kaçınmayı tercih ederseniz, belirli bir mesaj adı için bir işleyici kaydetmek üzere received kullanın; işleyici gönderilen değerleri argüman olarak alır.

Examples

link.send(“string”, 1, 2.55) .string_1_2.5500 olarak alınır.

Robot 1 için Kod

// 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);
}

Robot 2 için Kod

// 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#

V5 Brain’in gönderilen bir mesajı aldığı her seferinde çağrılacak bir fonksiyonu kaydeder.

Available Functions

1 Alınan tüm mesajlar (mesaj + değer) için bir geri çağırma işlevi kaydeder.

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

2 Alınan tüm mesajlar için (mesaj + indeks + değer) bir geri çağırma işlevi kaydeder.

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

3 Belirli bir mesaj (mesaj + değer) için bir geri çağırma kaydeder.

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

4 Belirli bir mesaj için (mesaj + indeks + değer) bir geri çağırma kaydeder.

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

Parameters

Parametre

Tip

Tanım

message

const char *

Dinlenecek mesajın adı. Atlanırsa, geri çağırma işlevi alınan tüm mesajlar için çalışır.

callback

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

Mesaj alındığında çalışan bir fonksiyon.

Return Values

Bu fonksiyon herhangi bir değer döndürmez.

Callback Signature

1 Gönderenin adını, mesaj adını ve değeri alır.

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

2 Gönderenin adını, mesaj adını, dizini ve değeri alır.

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

Tip

Tanım

1st const char *

Gönderen bağlantısının adı.

2nd const char *

Alınan mesajın adı.

int32_t

Mesajla ilişkili indeks.

double

Mesajla ilişkilendirilen değer.

Examples

Robot 1 için Kod

// 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);
  }
}

Robot 2 için Kod

// 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);
  }
}

önceki

VEXlink

sonraki

Seri Bağlantı

On this page
  • giriiş
  • Sınıf Oluşturucuları
  • Sınıf Yıkıcısı
  • Parametreler
  • Örnek
  • Üye Fonksiyonları
    • isLinked
    • send
    • receive
    • received
Innovation First, International
​

VEX ve VEX Robotics, Innovation First, Inc.'in ticari markaları veya hizmet markalarıdır. Telif Hakkı ©2026Tüm Hakları Saklıdır. VEX Robotics, Inc., Innovation First International, Inc.'in bir iştirakidir. Diğer tüm ürün adları/markaları, ilgili sahiplerinin mülkiyetindedir. Patentler ve/veya Patent Başvuruları - innovationfirst.com/patents
Site Gizlilik Politikası / Site Kullanım Şartları / Çerez Politikası / Yazılım Gizlilik Politikası

VEX Robotics Facebook sayfasını ziyaret edin. VEX Robotics Twitter sayfasını ziyaret edin. VEX Robotics Instagram sayfasını ziyaret edin. VEX Robotics YouTube sayfasını ziyaret edin.
VEX API Geri Bildirim Formu

Geri bildirimleriniz bizim için çok değerli! VEX API ile ilgili önerilerinizi, övgülerinizi paylaşmak veya hataları bildirmek için bu formu kullanın. Katkılarınız, VEX API dokümantasyonunu geliştirmemize yardımcı oluyor.

​

Teknik sorun yaşıyorsanız veya müşteri desteğine ihtiyacınız varsa lütfen support.vex.com ziyaret edin..

  • Send Happy Feedback
  • Send Sad Feedback

Not: Mevcut URL, mesajınızla birlikte paylaşılacaktır.

E-posta adresinizi ekleyerek, VEX'in geri bildiriminizle ilgili sorularımız olması durumunda size e-posta gönderebileceğini kabul ediyorsunuz.
Gizlilik Politikası >
Lütfen geri bildirimlerinizi paylaşın. Geri bildirim başarıyla gönderildi!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)