USB HID (emulazione tastiera) o porta COM virtuale: differenze e quando usarle
In modalità USB HID il lettore si presenta come una tastiera: non serve alcun driver e il codice viene "digitato" dove si trova il cursore. In modalità porta COM virtuale (USB CDC) il lettore appare come una porta seriale: i dati arrivano a un programma che apre quella porta, anche se la finestra non è in primo piano. Scegli HID per semplicità, COM per integrazioni robuste.
In breve: se usi il lettore con Excel, un gestionale qualsiasi o un modulo web, resta in HID. Passa alla COM virtuale solo se il tuo software lo richiede esplicitamente (molti POS, gestionali di magazzino e applicazioni industriali lo fanno) o se vuoi che le letture non dipendano dal focus della finestra.
Confronto diretto tra le due modalità
| Aspetto | USB HID (tastiera) | USB COM virtuale (CDC) |
|---|---|---|
| Driver | Nessuno: usa il driver tastiera di sistema | Su Windows 10/11 e macOS spesso basta il driver CDC di sistema; alcuni modelli richiedono il driver del produttore |
| Come arrivano i dati | Come tasti premuti, uno per uno, tradotti dal layout tastiera del sistema | Come flusso di byte su una porta seriale, letti dal programma che la apre |
| Serve il focus? | Sì: i caratteri finiscono nella finestra e nel campo attivi | No: il programma riceve i dati anche se è in background |
| Layout tastiera | Conta: un lettore impostato su US con PC italiano altera i simboli | Irrilevante: arrivano i byte esatti |
| Caratteri di controllo (GS, ecc.) | Difficili da trasmettere, dipendono dal programma | Arrivano intatti (es. GS = 0x1D) |
| Software tipico | Excel, browser, gestionali, qualsiasi casella di testo | POS, software di pesatura, magazzino, applicazioni scritte su misura, emulatori terminale |
| Pro | Plug and play, universale | Dati affidabili, nessun conflitto con la tastiera, comunicazione bidirezionale possibile |
| Contro | Dipende da focus e layout; un clic sbagliato e il codice finisce altrove | Serve software che apra la porta; il numero COM può cambiare; una sola applicazione alla volta può aprirla |
Esiste anche una terza modalità, HID POS (USB HID Point of Sale), che usa la classe HID ma non come tastiera: il sistema la vede come "scanner di codici a barre" e la leggono solo applicazioni scritte per quella classe (per esempio app che usano le API POS di Windows). Non digita nulla nei programmi normali, ed è una causa frequente di "il lettore fa beep ma non scrive": ne parliamo in lettore che emette beep ma non scrive.
Cosa succede davvero quando leggi un codice
Prendi un'etichetta GS1-128 con lotto e scadenza. In HID il lettore invia una sequenza di pressioni di tasti; il sistema le traduce col layout attivo e le consegna al campo selezionato. Se il lettore è configurato per una tastiera US e Windows è in italiano, i simboli cambiano (vedi impostare la tastiera italiana), e il separatore GS spesso sparisce o diventa un carattere strano.
In COM virtuale, lo stesso codice arriva come byte grezzi. Un terminale seriale mostrerebbe qualcosa di simile:
]C1 01 08001234567897 17 271231 1D 10 LOTTO42 0D (rappresentazione: 1D = GS, 0D = CR; spazi aggiunti per leggibilità)
Per il software è facile separare i campi e passarli al decodificatore GS1 o alla propria logica. Approfondisci il tema in carattere GS e FNC1.
Quando ha senso passare alla porta COM
- Il software lo chiede. Molti POS e programmi di magazzino hanno un'impostazione "lettore su porta seriale" con selezione della COM.
- Letture senza focus. In cassa l'operatore può avere aperta un'altra finestra: con la COM la lettura arriva comunque al programma giusto.
- Dati con caratteri di controllo. Codici GS1 con separatori, Data Matrix dei farmaci, stringhe binarie.
- Velocità e affidabilità. Niente caratteri persi per applicazioni lente a ricevere battute (vedi caratteri mancanti o letture doppie).
- Migrazione da RS232. Un software scritto per un vecchio lettore seriale RS232 funziona di solito con la COM virtuale senza modifiche, impostando la nuova porta.
Come passare da una modalità all'altra
- Trova il manuale del modello. Nel Product Reference Guide c'è una sezione "USB interface" o "Host selection" con i codici di programmazione per HID Keyboard, USB CDC / Virtual COM e HID POS. Non usare codici trovati per un altro modello: cambiano da marca a marca (vedi codici di programmazione).
- In alternativa usa il software del produttore (Honeywell EZConfig, Zebra 123Scan, Datalogic Aladdin, Newland EasySet), che mostra la modalità attuale e permette di cambiarla. Vedi software di configurazione.
- Installa il driver se serve. Se dopo il cambio Windows mostra un dispositivo sconosciuto, scarica il driver USB COM dal sito ufficiale del produttore.
- Annota il numero della porta e impostalo nel programma, con i parametri richiesti (per la COM virtuale la velocità in baud di solito non conta, ma alcuni programmi vogliono comunque un valore, es. 9600 8N1).
- Prova la lettura con un terminale seriale prima di dare la colpa al software.
Una volta in COM il lettore non scrive più in Blocco note o Excel. Se ti serve tornare in HID e non trovi il manuale, il ripristino delle impostazioni di fabbrica riporta quasi sempre alla modalità tastiera.
Come vedere la porta COM su Windows e macOS
Windows 10 e 11
- Clic destro su Start, poi Gestione dispositivi.
- Espandi Porte (COM e LPT). Troverai una voce come "Dispositivo seriale USB (COM5)" o con il nome del produttore.
- Se compare sotto "Altri dispositivi" con un triangolo giallo, manca il driver.
- Per cambiare numero: doppio clic sulla porta, scheda Impostazioni della porta, Avanzate, campo "Numero porta COM". Utile se il software accetta solo COM1-COM9.
In modalità HID il lettore appare invece sotto Tastiere e "Dispositivi di interfaccia utente (HID)", non sotto le porte.
macOS
Apri il Terminale e scrivi:
ls /dev/tty.usb* /dev/cu.usb* /dev/cu.usbmodem14101 /dev/tty.usbmodem14101
Il lettore in CDC appare di solito come /dev/tty.usbmodem… e /dev/cu.usbmodem…; con chip convertitori può apparire come usbserial. Per le applicazioni che inviano e ricevono è in genere preferibile il dispositivo cu.. Per una prova veloce: screen /dev/cu.usbmodem14101 9600, poi leggi un codice (esci con Ctrl+A, poi K). Su Linux la porta è tipicamente /dev/ttyACM0.
Errori comuni
| Sintomo | Causa probabile | Cosa fare |
|---|---|---|
| Beep di lettura ma nessun testo in Blocco note | Lettore in COM o HID POS | Riporta in HID Keyboard o usa un programma che apre la porta |
| Il software dice "porta occupata" | Un altro programma (o un'istanza precedente) tiene aperta la COM | Chiudi i terminali seriali e i servizi del produttore, poi riavvia il programma |
| Funzionava, ora non più | Hai cambiato porta USB e Windows ha assegnato un nuovo numero COM | Usa sempre la stessa porta USB o aggiorna il numero nel software |
| Simboli sbagliati in HID | Layout tastiera diverso tra lettore e PC | Imposta il lettore su italiano o usa la modalità ALT |
| Dispositivo sconosciuto dopo il cambio | Driver CDC del produttore mancante | Installa il driver dal sito ufficiale |
Per verificare cosa trasmette davvero il lettore in HID, incluso prefisso e suffisso invisibili, usa il test del lettore.
Domande frequenti
Posso usare HID e COM contemporaneamente?
Di solito no: il lettore espone una sola interfaccia alla volta. Alcuni modelli recenti hanno modalità composite, ma è una funzione specifica da verificare nel manuale.
La COM virtuale è più lenta?
No, in genere è più rapida e affidabile della digitazione simulata, che può richiedere un ritardo tra caratteri con programmi lenti.
Un lettore Bluetooth può fare da porta COM?
Sì, con il profilo SPP. Su Windows compare come porta COM Bluetooth dopo l'abbinamento. Vedi collegare un lettore Bluetooth a Windows e Mac.
Che velocità in baud devo impostare?
Con una COM virtuale USB il valore di solito è ignorato dal lettore. Conta invece con i lettori RS232 reali, dove deve coincidere da entrambe le parti.
Fonti e riferimenti
- USB Implementers Forum, USB HID Usage Tables (pagine Keyboard e Point of Sale) e specifica USB CDC.
- Product Reference Guide dei singoli modelli: Honeywell, Zebra, Datalogic, Newland.
- Supporto Microsoft su Gestione dispositivi: support.microsoft.com.