PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nochmal serielle schnittstelle.. hier umleitung der stdout



master_of_desaster
02.05.2005, 20:47
Hallo,

ich habe inzwischen viele Foren durchforstet und Bücher gelesen, aber bisher keine Antwort auf eine vermeindlich einfache Frage gefunden. Vielleicht kann man mir ja hier helfen.

Ich möchte unter C den printf Befehl auf die serielle Schnittstelle meines µC umleiten. Der stout ist ja entweder Bildschirm oder Datei. Daher die Frage: geht das überhaupt so einfach? Und geht das auch mit dem Einlesebebefehl scanf ?

Dank für Eure Hilfe

M.

roboter
02.05.2005, 22:27
Ich weiß zwar jetzt nicht wie das in C ist, aber in anderen Programmiersprachen kann man die verschiedenen Schnittstellen als Datei öffnen. Das lesen und schreiben funktioniert dann auch genauso.

03.05.2005, 07:35
Das geht beim µC (hier C167) programmieren unter C leider nicht, da es kein Betriebssystem gibt. Trotzdem vielen Dank für den Tip.

Farnsworth
03.05.2005, 22:24
Naja, ich bin da auch nicht der Experte, aber du kannst das doch konvertieren, und dann via Sencbyte() schicken.

05.05.2005, 09:54
Mit was programmierst Du denn den C167?
Falls Du Keil verwendest ist printf per default auf der seriellen Schnittstelle.
Bei Keil funktioniert das so:
printf verwendet intern putchar, scanf verwendet _getkey
puchar und _getkey kannst Du selber implementieren printf verwendet dann automatisch Deine Routinen

Fancan

07.05.2005, 11:05
Hallo fancan,
Printf ist standartmäßig die Bildschirmausgabe und nicht die serielle Schnittstelle, scanf greift auf den Tatstaturpuffer zu. Ich glaube einfach nicht, dass Keil automatisch auf die serielle Schnittstelle zugreift (außer im Debugmodus, aber der ist ja eine Simulation vom PC, der ein ein Betriebssystem besitzt!), weil dazu Buffer, Interrupts und Übertragungsroutinen für die serielle Schnittstelle programmiert werden müssen und das standartmäßig kein Compiler kann.
Es ist richtig, dass die Funktionen putchar und getkey benutzt werden, weil das Auslesen bzw schreiben über die Transferbuffer nur byteweise fuktioniert und somit die Strings zerlegt werden müssen.
Ich habe mir die Routinen zur Übertragung über die serielle Schnittstelle selber geschrieben, dabei die Interrupts eingebunden. Auch für die Formatierung mußte ich die Routinen selber schreiben.
Falls Du Dir sicher bist, dass Printf und scanf unter Keil auch auf die serielle Schnittstelle (UART) zugreifen können (speziell im RUN-Modus), erkläre bitte doch mal etwas präzieser, wie das funktioniert. Ich bin da sehr neugierig, weil ich das einfach nie hinbekommen habe.

Solong, und froher Hacken weiterhin
Muh
:roll:

08.05.2005, 12:36
Hallo master_of_desaster,

Unter Linux ist das umleiten kein größeres Problem.
Bsp:
bash~ Applikation > /dev/ttyS0

Leider bringt Dich das als Windowsnutzer leiter nicht weiter.
Bye

master_of_desaster
09.05.2005, 07:53
Hallo Zusammen,

danke für eure zahlreichen Anregungen.
Nur kurz nochmal zum Verständnis: Ich möchte einen µController programmieren, da gibt es KEIN Betriebssystem, also KEIN Windows, Linux, etc. Deshalb ja auch die Probleme mit dem Umleiten. Ich glaube, der Beitrag von Muh trifft es haargenau. Ich werde mir also die Routinen selber schreiben müssen.
Trotzdem nochmal Danke an alle.

M.