Hallo Leute! Gibt es eine fertige Routine, die es erlaubt, einen String von etwa 10 Bytes über den UART in einzelne chars zu zerlegen? Habe vor, ein eigenes Protokoll zu empfangen.: Empfange: 81 30 Sende von AVR zurück: 01 92 83 77 29 22 71 66 Jetzt möchte ich die einzelnen Bytes auswerten und ggf. auch wieder einen solchen String zurückschicken. Vielen Dank!
Johannes Knöller schrieb: > Gibt es eine fertige Routine, die es erlaubt, einen String von etwa 10 > Bytes über den UART in einzelne chars zu zerlegen? Das was du da hast sind doch gar keine Strings im C-Sinne. Das sind ganz einfach nur Bytes in einem Array. Und klar, in einem Array kannst du auf jedes Byte zugreifen. > > Habe vor, ein eigenes Protokoll zu empfangen.: > > Empfange: > 81 30 > OK. Dann empfang das doch. Jedes Byte welches empfangen wird, wird in einem Array zwischengespeichert. Oder man macht sich eine Zustandsmaschine. Da gibt es mehrere Möglichkeiten. > Jetzt möchte ich die einzelnen Bytes auswerten und ggf. auch wieder > einen solchen String zurückschicken. Deine Vorstellung davon, was in C ein String ist, ist fehlerhaft.
Ich meinte ja auch nicht im C-Sinne. Oder habe ich das irgendwo erwähnt?! Ich weiß, dass in C ein String nichts anderes als ein Char-Array ist. Ich meinte mit String: String im Sinne von Byte-Strom. Da der Eingangs/Ausgangspuffer im AVR aber ja nichts anderes als eine Char-Variable (also 8 bit) ist, wollte ich wissen, wie ich diese einzelnen Bytes nacheinander in ein Array schreiben kann. DAnke!
Brauchst doch nur den UART-Puffer ins Array schreiben und bei jeden Durchlauf, also immer wenn ein neues Zeichen kommt, den Zähler fürs Array erhöhen. Ich nehem an das Du den Empfang per UART-Interrupt machst. Wenn die Zeichenkette in ihrer Länge wechseln kann musst Du noch eine eindeuteige 'Endesequenz' haben. Beim Erkennen dieser wird dann der Zähler für den nächsten Empfang zurückgestellt.
Johannes Knöller schrieb: > Ich meinte ja auch nicht im C-Sinne. Oder habe ich das > irgendwo erwähnt?! Und das du in einem C-Forum frägst soll ich wohl ignorieren? Oder ist es für dich normal, immer die falschen Ausdrücke zu benutzen wenn du etwas nachfrägst? "String" hat in C eine fixe, feststehende Bedeutung. Falsche Verwendung des Ausdrucks führt nur zu Misverständnissen. > Char-Variable (also 8 bit) ist, wollte ich wissen, Du willst Bytes schon gar nicht in char Variablen haben char Einzelzeichen im Sinne von Textverarbeitung uint8_t kleiner Integer mit 8 Bit, vulgo Byte int8_t kleiner Integer mit 7 Bit + Vorzeichen > wie ich diese > einzelnen Bytes nacheinander in ein Array schreiben kann. Zähler mitführen array[ counter ] = next_Byte_from_UART; counter++; Wenn das als Hilfe immer noch nicht reicht, dann lautet mein Tip: poste den Code den du hast! Dann kann man auch etwas spezifischer auf dein Problem eingehen.
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.