Domanda

Sto scrivendo un programma in C# POS (point of sale), sistema che accetta input da tastiera wedge magcard lettore.Questo significa che tutti i dati legge di un mag stripe è entrato come se fosse digitato sulla tastiera molto rapidamente.Attualmente io sto gestendo questo allegando la Pressione di evento e alla ricerca di una serie di molto veloce dei tasti che contengono il colpo della carta di sentinel caratteri.

C'è un modo migliore per affrontare questo genere di input?

Edit:Il dispositivo si presenta semplicemente i dati di sequenze di tasti e non si interfaccia con alcuni altri driver.Inoltre, utilizziamo una vasta gamma di questi tipi di dispositivi, in modo che, idealmente, un metodo dovrebbe funzionare in modo indipendente l'uno specifico modello di cuneo utilizzato.Tuttavia, se non c'è altra scelta che dovrò fare.

È stato utile?

Soluzione

Una cosa che si può fare è che si dovrebbe essere in grado di configurare il cuneo lettore, in modo che esso presenta uno o più caratteri di escape, prima o dopo la stringa.Utilizzare i caratteri di escape sapere che si sta per hanno (o avevano) un magcard ingresso.

Questa stessa tecnica è usata dal lettore di codici a barre dispositivi, in modo che l'applicazione sa di messa a fuoco o di gestire i dati in ingresso dal dispositivo.

Il negativo di questo approccio è che è necessario configurare correttamente le periferiche esterne.Questo può essere un problema di distribuzione.

Questo presuppone che i dispositivi semplicemente presentare i dati come sequenze di tasti e non si interfaccia con alcuni altri driver.

Altri suggerimenti

È inoltre possibile utilizzare il Raw Input API, se si conosce l'Id Hardware dei dispositivi prima del tempo. Ho scritto un blog su questo di recente. Si può essere pazzi ma è saziato la mia richiesta:l'obiettivo primario nel mio caso era quello di essere in grado di ricevere input anche quando l'applicazione perso il fuoco perché qualcuno accidentalmente imbattuto in qualcosa del genere, mentre a frugare per eseguire la scansione di oggetti su un pallet.L'obiettivo secondario è che non ho potuto aggiungere una sentinella personaggi, perché che avrebbe spezzato esistenti applicazioni di terze parti utilizzato con la scansione pistole.

Ho fatto la sentinella personaggio metodo di prima, tuttavia, sia attraverso un KeyPress collegamento o un basso livello di hook di tastiera via SetWindowsHookEx() o via KeyPreview sul form principale dell'applicazione.Se soddisfa le vostre esigenze, è sicuramente molto più semplice e facile da usare che metodo e per concludere, io secondo le raccomandazioni già dato.

Penso che si gestisce in un modo accettabile, basta essere attenti di quanto velocemente la scheda invia i dati, abbiamo wireless scanner di codici a barre, e ora e di nuovo si gettano i tasti sulla tastiera per veloce per l'applicazione per gestire.

anche se si distribuisce il software ad altri territori, quindi stokes possono essere diverse, per esempio in Spagna (credo, ma potrebbe essere Francia), la riga superiore della tastiera è !"£$%^&() contrasto con gli USA/UK 1234567890, e se il lettore di schede è impostata su usa/uk quindi invia !"£$%^&() al posto di 1234567890, come il cuneo solo che emula il tasto è stato premuto e se windows interpreta diversi, quindi il suo problema.

Un altro voto per jttraino idea.Io la faccio molto simile con lettori di carte e assegni e lettori nel punto di sistemi di vendita in cui abbiamo bisogno di supporto emulazione tastiera USB e RS232.

In sostanza, scegliere una breve sequenza di caratteri improbabile che venire dalla tastiera, e programma il tuo messaggio gestione ciclo per vedere questi personaggi in arrivo.Se si ottiene un completata stream di caratteri che corrispondono vostro modello, è in grado di decodificare il resto di ingresso fino a quando si colpisce l'area "fine" sequenza, o fino a quando si decide l'arrivo di una sequenza è nell'errore.Selezionare una stringa che è difficile, o impossibile, per immettere da tastiera normale nella tua app dato cose come modificare le maschere e il comportamento delle varie schermate.

Un buon punto di partenza è qualcosa di simile a tilda-net (~!) come quei personaggi non sono suscettibili di apparire a chiunque i propri dati personali e non è probabilmente mai bisogno di apparire insieme il testo di una nota, etc.:-)

Il rovescio della medaglia, esattamente come jttraino detto, è che probabilmente si dovrà configurare il programma di ogni lettore dispositivo stesso.Alcuni produttori di fare questo abbastanza facile da fare, il cui kit stai usando?Magtek?Welch Allyn?

Secondo I @jttraino idea.

È il modo di andare per bar scansione/lettori di codici e di altri tali dispositivi che sono plug and play (PnP).Ho usato la stessa tecnica per configurare un paio di 1D e 2D, lettori di codici a barre in un mio precedente incarico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top