Carattere di controllo

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando cifra o codice di controllo di stringa, vedi check digit.

Nell'informatica, un carattere di controllo o carattere non visualizzabile, è un codice (un numero) in un set di caratteri che non rappresenta in sé un simbolo scritto. Tutti i caratteri nella tabella ASCII al di sotto della posizione 32 fanno parte di questa categoria, incluso BEL (che di solito provoca un segnale sonoro nel terminale ricevente), SYN (che è il segnale di sincronizzazione), e ENQ (un segnale che richiede una risposta dal terminale ricevente, per conoscere lo stato della linea). Lo standard Unicode ha aggiunto molti nuovi caratteri non visualizzabili.

Nella tabella ASCII[modifica | modifica sorgente]

I caratteri di controllo nella tabella ASCII ancora d'uso comune comprendono

  • 7 (bell), provoca l'emissione di un segnale sonoro da parte del terminale ricevente
  • 8 (backspace), utilizzato per cancellare l'ultimo carattere visualizzato, di solito quello immediatamente a sinistra del cursore
  • 9 (horizontal tab), tabulatore orizzontale
  • 10 (line feed), utilizzato per terminare le linee di testo nei sistemi Mac OS X e versioni successive, Unix e le loro varianti.
  • 12 (form feed), per terminare la pagina sulla stampante e avanzare al modulo successivo
  • 13 (carriage return), ritorno a capo, utilizzato per terminare le linee di testo nel Mac OS (nelle versioni inferiori alla 10) e nei derivati del CP/M, compreso il DOS).
  • 27 (escape).

A volte si incontra un utilizzo più moderno di alcuni altri codici, come nel caso del codice 4 (End of transmission) EOT, utilizzato per terminare una shell di Unix o Linux o una trasmissione di dati alla stampante PostScript.

Il codice 27 (Escape) è un caso che merita di essere analizzato. Anche se molti di questi caratteri di controllo non vengono mai usati, il concetto di inviare informazioni per il controllo delle periferiche, inframezzati a caratteri stampabili, è così utile che i produttori trovarono il modo di inviare centinaia di istruzioni alle periferiche. Nello specifico usavano una serie di caratteri multipli, chiamati "sequenza di controllo" o "sequenza di escape". Tipicamente il codice 27 veniva inviato per primo per avvisare la periferica che i caratteri seguenti dovevano essere interpretati come una sequenza di controllo, piuttosto che come dei normali caratteri, quindi uno o più caratteri successivi spiegavano quale azione intraprendere, dopo di che la periferica tornava a interpretare i caratteri normalmente. Ad esempio, la sequenza del codice 27, seguita dai caratteri stampabili "[2;10H", faceva sì che un terminale VT-102 della Digital spostasse il suo cursore sulla decima cella della seconda riga dello schermo. Esistono alcuni standard per queste sequenze, soprattutto l'ANSI X3.64 (1979), che si basava sul comportamento dei terminali della serie VT-100. Ma il numero di varianti non standard in uso è ampio, specialmente per le stampanti, dove la tecnologia è progredita molto più velocemente, ben al di là delle tempistiche imposte da ciascun processo di standardizzazione.

Corrispondenza dei caratteri di controllo nella tastiera[modifica | modifica sorgente]

Le tastiere basate sul sistema ASCII possiedono un tasto "Control" o "Ctrl", che viene utilizzato in modo similare a quanto avviene con il tasto shift, che viene premuto in combinazione con un'altra lettera o simbolo per far sì che la tastiera generi uno dei 32 caratteri di controllo.

In questo caso la tastiera produce un codice che si trova 64 posizioni al disotto del codice del carattere della lettera maiuscola che è stata premuta (in pratica, viene posto a zero il bit 5). La pressione di "control" e della lettera "G" (codice 71), per esempio, produce il codice 7 (Bell), anche indicato a volte come ^G.

Le tastiere hanno anche dei tasti che da soli producono codici che appartengono ai caratteri di controllo. Ad esempio, il tasto "Backspace", che sulle tastiere italiane si trova sopra al tasto "Invio" ed è contrassegnato da una freccia lunga verso sinistra (←), produce il codice 8; il "Tab", contrassegnato da due frecce ciascuna con la punta verso una barretta verticale produce il codice 9, "Invio", "Enter" o "Return" il codice 13 (anche se talune tastiere producono il codice 10 per l'"Enter").

Le tastiere moderne hanno molti tasti che non corrispondono a caratteri ASCII o a caratteri di controllo, ad esempio i tasti cursore e le funzioni di elaborazione testo. Queste tastiere comunicano la pressione di questi tasti al computer cui sono collegate usando uno di questi tre metodi:

  1. appropriandosi allo scopo di caratteri di controllo altrimenti inutilizzati
  2. usando codifiche diverse dall'ASCII
  3. usando sequenze di controllo composte da più caratteri

Le tastiere collegate ai personal computer in genere usano uno (o entrambi) dei primi due metodi. I terminali di solito adottano il terzo.

Suddivisione in famiglie[modifica | modifica sorgente]

I caratteri di controllo vennero progettati per ricadere all'interno di alcuni gruppi: controllo della stampa, controllo delle strutture dati, controllo della trasmissione, e varie.

Controllo della stampa[modifica | modifica sorgente]

I caratteri di controllo della stampa indicano dove mettere il carattere successivo. Il "carriage return" indica l'inserimento del carattere all'inizio della linea (può o non può spostarsi sulla linea successiva). Il "line feed" indica l'inserimento del prossimo carattere sulla linea successiva (e può o non può posizionarsi all'inizio della stessa). Le tabuzioni orizzontali e verticali indicano alla stampante di muovere la testina sul successivo punto di tabulazione lungo la direzione di lettura. Il "form feed" posiziona all'inizio di un nuovo foglio. "Shift in" e "shift out" selezionano set di caratteri alternativi, font, sottolineature o altre modalità di stampa. il "backspace" sposta la testina indietro di un carattere, di modo che la stampante possa effettuare una sovrascrittura per creare caratteri speciali.

Controllo delle strutture dati[modifica | modifica sorgente]

I caratteri di controllo di separazione (gruppo, record, ecc.) erano stati creati per strutturare i dati, normalmente su un nastro magnetico, in modo da simulare le schede perforate.

End of media (fine del supporto) avverte che il nastro (o simile) sta terminando.

Controllo della trasmissione[modifica | modifica sorgente]

I caratteri di controllo della trasmissione erano intesi a strutturare un pacchetto di dati e controllare quando ritrasmetterlo in caso di errore.

Lo "start of header" segnava la sezione priva di dati del pacchetto - la parte del messaggio che contiene l'indirizzo e altre informazioni utili alla trasmissione. Lo "start-of-text" segnava la fine dell'intestazione e l'inizio della parte contenente i dati. L'"End-of-text" segnava la fine del pacchetto. Una convenzione standard è quella di usare i due caratteri che precedono la fine del testo per il controllo di parità (CRC) del messaggio.

L'"escape" era pensato per essere posto davanti ad un valore binario all'interno di un messaggio, che poteva altrimenti essere interpretato come un carattere di controllo. Ad esempio, il valore per il 27 binario sarebbe stato "escape" "escape".

Il "substitute" era pensato per richiedere la traduzione del seguente carattere, dal carattere stampabile a valore binario, solitamente impostando a zero il quinto bit. Questo è comodo perché alcuni mezzi di trasmissione, trasmettono solo caratteri stampabili.

Il "cancel" avrebbe interrotto la trasmissione di un pacchetto. Il "negative acknowledge" richiedeva una ritrasmissione del pacchetto. L'"acknowledge" indicava che la trasmissione era stata ricevuta correttamente.

Quando il mezzo di trasmissione funzionava in half duplex (ovvero, può trasmettere solo in una direzione alla volta), si ha solitamente una stazione primaria che può trasmettere in ogni momento, e una secondaria che trasmette solo quando ne ha il permesso. L'"enquiry" veniva utilizzato dalla stazione primaria per richiedere alla stazione secondaria di inviare il suo messaggio successivo. Una stazione secondaria indicava di aver terminato la trasmissione inviando un "end of transmission".

I codici di controllo delle periferiche erano in origine generici, da definire differentemente per ogni apparato. Comunque, un bisogno universale della trasmissione dati e quello di richiedere al trasmittente di interrompere l'invio di dati, quando il ricevente non è in grado di accettarne altri. La Digital Equipment Corporation inventò la convenzione che utilizzava il 19, (device control 3, noto anche come control S, o "X-OFF") per fermare ("S"top) la trasmissione, e il 17, (device control 1, noto come control Q, o "X-ON") per avviarla. Questo permette ai produttori di controllare la trasmissione senza usare fili per il "transmission control" nel cavo per i dati. Questo permette di risparmiare e rende le operazioni più affidabili, riducendo il numero di connessioni presenti nel cavo.

