If else nextion arduino

Hallo ich möchte gerne einen Button über einen String auswerten,
aber der Compilier meint irgentwas ist nicht korrekt.
Kann mir jemand mit seinem Fachwissen weiterhelfen?

Die einzelne if anweisung würde funktionieren.

Aber das else if oder else nicht. Wie geht man da genau vor.
Bin neu in dem Thema Arduino

void loop() {

  if(Serial.available()){
  String data_from_display="";
  delay(30);
  while(Serial.available()){
    data_from_display += char(Serial.read());
  }
  Serial.println(data_from_display);
  sendData(data_from_display);
  }  
}

void sendData(String data_from_display){
  if(data_from_display =="ON")
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK ON\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  else if (data_from_display =="OFF"){
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK OFF\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);  
}
}




Ich denke da fehlen Klammern um den Anweisungsblock:

if (...) {
...
}
else if (...) {
...
}

Nur beim else if ist die öffnende { vorhanden.

Funktioniert leider nicht

void sendData(String data_from_display){
  if(data_from_display =="ON")
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK ON\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}
  else if(data_from_display =="OFF"){
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK OFF\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  }

 else (data_from_display ==""){
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff); 
 }

Wenn du dir die Fehlermeldung in der IDE ansiehst, kannst du selbst erkennen, wo der Fehler steckt. Im "if"-Block fehlt auch die öffnende Klammer.

Sollten keine Fehlermeldungen vorhanden sein, dann diese in den Einstellungen (Menü>Datei-Voreinstellungen) einschalten.

Kannst du mir mal genau zeigen wo? Steh grad auf dem Schlauch. Danke

Setze den Sketch bitte wie vorher richtig rein. Das Bild kann ich am Smartphone nicht lesen.

Und Fehlermeldungen solltest du doch lesen können, oder ??

in 55 nach der if(........) {

Sie vermissen das "if", wenn Sie eine neue Bedingung verwenden.


Bitte, bitte poste niemals wieder Bilder von Text... Sie sind nicht nur schwer lesbar und nicht direkt für Kopieren & Einfügen verwendbar, sondern sie verbrauchen auch viel Speicherplatz und Internet-Bandbreite, was zur Verschmutzung des Planeten beiträgt.

1 Like

Drücke in der IDE SRTG + T

Hier nochmal der Code: Ich versteh das mit den Fehlermeldungen nicht so ganz.
Danke


void setup() {
  Serial.begin(9600);
  Serial.println("SERIAL 1 BEGINN");
}
  

//#####################################################################################################
//AUFRUF PROGRAMM
//#####################################################################################################

void loop() {

  if(Serial.available()){
  String data_from_display="";
  delay(30);
  while(Serial.available()){
    data_from_display += char(Serial.read());
  }
  Serial.println(data_from_display);
  sendData(data_from_display);
  }  
}

void sendData(String data_from_display){
  if(data_from_display =="ON")
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK ON\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}
  else if(data_from_display =="OFF"){
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK OFF\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  }

 else (data_from_display ==""){
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff); 
 }

ersetze mal das durch:

void setup() {
  Serial.begin(9600);
  Serial.println("SERIAL 1 BEGINN");
}
  

//#####################################################################################################
//AUFRUF PROGRAMM
//#####################################################################################################

void loop() {

  if(Serial.available()){
  String data_from_display="";
  delay(30);
  while(Serial.available()){
    data_from_display += char(Serial.read());
  }
  Serial.println(data_from_display);
  sendData(data_from_display);
  }  
}

void sendData(String data_from_display)
{
  if(data_from_display =="ON")
  {
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK ON\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
}
  else if(data_from_display =="OFF")
{
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"INTERLOCK OFF\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  }

 else if (data_from_display =="")
 {
  Serial.print("t1.pco=65504");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.print("t1.txt=\"\"");
  Serial.write(0xff);
  Serial.write(0xff);
  Serial.write(0xff); 
 }
}

bei else darf meiner Meinung nach keine Klammer mit Vergleich folgen

1 Like

Die erste geschweifte Klammer ist an der falschen Stelle nicht geschlossen

Nur die erste Zeile ist im "if" (eingeschlossen)

C++ ist nicht wie Python, Einrückung definiert keine Blöcke. Sie müssen eine "compound statement" mit geschweiften Klammern erstellen, um Anweisungen zu gruppieren, die zusammengehören.

Lesen Statements - cppreference.com

PS: Bitte machen Sie mich nicht wieder dazu, ein Bild zu posten :slight_smile:

void sendData(String data_from_display) 
{
  if (data_from_display == "ON")
  {
    Serial.print("t1.pco=65504");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.print("t1.txt=\"INTERLOCK ON\"");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
  }
  
  else if (data_from_display == "OFF")
  {
    Serial.print("t1.pco=65504");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.print("t1.txt=\"INTERLOCK OFF\"");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
  }

  else if (data_from_display == "")
  {
    Serial.print("t1.pco=65504");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.print("t1.txt=\"\"");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
  }
}

Wunderbar vielen Dank jetzt funktioniert es, ich würde dir gerne per Paypal einen kleinen Obulus zusenden.

Upss da war jemand schneller :wink:

void setup() {
  Serial.begin(9600);
  Serial.println("SERIAL 1 BEGINN");
}


//#####################################################################################################
//AUFRUF PROGRAMM
//#####################################################################################################

void loop() {

  if (Serial.available()) {
    String data_from_display = "";
    delay(30);
    while (Serial.available()) {
      data_from_display += char(Serial.read());
    }
    Serial.println(data_from_display);
    sendData(data_from_display);
  }
}

void sendData(String data_from_display) {
  if (data_from_display == "ON") {
    Serial.print("t1.pco=65504");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.print("t1.txt=\"INTERLOCK ON\"");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
  }
  else if (data_from_display == "OFF") {
    Serial.print("t1.pco=65504");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.print("t1.txt=\"INTERLOCK OFF\"");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
  }

  else {
    (data_from_display == "");

    Serial.print("t1.pco=65504");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.print("t1.txt=\"\"");
    Serial.write(0xff);
    Serial.write(0xff);
    Serial.write(0xff);
  }
}
1 Like

Das ist absolut unnötig. Wir helfen hier gegenseitig. Zudem bin ich im Büro und werde so schon bezahlt :rofl:

1 Like

Super vielen vielen Dank ! :slight_smile: ich denke ich werd noch 1-2 mal auf dich zurückkommen müssen.

da gibt es durchaus versiertere Nutzer hier im Forum. Ich bin auch noch Anfänger :crazy_face:

Und was genau verstehst du da nicht ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.