MCU & FPGA microcontroladores Tabela ASCII e VT100: Como Criar Logs Coloridos, Dashboards e ASCII Art no Terminal

Tabela ASCII e VT100: Como Criar Logs Coloridos, Dashboards e ASCII Art no Terminal



Códigos de Escape VT100 e Cores ANSI

Agora que compreendemos que o caractere ESC (27, 0x1B) é a chave para sequências especiais, podemos avançar para o padrão que transformou o terminal em uma interface programável: o padrão VT100, originalmente implementado pela VT100 da Digital Equipment Corporation.

Hoje, praticamente todos os terminais modernos (Linux console, macOS Terminal, Windows Terminal, PuTTY, etc.) suportam as chamadas ANSI escape sequences, derivadas desse padrão.


1. Estrutura de uma Sequência ANSI

Toda sequência começa com:

ESC [

Ou, em C:

"\x1B["

Ou ainda:

"\033["

(033 em octal equivale a 27 decimal)

Depois disso vêm parâmetros e um caractere final que define a ação.

Formato geral:

ESC [ parâmetros comando

Exemplo:

ESC [ 31m

Que significa:

→ Definir cor do texto para vermelho.


2. Cores ANSI Básicas

Cores do texto (foreground)

CódigoCor
30Preto
31Vermelho
32Verde
33Amarelo
34Azul
35Magenta
36Ciano
37Branco

Para aplicar:

ESC[31m

Para resetar:

ESC[0m

Exemplo prático em C

#include <stdio.h>

#define RED     "\x1B[31m"
#define GREEN   "\x1B[32m"
#define YELLOW  "\x1B[33m"
#define RESET   "\x1B[0m"

int main() {
    printf(RED "ERRO: Falha na comunicação\n" RESET);
    printf(GREEN "OK: Sistema operacional\n" RESET);
    printf(YELLOW "ALERTA: Temperatura elevada\n" RESET);
    return 0;
}

Saída no terminal:

  • ERRO em vermelho
  • OK em verde
  • ALERTA em amarelo

Isso já eleva o nível profissional do log.


3. Cores de Fundo

Para fundo:

CódigoCor
40Preto
41Vermelho
42Verde
43Amarelo
44Azul
45Magenta
46Ciano
47Branco

Exemplo:

printf("\x1B[30;43mALERTA CRÍTICO\x1B[0m\n");

Texto preto sobre fundo amarelo.


4. Combinação de atributos

Você pode combinar parâmetros separados por ;.

ESC[1;31m
CódigoSignificado
0Reset
1Negrito
4Sublinhado
5Piscando (nem sempre suportado)
7Invertido

Exemplo:

printf("\x1B[1;31mERRO CRÍTICO\x1B[0m\n");

5. Logs Estruturados Profissionais

Agora vamos criar um log realmente estruturado.

void log_info(const char *msg) {
    printf("\x1B[32m[INFO]\x1B[0m %s\n", msg);
}

void log_warn(const char *msg) {
    printf("\x1B[33m[WARN]\x1B[0m %s\n", msg);
}

void log_error(const char *msg) {
    printf("\x1B[31m[ERROR]\x1B[0m %s\n", msg);
}

Uso:

log_info("Sistema inicializado");
log_warn("Temperatura acima do normal");
log_error("Falha no sensor");

Resultado visual claro e imediato.

Esse tipo de abordagem é extremamente útil em:

  • Firmware via UART
  • Debug via SWO
  • Aplicações CLI Linux
  • Scripts DevOps
  • Backend Node.js

6. Cores em 256 tons

Terminais modernos suportam 256 cores.

Formato:

ESC[38;5;Xmtexto
ESC[48;5;Xmfundo

Exemplo:

printf("\x1B[38;5;202mTexto Laranja Customizado\x1B[0m\n");

Isso permite criar dashboards mais sofisticados.


7. Controle de Cursor

Além de cores, VT100 permite controlar posição.

CódigoFunção
ESC[2JLimpa tela
ESC[HCursor para topo
ESC[row;colHPosiciona cursor
ESC[KLimpa linha

Exemplo:

printf("\x1B[2J");   // limpa tela
printf("\x1B[H");    // topo
printf("Painel do Sistema\n");

Isso permite criar interfaces pseudo-gráficas.

0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Related Post

0
Adoraria saber sua opinião, comente.x