Prefissi, suffissi e comandi

Tabella dei caratteri di controllo ASCII per lettori di codici a barre

I caratteri di controllo ASCII sono i valori da 0 a 31 più il 127: non si stampano, ma comandano qualcosa. Per un lettore di codici a barre i più importanti sono CR (13, Invio), HT (9, Tab), LF (10), GS (29, separatore GS1), RS (30) ed EOT (4). Qui trovi la tabella completa con valori decimali ed esadecimali, combinazione Ctrl tradizionale e uso pratico.

Come leggere la tabella

  • Dec e Hex: il valore del carattere. I manuali dei lettori chiedono di solito il valore esadecimale quando imposti un prefisso o un suffisso con la tabella dei codici numerici; alcuni modelli usano il decimale o un codice interno. Controlla il tuo.
  • Ctrl: la combinazione tradizionale da terminale. Il carattere con valore n corrisponde a Ctrl più il carattere con valore n+64 (13 + 64 = 77, cioè M: CR è Ctrl+M). Molti lettori, in modalità tastiera, usano proprio questa combinazione per trasmettere i caratteri di controllo che non hanno un tasto dedicato.
  • Nome e uso: nome italiano e cosa succede in pratica con un lettore o un PC.

Tabella completa ASCII 0-31 e 127

Caratteri di controllo ASCII
DecHexSiglaCtrlNome e uso pratico
000NULCtrl+@Carattere nullo. Nessuna funzione visibile; in molti linguaggi indica la fine di una stringa, quindi può troncare i dati in software poco robusti.
101SOHCtrl+AInizio intestazione. Usato in alcuni protocolli seriali; come tasto, Ctrl+A seleziona tutto in molti programmi.
202STXCtrl+BInizio testo. Prefisso classico nelle integrazioni seriali per marcare l'inizio di un messaggio.
303ETXCtrl+CFine testo. Suffisso classico nelle integrazioni seriali; come tasto, Ctrl+C copia.
404EOTCtrl+DFine trasmissione. Chiude i messaggi nel formato ISO/IEC 15434 di alcuni codici 2D; come tasto, nei browser Ctrl+D aggiunge la pagina ai preferiti.
505ENQCtrl+ERichiesta. Interrogazione di stato in vecchi protocolli seriali.
606ACKCtrl+FConferma positiva. In alcune configurazioni seriali è il PC a inviarlo al lettore per confermare la ricezione.
707BELCtrl+GCampanello. Su terminali seriali produce un segnale acustico.
808BSCtrl+HBackspace (ritorno di un carattere). In modalità tastiera di solito diventa il tasto Backspace e cancella il carattere precedente.
909HTCtrl+ITabulazione orizzontale. Diventa il tasto Tab: passa al campo o alla cella successiva. Suffisso comune.
100ALFCtrl+JAvanzamento riga. Fine riga nei sistemi Unix e in molti protocolli; in modalità tastiera può diventare Invio o Ctrl+J a seconda del lettore.
110BVTCtrl+KTabulazione verticale. Praticamente inutilizzata con i lettori.
120CFFCtrl+LAvanzamento pagina. Nuova pagina per le stampanti; nessun uso tipico con i lettori.
130DCRCtrl+MRitorno carrello. In modalità tastiera diventa il tasto Invio. È il suffisso più usato in assoluto.
140ESOCtrl+NShift out. Cambio di set di caratteri in vecchi terminali.
150FSICtrl+OShift in. Ritorno al set di caratteri standard.
1610DLECtrl+PEscape del collegamento dati. Usato in protocolli seriali binari.
1711DC1Ctrl+QControllo dispositivo 1 (XON). Riprende la trasmissione con il controllo di flusso software.
1812DC2Ctrl+RControllo dispositivo 2. Uso specifico del dispositivo.
1913DC3Ctrl+SControllo dispositivo 3 (XOFF). Sospende la trasmissione con il controllo di flusso software; come tasto, Ctrl+S salva in molti programmi.
2014DC4Ctrl+TControllo dispositivo 4. Uso specifico del dispositivo.
2115NAKCtrl+UConferma negativa. Nelle configurazioni seriali con conferma, chiede al lettore di ritrasmettere.
2216SYNCtrl+VSincronizzazione. Come tasto, Ctrl+V incolla: un SYN trasmesso come combinazione può incollare gli appunti nel campo.
2317ETBCtrl+WFine blocco di trasmissione. Come tasto, nei browser Ctrl+W chiude la scheda.
2418CANCtrl+XAnnulla. Come tasto, Ctrl+X taglia.
2519EMCtrl+YFine supporto. Nessun uso tipico.
261ASUBCtrl+ZSostituzione. In vecchi file indicava la fine; come tasto, Ctrl+Z annulla l'ultima azione.
271BESCCtrl+[Escape. In modalità tastiera diventa di solito il tasto Esc, che può chiudere finestre o annullare l'inserimento in corso.
281CFSCtrl+\Separatore di file. Raro nei codici a barre.
291DGSCtrl+]Separatore di gruppo. Rappresenta FNC1 come separatore dei campi GS1 in GS1-128, GS1 DataMatrix e GS1 QR.
301ERSCtrl+^Separatore di record. Usato nel formato ISO/IEC 15434 di alcuni codici 2D industriali.
311FUSCtrl+_Separatore di unità. Raro nei codici a barre.
1277FDEL(nessuna)Cancella. In modalità tastiera alcuni lettori lo trasmettono come tasto Canc.

