Forum: Compiler & IDEs uart sting empfangen


von Martial (Gast)


Lesenswert?

hallo zusammen
ich möchte mit dem uart einen String einlesen und ihn zur kontrolle
gleich wieder ausgeben. doch es kommt nicht das gewünste heraus ;-(.
Die Funktion usart_sendString funktionert. ich kann einen String zB.
"hallo" ausgeben.
besten Dank für die Hilfe gruss Martial



void main (void)
  {
  unsigned char buffer, line[50];
  int i;
  USART_Init(23);

  for(;;)
  {
  USART_Receive();
  i = 0;
  buffer = UDR;
  while (!(buffer == 0))
  {
    line[i] = buffer;
    i++;
    buffer = UDR;
  }
  usart_sendString(line);
  }

von OldBug (Gast)


Lesenswert?

Was kommt denn raus?
Ich könnte mir vorstellen, daß Du Deine empfangene Zeile und noch
einiges an Datenmüll bekommst, richtig?

von Martial (Gast)


Lesenswert?

ich bekomme "‹‹‹‹‹"  und zwar immer so viele wie ich die grösse von
line definert habe.

gruss Martial

von OldBug (Gast)


Lesenswert?

Naja, ohne den restlichen Code (die USART-Routinen) zu kennen, schwer zu
sagen.

Ganz nebenbei: Du hast Dir da ne schöne buffer-overflow-Falle gebastelt
;)

von Martial (Gast)


Angehängte Dateien:

Lesenswert?

hehe das ist schon soo mit dem overflow, aber ich habe mal gedacht ich
versuche es mal soo, und nicht mal dies habe ich fertig gekriegt. ich
habe jetzt den ganzen code beigelegt.

Gruss Martial

von OldBug (Gast)


Angehängte Dateien:

Lesenswert?

Jetzt mache ich mal was, was man eigentlich nicht machen sollte: im
Anhang findest Du ungetesteten Code. Habe ich nach bestem gewissen
"korrigiert" :)

Probiers mal aus.

Vielleicht solltest Du auch noch einen Schritt zurück gehen, und erst
mal nur jedes Empfangene Zeichen wieder ausgeben (echo).

von Martial (Gast)


Lesenswert?

hallo oldbug

danke für dein code. damit es einwand frei funktionert hat musste ich
einfach den string noch mit nullen füllen, damit der zusendende string
auch korrekt angekommen ist.

besten Dank und Gruss Martial

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.