seltsames String-Verhalten. Warum?

Gast #365828
Lesenswert?
• ▲
▼
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?
Gast #365829
Lesenswert?
• ▲
▼
> 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)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.