PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spezielles Ascii zeichen im Hyperterminal ausgeben



Andun
17.07.2005, 23:11
Moin

Also ich möchte mir im Hyperterminal bequem ein paar Werte anzeigen lassen. Und damit dass ganze übersichtlich bleibt soll die aktuelle Anzeige gelöscht werden. Dazu will ihc das Ascii zeichen 012 nehmen.

Das geht auch gut, wenn ich im Hyperterminal Alt+012 eingebe, wird das signal ja reflektiert und mir also wieder angezeigt und die Anzeige ist leer. Funktioniert so wunderbar. Damit würde ich auch noch gerne Ascii zeichen ausgeben, aber das Problem ist das gleiche.

Durch zufall bin ich einfach darauf gekommen dass ich ja einfach nur die Zahl des Ascii Zeichens schicken muss. Das Hyperterminal interpretiert dass dann ja.

Also hab ich folgendes gemacht:


unsigned char letter[] = {012};
SerWrite(letter,1);


Das ganze erzeugt komischerweise aber nur einen Zeilenumbruch. Und es passiert auch bei anderen Zeichen nicht das gewünschte Ergebnis. Habt ihr das Ideen? Danke.

Andun

P.S.: Meine Idee ist dass vielleicht die nötige 0 vor dem 12 nicht immer passt. Wenn man nämlich im Hyperterminal nur Alt+12 eingibt kommt ein "?". Habt ihr nen Tipp für mich?

ThunderD
18.07.2005, 00:03
Hast dus mal ohne der 0 versucht? also einfach 12 hinzuschicken?

Edit: Btw. nicht hyperterminal interpretiert dein zeichen richtung, sonder der compiler übersetzt den wert 12 einfach in das dazugehörige ascii zeichen weil du alles in ne char variable speicherst.

PicNick
18.07.2005, 07:28
Schau mal, vielleicht findest du was passendes

https://www.roboternetz.de/wiki/pmwiki.php?n=Main.TermANSII

Andun
18.07.2005, 12:16
Danke. Der Artikel ist schon nicht schlecht.

Aber dann hab ich immer noch nicht das Problem gelöst, dass ich nciht ganz verstehe wie ich das Zeichen senden soll.

Kann mir da vielleicht mal einer nen Codeschnipsel posten? Also an die SerWrite() muss ich ja die Adresse des char Arrays übergeben, oder? Bzw. ist ein Array ja immer nur die Adresse des ersten Zeichens.
Aber wie bring ich jetzt den Compiler dazu genau dass Zeichen da abzuspeichern was ich haben will? Das haut bei mir irgendwie nicht hin.

Könnt ihr mir da nochmal helfen? Danke

Andun

PicNick
18.07.2005, 13:55
char cHome[] = "\033[1;1H"; // <ESC>[1;1;H Home
char cClear[] = "\033[2J"; // <ESC>[2J Clear Screen

SerWrite(cHome, strlen(cHome));
SerWrite(cClear, strlen(cClear));


sollte zum Schirm putzen reichen.

!Hyperterm auf VT100 Mode !

Andun
18.07.2005, 14:07
Dankeschön. So was wollte ich haben.

Kjion
18.07.2005, 14:50
unsigned char letter[] = {012};
SerWrite(letter,1);

Naja, das es nicht funktioniert liegt vielleicht daran, dass du ihm die oktale Zahl 12 geschickt hast ( = 10 Dezimal ). Das mit dem Zeilenumbruch ist also genau richtig :-)


unsigned char letter = 12;
SerWrite(&letter,1);
So sollte es also stimmen. ( Wenn SerWrite() einen Pointer übergeben haben will )

MfG Kjion

Andun
18.07.2005, 21:21
Achso, ok.

Mhh . . . Ihm einfahc nur die 12 so aleine zu ergeben ist natürlich eigentlihc richtig und ich seh das auch voll ein, aber ich grad am überlegen warum ich das so nicht hattE? Das hab ich doch bestimmt mal ausprobiert. ??? Naja, egal. Jetzt gehts. Danke.