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
Das UP wird immer mit dem Eintreffen eines Signals von der Seriellen Schnittstelle 2 des Arduino MEGA aufgerufen.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 ()
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())







Zitieren


Lesezeichen