mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeichen aus UART in Zeichenkette


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Da habe ich die ganze versucht den oben genannten zu programmiern und
der uC tut es einfach net! Er soll Zeichen von der UART einlesen und
diese vom $ gleich Anfang Zeichensatz bis <CR> und <LF> gleich Ende
Zeichensatz in ein String schreiben. Unter VC++ hat das ungefähr so
geklappt.

Hier kommt aber nur das letzte Fragment des ersten Datensatzes im
Terminal zurück.

Gibt es eigendlich einen Rückgabewert von getchar()? Hatte daran
gedacht, daß der Status des RXC-Flas zurückgegeben wird. Ähnlich wie:
USR.7==1;

Wer kann mir helfen den Fehler zu finden. Leider ist das mein erstes
Projekt und da muß ich noch viel lernen.

THX MArkus

Autor: Markus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ähhhhh? Ict schon spät, wenn man die ganze Nacht Gas gegeben hat. Daher
hier der Code;-)))

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus
kann das sein das du der gleiche bist der schon mal zu diesem Thema
einen Thread aufgemacht hast.

Tip3: lesen bildet (vor allem im richtigen Thread)

Also: getchar() gibt dir ein (gelesenes) Zeichen zurück.

Wenn du also schreibst

while (getchar() != '\n') && (getchar() != '\r') {
}

dann wirst du nicht zurande kommen

Bsp:

'H','a','l','l','o','\n'

wird in Datensatz[] so gespeicehrt werden

Datensatz[0] = 'l';
Datensatz[1] = '\n';

der Rest wird Schrott sein

Also, bitte
1. Zeichen lesen und in Variable speichern
2. gespeicherte Variable untersuchen
3. Reaktion darauf

bsp:

unsigned char ucZeichen;
unsigned char ucDatensatz[100];
unsigned char ucIndex;

ucIndex = 0;

while (ucIndex < 99) {                 // Überlauf
  ucZeichen = getchar();

  if (ucZeichen == '\n')               // Abbruch wenn CR
    break;

  ucDatensatz[ucIndex++] = ucZeichen;  // Zeichen in Datensatz
}

ucDatensatz[ucIndex]   = '\0';       // Abschließende '\0'
Eintragen


Gruss

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi T.!

Scharf kombiniert;-)

Für mein Studium arbeite ich an ein Projekt. Nach dem Motto: Learning
by doing, bringe ich mir die Kentnisse selber bei. Nach tagelanger
Arbeit, die nur bedingnt vom Erfolg gekrönt ist, zweifelt man an den
fundermentaltesten Dingen:-(

Nunja, ich werde mir deine Posts anschauen und drohe hier gleich mit
neuen Fragen.

Von dieser Stelle ersteinmal Danke für die Infos!!! Es ist immer gut,
wenn wenig Bewanderten auf den Weg geholfen wird.

Markus

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: es hilft manchmal das "EVA"-Prinzip annzuwenden
(Nein nicht die EVA, Ja!!)

E=Eingabe (getchar)
V=Verarbeitung (wenn zeichen ...)
A=Ausgabe (puts)

Gruss und viel Spaß noch ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.