Autres articles / Other articles

Couleurs de texte et position de l'affichage sur terminal

publication: 15 août 2022 / mis à jour 16 août 2022

Read this page in english

 

Appel à collaboration

Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.

Partagez-les ici sur ce site.

ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.

Vos montages peuvent aider d'autres développeurs.

Les montages des autres développeurs peuvent vous aider.

Pour proposer un article ou un montage, cliquez ici



Le contenu de cet article ne s'applique qu'à partir de la version ESP32forth 7.0.7.2.

Codage ANSI des terminaux

Si vous utilisez un logiciel de terminal pour communiquer avec ESP32forth, il y a de grandes chances pour que ce terminal émule un terminal de type VT ou équivalent. Ici, teraterm paramétré pour émuler un terminal VT100:

Ces terminaux ont deux caractéristiques intéressantes:

Ces deux caractéristiques sont contrôlées par des séquences ESC (échappement). Voici comment sont définis les mots bg et fg dans ESP32forth:

forth definitions ansi  
: fg ( n -- ) esc ." [38;5;" n. ." m" ;  
: bg ( n -- ) esc ." [48;5;" n. ." m" ;  
: normal   esc ." [0m" ;  
: at-xy ( x y -- ) esc ." [" 1+ n. ." ;" 1+ n. ." H" ;  
: page   esc ." [2J" esc ." [H" ;  

Le mot normal annule les séquences de coloration définies par bg et fg.

Le mot page vide l'écran du terminal et positionne le curseur au coin supérieur gauche de l'écran.

Coloration du texte

Voyons comment colorer d'abord le texte:

: testFG ( -- ) 
    page 
    16 0 do 
        16 0 do 
            j 16 * i + fg 
            ." X" 
        loop  
        cr 
    loop 
    normal 
  ; 

L'exécution de testFG donne ceci à l'affichage:

Pour tester les couleurs de fond, on procédera de cette manière:

: testBG ( -- ) 
    page 
    16 0 do 
        16 0 do 
            j 16 * i + bg 
            space space 
        loop  
        cr 
    loop 
    normal 
  ; 

L'exécution de testBG donne ceci à l'affichage:

Position de l'affichage

Le terminal est et reste la solution la plus simple pour communiquer avec ESP32forth. Avec les séquences d'échappement ANSI il est facile d'améliorer la présentation des données.

09 constant red 
11 constant yellow 
14 constant cyan 
15 constant whyte 
: box { x0 y0 xn yn color -- } 
    color bg 
    yn y0 - 1+    \ determine height 
    0 do 
        x0  y0 i + at-xy 
        xn x0 - spaces 
    loop 
    normal 
  ; 
 
: 3boxes ( -- )   
    page 
    2 4 20 6 cyan box 
    8 6 28 8 red  box 
    14 8  36 10 yellow box 
    0 0 at-xy 
  ; 

L'exécution de 3boxes affiche ceci:

Vous voici maintenant équipés pour réaliser des interfaces simples et efficaces permettant une interaction avec les définitions FORTH compilées par ESP32forth.


Legal: site web personnel sans commerce / personal site without seling