mikrocontroller.net

Forum: Compiler & IDEs Wie kann ich diesen String über überprüfen?


Autor: Kapitän Blei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Wie kann ich das mit WinAVR umsetzen?

Ich empfange über den UART einen Befehl und speichere die einzelnen
Zeichen im Array UBefehl ab.
Jetzt möchte ich Prüfen ob die ersten 4 Zeichen den Namen "REV:"
besitzt.

Wie kann ich das schreiben ohne dass ich den Array in ein String
umschreiben muss?


MfG

Blei



char UBefehl[12];  //Befehlsbuffer für UART



UBefehl[0] = "R";
UBefehl[1] = "E";
UBefehl[2] = "V";
UBefehl[3] = ":";
UBefehl[4] = "A";
UBefehl[5] = "F";
UBefehl[6] = "B";

//Prüft den Befehl. Zeichen 0-3 müssen diesen Namen besitzen.

if (UBefehl[0,3] == "REV:")
{
  .. Ausführung Befehl
}

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Betr. "Unterschied" Array aus Char und String vielleicht nochmal ein
C-Buch konsultieren.

Loesungsvorschlag in der Art (nicht getestet):

#include <string.h>
//...
if ( strncmp( UBefehl, "REV:", 4 ) == 0 ) {
 // mach was
}

oder:

#include <avr/pgmspace.h>
//...
if ( strncmp_P( UBefehl, PSTR("REV:"), 4 ) == 0 ) {
 // mach was
}

Weiteres zu strncmp(_P) siehe avr-libc Dokumentation.

Martin Thomas

Autor: Kapitän Blei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo mthomas

Danke du hast mir sehr geholfen.


Gruss

Blei

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein String IST ein Array. Das besondere bei Strings ist, dass sie ein
Element mehr haben als effektive Zeichen drin sind. In diesem
zusätzlichen Element ist eine 0 drin, womit der String als
abgeschlossen gilt...

kopfschüttel

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.