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