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 }
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
Hallo mthomas Danke du hast mir sehr geholfen. Gruss Blei
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
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.