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); }
Was kommt denn raus? Ich könnte mir vorstellen, daß Du Deine empfangene Zeile und noch einiges an Datenmüll bekommst, richtig?
ich bekomme "" und zwar immer so viele wie ich die grösse von line definert habe. gruss Martial
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 ;)
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
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.