• 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
  • Seri Bağlantı
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

Seri Bağlantı#

  • giriiş

  • Sınıf Oluşturucuları

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

  • Parametreler

  • Notlar

  • Örnek

  • Üye Fonksiyonları

    • Bağlantılı

    • Göndermek

    • almak

    • kabul edilmiş

giriiş#

serial_link sınıfı, robotlar arasında ham bayt akışının gönderilmesine olanak tanır. Hem gönderen hem de alıcı robotun veri akışının içeriğini anladığı robotlar arası iletişim için tasarlanmıştır.

send’nin her kullanımı, bağlantılı V5 Beyninin kuyruğuna veri ekler ve kuyruk ilk giren ilk çıkar (FIFO) prensibiyle okunur. Diğer V5 Beyni alma işlemini 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 serial_link kullanan projeleri çalıştırıyor olmalıdır, aksi takdirde veri gönderilemez/alınamaz.

Sınıf Oluşturucuları#

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

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

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

~serial_link();

Parametreler#

Parametre

Tip

Tanım

index

int32_t

Mesaj bağlantısının 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

const char*

Bu bağlantının adı. Bu benzersiz dizenin, Vexos tarafından karma algoritmasıyla işlendiğinde benzersiz bir kimlik oluşturacak kadar uzun olması önerilir. “Vexlink” gibi genel bir bağlantı adı kötü bir seçim olur, çünkü başka bir ekip tarafından da kullanılabilir.

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 (işçi robot 520 bayt/saniye).

  • linkType::manager — serial_link nesnesi bir yöneticidir
  • linkType::worker — serial_link nesnesi bir işçidir

isWired

bool

serial_link nesnesinin kablolu olup olmadığı (varsayılan değer false):

  • true — serial_link nesnesi kablolu
  • false — serial_link nesnesi kablosuz

Notlar#

  • VEXlink hem kablosuz hem de kablolu iletişimi destekler; kablolu bağlantılar için güç yönlendirme sorunlarını önlemek amacıyla modifiye edilmiş akıllı bir kablo önerilir.

  • Kablosuz iletişim için her robotun bir Akıllı Bağlantı Noktasına bağlı bir V5 Robot Radyosuna ihtiyacı vardır.

  • VEXlink Radyo, çakışmaları önlemek için en yüksek numaralı Akıllı Bağlantı Noktasına bağlanması gereken bir V5 Kontrol Cihazının VEXnet radyosuyla birlikte kullanılabilir.

  • VEXlink oluşturmak için her iki V5 Beyninin de bir V5 Robot Radyosuna bağlanması gerekir.

Örnek#

Robot 1 için Kod

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

Robot 2 için Kod

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

Üye Fonksiyonları#

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

  • isLinked — V5 Beyinlerinin bu bağlantı üzerinden eşleştirilip iletişim kurup kurmadığını kontrol eder.

  • 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.

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

Robot 1 için Kod

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

Robot 2 için Kod

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

isLinked#

Seri bağlantıdaki 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

V5 Beyinlerinin birbirine bağlı olup olmadığını gösteren bir Boolean değeri döndürür:

  • true — The two V5 Brains are paired and communicating on this link.
  • false — The two V5 Brains are not paired on this link.
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

// Create the link
  serial_link 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");
  Brain.Screen.newLine();
  Brain.Screen.print("Sending message...");

  // Message to send
  const char* message = "Hello Robot 2";

  // Send the message
  link.send((uint8_t*)message, strlen(message));

Robot 2 için Kod

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

  // Do not run code UNTIL the Brains are linked
  while (!link.isLinked()) {
    wait(0.1, seconds);
  }
  
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

  // Buffer to store incoming bytes
  uint8_t buffer[32] = {0};

  int32_t n = link.receive(buffer, sizeof(buffer) - 1);

  // Null-terminate
  if (n > 0) {
    buffer[n] = 0;

    // Display the message that was sent
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Robot 2 - Worker");
    Brain.Screen.newLine();
    Brain.Screen.print((char*)buffer);
  }
  else {
    Brain.Screen.newLine();
    Brain.Screen.print("No message received");
  }

send#

Eşleştirilmiş beyne bir mesaj gönderir.

Available Functions

1 — Bir bayt arabelleği kullanarak mesaj gönderir.

int32_t send( 
  uint8_t *buffer, 
  int32_t  length );

2 — Karakter arabelleği kullanarak mesaj gönderir.

int32_t send( 
  const char *buffer, 
  int32_t     length );

Parameters

Parametre

Tip

Tanım

buffer

uint8_t* or const char*

Diğer bağlantılı V5 Beynine gönderilecek tampon bellek.

length

int32_t

Gönderilecek arabelleğin uzunluğu.

Return Values

Gönderilen bayt sayısını temsil eden int32_t değerini döndürür.

Examples

Robot 1 için Kod

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

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

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

  // Track last sent state
  uint8_t lastState = 255;  // impossible initial value

 // Tell Robot 2 when the screen is being pressed
  while (true) {
    uint8_t state = Brain.Screen.pressing() ? 1 : 0;

    // Only send if state changed
    if (state != lastState) {
      link.send(&state, 1);
      lastState = state;
    }

    wait(0.02, seconds);
  }

Robot 2 için Kod

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

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

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

  // Track the last state
  uint8_t lastShown = 255;

  while (true) {
    // Variable stores 1 - pressed, 0 - not pressed 
    uint8_t state = 0;
    int32_t n = link.receive(&state, 1, 200);

    // Only update screen if state changes
    if (n == 1 && state != lastShown) {
      Brain.Screen.clearScreen();
      Brain.Screen.setCursor(1, 1);
      Brain.Screen.print("Robot 2 - Worker");
      Brain.Screen.newLine();

      // Display text if Robot 1's screen is being pressed
      if (state == 1) {
        Brain.Screen.print("Manager IS being pressed!");
      } else {
        Brain.Screen.print("Manager is NOT being pressed");
      }

      lastShown = state;
    }
    wait(0.02, seconds);
  }

receive#

Gelen bir sonraki mesajı bekler ve geri gönderir.

Available Functions

1 — İsteğe bağlı zaman aşımı ile bir karakter arabelleğine mesaj alır.

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 mesaj alma süresi yalnızca kuyruk boşsa yeni bir mesaj için beklenir.

Return Values

Alınan bayt sayısını temsil eden int32_t değerini döndürür.

Notes
  • receive alırsa, bağlantılı diğer V5 Brain’den kuyruğa alınmış bir sonraki mesajı döndürür.

  • Mesajlar FIFO (en eski okunmamış olan önce) sırasına göre okunur.

  • receive çağrıldığında kuyruk boşsa, yeni bir mesaj için belirtilen timeoutMs süresine kadar bekler.

  • Eğer o zaman diliminde hiçbir mesaj gelmezse, receive 0değerini döndürür ve daha sonra gönderilen herhangi bir mesaj, bir sonraki receive kullanımında okunmak üzere kuyrukta kalır.

Examples

Robot 1 için Kod

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

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

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

  // Track last sent state
  uint8_t lastState = 255;  // impossible initial value

 // Tell Robot 2 when the screen is being pressed
  while (true) {
    uint8_t state = Brain.Screen.pressing() ? 1 : 0;

    // Only send if state changed
    if (state != lastState) {
      link.send(&state, 1);
      lastState = state;
    }

    wait(0.02, seconds);
  }

Robot 2 için Kod

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

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

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

  // Track the last state
  uint8_t lastShown = 255;

  while (true) {
    // Variable stores 1 - pressed, 0 - not pressed 
    uint8_t state = 0;
    int32_t n = link.receive(&state, 1, 200);

    // Only update screen if state changes
    if (n == 1 && state != lastShown) {
      Brain.Screen.clearScreen();
      Brain.Screen.setCursor(1, 1);
      Brain.Screen.print("Robot 2 - Worker");
      Brain.Screen.newLine();

      // Display text if Robot 1's screen is being pressed
      if (state == 1) {
        Brain.Screen.print("Manager IS being pressed!");
      } else {
        Brain.Screen.print("Manager is NOT being pressed");
      }

      lastShown = state;
    }
    wait(0.02, seconds);
  }

received#

V5 Brain veri aldığında çağrılacak bir fonksiyonu kaydeder.

Available Functions

1 — Alınan her bayt arabelleği için bir geri çağırma fonksiyonu kaydeder.

void received( 
  void (* callback)(uint8_t *, int32_t) );

Parameters

Parametre

Tip

Tanım

callback

void (*)(uint8_t *, int32_t)

V5 Beyni veri aldığında çalışan, önceden tanımlanmış bir fonksiyon.

Return Values

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

Notes
  • received geri çağırma işlevi iki argümanla çağrılır: bir bayt arabelleği ve alınan bayt sayısı.

  • Alınan veriler null karakterle sonlandırılmamış olabilir. Geri çağrı fonksiyonu verileri bir dize olarak ele alıyorsa, alınan baytları bir karakter dizisine kopyalayın ve bir null sonlandırıcı ekleyin.

Callback Signature

callback(buffer, length)

Argüman

Tanım

buffer

Alınan bayt arabelleğine işaret eden bir gösterici.

length

Alınan bayt sayısı.

Examples

Robot 1 için Kod

// Create the link.
serial_link link(PORT1, "VEXRoboticsLink123456789", linkType::manager, true);

// Send left or right when pressed.
void screen_pressed() {
  if (Brain.Screen.xPosition() < 240) {
    link.send((uint8_t*)"left", 4);
  } else {
    link.send((uint8_t*)"right", 5);
  }
}

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

// Called when message received.
void received_callback(uint8_t *buffer, int32_t length) {
  char msg[32];

  // Copy safely and null terminate.
  int n = (length < 31) ? length : 31;
  memcpy(msg, buffer, n);
  msg[n] = '\0';

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();

  // Display if Robot 1's screen is pressed on left or right
  if (strcmp(msg, "left") == 0) {
    Brain.Screen.print("Manager pressed LEFT");
  }
  else if (strcmp(msg, "right") == 0) {
    Brain.Screen.print("Manager pressed RIGHT");
  }
}

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

  // Create the link.
  serial_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(received_callback);

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  Brain.Screen.print("Robot 2 - Worker");
  Brain.Screen.newLine();
  Brain.Screen.print("Waiting...");

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

önceki

Mesaj Bağlantısı

sonraki

CTE Çalışma Hücresi

On this page
  • giriiş
  • Sınıf Oluşturucuları
  • Sınıf Yıkıcısı
  • Parametreler
  • Notlar
  • Ö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)