Alex schrieb:
> Noch etwas: wenn ich jetzt meinen Vergleich mit Strcmp mache, matched
> der nicht. Ich habe beim strcmp() jetzt schon "test", "test\n" und
> "test\r\n" probiert, leider ohne Erfolg. Hast Du da noch einen Tip?
Du hast eine UART. Du kannst dir über die UART Zeichen (und auch
Strings) ausgeben lassen.
Sieh dir an, was der AVR gekriegt hat! Lass es dir ausgeben.
Vor dem Kommandostring und dahinter gibst du ein Sonderzeichen aus, zb
ein '#', damit du auch die Position der im String enthaltenen
Zeilenvorschübe in der Ausgabe sehen kannst. Gibst du am Terminal "test"
ein, dann muss die Ausgabe
lauten.
Sie darf weder
sein, noch darf sie
sein, und auch
ist aus dem Rennen. Aus der Position deines Sonderzeichens in Relation
zum Text kannst du erkennen, wo im String ein Zeilenvorschub ist.
Und lass die Sache mit dem Ringbuffer sein. Wenn dein Commandostring zu
lang ist, dann machst du keinen Wraparound sondern ignorierst weitere
Zeichen (und gibst gegebenenfalls eine Fehler,eldung aus). Jedes
Kommando fängt im Array immer ganz vorne an. Dinge wie \r oder \n willst
du erst gar nicht im String haben, die speicherst du daher nicht. Ein \n
löst dann zwar die Weiterverarbeitung des empfangenen Strings aus, du
willst aber den \n nicht im String speichern. Der behindert dich nur bei
der Bearbeitung des Strings, liefert dir aber ansonsten keine
Information.