Forum: Mikrocontroller und Digitale Elektronik Zeichen aus UART in Zeichenkette


von Markus (Gast)


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

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

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

von T.Stütz (Gast)


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

von Markus (Gast)


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

von T.Stütz (Gast)


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 ...

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
Noch kein Account? Hier anmelden.