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
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
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
Wie ist dein Hyperterminal eingestellt? Kann sein, dass die VT100-Emulation eingestellt werden muß... Dann sollte es mit \r funktionieren.
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)); }
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!
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
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.
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
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
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.