MSP430 : String unbekannter Länge über UART lesen

Gast #1946247
Lesenswert?
• ▲
▼
Hallo,

ich stehe vor dem Problem, mit dem MSP430F149 einen String unbekannter 
Länge (z.B. zwischen 1 - 100 Zeichen) einlesen zu müssen, der über eine 
UART-Verbindung an den Controller geschickt wird.
Hat jemand dazu ein möglichst schlankes Codebeispiel, das auch wenig 
Ressourcen verbraucht ?
Ich denke daran, den String als gelesen zu werten, wenn z.B. 10 
Millisekunden kein neues Zeichen angekommen ist.
Moderator (Firma: Titel) Persönliche Seite #1946252
Lesenswert?
• ▲
▼
debugger schrieb:
> Hat jemand dazu ein möglichst schlankes Codebeispiel, das auch wenig
> Ressourcen verbraucht ?
Du brauchst einen Fifo-Routine, die dir die empfangenen Zeichen erst mal 
in einen Puffer schreibt. Sieh dir mal die UART-Lib von Peter Fleury an. 
Die ist zwar für den AVR, aber die Idee dahinter dürtfe weiterhelfen...
http://homepage.hispeed.ch/peterfleury/avr-software.html

> Ich denke daran, den String als gelesen zu werten, wenn z.B. 10
> Millisekunden kein neues Zeichen angekommen ist.
Ja, wenn du meinst das reicht...
Gast #1946465
Lesenswert?
• ▲
▼
Hallo,

ist Dein String komplett unbekannt oder sendest Du ihn selbst?
Ev. kannst Du ja im String die Länge mitsenden (1. oder 2. Byte) Also 
eine Art Header. Eine Checksumme kann man dann auch gut mitsenden.

Gruß
Arnold
Gast #1946779
Lesenswert?
• ▲
▼
Danke für die Hinweise !
Die Routine zum Lesen des Strings soll möglichst vielseitig einsetzbar 
sein.
Z.B. zum Lesen von Rückmeldungen von Modulen auf AT- Befehle, etc.
Endeerkennung mit CR/LF wäre eine Möglichkeit, aber für den Fall von 
Übertragungsfehlern etc. sind wohl noch Ergänzungen nötig.
Werde mich jetzt mal mit der UART-Lib von Peter Fleury beschäftigen und 
mich wieder melden, wenn sich noch Fragen ergeben.
#1946810
Lesenswert?
• ▲
▼
debugger schrieb:
> Danke für die Hinweise !
> Die Routine zum Lesen des Strings soll möglichst vielseitig einsetzbar
> sein.

Dann lass den String mit einem Terminierungszeichen enden.
Üblicherweise nimmt man dazu \n
Wenn man es ganz universell haben will, dann kann man konfigurieren, 
welches Zeichen einen String abschliesst.
Aber lass den Quack mit regulärem String-Ende durch Timeout. Das führt 
nur zu Problemen. Und sei es nur ein RS232 Kabel, welches irgendwo 
abfällt, weil die Putzfrau das Kabel rausgerissen hat.
Gast #1946855
Lesenswert?
• ▲
▼
Hallo Karl-Heinz,

bei der Antwort von Modulen (z.B. SMS/GPRS SIM340 EZ oder einfach auch 
irgendwelche Handys, die über ihre Schnittstelle angesteuert werden) 
habe ich es aber nicht selbst in der Hand, wie der String endet.
Werde mal nachsehen, wie die Terminierung da aussieht.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.