Newsgroup: it.comp.os.linux.development
Titolo: Lettore di banda magnetica USB in modalità simulaz tastiera

Ciao a tutti,
sto provando ad utilizzare Lettore di banda magnetica USB in modalità
simulazione tastiera su un linux versione Slackware 11.0.0 che scrive sulla
shell 1 di sistema (tty=1).
Ho fatto un programmino in C che legge il "file" /dev/vc/0 per intercettare
tutti i caratteri (e quindi i codici delle carte strisciate) stampati a
video sulla shell sopra, ma purtroppo alcuni caratteri (o strisciate
complete) non passano, e quindi non li posso elaborare.
Mi sapete dare un consiglio per poter risolvere il problema ? Magari cercare
di reindirizzare su file l'output del lettore...o...boh...
Potrebbe anche andare bene se mi aiutate ad intercettare i caratteri
digitati in una particolare shell....Il problema che riscontro leggendo il
file /dev/vc/0 purtroppo non si risolve..."perdo" in maniera randomica
caratteri.
Fatemi sapere.
Grazie,
Leo

 caratteri.
Premetto che so molto poco sui lettori di codici a barre, ma non
capisco bene quale sia il tuo problema.
Se la strisciata non va a buon fine (non leggi tutti i caratteri)
entro un certo tempo (che ne so 2-3 secondi), butti tutto quello che
hai ricevuto e ti prepari a ricevere una nuova strisciata. Inoltre non
so bene a che tipo di codice a barre ti riferisci (immagino UPC), ma
molti hanno cifre in piu' per la detezione e/o correzione degli
errori.
Saluti,
The Librarian

news.eutelia.it
 wrote:
[cut]
Ah, dimenticavo, gentilmente non multipostare (inviare lo stesso
messaggio a piu' newgroup separatamente).
In questi casi, se pensi che il post sia di interesse per due gruppi,
conviene che fai un crosspost su entrambi i gruppi ed imposti il
follow-up sul gruppo che ti sembra piu' in tema.
Saluti,
The Librarian


Ok, sorry.
Leo 

 errori.
Su Linux i lettori di codici a barre USB (almeno i modelli che sono riuscito 
a trovare io) funzionano in modalità simulazione tastiera, quindi è come se
dalla tastiera si digitassero dei caratteri (e invece vengono stampati 
quelli presenti nella banda magnetica strisciata). Non essendoci driver, non 
c'è
nemmeno un sistema di correzione errori, o di timeout (o meglio, dovrei 
simulare qualcosa io)...
Nella stringa viene riportato solamente il codice del lettore (primi 5 
caratteri) e il codice della carta (successivi fino al /n, che dev'essere 
interpretato come
carattere di fine stringa).
Io ho un certo programma che gira (lanciato da crontab) e dovrebbe leggere 
quello che viene passato dalla banda magnetica.
Il modo nel quale avevo pensato di risolvere il problema è quello di 
piazzare il server Linux (Slackware 11.00) con la shell 1 attiva (senza 
bisogno di
essere loggati) e leggere quello che viene scritto nel "file" /dev/vc/0 
(corrispondente alla shell detta prima). Questo viene aperto con una open, e 
letto
con una read (all'interno di un ciclo while (1)).
Il problema è che sembra esserci una sorta di "chi prima arriva meglio 
alloggia", nel senso che i caratteri o li leggo io con la read, o il SO mi 
anticipa e li stampa a video.
Questo non mi permette di essere sicuro che quello che leggo sia veramente 
tutto quello che è stato passato dal lettore. Diciamo che, facendo una 
veloce statistica, circa il
20% delle strisciate vengono perse.
Hai mica un'idea di come posso fare ad acquisire SEMPRE quello che il 
lettore spara ? Sbaglio qualcosa ?
Un grazie anticipato,
Leo

 20% delle strisciate vengono perse.
Se non usi la shell, tutto funziona correttamente?
Saluti,
The Librarian