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
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.
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.
Después de algunas investigaciones sobre esto implementé como jarnbjo mencionado con un puerto serie virtual, un ejemplo es here (ver mi respuesta).
- 1. C# WinForms resalta treenode cuando treeview no tiene foco
- 2. Como encontrar de forma fiable la ventana en primer plano cuando no tiene el foco
- 3. Imprimir flujo de código fuente cuando se ejecuta el programa
- 4. GZipStream no lee todo el archivo
- 5. API para el escáner de código de barras IOS PDF417
- 6. Bash: caracteres especiales se perdieron cuando se lee el archivo
- 7. El escáner no lee la oración completa
- 8. comportamiento extraño cuando se lee en el int de STDIN
- 9. Spinner no obtiene el foco
- 10. Se perdió el formateo de TextBox cuando el foco cambia
- 11. Eclipse Juno: cómo minimizar las vistas cuando pierden el foco?
- 12. obtener el código de barras valor lector de forma monitoreo
- 13. Ejecutar la función cuando se presiona enter si el cuadro de texto tiene foco
- 14. ¿Cómo enviar un formulario al ingresar cuando el área de texto tiene foco?
- 15. ¿Cómo establece programáticamente el foco en SelectedItem en un WPF ListBox que ya tiene foco?
- 16. editTexto no está perdiendo el foco
- 17. Borrar el foco EditText cuando se presiona el botón Atrás cuando el teclado está mostrando
- 18. Tiene problemas con el gráfico de barras jqPlot
- 19. ¿Cómo elimino el borde amarillo cuando un objeto tiene foco en Flash?
- 20. ¿Cómo determinar cuándo NSTextFieldCell isHighlighted no tiene foco?
- 21. ¿Cómo hacer que el elemento no pierda el foco cuando se presiona el botón?
- 22. Código de lector de código de barras Delphi
- 23. El objeto no tiene el método 'reemplazar'
- 24. programa externo de parada cuando el programa Java se detuvo
- 25. ¿Quitar el foco programmatically?
- 26. ¿Cómo pruebo qué elemento tiene el foco en Selenium RC?
- 27. wxPython: ¿Cómo averiguo qué widget tiene el foco?
- 28. Cómo averiguar qué objeto tiene actualmente el foco
- 29. cómo saber si un UITextView tiene un foco o no
- 30. ¿El programa Clojure no sale cuando finaliza la última declaración?
Algunos también actúan como USB HID. – Brad
@Brad: que puede o no significar emulación de teclado. – PleaseStand
@idealmachine, sí, eso es lo que quise decir. USB HID con su propio tipo de informe. – Brad