Zeichen aus UART in Zeichenkette

Gast #159144
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
Gast #159146
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
Gast #159147
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

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.