Hyperterminal

Gast #409654
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
Gast #409656
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
Gast #409657
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
Gast #409659
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));
}
#409662
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!
Gast #409667
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
Persönliche Seite #409668
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?
#409669
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren