- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 3 von 3

Thema: Fehler in If...else Anweisungen???

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242

    Fehler in If...else Anweisungen???

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich habe den Fehler gefunden!

    Es muss bei den ODER -Abfragen so heißen:

    else if ( BT_Info == "*10|6|2#" || BT_Info == "*10|6|3#")


    Hallo,

    der folgende Code eines Unterprogramms funktioniert bis zu der Abfrage von "*10|2|2#" || "*10|2|3#".

    Wenn dann BT_Info was enthält, was danach kommt, dann erscheint auf dem SM immer nur die 2 und "IR_Nr_fuer_Mx = 3".

    Das sieht dann z.B. so aus:

    BT_Info = *10|4|3#
    2
    IR_Nr_fuer_Mx = 3



    Code:
    void BT_Empfangen () {
    
      Serial.print("BT_Info   =   ");
      Serial.println (BT_Info);
    
      if ( BT_Info == "*10|1|3#")    //    M1 ausfahren
      { Serial.println(" 1a");
        IR_Nr_fuer_Mx = 1;
    
        M1_Start =  true;   // wird ja nur einmal mit dem Empfang des Signals vom IR durchlaufen
      }
    
      else if ( BT_Info == "*10|1|2#")    //    M1 einfahren
      { Serial.println(" 1b");
        IR_Nr_fuer_Mx = 2;
    
        M1_Start =  true;   // wird ja nur einmal mit dem Empfang des Signals vom IR durchlaufen
    
      }
    
      else if ( BT_Info == "*10|2|2#"  ||  "*10|2|3#")    //    M1 STOP
      { Serial.println(" 2");
        IR_Nr_fuer_Mx = 3;
    
      }
    
      else if ( BT_Info == "*10|3|3#")    //    M2 ausfahren
      { Serial.println(" 3a");
        IR_Nr_fuer_Mx = 4;
    
        M1_Start =  true;   // wird ja nur einmal mit dem Empfang des Signals vom IR durchlaufen
      }
    
      else if ( BT_Info == "*10|3|2#")    //    M2 einfahren
      { Serial.println(" 3b");
        IR_Nr_fuer_Mx = 5;
    
        M1_Start =  true;   // wird ja nur einmal mit dem Empfang des Signals vom IR durchlaufen
    
      }
    
      else if ( BT_Info == "*10|4|2#"  ||  "*10|4|3#")    //    M2 STOP
      { Serial.println(" 4");
        IR_Nr_fuer_Mx = 6;
    
      }
    
    
      else if ( BT_Info == "*10|5|3#")    //    M3 ausfahren
      { Serial.println(" 5a");
        IR_Nr_fuer_Mx = 7;
    
        M1_Start =  true;   // wird ja nur einmal mit dem Empfang des Signals vom IR durchlaufen
      }
    
      else if ( BT_Info == "*10|5|2#")    //    M3 einfahren
      { Serial.println(" 5b");
        IR_Nr_fuer_Mx = 8;
    
        M1_Start =  true;   // wird ja nur einmal mit dem Empfang des Signals vom IR durchlaufen
    
      }
    
      else if ( BT_Info == "*10|6|2#"  ||  "*10|6|3#")    //    M3 STOP
      { Serial.println(" 6");
        IR_Nr_fuer_Mx = 9;
    
      }
    
    Serial.print ("IR_Nr_fuer_Mx   =  ");
    Serial.println (IR_Nr_fuer_Mx);
    
    return;
    
    }     //   ENDE  >>>>>>>  void BT_Empfangen ()
    Das UP wird immer mit dem Eintreffen eines Signals von der Seriellen Schnittstelle 2 des Arduino MEGA aufgerufen.

    Sieht jemand einen Fehler, den ich nicht erkenne? Dann bitte melden!

    Der Aufruf sieht so aus:

    Code:
       if(Serial2.available())        //   Info verfügbar?
     {
     BT_Info = Serial2.readStringUntil('\n');      //   Info einlesen
    
     BT_Empfangen ();     // Aufruf der BT-Signalverarbeitung
    
     
     }       //   *************  ENDE   if(Serial2.available())
    Geändert von fredyxx (18.11.2016 um 17:08 Uhr)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ich habe den Fehler gefunden!

    Es muss bei den ODER -Abfragen so heißen:

    else if ( BT_Info == "*10|6|2#" || BT_Info == "*10|6|3#")
    Damit beginnt dein Thread. Kontext?!

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Zitat Zitat von Sisor Beitrag anzeigen
    Damit beginnt dein Thread. Kontext?!
    Ja, habe ich erst nachträglich eingefügt, um andere damit nicht mehr zu belästigen.

    Hätte ich das nicht gemacht, wäre der Text hinten angehängt worden und das wäre dann noch blöder gewesen.

    Wenn möglich, kann der Thread auch nun gelöscht werden, aber wie?

    vG

    fredyxx

Ähnliche Themen

  1. Wo ist der Fehler?
    Von Ezalo im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 12.08.2010, 16:48
  2. Frage zu Assembler-Anweisungen
    Von Jaecko im Forum Assembler-Programmierung
    Antworten: 3
    Letzter Beitrag: 11.10.2008, 21:38
  3. LCD flackert bei Verwendung von Gosub Anweisungen! Warum?
    Von elcapitano im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 23.03.2008, 17:03
  4. mehrere if anweisungen verschachteln
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 25.11.2007, 19:21
  5. "Select Case" und dann mehrere Anweisungen pro Zei
    Von Willa im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 25.10.2007, 13:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests