hi Leute, ich wollte mal fragen, wie man es am einfachsten realisiert, dass man über eine Serielle per UART befehle empfängt und diese Verarbeitet... Also genauer, ich möchte ein Protokoll realisieren, allerdings fehlen mir erfahrungen, wie das grundsätzliche einlesen und vergleichen mit vordefinierten strings geschieht. Ich empfange über die UART-ISR Zeichen für Zeichen und puffere diese Zeichen in einem Chararray. Nun frage ich in der ISR auf 0x13 ab (return gedrückt) und setze ein flag für die Main. Wie kann ich jetzt am einfachsten vergleichen, ob das empfangene, einem vordefinierten commando entspricht? Muss ich da das Array zeichen für zeichen abklappern, oder gibt es möglichkeiten einen nullterminierten string mit einem anderen zu vergleichen? Danke und Gruß Karl
Hallo Karl, > Muss ich da das Array zeichen für zeichen abklappern, oder gibt es > möglichkeiten einen nullterminierten string mit einem anderen zu > vergleichen? ich denke du suchst: int strcmp(const char* s1, char* s2) Stammt aus der string.h, ich empfehle einschlägige Literatur zum Thema Strings (z.B. http://de.wikibooks.org/wiki/C-Programmierung:_string.h) Michael
Kommandos über uart mache ich immer so: zb. sendet µc 1 an µc2 so: xg (Befehl1) xxg (Befehl2) . . . Das Zeichen "g" löst beim µc 2 den "Bytematch" Interrupt aus. Anschließend wird mit len(empfangenstring) geguckt wieviele Zeichen vor dem "g" eingetroffen sind. Mit einem Case Select Dingens kann man dann entsprechend sagen was passieren soll.
Hallo, ich habe in den letzten Jahren einen Kommandointerpreter programmiert bei dem man Befehle über UART an den AVR schickt und die Kommandozeile mittels einer statengine interpretiert. Dazu habe ich mal einen wiki-artikel angelegt, allerdings zögere ich noch ein wenig die Sourcefiles zur Verfügung zu stellen, da nicht 100% aus meiner Feder stammen. http://www.mikrocontroller.net/articles/Terminal_mit_Kommandointerpreter
Mein Vorschlag wäre, die Vergleiche über eine Prüfsummenberechnung zu machen. Ich habe es noch nicht probiert, kann mir aber vorstellen, dass die String-Bibliothek Einiges an Platz frisst. Vorschläge für eine einfache, schlanke, aber eindeutige Prüfsummenberechnung (Hashfunktion) würden mich übrigens auch interessieren. Zur Zeit benutze ich für meine Steuerung über RS232 nur eine recht einfache, die theoretisch nicht eindeutig ist.
Eine stringbibliothek ? Wozu ? Zum Vergleichen und kopieren ? Ein CRC ist Standard, ein paar Zeilen.
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.