Couleurs de texte et position de l'affichage sur terminal
publication: 15 août 2022 / mis à jour 16 août 2022
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:
- colorer le fond de page et le texte à afficher
- positionner le curseur d'affichage
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