Forum: Mikrocontroller und Digitale Elektronik PIC 18F4550, RS232 und Putty


von Phil P. (john_d)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich versuche mittels Rs232 mit meinem PC den 18F4550 "anzusprechen". Im 
Schaltplan ist zu sehen, wie der MAX232 verschaltet ist.
Die bloße Kommunikation funktioniert.
Ich habe es zum Beispiel geschafft etwas an den PC zu schicken. Da ich 
Win7 habe, verwende ich Putty und hier liegt ein Problem: Ich checke das 
Programm, glaube ich, nicht so richtig.
Der Code
1
while(1)
2
{
3
   helfer=getc();
4
   printf("Ascii = %d \n", helfer);
5
   putc(13);
6
}
wartet ja irgendwie auf eine Eingabe (bitte korrigieren, wenn ich hier 
schon falsch liege) und sobald die kommt (ein char) dann gibt er mir den 
ASCII Wert aus. Das klappt auch. In Putty kann ich bei jedem 
Tastenanschlag unmittelbar dannach den ASCII Code sehen.
Aber warum sehe ich meine Eingaben nicht? Wie kann ich ganze Strings 
einlesen?
1
gets(string);
funktioniert zwar, weil ich den String mir wieder zurück schicken lasse, 
jedoch ist in Putty nichts von meiner Eingabe zu sehen. Der Cursor 
bewegt sich garnicht. Ich tippe sozusagen blind :-).
Mache ich was falsch oder bediene ich Putty falsch?

Gruß

John

von Georg G. (df2au)


Lesenswert?

Entweder bei putty "lokales Echo" einschalten oder statt getch() dann 
getche() nehmen (oder so ähnlich, kenne dein PIC-C nicht), die getch() 
Variante, die ein Echo erzeugt.

von Phil P. (john_d)


Lesenswert?

Danke!

Unter "Terminal" im Frame " Line discipline options" bei Local Echo 
"forced on" wählen hat geholfen.
Was ich noch nicht so recht verstehe ist der Unterschied zwischen 
putc(13) und ein \n in einem printf-Befehl. Das soll doch beides eine 
neue Zeile bewirken, oder?

von Georg G. (df2au)


Lesenswert?

putc(13) ist "carriage return" = an den linken Rand der Zeile. \n ist 
"new line" = "line feed" = putc(10) = Zeilenvorschub und wird von vielen 
Terminalprogrammen zu der Kombination Zeilenvorschub UND nach links 
expandiert.

von Phil P. (john_d)


Lesenswert?

Aha!!
Danke! Das hilft mir.

von Kein Name (Gast)


Lesenswert?

Eigentlich umgekehrt. Erst \r dann \n. Und man kann es in einem String 
schreiben.
printf("Ascii = %d \r\n", helfer);
Ist ein recht konfuses Thema. Windows hat \r\n, Linux nur \n, Mac nur 
\r. Manche Compiler wandeln es automatisch um... Gibt immer wieder 
Probleme.

von Phil P. (john_d)


Lesenswert?

Wenn ich mich wieder damit beschäftige probier ich es aus.
Danke so weit.

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.