Il "data link escape" dice all'altro capo del collegamento dati di terminare la sessione.

Varie[modifica | modifica sorgente]

Molti dei caratteri di controllo ASCII vennero progettati per periferiche dell'epoca, che non sono più utilizzate oggi. Ad esempio il codice 22, "Synchronous idle", veniva inviato dai modem sincroni (che devono inviare dati costantemente) quando non c'erano dati da trasmettere — i sistemi moderni usano tipicamente un bit di start per annunciare l'inizio di una trasmissione.

Il "Codice 0", "null", è un caso speciale. Nei nastri perforati indica il caso in cui non ci sono buchi. È conveniente trattarlo come un carattere inesistente.

Anche il "Codice 127" è un caso speciale. Il suo codice equivale al valore binario in cui tutti i bit sono impostati a 1, il che rendeva facile cancellare una parte di nastro perforato, un comune mezzo di memorizzazione dell'epoca, punzonando tutti i fori. Il nastro perforato divenne rapidamente obsoleto, quindi questa funzione non venne quasi mai usata. Ma siccome il suo codice si trova nell'intervallo occupato da altri caratteri stampabili, molti computer lo usarono come carattere stampabile addizionale (spesso come un quadrato completamente nero, utile per cancellare del testo sovrascrivendolo).

Tavole[modifica | modifica sorgente]

La tabella ASCII a 7 bit definisce 33 codici, da 0 a 31 e il 127 come caratteri di controllo.

Caratteri di controllo US-ASCII
Dec Hex Abbr Nome del carattere
00 0x00 NUL Null
01 0x01 SOH Start of Heading
02 0x02 STX Start of Text
03 0x03 ETX End of Text
04 0x04 EOT End of Transmission
05 0x05 ENQ Enquiry
06 0x06 ACK Acknowledge
07 0x07 BEL Bell
08 0x08 BS Backspace
09 0x09 HT Horizontal Tab
10 0x0A LF Line feed
11 0x0B VT Vertical Tab
12 0x0C FF Form feed
13 0x0D CR Carriage return
14 0x0E SO Shift Out
15 0x0F SI Shift In
16 0x10 DLE Data Link Escape
17 0x11 DC1 Device Control 1
18 0x12 DC2 Device Control 2
19 0x13 DC3 Device Control 3
20 0x14 DC4 Device Control 4
21 0x15 NAK Negative Acknowledge
22 0x16 SYN Synchronous Idle
23 0x17 ETB End of Transmission Block
24 0x18 CAN Cancel
25 0x19 EM End of Medium
26 0x1A SUB Substitute
27 0x1B ESC Escape
28 0x1C FS File Separator
29 0x1D GS Group Separator
30 0x1E RS Record Separator
31 0x1F US Unit Separator
127 0x7F DEL Rubout/Delete

La tabella a 8-bit compatibile ISO-8859-1 mappa in aggiunta i 32 codici dalla posizione 128 alla 159, che sono inutilizzati nella specifica ISO/IEC 8859-1, assegnandoli a caratteri di controllo.

Control Characters in ISO-8859-*
Dec Hex Abbr Nome del carattere
128 0x80 PAD Padding Character
129 0x81 HOP High Octet Preset
130 0x82 BPH Break Permitted Here
131 0x83 NBH No Break Here
132 0x84 IND Index
133 0x85 NEL Next Line
134 0x86 SSA Start of Selected Area
135 0x87 ESA End of Selected Area
136 0x88 HTS Horizontal Tab Set
137 0x89 HTJ Horizontal Tab Justified
138 0x8A VTS Vertical Tab Set
139 0x8B PLD Partial Line Forward
140 0x8C PLU Partial Line Backward
141 0x8D RI Reverse Line Feed
142 0x8E SS2 Single-Shift 2
143 0x8F SS3 Single-Shift 3
144 0x90 DCS Device Control String
145 0x91 PU1 Private Use 1
146 0x92 PU2 Private Use 2
147 0x93 STS Set Transmit State
148 0x94 CCH Cancel Character
149 0x95 MW Message Waiting
150 0x96 SPA Start of Protected Area
151 0x97 EPA End of Protected Area
152 0x98 SOS Start of String
153 0x99 SGCI Single Graphic Char Intro
154 0x9A SCI Single Char Intro
155 0x9B CSI Control Sequence Intro
156 0x9C ST String Terminator
157 0x9D OSC OS Command
158 0x9E PM Private Message
159 0x9F APC App Program Command

Voci correlate[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica