Hallo, ich möchte über beide Serielle Schnittstellen des SAB80c517a Daten an 2 Rechner senden. Also über SS0 an Rechner A und über SS1 an Rechner B. Die formatierte Datenübertragung über SS0 funktioniert ja einfach über das printf(). Ich würde nun aber auch gerne formatierte Daten über SS1 übertragen. Funktioniert das auch irgendwie über printf()? Konnte hier im Forum/Google nichts finden. Einstellungen sind eigentlich korrekt. Bei Eingabe von bspw: ... S1BUF=0x41; printf("%c ",S1BUF); ... wird "A" in UART2 angezeigt. Bei: ... S1BUF=0x41; printf("hallo %c ",S1BUF); ... wird in UART1 das "hallo" angezeigt und in UART2 das "A". Vielen Dank schonmal.
Guest_a schrieb: > wird in UART1 das "hallo" angezeigt und in UART2 das "A". Welcher Compiler? Alternativ mit steiler Lernkurve: Sieh dir doch einfach mal den Quellcode von printf() an...
es ist keil µvusion 4... ok, ich schau mal in die stdio.h, oder wo werde ich den quellcode finden?
printf ruft putchar auf. Du mußt Dir ein eigenes putchar schreiben, daß die UART auswählen kann, z.B. über eine Bitvariable, die man vor dem printf setzt oder löscht. Peter
Also in der stdio.h ist das putchar ja jetz auch nur so definiert: #define putchar(_c) putc((_c),stdout) #define stdin (&__iob_func()[0]) -> #define stdout (&__iob_func()[1]) #define stderr (&__iob_func()[2]) also müsste ich jetz irgendwie das stdout ändern? #define putc(_c,_stream) (--(_stream)->_cnt >= 0 \ ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream))) leider blicke ich beim #define putc(...) gar nicht mehr durch, gibts dafür irgendwo ne erläuterung? danke.
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.