PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler in If...else Anweisungen???



fredyxx
18.11.2016, 16:50
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





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:



if(Serial2.available()) // Info verfügbar?
{
BT_Info = Serial2.readStringUntil('\n'); // Info einlesen

BT_Empfangen (); // Aufruf der BT-Signalverarbeitung


} // ************* ENDE if(Serial2.available())

Sisor
18.11.2016, 17:15
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?!

fredyxx
18.11.2016, 17:49
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