• 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
Pereiti prie pagrindinio turinio
Ctrl+K

< Back to Platform Select

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

Skyriaus navigacija

  • Blokai
  • Python
  • C++
    • Pavarų dėžė
    • Varikliai ir variklių valdikliai
    • Valdiklis
    • Smegenys
    • Konkurencija
    • Išmanieji prievadų įrenginiai
    • 3 laidų įrenginiai
    • Konsolė
    • Logika
    • VEXlink
      • Žinutės nuoroda
      • Nuoseklusis ryšys
    • CTE darbo vieta
  • VEXcode pamokos

Platformos navigacija

  • 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

Žinutės nuoroda#

  • Įvadas

  • Klasės konstruktoriai

  • Klasės destruktorius

  • Parametrai

  • Pavyzdys

  • Narių funkcijos

    • yra susietas

    • siųsti

    • gauti

    • gautas

Įvadas#

Klasė message_link leidžia dviem V5 smegenims bendrauti siunčiant trumpus tekstinius pranešimus su pasirinktinai mažais duomenimis. Ji skirta robotų tarpusavio koordinavimui – pvz., paleisti procedūras, dalytis jutiklių rezultatais arba suaktyvinti kito roboto elgesį.

Kiekvieną kartą panaudojus send, prie susietų V5 smegenų eilės pridedamas pranešimas, o eilė skaitoma FIFO principu. Jei prieš tai, kai kita V5 smegenų sistema panaudoja receive, išsiunčiami keli pranešimai, jie bus saugomi ir grąžinami po vieną tokia tvarka, kokia buvo išsiųsti. Kadangi pranešimai gali būti eilėje, pakartotinis tos pačios būsenos siuntimas kiekviename cikle gali sukelti vėlavimą; laiko požiūriu kritinei logikai siųskite tik tada, kai pasikeičia reikšmės.

Svarbu: Abu robotai vienu metu turi vykdyti projektus, kurie naudoja message_link , kitaip pranešimai nebus siunčiami / gaunami.

Klasės konstruktoriai#

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

Klasės destruktorius#

Sunaikina objektą message_link ir atlaisvina susijusius išteklius.

virtual ~message_link();

Parametrai#

Parametras

Tipas

Aprašymas

index

int32_t

Išmanusis prievadas, prie kurio prijungtas V5 radijas arba išmanusis kabelis, rašomas kaip PORTx, kur x yra prievado numeris (pavyzdžiui, PORT1).

name

char

Žinutės nuorodos pavadinimas.

type

linkType

Ryšio tipas – linkType::manager arba linkType::workerŠi informacija naudojama radijo ryšiui teisingai sukonfigūruoti ir nustato galimą perdavimo ir priėmimo pralaidumą. Valdymo robotas turi dvigubai daugiau galimo pralaidumo (1040 baitų per sekundę), kad galėtų siųsti informaciją darbininko robotui (520 baitų per sekundę).

  • linkType::manager – „message_link“ objektas yra valdymo robotas.
  • linkType::worker – „message_link“ objektas yra darbuotojas.

isWired

bool

Ar „message_link“ objektas yra laidinis.

  • true – „message_link“ objektas yra laidinis.
  • false – „message_link“ objektas yra belaidis.

Pavyzdys#

1 roboto kodas

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

Roboto 2 kodas

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

Narių funkcijos#

message_link klasėje yra šios narių funkcijos:

  • isLinked — Grąžina, ar šios smegenys yra aktyviai prijungtos prie suporuotų smegenų.

  • send — Siunčia žinutę suporuotoms smegenims.

  • receive — Laukia ir grąžina kitą gaunamą pranešimą.

  • received — Registruoja funkciją, kuri bus iškviečiama gavus naują pranešimą.

Prieš iškviečiant bet kokias message_link nario funkcijas, reikia sukurti message_link egzempliorių, kaip parodyta žemiau:

1 roboto kodas

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

Roboto 2 kodas

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

isLinked#

