Tabela ASCII e Terminais VT100
Table of Contents
- Tabela ASCII e Terminais VT100
- Como produzir logs ricos, coloridos e expressivos no console
- Introdução
- Entendendo a Tabela ASCII
- Códigos de Escape VT100 e Cores ANSI
- 2. Cores ANSI Básicas
- 3. Cores de Fundo
- 4. Combinação de atributos
- 5. Logs Estruturados Profissionais
- 6. Cores em 256 tons
- 7. Controle de Cursor
- ASCII Art e Dashboards em Console
- 1. Construindo um Mini Dashboard em Console
- 2. Barra de Progresso Dinâmica
- 3. ASCII Art
- 4. Criando ASCII Art via Código
- 5. ASCII Art com Cores
- 6. Sites para Gerar ASCII Art
- 7. Dicas Profissionais para Logs Ricos
- Unicode, Box Drawing, Painéis Avançados e Conclusão
- 1. ASCII vs Unicode no Terminal
- 2. Box Drawing — Criando Tabelas Profissionais
- 3. Barra de Progresso com Blocos Unicode
- 4. Painel Dinâmico Estilo Monitor Industrial
- 5. Boas Práticas Profissionais
- Conclusão
- Referências
Como produzir logs ricos, coloridos e expressivos no console
Introdução
Em sistemas embarcados, aplicações backend em Node.js, ferramentas CLI em C ou Python e até mesmo firmwares com saída serial via UART, o console ainda é uma das interfaces mais poderosas para diagnóstico e observabilidade. Muitos desenvolvedores subestimam o potencial do terminal, limitando-se a printf("ok\n"); ou console.log("erro");, quando, na verdade, o console pode se tornar uma interface semigráfica altamente expressiva.
A base dessa expressividade está na tabela ASCII, que define a representação binária dos caracteres, e nos códigos de controle ANSI/VT100, que permitem manipular cores, posicionamento de cursor, limpeza de tela e formatação textual. Quando combinados corretamente, esses recursos permitem criar logs profissionais, painéis interativos, indicadores de status e até mesmo ASCII art para interfaces embarcadas.
Neste artigo, vamos explorar a tabela ASCII, entender como utilizá-la de forma estratégica em logs, aprender os códigos de escape do padrão VT100 e aplicar tudo isso na prática. Apresentarei o conteúdo em partes para análise progressiva.
Entendendo a Tabela ASCII
O que é ASCII?
ASCII significa American Standard Code for Information Interchange. É uma tabela que mapeia números inteiros (0 a 127 na versão original) para caracteres.
Ela define:
- Letras maiúsculas e minúsculas
- Números
- Pontuação
- Símbolos especiais
- Caracteres de controle
Cada caractere é representado por um valor de 7 bits.
Estrutura da Tabela ASCII
A tabela pode ser dividida em três blocos principais:
1. Caracteres de Controle (0–31 e 127)
Esses não imprimem símbolos visíveis. Eles controlam dispositivos.
Exemplos importantes:
- 0 → NUL
- 7 → BEL (emite som)
- 8 → BS (backspace)
- 9 → TAB
- 10 → LF (line feed \n)
- 13 → CR (carriage return \r)
- 27 → ESC (escape) ← extremamente importante para VT100
Em sistemas embarcados, especialmente via UART, esses caracteres ainda são amplamente usados.
2. Caracteres Imprimíveis (32–126)
Aqui temos o que realmente aparece na tela.
Exemplos:
| Decimal | Hex | Caractere |
|---|---|---|
| 32 | 0x20 | (espaço) |
| 48 | 0x30 | 0 |
| 65 | 0x41 | A |
| 97 | 0x61 | a |
| 123 | 0x7B | { |
No nível de firmware, entender esses valores é essencial quando se manipula buffers, protocolos, parsers e geração de logs compactos.
ASCII na prática em C
Vamos observar como imprimir caracteres via código numérico:
#include <stdio.h>
int main() {
for (int i = 65; i <= 90; i++) {
printf("%c ", i); // imprime A-Z
}
printf("\n");
return 0;
}
Saída:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Observe que %c interpreta o inteiro como código ASCII.
ASCII como ferramenta estratégica para logs
Em sistemas embarcados, você pode usar ASCII para:
- Criar delimitadores visuais
- Criar cabeçalhos formatados
- Construir barras de progresso
- Criar tabelas
- Destacar estados do sistema
Exemplo simples:
printf("====================================\n");
printf(" SISTEMA INICIALIZADO \n");
printf("====================================\n");
Isso já melhora drasticamente a legibilidade.
Mas isso é apenas o começo.
Transição para VT100
O verdadeiro salto ocorre quando usamos o caractere:
ESC = 27 = 0x1B
Ele inicia uma sequência de escape ANSI/VT100, que permite:
- Mudar cor
- Mover cursor
- Limpar tela
- Criar efeitos