Corso C su Raspberry PI partendo da zero: il controllo del video

Le prove e le esercitazioni sul linguaggio C effettuate fino ad ora sono state svolte su uno schermo grezzo in bianco e nero. Le visualizzazioni si sono succedute sequenzialmente ed in modo discendente risultando, diciamolo pure, un po' brutte a vedersi. La lezione di oggi verte proprio su tale argomento. Vedremo come abbellire le nostre videate, dando loro un certo ordine di posizionamento. Impareremo anche a colorare l'output, a posizionare il cursore in qualunque posizione, a modificare gli attributi del video e a conferire all'intero schermo di console un aspetto graficamente più gradevole, restando tuttavia in modalità testuale. Tutto questo è possibile utilizzando le miracolose sequenze di Escape.

Introduzione

L'occhio, si sa, vuole sempre la sua parte. Non basta che il programma da noi prodotto sia estremamente efficiente, potente e veloce. Se esso non dispone di una adeguata interfaccia grafica, magari un po' più amichevole, difficilmente l'utente finale amerà il nostro lavoro. Questo discorso, a maggior ragione, vale per i software scritti con il linguaggio C e il compilatore GCC. L'efficienza è, in questo caso, massima ma non si può dire altrettanto dell'aspetto grafico ed estetico. Sono molte, infatti, le caratteristiche che, normalmente, non sono presenti in un programma scritto in linguaggio C:

  • La possibilità della cancellazione e della pulizia dello schermo.
  • La gestione del cursore e posizionamento libero dei dati sul video.
  • La facoltà di colorare a piacimento i messaggi e le scritte sul video.

E' sufficiente implementare questi tre concetti nei propri lavori, per ottenere un prodotto finale molto più amichevole ed usabile. In ogni caso stiamo parlando sempre di un ambiente "a console" ed in modalità testo, che è ben lungi da qualsiasi paragone con le interfacce GUI. Ma per piccoli sistemi di domotica, automatizzazione e controllo, già queste peculiarità sono più che sufficienti. Gli stessi concetti sono propedeutici per nostri futuri esperimenti con le porte di I/O, con le quali interagiremo utilizzando gradevoli interfacce a video ed amichevoli menù di comando.

Il controllo del video

Sino ad ora, per visualizzare dei risultati o dei messaggi, abbiamo utilizzato in modo abbondante la funzione printf(). Essa, ricordiamolo, ha lo scopo di inoltrare a video qualsiasi sequenza di dati e di informazioni. Per il suo utilizzo si vedano le puntate precedenti del presente corso. Tale funzione si limita ad accodare sul video, per la precisione verso lo standard output (STDOUT), le informazioni, che il video gestisce in maniera "discendente". In altre parole, ogni chiamata alla funzione inoltra l'informazione a video, scrivendola una sotto l'altra. Se si raggiunge il limite inferiore del monitor, la videata scorre verso l'alto, effettuando il cosiddetto "scrolling-up" ed eliminando le informazioni dalla sommità dello schermo. Un eventuale buffer video non sarebbe capace di contenere eventuali numerose informazioni. Il seguente esempio chiarisce meglio il concetto. Si abbia il seguente listato:

#include "stdio.h"
int main() {
   int k;
   for(k=1;k<=1000;k++) 
      printf("%4d   %7d   %10d\n",k,k*k,k*k*k); 
   return 0;
}

Si tratta di un conteggio nel quale sono visualizzati, nell'ordine, un numero progressivo (da 1 a 1000), il suo quadrato e il suo cubo. L'esecuzione causa una lunghissima sequenza di risultati che, oltre a risultare graficamente non gradevole, rende impossibile la consultazione dei precedenti valori, ormai scomparsi verso l'alto. La figura 1 mostra il risultato dell'esecuzione del programma.

 

Figura 1: Conteggio da 1 a 1000

Figura 1: Conteggio da 1 a 1000

 

Le sequenze di Escape

Per ottenere un maggiore controllo del video, specialmente nei sistemi Unix e Linux, si possono usare utilmente le sequenze di Escape. Si tratta di particolari sequenze di caratteri che, inviate allo schermo tramite opportuna funzione (printf() o altra) ,producono svariati risultati e modificano il normale flusso dei dati. Si chiamano anche caratteri di controllo. Sono, in pratica, delle successioni di caratteri non visualizzabili, che [...]

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2571 parole ed è riservato agli abbonati PLATINUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e PLATINUM e potrai fare il download (PDF) di tutti gli EOS-Book, Firmware e degli speciali MONOTEMATICI. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

8 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 3 maggio 2016
  2. Tony21 18 maggio 2016
  3. Giovanni Di Maria Giovanni Di Maria 29 ottobre 2016
  4. rodolfok rodolfok 26 gennaio 2017
  5. rodolfok rodolfok 26 gennaio 2017
  6. Giovanni Di Maria Giovanni Di Maria 27 gennaio 2017
  7. enzo1965 22 marzo 2017
  8. rodolfok rodolfok 22 marzo 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti e ricevi GRATIS
Speciale Pi

Fai subito il DOWNLOAD (valore 15€) GRATIS