Forum: Mikrocontroller und Digitale Elektronik gtkterm - carriage return


von Elias B. (bouni)


Lesenswert?

Hi,

ich sende mit gtkterm Zeichen an ein Arduino.
Auf dem läuft reiner c code.
Das ganze funktioniert auch super, nur das das gtkterm mit kein LF 
schickt, sondern nur ein CR wenn ich ENTER drücke.
Ausserdem macht es einen Zeilenumbruch wenn ich vom Arduino ein CR 
schicke.
Eigentlich sollte doch der Cursor an die erste Stelle der selben Zeile 
springen wenn ich ein CR schicke, oder?
erst dachte ich das das ich Müll schicke, aber in der HEX Ansicht des 
gtkterm sehe ich eindeutig das ein 0x0D schicke.

Ich hab auch schon nach Einstellungen gesucht um das Verhalten zu 
ändern, aber ohne Erfolg :/

Kennt jemand des Rätsels Lösung?

Gruss Bouni

von Karl H. (kbuchegg)


Lesenswert?

Elias B. schrieb:

> Eigentlich sollte doch der Cursor an die erste Stelle der selben Zeile
> springen wenn ich ein CR schicke, oder?

Das gilt schon lange nicht mehr.
Das war früher mal so, als es noch Fernschreiber gab.

von Elias B. (bouni)


Lesenswert?

Hi,

Danke erst mal für die Antwort.
Ist das bei allen (den üblichen) Seriellen Terminals so?

von Achim M. (minifloat)


Lesenswert?

Bei Putty kann man sogar folgendes einstellen:
> # implicit LF in every CR
> # implicit CR in every LF

Das geht aber nicht für Sende- und Empfangsseite getrennt.
mfg mf

von Elias B. (bouni)


Lesenswert?

> Das geht aber nicht für Sende- und Empfangsseite getrennt.

Ist sich die Welt denn einig was bei einem Druck auf Enter gesendet 
werden muss/soll?

Ich bekomm von gtkterm nämlich CR.

von Karl H. (kbuchegg)


Lesenswert?

Die schlechte Nachricht
* Nein, die Welt ist sich nicht einig
* Die gute Nachricht: Im wesentlichen werden 2 Systeme benutzt
    Enweder  CR alleine
    Oder     CR gefolgt von einem LF

Die Varianten:
  LF alleine
  LF gefolgt von einem CR
sind relativ selten. Zumindest sind sie mir nicht oft begegnet.

Die Einfachsttrategie beim Empfangen
   CR wird ausgewertet (und macht CR+LF)
   LF wird ignoriert

ist schon eine spürbare Hilfe. Hilft dir nur beim Senden nicht viel, da 
musst du unter Umständen konfigurierbar haben, was du den senden willst.

Wenn du den Empfänger noch mehr absichern willst, dann zb so

  CR wird immer ausgewertet und macht (CR+LF)
  LF nur dann, wenn das Zeichen davor kein CR war (und macht dann
     ebenfalls einen CR+LF). Ansonsten wird ein LF ignoriert.

Behandle also beides so, als ob sie einen Zeilenumbruch samt 
Zeilenvorschub bewirken. Einzig der Fall, wenn die beiden Zeichen 
hintereinander kommen, wird erkannt und führt dann nur zu lediglich 
einem Umbruch+Vorschub.

Mit der Strategie wirst du von fast allen Geräten über die Serielle 
problemlos empfangen können.

von Leo C. (rapid)


Lesenswert?

Elias B. schrieb:
> Ausserdem macht es einen Zeilenumbruch wenn ich vom Arduino ein CR
> schicke.

MMn. ist das ein Fehler. Andere Terminalprogramme machen das jedenfalls 
anders. --> Minicom oder cu nehmen.

Vielleicht hast Du aber auch die alte Version (0.99.5). Die ist in 
Debian Testing auch noch drin. Das Programm wird auf 
https://fedorahosted.org/gtkterm/ weiter gepflegt, und dort im 
Changelog:
1
3          * Released gtkterm 0.99.7-rc1   30-oct-2011
2
6                  Cleaned up auto-crlf stuff
3
12          * Released gtkterm 0.99.6       16-aug-2010
4
18                     Made CR/LF configurable

von Elias B. (bouni)


Lesenswert?

Hi,

Danke erst mal für die ausführliche Antwort!

@Leo

Ich hab in der Tat das 0.99.5 aus dem Mint repo installiert.
Werd mal schauen das ich mir ne neuere Version installiere.

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
Noch kein Account? Hier anmelden.