isLinked metodas grąžina, ar V5 smegenys „MessageLink“ tinkle yra suporuotos viena su kita.

Available Functions
bool isLinked();

Parameters

Ši funkcija neturi jokių parametrų.

Return Values

Ši funkcija grąžina loginę reikšmę.

  • true – Dvi V5 smegenys yra suporuotos ir bendrauja šiuo ryšiu.

  • false – Šioje jungtyje dvi V5 smegenys nėra suporuotos.

Notes

Prieš paleidžiant bet kokį tolesnį kodą, gera praktika yra visada patikrinti, ar V5 smegenys yra susietos projekto pradžioje.

Examples

1 roboto kodas

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

Roboto 2 kodas

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

Siunčia pranešimą per nuorodos ryšį.

Available Functions

1 — Siunčia pranešimo eilutę.

int32_t send( 
  const char *message );

2 — Siunčia pranešimų eilutę su double.

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

3 — Siunčia pranešimų eilutę su int32_t ir double.

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

Parameters

Parametras

Tipas

Aprašymas

message

const char*

Žinutė, kurią reikia siųsti į kitą susietą V5 smegenų dalį.

index

int32_t

Sveikasis skaičius, kurį reikia siųsti į kitą susietą V5 smegenų branduolį.

value

double

Dvigubas kodas, siunčiamas į kitą susietą V5 smegenų sistemą. Dvigubi kodai suformatuojami iki 4 skaitmenų po kablelio; jei pateikiama mažiau skaitmenų po kablelio, pridedami nuliai, kol rodoma 4.

Return Values

Ši funkcija negrąžina jokių reikšmių.

Notes

Jei siunčiamas tik message , kitas susietas V5 smegenų blokas gauna būtent tą pranešimą.

Jei įtraukiama value (ir index jei nurodyta), priimančios smegenys gauna vieną užkoduotą pranešimą, kuriame visi laukai sujungiami tokia tvarka: .message_index_value

Examples

Naudojant link.send(“string”, 1, 2.55) gaunamas kaip .string_1_2.5500.

1 roboto kodas

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

Roboto 2 kodas

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

Gauna pranešimą iš nuorodos ryšio.

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

Parameters

Parametras

Tipas

Aprašymas

buffer

char*

Buferis gautam pranešimui saugoti.

length

int32_t

Buferio ilgis.

timeoutMs

int32_t

Kiek milisekundėmis receive lauks naujo pranešimo tik tuo atveju, jei eilė tuščia. Numatytoji reikšmė yra 300 000 (300 sekundžių).

Return Values

Ši funkcija grąžina gautų baitų skaičių.

Notes
  • receive grąžina kitą eilėje esantį pranešimą iš kitos susietos V5 smegenų sistemos. Pranešimai skaitomi FIFO tvarka (pirmiausia seniausi neskaityti). Jei eilė tuščia, kai iškviečiama receive , ji laukia naujo pranešimo iki nurodyto receive . Jei per tą langą negaunama jokio pranešimo, receive grąžina timeout, o visi vėliau išsiųsti pranešimai lieka eilėje, kad būtų perskaityti kitą kartą naudojant 0.

  • Jei kitas susietas V5 Brain išsiuntė tik string, receive grąžina tikslią eilutę.

  • Jei kitas susietas V5 Brain išsiuntė sveikąjį ir (arba) slankiojo skaičiaus reikšmę, receive grąžina vieną užkoduotą eilutę, kurioje visi laukai sujungiami tokia tvarka: .string_integer_float

    • Pavyzdžiui, jei kitas susietas V5 Brain naudoja link.send(“string”, 1, 2.55), tada naudojant link.receive() grąžina užkoduotą eilutę, pvz. .string_1_2.5500Šią užkoduotą eilutę galite padalinti (žr. pavyzdžius toliau), kad išgautumėte pranešimo pavadinimą, sveikąjį skaičių ir slankiojo skaičiaus reikšmes.

    • Jei norite išvengti rankinio skaidymo / analizavimo, naudokite received, kad užregistruotumėte konkretaus pranešimo pavadinimo tvarkyklę; tvarkyklė gauna išsiųstas reikšmes kaip argumentus.

Examples

Naudojant link.send(“string”, 1, 2.55) gaunamas kaip .string_1_2.5500.

1 roboto kodas

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

Roboto 2 kodas

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

Registruoja funkciją, kuri bus iškviečiama kaskart, kai V5 Brain gaus išsiųstą pranešimą.

Available Functions

1 Registruoja visų gautų pranešimų (pranešimas + reikšmė) grįžtamąjį ryšį.

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

2 Registruoja visų gautų pranešimų atgalinį iškvietimą (pranešimas + indeksas + reikšmė).

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

3 Registruoja konkretaus pranešimo (pranešimas + reikšmė) grįžtamąjį ryšį.

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

4 Registruoja konkretaus pranešimo (pranešimas + indeksas + reikšmė) grįžtamąjį ryšį.

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

Parameters

Parametras

Tipas

Aprašymas

message

const char *

Klausomo pranešimo pavadinimas. Jei nenurodyta, grįžtamasis iškvietimas vykdomas visiems gautiems pranešimams.

callback

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

Funkcija, kuri vykdoma gavus pranešimą.

Return Values

Ši funkcija negrąžina jokių reikšmių.

Callback Signature

1 Gauna siuntėjo vardą, žinutės pavadinimą ir reikšmę.

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

2 Gauna siuntėjo vardą, pranešimo pavadinimą, indeksą ir reikšmę.

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

Tipas

Aprašymas

1st const char *

Siuntėjo nuorodos pavadinimas.

2nd const char *

Gautos žinutės pavadinimas.

int32_t

Su pranešimu susietas indeksas.

double

Su pranešimu susijusi reikšmė.

Examples

1 roboto kodas

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

Roboto 2 kodas

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

praeitas

VEXlink

kitas

Nuoseklusis ryšys

On this page
  • Įvadas
  • Klasės konstruktoriai
  • Klasės destruktorius
  • Parametrai
  • Pavyzdys
  • Narių funkcijos
    • isLinked
    • send
    • receive
    • received
Innovation First, International
​

„VEX“ ir „VEX Robotics“ yra „Innovation First, Inc.“ prekių ženklai arba paslaugų ženklai. Autorių teisės © 2026Visos teisės saugomos. „VEX Robotics, Inc.“ yra „Innovation First International, Inc.“ dukterinė įmonė. Visi kiti produktų pavadinimai / prekių ženklai yra jų atitinkamų savininkų nuosavybė. Patentai ir (arba) laukiami patentų patvirtinimai - innovationfirst.com/patents
Svetainės privatumo politika / Svetainės naudojimo sąlygos / Slapukų politika / Programinės įrangos privatumo politika

Apsilankykite „VEX Robotics“ „Facebook“ puslapyje Apsilankykite „VEX Robotics“ „Twitter“ puslapyje Apsilankykite „VEX Robotics“ „Instagram“ puslapyje Apsilankykite „VEX Robotics“ „YouTube“ puslapyje
VEX API atsiliepimų forma

Vertiname jūsų atsiliepimus! Norėdami pasidalyti pasiūlymais, komplimentais arba pranešti apie VEX API klaidas, naudokite šią formą. Jūsų indėlis padeda mums tobulinti VEX API dokumentaciją.

​

Jei kyla techninių problemų arba reikia klientų pagalbos, apsilankykite support.vex.com.

  • Send Happy Feedback
  • Send Sad Feedback

Pastaba: dabartinis URL bus bendrinamas su jūsų pranešimu

Įtraukdami savo el. pašto adresą, jūs sutinkate, kad VEX gali siųsti jums el. laiškus, jei turėsime klausimų dėl jūsų atsiliepimų.
Privatumo politika >
Prašome pateikti atsiliepimą. Atsiliepimas sėkmingai pateiktas!
Choose Which VEX IQ Generation to View

VEX IQ (1st gen)

VEX IQ (2nd gen)