www.mikrocontroller.net

Forum: Compiler & IDEs char enter, neue zeile?


Autor: tronic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo nochmal,

ich habe folgende Variable:

char s[]="Fensteralarm 1:\"ON\"\n ";

dies zeige ich am Hyperterminal über die UART an,
jedoch wird mir das \n nicht ganz so interpretiert wie erwünscht,
ich möchte das eine neue Zeile angefangen wird, und der Cursor also
auch ganz am Anfang der Zeile anfängt, und nicht an der Position von
der vorigen Zeile...

ist das möglich? gibts ähnlich wie "\n" auch was für return oder
so?
gibts irgendwo eine übersicht?

thx
tronic

Autor: Jürgen Sachs (jsachs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ein Terminal braucht, wie du schon vermutest eine Carrige Return UND
ein Linefeed am Ende.
Wenn du also deine Variable wie folgt erweiterst, sollte es gehen:
char s[]="Fensteralarm 1:\"ON\"\r\n ";

"\r" entspricht 0x0D.

Gruss
Juergen

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vernünftige Terminalprogramme und sogar Hyperterminal (Eigenschaften |
ASCII Einstellungen) erlauben die Einstellung, dass ein \n als \r\n
interpretiert wird.

Es gibt im übrigen einige schöne, leistungsfähige und freie
Alternativen zum Hyperterminal. Quäl dich mit dem nicht rum, wenn es
nicht unbedingt sein muss ;-)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem kann man noch in der Ausgaberoutine allen \n ein \r
voranstellen.  Das entspricht ungefähr dem, was die Terminal-
treiber unter Unix machen: intern wird alles mit \n geschrieben,
erst an der Grenze von Unix zur Außenwelt erfolgt die Anpassung.

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas:

Welches Terminalprogramm empfiehlst Du denn? URL?

Günter

Autor: Peter S. (peter) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde dir HTerm (http://www.der-hammer.info/terminal) empfehlen.
Ich habe damit sehr gute Erfahrungen gemacht.

Autor: tronic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank noch!

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter und Thomas:

HTerm kenne ich schon lange, das ist ein super Programm zu Testen von
Mikrocontroller-Schaltungen und zum Mitprotokollieren. Es ist aber
keine Alternative zu HyperTerm, da es einen ganz anderen Ansatz
verfolgt. Für "tronic" ist es dennoch sicher gut geeignet.

HTerm stellt Sende- und Empfangsdaten in getrennten Fenstern dar, mit
ASCII-, Hex-, Dez- und Bin-Format, jeweils separat schaltbar, mit
vielen Protokollen (user-konfigurierbar), Zeichenzähler und -Trigger,
Auto-Modi etc.. Ganz besonders praktisch ist, daß man die meisten
Eigenschaften direkt an der Oberfläche ändern kann (da ist HyperTerm
super-umständlich).

HyperTerm jedoch stellt Sende- und Empfangsdaten im gleichen Fenster
dar und erlaubt somit eine Kommunikation mit einem Terminalmodus, den
man im Mikrocontroller programmieren kann; da gibt es dort dann eine
Kommandozeile, in die man Befehle und Parameter eintippen kann, das
ganze verhält sich dann in etwa so wie früher ein PC unter MS-DOS. Das
kann zum Debuggen auf höherer Ebene sehr praktisch sein. Aber es
erfordert, daß sich das Programm (hier HyperTerm) so verhält wie früher
ein "Smart Terminal" wie z.B. VT52, VT100, TTY etc.). Das kann HTerm
nicht (und ist dafür auch garnicht gedacht!).

Ich suche schon länger nach einer Alternative für HyperTerm, das (im
gleichen Fenster) auch Hex-Codes akzeptieren kann (ohne
Alt/KleinerTastenblock) und die Einstellungen ähnlich wie bei HTerm
einzustellen erlaubt (und ohne die langweilige zeitverbratende
Weltkugel beim Start). Kennt jemand so ein Programm?

Günter

Autor: tronic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jetzt hab ich doch noch eine Frage,
wie krieg ich den Cursor im Hypeterminal eine Zeile rauf oder runter,
oder auch nur ein zeichen links, rechts - ich möchte dadurch z.B ein
Anzeige Fensteralarm1 "ON" auf Fensteralarm "OFF" wechseln ohne den
ganzen Text Fensteralarm "OFF" nochmals in einer Charvariable zu
speichern, geht das?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Hyperterminal auf ANSI eingestellt ist, dann schickst
du ihm die ANSI-Escape Sequenzen:

http://adm.lacitec.on.ca/~ymicha/mcours/micro1/escape.html

Autor: tronic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie integrier ich das im string?

also char s[10]="???Zeile runter, cursor rechts usw."

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind ganz normale Texte!

Lediglich das Escape Zeichen musst du extra darstellen, da es
dafür im Zeichensatz kein Symbol gibt. Geht aber mit einer
Fluchtsymboldarstellung als Hex-Code:

char CursorRight[] = "\x1B[1C";
char CursorLeft[] = "\x1B[1D";

oder aber:
char* CursorDown = "\x1B[1B";
char* CursorUp   = "\x1B[1A";

Autor: tronic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tiptop, thx.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.