Pregunta

Estoy escribiendo un C# POS (punto de venta), sistema que toma la entrada de un teclado virtual magcard lector.Esto significa que los datos que se lee fuera de una banda magnética que se ha introducido como si estuviera escrito en el teclado de forma muy rápida.Actualmente estoy manejando este adjuntando para el evento KeyPress y en busca de una serie de muy rápida de teclas que contienen deslice la tarjeta centinela de caracteres.

Hay una mejor manera de lidiar con este tipo de entrada?

Editar:El dispositivo no solo presentar los datos como las pulsaciones de teclado y no de la interfaz a través de algún otro controlador.También utilizamos una amplia gama de estos tipos de dispositivos, de modo que lo ideal es un método de trabajo independiente de un modelo específico de cuña que se utiliza.Sin embargo, si no hay otra opción, tendré que hacer que hacer.

¿Fue útil?

Solución

Una cosa que puedes hacer es que usted debe ser capaz de configurar su cuña lector, de modo que presenta uno o varios de los caracteres de escape antes o después de la cadena.Usted podría utilizar estos caracteres de escape para saber que está a punto de tener (o había) un magcard de entrada.

Esta misma técnica es utilizada por el lector de código de barras dispositivos de manera que la aplicación sabe que para obtener el foco o controlar la entrada de datos desde el dispositivo.

La negativa a este enfoque es que usted tiene que configurar correctamente los dispositivos externos.Esto puede ser un problema de implementación.

Esto supone que sus dispositivos simplemente presentar los datos como las pulsaciones de teclado y no de la interfaz a través de algún otro controlador.

Otros consejos

También puede utilizar el Raw de la API de Entrada si sabe el Identificadores de Hardware de los dispositivos antes de tiempo. Me escribió en su blog acerca de esto últimamente. Puede ser una locura pero satisifed mi requisito:el objetivo principal en mi caso iba a ser capaz de recibir la entrada, aun cuando la aplicación pierde el foco porque alguien accidentalmente chocó con algo, mientras buscaban a su alrededor para escanear elementos en una paleta.El objetivo secundario es que no podía añadir ningún centinela personajes debido a que habrían roto existentes aplicaciones de terceros que se utiliza con el escaneo de armas de fuego.

Me he hecho el centinela de carácter método de antes, sin embargo, tanto a través de un KeyPress adjuntar o un teclado de bajo nivel de gancho a través de SetWindowsHookEx() o a través de KeyPreview en el formulario principal de la aplicación.Si cumple con sus requisitos, es definitivamente mucho más simple y más fácil de usar ese método y, para ello, en la segunda de las recomendaciones ya dada.

Creo que usted está manejando en una forma aceptable, solo tienes que tener cuidado de que tan rápido la tarjeta envía los datos, hemos inalámbrico escáner de código de barras, y ahora y de nuevo un tiro de pulsaciones de teclas en el teclado rápido para la aplicación de manejar.

también si va a distribuir su software a otros territorios, a continuación, la tecla de stokes puede ser diferente, por ejemplo en España (creo, pero puede ser Francia) la línea superior del teclado es !"£$%^&() se opuso a los estados UNIDOS/reino unido 1234567890, y si el lector de tarjetas se establece en estados unidos/reino unido, a continuación, se va a enviar !"£$%^&() en lugar de 1234567890, como la cuña sólo emula a que tecla pulsar y si windows lo interpreta diferente, entonces es su problema.

Otro voto para jttraino la idea.Yo hago la misma con la tarjeta de lectores y el cheque-lectores en el punto de venta en los sistemas donde necesitamos el apoyo de emulación de teclado, así como USB y RS232.

Básicamente, elegir una corta secuencia de caracteres raro venir desde el teclado, y el programa de su ciclo de manejo de mensajes para ver a estos personajes de llegar.Si usted obtiene completado una secuencia de caracteres que coincida con su patrón, puede descodificar el resto de su entrada hasta llegar a su designado de la 'final' de la secuencia, o hasta que decida el entrante de la secuencia está en el error.Seleccione una cadena que es difícil, o imposible, para introducir desde el teclado normal en su aplicación dado las cosas como editar máscaras y el comportamiento de sus diferentes pantallas.

Un buen punto de partida es algo así como tilda-pling (~!) como esos personajes no son susceptibles de aparecer en cualquier persona y sus datos personales no es probable que necesite alguna vez a aparecer juntos en el texto de una nota, etc.:-)

La desventaja, exactamente como jttraino dijo, es que usted probablemente tendrá que configurar/programar cada dispositivo de lector de sí mismo.Algunos fabricantes hacen que esta bastante fácil de hacer, cuyo kit estás usando?Magtek?Welch Allyn?

En la segunda @jttraino la idea.

Es el camino a seguir para la barra de exploración/lectores de código y otros dispositivos que son plug and play (PnP).He utilizado la misma técnica para configurar un par de barras 1D y 2D de los escáneres de códigos en mi anterior asignación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top