USART Problem (Anfänger)

Gast #2070402
Lesenswert?
• ▲
▼
Hallo,

Ich versuche gerade ein Programm zu schreiben welches beim Empfang von 
"on" eine LED einschaltet.

Prinzipiell funktoniert bei mir die Kommunikation zwischen PC und AVR.
Ich denke ich habe einen Fehler bei der Abfrage: if(Line == "on")
Muss ich hier noch das '\n' und '\0' mitabfragen. (hab ich eigentlich 
schon alles versucht)
Oder stimmt etwas mit meinen Datenformaten nocht?

Für Tipps zu einem Lösungsansatz wäre ich recht dankbar.

Danke im Voraus
mfg
Patrick
Angehängte Dateien:
Gast #2070468
Lesenswert?
• ▲
▼
Das mit dem Vergleichen hat nun geklappt.
Allerdings wenn ich den String über die RS232 Schnittstelle einlese 
klappt das ganze noch immer nicht wie gewünscht.
Muss ich etwa das /n bzw /0 mit vergleichen?

Als Rückgabe erhalte ich allerdings:  (siehe auch Anhang)
Empfangen wurde: on
Empfangen wurde: on

mfg
Patrick
Angehängte Dateien:
#2070479
Lesenswert?
• ▲
▼
Für Rückgabewert 0 müssen bei strcmp() die Strings ident sein. Also 
gleich lang und gleicher Inhalt (nur bei strcasecmp() ist Groß- und 
Kleinschreibung egal).
Also entweder \r und \n mit \0 überschreiben, oder gleich nur die ersten 
2 Zeichen mit strncmp_P überprüfen. Bei letzterer Methode würde dann 
aber auch ein Vergleich von "online" mit "on" den Rückgabewert 0 
liefern, da ja die ersten beiden Zeichen stimmen.
Gast #2070611
Lesenswert?
• ▲
▼
so schluss für heute.

ich habe es zwar geschafft die Position von \r im string zu bestimmen 
wie ich diesen aber durch \0 ersetze weiß ich noch nicht.
Vielleicht hat hier noch wer einen Tipp für mich.

Mein Programm funktionier nun aberer trotzdem da ich den empfangenen 
String einfach mit "on\r" vergleiche.

        char Line[40];      // String mit maximal 39 zeichen
        char Line2[4]="on\r";
        char Line3[5]="off\r";
        uart_gets( Line, sizeof( Line ) );

        if(strcmp(Line,Line2)==0)
        {

             PORTC &= ~(1<<0);
        }
        if(strcmp(Line,Line3)==0)
        {

             PORTC |= (1<<0);
        }

Dankeschön und noch einen schönen Abend
mfg Patrick

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.