2010-11-22 8 views
7

Me gustaría escribir un programa simple que lea un código de barras, y anote el código de barras, así como la hora en que se escaneó. Lamentablemente, no puedo garantizar que el programa tenga foco cuando se escanee el código. Según entiendo, la mayoría de los escáneres de código de barras funcionan como un teclado, por lo que si el programa no tiene foco, tendré problemas. ¿Cuáles son las formas de lidiar con esto? Tenga en cuenta que prefiero codificar esto en Java pero puedo usar .net si las bibliotecas lo hacen más fácil. Tampoco tengo un escáner específico en mente, así que si un modelo funciona mejor, la información sería apreciada. He visto this question pero asume que la aplicación tiene foco.¿Lee el código de barras cuando el programa no tiene foco?

Respuesta

2

La mayoría de los escáneres de códigos de barras se comportan como un teclado, por lo tanto, requieren que la aplicación de procesamiento tenga un foco de entrada. Sin embargo, también hay escáneres de códigos de barras, que se conectan al puerto serie o están conectados al USB y ofrecen una interfaz de puerto serial virtual.

Se debe acceder a estos escáneres a través del puerto en serie real o virtual. Para Java, deberá usar la API de comunicaciones de Java o cualquier otra biblioteca de terceros que ofrezca acceso a los puertos seriales, ya que esto no es posible con la API estándar de Java.

+0

Algunos también actúan como USB HID. – Brad

+0

@Brad: que puede o no significar emulación de teclado. – PleaseStand

+0

@idealmachine, sí, eso es lo que quise decir. USB HID con su propio tipo de informe. – Brad

2

La mayoría de los escáneres de códigos de barras con cuña de teclado se pueden configurar (mediante códigos de barras de configuración) para emular la pulsación de una tecla de función antes de enviar los datos del código de barras. La API de Windows incluye un RegisterHotkey function para definir teclas rápidas en todo el sistema. Cuando se presiona la tecla de acceso directo, puede enfocar la ventana de su programa para leer el código de barras.

Una búsqueda en Google revela un library para registrar teclas rápidas de todo el sistema desde Java. También hay un question on this site al respecto, lo que parece sugerir que no hay una biblioteca disponible públicamente para hacerlo en Mac OS X, aunque uno de los que respondieron publicó un enlace a dicha biblioteca que estaba desarrollando.

0

Después de algunas investigaciones sobre esto implementé como jarnbjo mencionado con un puerto serie virtual, un ejemplo es here (ver mi respuesta).

Cuestiones relacionadas