USB, Bluetooth e wireless

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à

USB HID tastiera e USB COM virtuale a confronto
AspettoUSB HID (tastiera)USB COM virtuale (CDC)
DriverNessuno: usa il driver tastiera di sistemaSu Windows 10/11 e macOS spesso basta il driver CDC di sistema; alcuni modelli richiedono il driver del produttore
Come arrivano i datiCome tasti premuti, uno per uno, tradotti dal layout tastiera del sistemaCome 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 attiviNo: il programma riceve i dati anche se è in background
Layout tastieraConta: un lettore impostato su US con PC italiano altera i simboliIrrilevante: arrivano i byte esatti
Caratteri di controllo (GS, ecc.)Difficili da trasmettere, dipendono dal programmaArrivano intatti (es. GS = 0x1D)
Software tipicoExcel, browser, gestionali, qualsiasi casella di testoPOS, software di pesatura, magazzino, applicazioni scritte su misura, emulatori terminale
ProPlug and play, universaleDati affidabili, nessun conflitto con la tastiera, comunicazione bidirezionale possibile
ControDipende da focus e layout; un clic sbagliato e il codice finisce altroveServe 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

  1. 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).
  2. 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.
  3. Installa il driver se serve. Se dopo il cambio Windows mostra un dispositivo sconosciuto, scarica il driver USB COM dal sito ufficiale del produttore.
  4. 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).
  5. 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

  1. Clic destro su Start, poi Gestione dispositivi.
  2. Espandi Porte (COM e LPT). Troverai una voce come "Dispositivo seriale USB (COM5)" o con il nome del produttore.
  3. Se compare sotto "Altri dispositivi" con un triangolo giallo, manca il driver.
  4. 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

Sintomi e cause più frequenti
SintomoCausa probabileCosa fare
Beep di lettura ma nessun testo in Blocco noteLettore in COM o HID POSRiporta 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 COMChiudi 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 COMUsa sempre la stessa porta USB o aggiorna il numero nel software
Simboli sbagliati in HIDLayout tastiera diverso tra lettore e PCImposta il lettore su italiano o usa la modalità ALT
Dispositivo sconosciuto dopo il cambioDriver CDC del produttore mancanteInstalla 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

Altro in USB, Bluetooth e wireless

Tutta la sezione USB, Bluetooth e wireless