Idee gesucht zu Fehler im Programm

Hallo,

ich verzweifle: entweder sehe ich den Wald vor lauter Bäumen nicht oder es ist tatsächlich ein Fehler in meinem Programm:

Folgender Programmausschnitt sollte folgendes leisten. Im buffer steht "P1EV" und dementsprechend sollte das Programm den in rot markierten Abschnitt durchlaufen, tuts aber nicht. Ich habe einige println eingefügt um zu sehen wo das Programm überall hinspringt aber ich verstehe nicht, warum die roten Zeilen nicht bearbeitet werden.

Hat jemand eine Idee?

case 'P':
switch (buffer[1]) {
case '1':
Serial.println("Hallo P1");
if (buffer[2]=='E')
{
digitalWrite(Versorgung_Pin, HIGH);
Serial.println("Hallo P1E");
if (buffer[3]=="V")
{
digitalWrite(Vorwaerts_Pin, HIGH);
Serial.println("Hallo P1V");
}
else
{
Serial.println("Hallo nicht V");
Serial.println(buffer[3]);
}
}
Serial.println("Hallo");
if (buffer[3]=="R")
{
digitalWrite(Rueckwaerts_Pin, HIGH);
Serial.println("Hallo P1R");
}
Serial.println(buffer);
if (buffer[2]=='A')
{
digitalWrite(Versorgung_Pin, LOW);
digitalWrite(Vorwaerts_Pin, LOW);
digitalWrite(Rueckwaerts_Pin, LOW);
Serial.println("Hallo P1RV aus");
}
break;
case '2':

Die gesendete Test "println" sind in der Reihenfolge wie folgt:

Hallo P1
Hallo P1E
Hallo nicht V
V
Hallo
P1EV

Zuse99:
... sehe ich den Wald vor lauter Bäumen nicht ...

In diesem Fall ist es kein Wald, sondern falcsh verwendete Anführungszeichen.

'V' wird als 86 interpretiert (der ASCII-Wert eines V), bei "V" verhält es sich anders.

Isses das?

Gruß

Gregor

" " ist ein String Literal, welches in einen Zeiger zerfällt. Die Adressen sind natürlich nie gleich, wodurch das nicht ausgeführt wird.

Wenn du C Strings vergleichen willst, verwende strcmp(). Siehe Google. Dabei die Beschreibung genau durchlesen

Jo, das ist es !!

es waren also die Bäume (" versus ')

DANKE