Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Esc Sequenzen übermitteln

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.12.2003, 16:04 Uhr
~Tobias
Gast


Hat jemand eine Ahnung wie ich ESC- Sequenzen übermittel, wie ich einen Text übergebe hab ich jetzt raus.

Aber ich will z.b. ein LF übermitteln, ESC-Sequenz währe "ESC B" oder

dec. [027][091][066][010]
oder
HEX [1Bh][5Bh][42h][0Ah]
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.12.2003, 16:15 Uhr
0xdeadbeef
Gott
(Operator)


Escape wird als '\e' geschrieben (ASCII 27). Ich nehme an, du willst sowas:

C++:
printf("\e[B\n"); /* \e == ESC, \n == newline */


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.12.2003, 16:27 Uhr
virtual
Sexiest Bit alive
(Operator)


\e ist non standard.
\x1b oder \033 ist Standard.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.12.2003, 19:22 Uhr
~Waldi
Gast


mich wäre auch interessiert ob in CView oder CEditView, ESC- Sequenzen zu zeigen möglich sind und wie die alle Zeichen beim lesen von Seriell am besten zu zerlegen sind. Welche View eignet sich besser. Kann man auch Hintergrundfarbe ändern?

Waldi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.12.2003, 19:27 Uhr
0xdeadbeef
Gott
(Operator)


Windows-Controls und ANSI-Sequenzen? Ich glaube nicht, dass das so einfach geht...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.12.2003, 20:08 Uhr
~Waldi
Gast


na ja einfach ist das nicht aber möglich. Ich habe bereits etwas angefangen nun haut nicht 100% hin die ESC[7m und ESC[0m da habe ich kein Konzept.


C++:
switch ( *lpCharZuAnalyse ) {

/*        // \x08 BS    - BackSpace
        // \x09 HT    - horizontal TAB
        // \x0A LF    - line feed / Zeilenvorschub
        // \x0D CR    - carriage Return
        // \x7F DEL    - delete
        case '\x7F':    sAusgabeWert += "\x7F"; break; // \Delete
        case '\x0D':    sAusgabeWert += "\x0D"; break; // \r
        case '\x0A':    sAusgabeWert += "\x0A"; break; // \n
        case '\x09':    sAusgabeWert += "\x09"; break; // \t
        case '\x08':    sAusgabeWert += "\x08"; break; // \BackSpace
    
            TRACE( "\n ## *** Return oder Zeilenvorschub *** gefunden ##" );
        break;
case '[':
            if (bESC == FALSE)   {  // als Text
                sAusgabeWert += *lpCharZuAnalyse;
                break;
            }

            iIndexVonESC++;
            bKlammer = TRUE;
            //TRACE( "\n ## [ gefunden ##" );
            break;


case '[':
            if (bESC == FALSE)   {  // als Text
                sAusgabeWert += *lpCharZuAnalyse;
                break;
            }

            iIndexVonESC++;
            bKlammer = TRUE;
            break;


case ';':
            if (bESC == FALSE)   { // als Text
                sAusgabeWert += *lpCharZuAnalyse;
                break;
            }

            iIndexVonESC++;
            break;

/ hier H erkannt
        case 'H':

            if ( bESC == TRUE && bKlammer == TRUE ) {

                iIndexVonESC++;

                            // wenn ESC[H    Kursor auf Position 1;1
                            if ( iIndexVonESC == 2 ) {
                                    
                                    bESC        = FALSE; // alles zurücksetzten
                                    bKlammer    = FALSE;

                            // ##### koordinaten übergeben #####
                                //
                                sXHorizontal = "1";
                                sYVertikal     = "1";
                                //
                                //......................
                                TRACE("\n ->H<- gefunden Position 1;1");
                            break;
                            }
                            // :::::::::::::::::::::::::::::::::::::::


            // alles zurücksetzten
            bESC        = FALSE;
            bKlammer    = FALSE;

            //TRACE( "\n ## H gefunden ## sZifferNachKlammer[ %s ]  sZifferNachSemikolon[ %s ]", sZifferNachKlammer, sZifferNachSemikolon );

            // ##### koordinaten übergeben #####
            //
            sYVertikal         = sZifferNachKlammer;
            sXHorizontal     = sZifferNachSemikolon;
            //
            //......................



            sZifferNachKlammer.Empty();
            sZifferNachSemikolon.Empty();

            break;

            } // if ( bESC == TRUE && bKlammer == TRUE ) {
            else // wenn H als TEXT
            {
                        sAusgabeWert += *lpCharZuAnalyse;
                        //TRACE( "\n sAusgabeWert bei H erkannt[ %s ] \n", sAusgabeWert );
                        break;
            }
            
        break;
// ende H erkannt


so auf jedem fall versuche ich die angehende Zeichen zu zerlegen, dann in CEditView übergeben. Nun für Anfänger weist man nicht mit welche Klasse besser anfangen CView, CEditView oder ist das ganze qwatch?

C++:
// ESC erkannt
        case '\x1b':

    // Zeiger auf CLogaDateiView1
    CLogView *vView1;
    vView1 = (CLogDateiView1 *) GetActiveView();

    //    
    vView1->ZeichenDarstellen( atoi(sYVertikal),
                                atoi(sXHorizontal),
                                sAusgabeWert,
                                bReverseVideo,
                                bAllesLoschen);
            
    sYVertikal.Empty();    sXHorizontal.Empty(); bAllesLoschen = FALSE;
    //
    sAusgabeWert.Empty();



Bearbeitung von 0xdeadbeef:

Den Code schreibt man zwischen die Tags.


Dieser Post wurde am 30.12.2003 um 20:12 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: