====== Serial írása, ovasása, konverziók ====== Az UNO, NANO és MINI board-okon egy-egy, a MEGA-n négy serial kommunikációs lehetőség található. A board-ok közötti legeygszerűbb kommunikációs megoldást a serial kínálja, hiszen egyszerűen keresztbe kell kötni ezeket a portokat (Tx - Rx, Rx - Tx), és már mrhet is a kommunikáció: {{:hu:arduino:arduino_arduino_serial.png?400|Arduino - Arduino UART kommunikáció}} Az olyan board-okon, ahol csak egy serial csatorna van (UNO, NANO, MINI), ezt a kommunikációt letöltés előtt le kell kötni, mivel a PC-board kommunikáció is ezt a csatornát használja. \\ A serial UART kommunikáció, gyakorlatilag az összes tartalmat byte (illetve char) formában továbbítja. Ezt a tartalmat először össze kell rendezni és át kell konvertálni, hogy ismét - mondjuk - szöveges tartalomhoz jussunk. Ezekhez a konvertálásokhoz gyüjtöttem ide pár példaprogramot. ===== Mérés küldése ===== A mérés küldéséhez a numerikus változót először érdemes átkonvertálni char_array-be, majd azt küldeni, itt a példaprogramban egy int-et: char str[4]; void setup() { Serial.begin(9600); } void loop() { int value=1234; // a mérés eredménye itoa(value, str, 10); // char_array-ba átkonvertálva Serial.write(str, 4); // küldés } A konverziókhoz segítséget adhat a [[hu:arduino:var_conv|konverziós fejezet]]. ===== Telegramm fogadása ===== A lenti program MEGA-ra íródott, egyidejűleg több serial-t is használ. void setup() { Serial.begin(9600); // serial.monitor Serial1.begin(9600); // arduino-arduino serial } void loop() { // főprogram delay(100); } void serialEvent1() { // a funkció meghívásra kerül, ha valami érkezik a serial1-en (a másik Arduino-tól) int i; char data[20]; delay(10); // kis idő, míg az egész telegramm bekerül a pufferbe i = Serial1.available(); // a pufferelt telegramm hossza Serial.print("hossza: "); Serial.println(i); // a telegramm hossza Serial1.readBytes(data, i); // a char_array-be teljes terjedelmében beolvasásra kerül Serial.print("char_array: "); Serial.println(data); // mehet a monitorra String eredmeny(data); // mehet a String-be Serial.print("String: "); // monitor Serial.println(eredmeny); }