www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hyperterminal


Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmals,

ich hätte noch eine Frage und zwar möchte ich von einem µC (einer SPS)
alle 1s (Zykluszeit der SPS) die Uhrzeit an das Hyperterminal senden.
Im Hyperterminal wird diese aber immer nacheinander gereiht. Weiß
jemand wie ich das machen kann, damit dieUhrzeit nur einmal im
Hyperterminal steht?
Vielen Dank.

lg
Eder

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
häng mal \r an

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zumindest im Teraterm (wärmstens zu empfehlen) kann man beim Empfang
entweder 'CR' (Carriage return) oder 'CR+LF' (Line Feed)
einstellen.
Schau mal unter 'Eigenschaften von ??? -> Einstellungen -> ASCII
Konfiguration -> Einstellungen für den ASCII Empfang' Bestimmt ist bei
'Beim Empfang Zeilenvorschub am Zeilenende anhängen' ein Haken
gesetzt. Das wäre so was wie 'CR+LF'.
Vielleicht hilft das ja.
:-) Johannes

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte einfach nur, dass deie SPS die Uhrzeit zum Hyperterminal
schickt und diese dort aktuell hält, auf dem gleichen platz. Ich gebe
die Uhrzeit mit strcpy in ein Array, dieses in den Sendepuffer und dann
soll das ganze zum Hyperterminal versendet werden und dort richtig
ankommen und keine hyrakliven.
Mein Problem ist, dass die Uhrzeit immer hinereinandergereiht wird, da
hilft auch kein \r nicht.
Hat jemand eine Idee?
vielen dank
lg
Eder

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist dein Hyperterminal eingestellt?
Kann sein, dass die VT100-Emulation eingestellt werden muß...
Dann sollte es mit \r funktionieren.

Autor: Carlos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
versuchs mal mit der nachfolgenden Funktion zum Setzen des Cursors
unter HyperTerm.
Damit kannst Du immer an der gleichen Stelle die Uhrzeit ausgeben.
HyperTerm muß dann allerdings in der VT52er-Terminal-Emulation
betrieben werden.

Gruß Carlos


*** Setzen des Cursors ***/

void cursor_set(unsigned char z, unsigned char s)
{
    printf("\x1b\x59%c%c",(32+z),(32+s));
}

Autor: Hugo Häberle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor der Ausgabe der Uhrzeit den Bildschirm löschen.

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie geht das Bildschirm löschen?

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür gibst genauso wieder eine Escape Sequenz.

Google doch mal nach VT52 Escape Sequenzen.

Das hier
printf("\x1b\x59%c%c",(32+z),(32+s));

War zb. die Escape Sequenz

   ESC Y z s

ESC    ist das Zeichen das mit \x1b ausgegeben wird (eben Escape)
Y      ist das Zeichen mit dem ASCII Code 0x59 (keine Ahnung
       warum mein Vorgänger das so geschrieben hat, er hätte auch
       einfach ein Y nehmen können.
z      ist die Zeilennummer als ASCII Code. Also '0' für Zeile 0,
       '1' für Zeile 1, usw
s      ist die Spaltennummer als ASCII Code.

Viele andere Escape Codes, die du verwenden kannst, findest du zb hier
http://www.termsys.demon.co.uk/vtansi.htm

Aber nicht vergessen: Hyperterm auf ANSI oder VT100 umstellen!

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Google doch mal nach VT52 Escape Sequenzen.

Natürlich nach VT100, nicht VT52

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wo häng ich die Escape Sequenzen an und wie -> einfach nach dem
String?
Uhrzeit \x1b 0x59 0 0 ?
Vielen Dank.
Bin neu in der VT100Escape Materie!
Eder

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ein ganz normaler Text, den du dann einschmuggelst
wenn du ihn brauchst. Da ist nichts geheimnisvolles
daran.

> Uhrzeit \x1b 0x59 0 0 ?

Das gibt zuerst die Uhrzeit aus und schiebt dann den Cursor
an Position 0/0.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Einheitlichkeit halber:

   12:34:56 \x1b Y 0 0

also (in hexadezimaler Notation)

   31  32  3A  33  34  3A  35  36  1B  59  30  30
   1   2   :   3   4   :   5   6   ESC Y   0   0

Wobei die übliche VT100-Sequenz zur Cursorpositionierung

   ESC [ x ; y H

lautet, hier also

   31  32  3A  33  34  3A  35  36  1B  5B  30  3B  30
   1   2   :   3   4   :   5   6   ESC [   0   ;   0

Autor: Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz kapier ichs noch immer nicht: ich muss die Hex Zahlen über die
serielle Schnittstelle schicken damit diese korrekt dargestellt
werden?
Ich bekomm die Uhrzeit ja in Integer- Werten und den ganzen Text muss
ich den kodieren?
Vielen Dank
lg
Eder

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, Du musst das natürlich nicht als Hex-Zahlen übertragen, sondern
die entsprechenden Zeichen senden. Also bis auf ESC die von mir in der
jeweils zweiten Zeile angegebenen Zeichen.

Jede zweistellige Hexzahl repräsentiert den ASCII-Code des zugehörigen
Zeichens. Da ESC (1B) nicht als lesbares Zeichen codiert werden kann,
werden verschiedene Notationen verwendet, um das anzugeben. Wer in
C/C++ unterwegs ist, der kann mit \x1b etwas anfangen, aber wem das
nichts sagt, der macht daraus vier einzelne Zeichen - was falsch wäre,
denn es ist ja nur eines damit gemeint.

Beginnt es jetzt allmählich klarer zu werden?

Autor: Christian Schoch (kriki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bisschen kompliziert ...

Schreib die Uhrzeit raus und häng davor noch ein CR (ASCII 0x0D oder
dez 13... dann bist du wieder am Anfang, und schreibst über das alte
drüber.

Wie schon oben ... LF anhängen muss ausgeschaltet sein.

Bez. Terminalerkennung: Dürfte eigentlich egal sein.

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.