Ich habe jetzt seit Tagen das Problem gesucht und soweit eingekreist, dass ich nicht das ganze progamm posten muss, sondern nur die Teile die sich nicht nachvollziehbar verhalten. in einer kleinen Routine mache ich folgende Zuweisung: if(Key != 0) { setbit(PORTC,PC4); ir_string("abcdefGhijklmnopqrstuvwxyz"); Key = 0; clearbit(PORTC,PC4); } Weil "G" ein Großbuchstabe ist mus vor dem G ein Shift-Zeichen geschickt werden, anschließend wird ein kleines "g" gesendet. Das geschieht hier if(data[i1] >=0x41 && data[i1] <=0x5a) { data[i1] = data[i1] + 32; if(!checkbit(status,4)) { shift(); } } Status 4 merkt sich nur ob die Shift-Taste gedrückt ist, falls das nächste Zeichen auch gross geschrieben werden muss. Anschließend wird das Zeichen gesendet und alles klappt, wie es soll. Beim nächsten Senden ist das "G" aber klein, obwohl die Zeichenkette neu zeugewiesen wird, d.h. bei ir_string("abcdefGhijklmnopqrstuvwxyz"); wird entweder ein kleines "g" an übergeben, oder die Zeile wird nicht ausgeführt, die davor und danach aber schon. Keine dieser Zeilen läuft in einer ISR oder wird von einer aufgerufen. Es ist sicher das die if-Anweisung if(data[i1] >=0x41 && data[i1] <=0x5a) beim zweiten Durchlauf nicht mehr ausgeführt wird. Woran liegt das und wie schalte ich das aus?
> Beim nächsten Senden ist das "G" aber klein, obwohl die
Zeichenkette
neu zeugewiesen wird, d.h. bei
Probiere mal herauszufinden, was das Schlüsselwort const bei C
bedeutet.
Dann schreibe ir_string() so um, dass die Funktion zu diesem Prototyp
passt:
void ir_string(const char * string)
Außerdem teste bitte nicht auf absolute Zahlen sondern if (... >= 'A' && ... <= 'Z') oder besser gleich #include <ctypes.h> und isupper(), danach dann tolower() benutzen, um einen Kleinbuchstaben draus zu machen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.