Verwenden des tragbaren QR-Code-Scanners zum Starten des Programms und Ausführen von Aktionen

Ich greife hier vielleicht nach dem Mond, aber das ist mein Ziel. Ich habe ein MIS-Programm für unsere Jobs und wir möchten einen Scanner verwenden, um das Jobticket zu scannen und das Programm zu starten.

Ich weiß nicht viel über Python oder Programmcodierung. Mein Hintergrund ist Webentwickler, aber ich lerne schnell und wirklich, Codieren ist Codieren. Unterschiedliche Typen haben einfach unterschiedliche Regeln/Sprachen für "wenn das, dann tu das". Ich weiß, es ist komplexer als das, aber das ist die vereinfachte Sichtweise.

Ich habe hier eine Lösung gefunden: Industrial Handheld QRCode Scanner Open URL in Browser , die die webbasierte Version der Software verwendet, aber das ist nicht das, was der Chef will.

Was er will ist folgendes:

  1. Barcode scannen
  2. Programm startet automatisch (oder geht zum Programm, wenn es bereits geöffnet ist)
  3. Öffnet automatisch einen bestimmten Bereich
  4. Automatische Auswahl der Option aus den oberen Menüs
  5. Auto fügt die vom Scan erfassten Daten in ein leeres Feld ein
  6. Auto-Hits "Enter", um einen bestimmten Job zu laden
  7. Das Skript wird auf „bereit“ zurückgesetzt und wartet auf den nächsten Scan

Alles vom Scannen eines Barcodes ohne weitere Benutzerinteraktion.

Dies wird auf Windows 7-Rechnern ausgeführt. Es sieht so aus, als wäre EvDev ein guter Ausgangspunkt ( http://python-evdev.readthedocs.io/en/latest/tutorial.html ), aber es scheint nur Linux-Installationsprogramme zu haben.

Wenn jemand zumindest in die grobe Richtung zeigen kann, kann ich es wahrscheinlich herausfinden. Ich bin mir nur nicht sicher, wie ich die Eingabe auf nur Eingaben vom Scanner beschränken und dann die Ausführung des Codes auslösen soll, und auch, wie ich ihm sagen soll, dass er bestimmte Dinge innerhalb des Programms tun soll.

Danke für die Hilfe!

in "2. Programm automatisch starten (oder zum Programm wechseln, wenn bereits geöffnet)" ist nicht klar, ob Sie sich auf ein Programm beziehen, das Sie selbst codieren, oder auf eine Drittanbieter-App.
ein Drittanbieterprogramm. In diesem Fall sollte ein Webbrowser mit einer bestimmten Adresse gestartet werden.

Antworten (1)

Der erste Schritt ist das Generieren der QR-Codes, dafür können Sie eine Reihe von Bibliotheken verwenden – mein Favorit dafür ist PyQrCode .

Sie können Bilder mit ZBar- Python-Bindungen decodieren, aber derzeit gibt es keine fertigen Build-Binärdateien für Python 2.7 oder 3.5 auf Pypi - dies kann sich in naher Zukunft ändern oder Sie müssen Ihre eigenen erstellen.

Es gibt hier auch einen sehr guten Artikel , der die Verwendung einer Webcam zum Erkennen und Erfassen von QR-Codes behandelt.

Sobald Sie Ihren QR-Code entschlüsselt haben, müssen Sie die Anwendung finden und möglicherweise starten und die Daten dorthin übertragen. Wenn die Anwendung über eine COM - Schnittstelle verfügt, kann Python sie direkt mit comtypes aufrufen , wenn nicht, gibt es noch einige Mechanismen, die verwendet werden können.

Um die QR-Codes einzuschränken, auf die es reagiert, können Sie die bereits für QR-Codes verwendete Konvention verwenden, den Informationen ein Aktions-Tag voranzustellen, z. B. werden Telefonnummern normalerweise vorangestellt tel:usw. Ich würde empfehlen, eine ähnliche Syntax wie bei URLs zu verwenden, um Aktionen zu unterscheiden &-Felder, z. B. ourtag:anaction?f1=val1;f2=val2- Sie können die Aktion für ourtagmit Ihrem Programm verknüpfen, anactionmit der auszuführenden Aktion f1, usw., wären Feldkennungen usw., dies ist ganz einfach zu analysieren und dann anzuwenden.

Ich habe das Teil fertig eingerichtet. Wir verwenden tragbare 2D-USB-Scanner. Und ich habe die Anfänge des Skripts (siehe Link oben), um ihm zu sagen, was mit den gescannten Informationen zu tun ist, die für meine Anwendungsanforderungen spezifisch sind. Dieses Skript funktioniert, um zu einer URL zu leiten und diese zu starten, aber mein Chef ist damit nicht zufrieden, er möchte direkt in das Programm gehen, und da bleibe ich hängen. Ich habe ein paar Hilfestellungen zum Starten eines Programms gefunden, aber ich bin mir nicht ganz sicher, wie ich sie in das Skript implementieren oder ihm sagen soll, was es tun soll, wenn das Programm gestartet wird.
Woran erkenne ich, ob die Software eine COM-Schnittstelle hat?
@Alith7 - Die einzige wirkliche Antwort ist, die Dokumentation und/oder den Code der Anwendung zu konsultieren - einige Anwendungen registrieren ihre COM/OLE-Schnittstellen auf eine Weise, die mit einem Objektbrowser untersucht werden kann msdn.microsoft.com/en-us/library/ exy1facf (v=vs.100) die Software.
Steve, "wenn die Anwendung eine COM-Schnittstelle hat ..." Nicht alle werden es tun, warum also nicht einfach eine eigene App bereitstellen? Für die Automatisierung von Windows-Apps gibt es einfach nichts Vergleichbares zu Auto-it , das problemlos 2 -> 6 in wenigen Codezeilen verarbeiten kann.
@Maug Das ist ein interessantes Programm. Dies könnte eine bessere Antwort sein als die manipulierte Art und Weise, wie ich es letztendlich getan habe. Ich muss es herunterladen und überprüfen. Danke schön!