Le combinazioni Ctrl indicate sono la convenzione storica dei terminali. Il comportamento reale del tuo lettore in modalità tastiera (tasto dedicato, combinazione Ctrl, tasto funzione o nessuna trasmissione) dipende dal modello e da opzioni che il manuale chiama in vari modi, per esempio "Control Character Output" o "Function Code". Verifica sempre sulla guida.

Come appaiono in modalità tastiera HID

Una tastiera USB invia tasti, non caratteri. Per i caratteri di controllo il lettore deve quindi scegliere quale tasto o combinazione premere. Le situazioni che incontri più spesso:

CR (13): il tasto Invio

Diventa quasi sempre il tasto Invio della tastiera principale. Alcuni lettori permettono di usare l'Invio del tastierino numerico, che alcune applicazioni trattano in modo diverso. È il suffisso giusto per casse, gestionali e campi di ricerca: vedi aggiungere Invio o Tab dopo la lettura.

LF (10): attenzione al doppio Invio

Alcuni lettori trasmettono LF come Invio, altri come Ctrl+J, altri lo ignorano. Se hai impostato un suffisso CR+LF (tipico di chi copia la configurazione da un'integrazione seriale), in modalità tastiera puoi ritrovarti con due Invio: in Excel il cursore salta una riga, in un modulo web il secondo Invio può inviare il form vuoto. Ctrl+J in alcuni browser apre l'elenco dei download. In modalità tastiera usa solo CR.

HT (9): il tasto Tab

Diventa il tasto Tab: passa al campo successivo, alla cella a destra in un foglio di calcolo. Se un lettore lo trasmette come Ctrl+I, in molti editor di testo attiva invece il corsivo: segno che è attiva una modalità di trasmissione Ctrl.

GS (29): il separatore che sparisce

Non esiste un tasto GS. Il lettore lo omette, lo trasmette come Ctrl+] (su un PC con layout italiano corrisponde al tasto del +, con effetti imprevedibili come lo zoom nel browser) o, in modalità ALT, come Alt+29, che molte applicazioni Windows mostrano come simbolo grafico. Soluzioni e mappatura a un carattere visibile in carattere GS e FNC1.

RS (30) ed EOT (4): i messaggi ISO/IEC 15434

Compaiono nei codici 2D con intestazione [)>. RS come Ctrl+^ richiede Shift sulla tastiera USA ed è di solito ignorato dalle applicazioni; EOT come Ctrl+D può aggiungere un preferito nel browser o attivare altre scorciatoie. Per questi dati usa un'interfaccia seriale: vedi USB HID o porta COM virtuale.

In modalità seriale o COM virtuale

Con una porta COM, reale o virtuale, i caratteri di controllo arrivano come byte, senza alcuna conversione in tasti. È il motivo per cui STX, ETX, ACK e NAK sono comuni nelle integrazioni seriali e nei lettori seriali RS232, mentre in modalità tastiera si usano quasi solo CR e Tab.

Come verificare quali caratteri arrivano

Leggi un codice nel test del lettore: mostra ogni carattere ricevuto con il suo valore, compresi prefissi e suffissi invisibili. Esempio di uscita con prefisso STX e suffisso CR+LF via porta seriale:

HEX:  02 38 30 30 31 32 33 34 35 36 37 38 39 37 0D 0A
TXT:  <STX>8001234567897<CR><LF>

Per creare codici di prova con contenuti specifici usa il generatore di codici a barre.

Domande frequenti

Invio è CR o LF?

In modalità tastiera il tasto Invio corrisponde a CR (13, esadecimale 0D). Windows nei file di testo usa la coppia CR+LF per andare a capo, ma il tasto è uno solo.

Lo spazio è un carattere di controllo?

No, lo spazio (32, esadecimale 20) è il primo carattere stampabile. Come suffisso è poco consigliabile perché invisibile e spesso rimosso dai software.

Perché il manuale indica i caratteri come "0D" e non "13"?

Perché molti lettori chiedono il valore esadecimale tramite la tabella dei codici numerici, che include le lettere A-F. Il valore è lo stesso, cambia solo la base.

Fonti e riferimenti

  • ISO/IEC 646 e ANSI X3.4 (ASCII), insieme di caratteri di controllo C0, iso.org.
  • ISO/IEC 15434, sintassi per i messaggi nei supporti di cattura automatica dei dati.
  • GS1 General Specifications (FNC1 e separatore GS), gs1.org.
  • USB HID Usage Tables, pagina Keyboard/Keypad (USB Implementers Forum).
  • Product Reference Guide dei produttori, tabelle "ASCII Character Set" e "Function Codes": Honeywell, Zebra, Datalogic.

Altro in Prefissi, suffissi e comandi

Tutta la sezione Prefissi, suffissi e comandi