Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Következő változat
Előző változat
hu:arduino:serial_conv [2019/11/28 20:37]
Sandor Vamos létrehozva
hu:arduino:serial_conv [2019/11/28 21:01] (aktuális)
Sandor Vamos
Sor 1: Sor 1:
 ====== Serial írása, ovasása, konverziók ====== ====== 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ó. 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.+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:
 +<code c>
 +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
 +}
 +</​code>​
 +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.
 +<code c>
 +
 +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); ​
 +}
 +</​code>​