Cores no terminal serial pelo Arduino/STM32 no linux

Poucos sabem mas as cores em um terminal serial é possível devido a emulação VT-100 nos terminais que aceitam códigos de escape com certas ações e dessa forma pode-se fazer saídas intuitivas e bonitas como da imagem destacada do programa WeeChat.

Esses códigos não somente estabelecem cores mas fornecem comandos úteis para montar telas estáticas (não rolantes) como as que se consegue com a biblioteca ncurses (e antiga conio.h), inclusive com o uso dos recursos de janelas da tabela ASCII a ncurses torna-se desnecessária.

Veja, então, exemplos já embutidos em printf para aprender como utilizar estes códigos. Qualquer outra função serial que envie uma string entre aspas funcionará também.

Todos os códigos iniciam com o ESC em octal 033.

printf("\033[2J"); // Apaga todo o terminal
printf("\033[H"); // Manda o cursor para o começo da tela
printf("\033[?25l"); // Esconde o cursor
printf("\033[48;5;4m"); // Estabelece a cor Azul
printf("\033[0m"); // Reseta as formatações estabelecidas

Também funciona em Python como no exemplo:

print("\033[2;0f") # Coloca o cursor na linha 2

Na internet há muito mais códigos disponíveis como em http://ascii-table.com/ansi-escape-sequences-vt-100.php entretanto você poderá ver algumas diferenças entre os sites no código de escape utilizado pois VT-100 é uma tecnologia antiga e foi utilizada em várias plataformas diferentes mudando alguns aspectos.

Neste site (http://misc.flogisoft.com/bash/tip_colors_and_formatting) há uma lista útil para códigos de escape de cores. O site foi feito com exemplos para o comando echo do terminal porém basta substituir o \e por \033 e funcionará da mesma forma.

No Windows utilize o famoso Putty para poder visualizar as cores.

Esses recursos são úteis para se livrar do velho conceito de tela rolante e podermos fazer telas avançadas para visualização de controle de informações bonitas e funcionais.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s