Arduino mittels ESP über Webseite steuern

Das muß ich mir noch öfters durchlesen um es irgenwann zu verstehen...

const int STRING_BUFFER_SIZE = 50;
char stringBuffer[STRING_BUFFER_SIZE];

bool readLine(Stream& stream)
{
  static int index;

  while(stream.available())
  {   
    char c = stream.read();
    
    if(c >= 32 && index < STRING_BUFFER_SIZE - 1)
    {
      stringBuffer[index++] = c;
    }
    else if(c == '\n' && index > 0)
    {
      stringBuffer[index] = '\0';
      index = 0;
      return true;
    }
  }
  return false;
}
const int STRING_BUFFER_SIZE = 50;
char stringBuffer[STRING_BUFFER_SIZE];

bool readLine(Stream& stream)
{
  static int index;    //Index im Ziel-Array

  while(stream.available())   //sind Daten da?
  {   
    char c = stream.read();   //Zeichen einlesen
   
    if(c >= 32 && index < STRING_BUFFER_SIZE - 1)   //kein Steuerzeichen? Noch Platz im Puffer?
    {
      stringBuffer[index++] = c;    //Zeichen abspeichern und Index inkrementieren
    }
    else if(c == '\n' && index > 0)   //Endzeichen da? Überhaupt irgendwas vorher eingelesen?
    {
      stringBuffer[index] = '\0';    //String terminieren
      index = 0;              //Index zurücksetzen
      return true;        //melden dass fertig
    }
  }
  return false;   //noch noch nicht fertig
}

-1 damit noch Platz für den Terminator ist. Und das index > 0 ist praktisch, damit keine leere Zeilen als Erfolg gemeldet werden. Also es muss mindestens ein Nicht-Steuerzeichen eingelesen worden sein damit eine Zeile als eingelesen gemeldet wird.

Wobei eine leere Zeile meistens nicht schadet und manchmal sogar gebraucht wird. Z.B., wenn die gewünschte Info in "Zeile 5" steht.

Ja, kommt auf die Anwendung an. Wenn man das braucht kann man das rausnehmen.