Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

  • Hallo zusammen,

    ich suche eine Möglichkeit über AutoIT die Eingabe über einen Barcodescanner direkt in eine Variable zu speichern, ohne über eine Inputbox oder sonstige Eingabefelde zu gehen.

    Kann man den String vom Scanner evtl. am abschliessenden "Enter" erkennen, bzw. abtrennen ? Ich habe hier schon gesucht, leider habe ich nichts passendes gefunden, das was ich gefunden habe gibt auch immer den Inhalt des Scans aus.

    Gibt es vielleicht eine Funktion, die ich mir da genauer ansehen kann ? Ich bin für jeden Hinweis dankbar.

    Hintergrund der Funktion ist es, ich möchte eine Art mini Digital Signage aufbauen, welche eine einfache HTML Seite über Edge darstellt und in bestimmten Intervallen diese aktualisiert wird.

    Und eben in dieser Ansicht möchte ich noch die Möglichkeit schaffen, einen Barcode zu erfassen und diesen wegzuschieben, aber eben ohne die Ansicht der HTML Seite zu beeinflussen bzw. durch eine Inputbox den Ablauf zu behindern.

    Vorab schon mal besten Dank für eure Unterstützung.

  • ich suche eine Möglichkeit über AutoIT die Eingabe über einen Barcodescanner direkt in eine Variable zu speichern, ohne über eine Inputbox oder sonstige Eingabefelde zu gehen.

    Ich habe bisher nur mit einem Barcodescanner gearbeitet. Aber egal, ob über Bluetooth oder USB angeschlossen - er wird als Eingabegerät behandelt.

    Das erfordert somit, dass vor dem Übertragen des Scanner Speichers (oder dem direkten Scan) sich der Cursor in einem Eingabefeld befindet.

    Alternativ kann man (zumindest bei meinem Scanner) einen Hotkey vor dem Übertragen der Daten senden lassen. Damit öffne ich z.B. eine Excel Tabelle, in die dann alle Daten des Scanners in die Zellen einer Spalte untereinander eingetragen werden.

    Soweit mir bisher bekannt ist, benötigt der Scanner ein Eingabefeld in einem aktiven Fenster um seine Daten zu übertragen. Da geht nix mit im Hintergrund arbeiten.

  • Hi,

    Für den Rechner ist der Scanner, je nach Konfiguration, nichts weiter als eine Tastatur.

    Du musst also nur die Tastaturcodes abfragen, Oscar hat hier ein entsprechendes Script vorgestellt.

    Ich benutze, da in meiner Anwendung Scanner und Tastatur gleichzeitig verwendet werden können, am Scanner einen identifizierenden Präfix, der nicht ohne weiteres per Tastatur dargestellt werden kann, ich nutze ASCII-Code 220 oder sonst einen esoterischen Code. Der Postfix ist CRLF.

    In der Anwendung wird jetzt bspw. von Anwender A ein Text eingegeben, gleichzeitig scannt Anwender B einen Barcode.

    Der Tastaturevent wird ausgewertet, jeder "normale" Tastaturcode wird nicht beachtet, d.h. an die Anwendung weitergegeben.

    Erkennt das Script im Tastaturevent den Präfix (ASCII 220), dann ist alles bis zum irgendwann folgenden CRLF der eingescannte Code.

    So kann man auch mehrere Scanner gleichzeitig an einem Rechner betreiben, das Script weist dann die Scancodes anhand des (logischerweise je Scanner unterschiedlichen) Präfix der entsprechenden Software und deren Inputfeldern oder anderen Eingabecontrols zu.

    Aber das musst du individuell auf deine Anwendung anpassen...

  • Moin.

    Wir haben einen Scanner der wird via USB einfach zur Tastatur dazu "gesteckt".
    Wenn ich dann z. B. einen Code einscannen möchte, gehe ich auf das Feld wo der eingescannte Wert stehen soll.

    Wir haben aber auch einen Scanner, der scannt, sobald ein Scanncode in Reichweite ist. Das wird aber über eine zum Scanner mitgelieferten Treiber.

    Schreib uns doch mal welchen Scanner verwendet wird? Dann kann man im Netz nämlich sehen, was möglich ist und ob es dafür evtl. eine "Schnittestellenbeschreibung" gibt.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • gert_nrw_71: Du wirst entweder ein sichtbares Inputfeld benötigen oder du musst, was BugFix schon vorgeschlagen hat, versuchen mit einem angehängten Prefix (Scanner konfiguration) UND einem versteckten Inputfeld arbeiten.

    Sie können ein Präfix oder Postfix verwenden, um Tastencodes wie Sonderzeichen, Wagenrücklauf oder Tabulatorzeichen vor oder nach den Strichcodedaten hinzuzufügen.

    Letzteres habe ich noch nie probiert, könnte mir auch vorstellen das es von der zeitlichen Abfolge Probleme geben könnte aber das Prinzip würde ich mir so vorstellen:

    Ich würde daher mal behaupten der beste Weg wäre ein sichtbares Inputfeld.

    Ansonsten schau dir das mal an: https://www.autoitscript.com/forum/topic/18…f-com-port-udf/

  • Schau mal in meinen Post vom 15.09.2021:

    emulierte Tastatureingabe eines RFID-Scanners in Variable schreiben

    emulierte Tastatureingabe eines RFID-Scanners in Variable schreiben

    Da wird das Thema behandelt. Bei mir ist es halt ein RFID-Scanner gewesen. Dieser ist aber auch als "Tastatur" konfiguriert.

    Ob das Einlesen eines QR-Codes in ein Textfeld abgeschlossen ist werte ich so aus:

    Hoffe das hilft weiter 8);)

  • Moombas:
    Prä- / Postfix

    Das habe ich gemeint, als ich schrieb, das er uns bitte sein Scannermodel nennen möchte.
    Ich weiß, das bei uns bei dem einen PC wo der eine Scanner angeschlossen ist, ist ein Postfix irgendwo drinne. Leider habe ich das Script derzeitig nicht zur Verfügung, aber irgendwo bei meinen Beiträgen müsste was zu finden sein. Wenn ich z. B. in einer Exceltabelle Daten einscannen möchte, brauche ich nur einscannen, das <Enter und das springen in die nächste Zelle wurde via Postfix gesteuert. Und das habe ich auch so, das es in eine Textdatei gespeichert wird.
    Meine erste Lsg. damals war ein unsichtbares Inputfeld in das gescannt wurde und immer wenn etwas in dem Feld war hat das Script Enter gedrückt. Ich muss sehen, wenn ich wieder Auto fahren darf, das ich es mal raus suche. Hier bei mir ging es um Handscanne für den Strichcode der z. B. auf Lebensmittel eingescannt wird.

    Reden wir nun von so einen Scanner oder über RFID Scanner? :/

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Reden wir nun von so einen Scanner oder über RFID Scanner?

    Eigentlich egal, wenn beide eine USB-Tastatur emulieren.

    Das Problem, bei gleichzeitiger Benutzung von Scanner und normaler Tastatur ist, dass man erkennen muss, welche Eingabe woher kommt.

    Wenn der Scanner ein Prä-/Postfix sendet, kann man alle Eingaben vom Prä- bis zum Postfix abfangen (Tastatur-Hook) und entsprechend verwenden. Andy hat das oben bereits erwähnt.

  • versucht, die Scannereingaben über _WinAPI_RegisterRawInputDevices() abzugreifen?

    Habe ich nicht.

    Die Bsp. zu der Funktion sind eine (in meinen Augen) etwas komplizierte Form eines Hooks. All das, was dort getan wird, erledigt man üblicherweise mit einem Hook.

    Aber ja: Da mit einem Hook der Keyboard-Input abgefangen werden kann, lässt sich das sicher auch mit obiger Funktion erledigen.

  • Der Vorteil läge für mich darin, dass sich die Eingaben einem bestimmten Gerät zuordnen lassen. Vermischungen mit anderen Eingaben können so vermieden werden.

  • hat schon mal jemand versucht, die Scannereingaben über _WinAPI_RegisterRawInputDevices() abzugreifen?

    Das ließ mir keine Ruhe!

    Die Idee ist gut, weil man damit auch ohne Präfix auskommt. Ich habe mal ein Script erstellt:

    Ich habe nur nicht herausbekommen, wie man die Zeichen (die man vom Scanner abfängt) aus dem Tastaturpuffer löschen kann. Sie werden immer an das aktive Input-Control gesendet (auch bei einem "Return 0").

    Deswegen habe ich einen Workaround mit einem Dummy-Input eingebaut.

    So funktionieren zumindest beide Eingaben "gleichzeitig".

  • Hi,

    besten Dank für eure Bemühungen, Oscar, dein letzter Ansatz funktioniert bei mir einwandfrei, jedoch kann ich ihn nicht so übernehmen, da die Eingabe über eine Inputbox erfolgt ?

    In meiner Anwendung benötige ich eine Eingabe ohne diese.

    Ich habe mittlerweile auch eine Lösung gefunden, ich denke die kann ich einsetzen, probiere aktuell noch damit rum, die braucht jedoch ein Präfix zur Erkennung.

    Was ist eigentlich ein Hook ?

  • Was ist eigentlich ein Hook ?

    Die wörtliche Übersetzung trifft es ganz gut: Haken.

    Ein Hook hakt sich z.B. in den Nachrichtenstrom zwischen Tastatur und System ein. Jetzt kann man jede Tastatureingabe abfangen, manipulieren oder verwerfen, bevor diese normal das System erreicht.

    Bsp.: Taste "ä" wird gedrückt. In der Hook Prozedur wird dieses Event verworfen und stattdessen an das System die Tastenfolge "ae" geleitet.

    Ich hatte vor Jahren mal einige Hook-Bsp. gepostet. Sollte über die Suche auffindbar sein.


  • Hallo Oscar,

    Zitat

    Ich habe nur nicht herausbekommen, wie man die Zeichen (die man vom Scanner abfängt) aus dem Tastaturpuffer löschen kann.

    mit Return -1 vielleicht...

    Mir wurde nach dem Scannen das letzte eingescannte Zeichen immer in das nächste aktive Eingabefeld geschrieben, egal ob im Programm oder wenn ich danach z.B. ein Browser.- oder Editorfenster öffnete.
    Erst mit Return -1 hörte das auf.