Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

  • Oscar , die Beep habe ich mal rausgenommen, löst aber mein Problem nicht.

    Mein Script öffnet und aktualisiert in definierten Intervallen eine HTML Seite, die aus Excel erzeugt wird.

    Auf dieser HTML Seite werden Arbeitsaufträge dargestellt, mit einer fortlaufenden eindeutigen Nummer.

    Über den Scanner soll dann der Status "Beginn" & "Fertig" gesetzt werden, für jeden Scannvorgang soll eine Datei angelegt werden ID123_Start und ID123_Fertig. Ebenfalls wird durch den Scan die HTML Seite angepasst, sodass je nach Status der Eintrag farbig hinterlegt wird.

    Das alles funktioniert auch soweit, jedoch wenn der User zu schnell scannt, werden die Daten nicht mehr erfasst und der Scanner ist "Tod", nur ein Neustart des Skripts hilft den Scanner wieder zu aktivieren. Ich habe es soweit eingrenzen können das es mit dem Hook zusammen hängt.

    Ich habe es jetzt erstmal so gelöst, dass der Hook vor dem verarbeiten der Statusdateien ausgeschaltet und nach dem erstellen der Dateien wieder eingeschaltet wird. Scannt man nun wie "wild" wird zwar nicht mehr alles verarbeitet, aber der Hook hängt sich auch nicht mehr auf.

  • Die Datenbasis ist ein Excel Sheet, das war der Wunsch das über Excel abzubilden. Über das Excel Sheet werden für 4 Gewerke die Übersichten erstellt (HTML Seiten). Jetzt kam noch der Wunsch dazu, den Status auf Basis der HTML Seiten einzuscannen. Da ich keine Möglichkeit gefunden habe direkt auf das zentrale Excel Sheet zuzugreifen, zumal das den ganzen Tag für die Planung geöffnet ist, kam mir die Idee den Status in Textdateien wegzuschreiben und diese über ein VBA Script in das zentrale Excel Sheet einzulesen. Ich hoffe das ist einigermaßen nachvollziehbar ?

  • Msg Box im Script einbauen.... Nächsten Scan starten..... Mitarbeiter Scannt nicht mehr ... wie wild. Script auf Laufzeit untersuchen z.B langsamme "Netzwerkzugriffe" durch schnellerer temp Daten auf localer Ebene ersetzen usw. usw. Tastaturpuffer geziehlt leeren?

    MFG

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Mein Script öffnet und aktualisiert in definierten Intervallen eine HTML Seite, die aus Excel erzeugt wird.

    Moin,

    läuft das Scannen in einem eigenen Skript oder hast Du alles in ein Skript gesteckt?

    Wenn die vom System aufgerufenen Hookprozeduren nicht in angemessener Zeit beendet werden, entfernen die 'moderneren' Windows Versionen den Hook gnadenlos und endgültig. Das könnte erklären, warum das Skript nicht mehr auf den Scanner reagiert. Andererseits ist nicht ersichtlich, weshalb die Hookprozedur die maximale Zeit überschreiten sollte. Der Code tut ja nichts Aufregendes.

  • 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.

    Jetzt einmal von mir gedacht. Also rein vom Gedanken her.

    Was stört dich daran ein Eingabefeld zu erstellen? Schieb es doch einfach aus dem Fenster raus. Also ich meine aus dem Sichtbereich des Displays. Dann wäre es da, aber es wird nicht gesehen.
    Das sollte irgenwie doch möglich sein. Und dann den Wert vom Eingabefeld in eine Varable "schieben".

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo, ich hätte noch einen anderen Ansatz:

    ich hatte bei meinem HW-Buchungstool fast das gleiche Problem: ich konnte nur einmal Scannen dann hing sich die Hookprozedur auf. Selbst mit Hilfe der Spezialisten hier im Forum
    konnte nicht festgestellt werden warum das so war. Ich vermute, dass es mit der wie von Velted beschriebenen Änderung im OS zusammenhängt, wonach die Hookprozedur nur eine
    knappe Sekunde lebt und dann vom OS gekillt wird. Ich hatte das so gelöst: ich habe die Hookprozedur in eine exe ausgelagert. Diese wird per Buttonklick aufgerufen, dann wird gescannt und dann der eingescannte Text
    durch das aufrufende HW-Buchungstool ausgewertet. Damit ist sichergestellt, dass die Hookprozedur nur den Scan einliest und kein weiterer Code in der Hook-Proz aus geführt wird oder diese "stört".
    Zudem muss ich mir keine Sorgen mehr machen ob der Hook noch läuft und andere Eingaben blockiert und ich ihn deaktivere und später wieder aktiviere... Ob diese Lösung für deinen Anwendungsfall "performant" genug ist kann ich natürlich nicht beurteilen. Bei mir jedenfalls funzt das so einwandfrei aber bei mir wird auch kein Massenscan gemacht...

    siehe auch den Hinweis unter https://learn.microsoft.com/de-de/windows/…msg/about-hooks

    "...Hooks neigen dazu, das System zu verlangsamen, da sie die Menge der Verarbeitung des Systems für jede
    Nachricht erhöhen müssen. Sie sollten einen Hook nur bei Bedarf installieren und so bald wie möglich entfernen..."

    und ein Mitschnitt aus meiner Unterhaltung wegen des Probs seinerzeit mit Bugfix:

    ".... könnte uns das in die Suppe spucken(gefunden bei LowLevelKeyboardProc callback function auf MS-Seite):

    ...der Wert wird in Millisekunden angegeben. Wenn die Hook-Prozedur eine Zeitüberschreitung aufweist, übergibt das System die Nachricht an den nächsten Hook. Unter Windows 7 und höher wird der Hook jedoch stillschweigend entfernt, ohne aufgerufen zu werden. Es gibt keine Möglichkeit für die Anwendung zu wissen, ob der Hook entfernt wurde.

    Windows 10 Version 1709 und höher Der maximale Timeout-Wert, den das System zulässt, beträgt 1000 Millisekunden (1 Sekunde).

    Das System verwendet standardmäßig eine Zeitüberschreitung von 1000 Millisekunden, wenn der Wert LowLevelHooksTimeout auf einen Wert größer als 1000 gesetzt wird ..."

    3 Mal editiert, zuletzt von hipfzwirgel (21. Dezember 2022 um 10:08)

  • @hipfzwirgel

    ja, das kommt von der Vorgehensweise, meinen Ansätzen sehr entgegen. Vorgänge in exes auslagern über die man die Kontrolle hat und nur starten wenn nötig. Wenn man das ganze dann noch zu der Autoit exe in passende Unterverzeichnisse packt, das ganze eimal durchdenkt, wird ein eigener, brauchbarer, Stiel daraus.

    LG

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

    Einmal editiert, zuletzt von Peter S. Taler (23. Dezember 2022 um 21:38)