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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren