Uso del escáner de código QR de mano para iniciar el programa y realizar la acción

Puede que esté buscando la luna aquí, pero esta es mi meta. Tengo un programa MIS para nuestros trabajos y buscamos usar un escáner para escanear el ticket de trabajo e iniciar el programa.

No sé mucho sobre Python o la codificación de programas. Mi experiencia es desarrolladora web, pero aprendo rápido y realmente, la codificación es la codificación. Los diferentes tipos simplemente tienen diferentes reglas/idiomas para decir "si esto, entonces haz esto". Sé que es más complejo que eso, pero esa es la forma simplificada de verlo.

Se me ocurrió una solución aquí: Industrial Handheld QRCode Scanner Open URL in Browser que usa la versión web del software, pero eso no es lo que quiere el jefe.

Lo que quiere es esto:

  1. Escanear código de barras
  2. El programa se inicia automáticamente (o va al programa si ya está abierto)
  3. Auto abre un área específica
  4. Opción de selección automática de los menús superiores
  5. Auto ingresa los datos recogidos del escaneo en un campo vacío
  6. Pulsa automáticamente "enter" para cargar un trabajo específico
  7. El script se restablece a "listo" esperando el próximo escaneo

Todo desde escanear un código de barras sin ninguna otra interacción del usuario.

Esto se ejecutará en máquinas con Windows 7. Parece que EvDev podría ser un buen lugar para comenzar ( http://python-evdev.readthedocs.io/en/latest/tutorial.html ), pero parece que solo tiene instaladores de Linux.

Si alguien puede al menos señalar en la dirección aproximada, probablemente pueda resolverlo. Simplemente no estoy seguro de cómo limitar la entrada solo a las entradas del escáner y luego activar el código para que se ejecute, y también, cómo decirle que haga ciertas cosas dentro del programa.

¡Gracias por la ayuda!

en "2. El programa se inicia automáticamente (o va al programa si ya está abierto)" no está claro si se refiere a un programa que codificará usted mismo o a una aplicación de terceros.
un programa de terceros. En este caso, fue para iniciar un navegador web con una dirección específica.

Respuestas (1)

El primer paso es generar los códigos QR para esto, puede usar varias bibliotecas; mi favorita para esto es PyQrCode .

Puede decodificar imágenes utilizando enlaces de python ZBar , pero actualmente no hay binarios de compilación listos para Python 2.7 o 3.5 en pypi ; esto puede cambiar en un futuro cercano o tendrá que crear uno propio.

También hay un artículo muy bueno aquí que cubre el uso de una cámara web para detectar y capturar códigos QR.

Una vez que haya decodificado su código QR, debe encontrar y posiblemente iniciar la aplicación y transferirle los datos, si la aplicación tiene una interfaz COM , Python puede llamarla directamente usando comtypes, si no, todavía hay algunos mecanismos que se pueden usar.

Para limitar los códigos QR a los que responde, puede usar la convención ya utilizada para los códigos QR de prefijar la información con una etiqueta de acción, por ejemplo, los números de teléfono normalmente tienen un prefijo tel:, etc. Recomendaría usar una sintaxis similar a las URL para distinguir acciones & campos, por ejemplo ourtag:anaction?f1=val1;f2=val2, puede asociar la acción para ourtagcon su programa, anactioncon qué acción realizar f1, etc., serían identificadores de campo, etc., esto es bastante simple de analizar y luego aplicar.

Tengo esa parte toda configurada. Estamos utilizando escáneres USB 2D de mano. Y tengo los inicios de la secuencia de comandos (consulte el enlace anterior) para indicarle qué hacer con la información escaneada específica para las necesidades de mi aplicación. Ese script funciona para dirigir y lanzar una URL, pero mi jefe no está contento con eso, quiere ir directamente al programa y ahí es donde me estoy atascando. Encontré algunas cosas de ayuda para iniciar un programa, pero no estoy exactamente seguro de cómo implementarlas en el script, o cómo decirle qué hacer una vez que se inicia el programa.
¿Cómo puedo saber si el software tiene una interfaz COM?
@Alith7: la única respuesta real es consultar la documentación y/o el código de la aplicación: algunas aplicaciones registran sus interfaces COM/OLE de una manera que se puede explorar con un navegador de objetos msdn.microsoft.com/en-us/library/ exy1facf(v=vs.100).aspx o c:\Python27\Lib\site-packages\win32com\client\makepy.py y vea si la aplicación está en la lista; si lo está, selecciónela o pregunte a la empresa que escribió El software.
Steve, "si la aplicación tiene una interfaz COM..." No todos la tendrán, así que ¿por qué no proporcionar simplemente su propia aplicación? Para la automatización de aplicaciones de Windows, simplemente no hay nada que coincida con Auto-it , que puede manejar fácilmente 2 -> 6 en unas pocas líneas de código.
@Maug Este es un programa interesante. esta podría ser una mejor respuesta que la forma manipulada en que terminé haciéndolo. Tendré que descargarlo y comprobarlo. ¡Gracias!