Datei kopieren via Barcode

  • Hallo zusammen,

    ich bin hier neu im Forum und unternehme gerade die ersten Gehversuche mit AutoIt. Für mein Vorhaben "Datei kopieren via Barcode" konnte ich kein passendes Tool finden, bis ich auf AutoIt gestoßen bin. Es soll beim scannen eines Barcodes, ein bestimmter Dateityp .rcp im Zielordner gelöscht und die entsprechende Datei in den Zielordner kopiert werden. Anfangs dachte ich "cool klappt alles wunderbar" aber aber momentan bin ich etwas am verzweifeln. Sobald das Script mehrere Funktionen enthält, springt es zur letzten Funktion und versucht diese auszuführen, was ich mir nicht erklären kann.
    Mein Barcodescanner Symbold LS22208 sendet ALT- und übergibt die Zeichen, was mit einem einzelnen Teil im Script auch wunderbar klappt. Zum "Keylogger" reichen die AutoIt Kenntnisse nicht aus, deshalb verwende ich die HotKeySet Funktion, was man sicher eleganter lösen könnte. Sollte die HotKeySet Funktion auch mit dieser Anzahl an Hot Keys auch funktionieren oder gibt es ein Limit dafür?

    Beste Grüße,

    Stephan

    Spoiler anzeigen
  • Ich denke HotKeySet ist der falsche Ansatz, da ja alle Tasten gleichzeitig gedrückt werden müsten der Barcodescanner sie aber warscheins nacheinander ausgibt. Besser wäre imho eine kleine Gui welche die Teilenr empfängt und nach Enter (Default-Button) eine Routine anspringt die das umkopieren nach Stringmanipulation der Eingabe übernimmt. Da ja klare Regeln für die Abhängigkeit der Dateipfade bestehen ist dies die einfachste Variante.

    Edit: Da du bei jedem Aufruf einer HotKeySet-Funktion auch alle *.rcp Dateien im Zielordner löschst kann logischerweise nur das zuletzt kopierte im Zielordner sein.

    Edit2: Hier ein kleines Skript das die nötigen Stringmanipulationen zeigt. Wenn du deinem Scanner beibringen kannst, das er nach der Teile-Nr. noch Chr(13)=Entertaste sendet ist es sogar für deine Bedürnisse lauffähig:ManipulateString.au3

    2 Mal editiert, zuletzt von autoBert (20. Januar 2016 um 14:52)

  • Hallo autoBert,

    danke für das Script, nach dem Quellordner kommen noch unterschiedliche Ordner die ich berücksichtigen muss, ich hatte es der Übersichtlichkeit halber angepasst. Ich werde versuchen das Script ein wenig anzupassen und mit $input zu arbeiten. Die GUI würde ich an dieser Stelle weglassen, das Script soll ruhig im Hintergrund liegen.

    Beste Grüße,

    Stephan

  • Ich kann einen "AS-8000" Scanner empfehlen, wenn die Geldbörse nicht zu pralle ist oder Du den Scanner nicht acht Stunden am Tag einsetzt, wie es z. B. bei Kaufhäusern ist.
    Link: http://www.argox.com/content2011.php?sno=0000075&P_ID=34

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Bin gerade (beim suchen nach etwas anderem zufällig) auf @HotKeyPressed gestossen, dies wäre evtl. die Lösungsmöglichkeit ohne GUI und schlanckem Skriptcode, einfach einmal das 2. Beispiel in der Hilfe zu HotKeySet anschauen. Gleichzeichtig kannst du damit auch überprüfen ob alle deine Zeichen von HotKeySet übergeben werden.

  • Mahlzeit,

    entschuldige die späte Antwort, ich bin nicht wirklich zum Testen gekommen. Ich habe folgendes Script zum Test erstellt.

    Spoiler anzeigen

    Scanne ich 11, erhalte ich zwei Nachrichten 1 und 1. Scanne ich 115, erhalte ich drei Nachrichten 1, 5, 5. Ist der Code völlig falsch oder könnte es an der Übertragung liegen, das nicht alle Tasten gleichzeitig gedrückt werden?

    Beste Grüße, Stephan

  • Ich habe zwar noch nie mit einem Scanner zusammen mit AutoIT gearbeitet. Aus anderen Sprachen erinnere ich mich jedoch daran, daß ein Scanner Tastenanschläge (einen nach dem anderen) simuliert. Aus diesem Grund auch #2 von mir. Teste also bitte das dort angehängte Script und gib danach einen Statusbericht ab.

  • Der Test mit dem Script #2 aus der Hilfe hat funktioniert, wobei ich nur ALT-d über den Barcodescanner eingegeben habe. Mit einer kleinen Änderung, kann das Verhalten des Scanners gut nachvollzogen werden. Für die Pause Funktion habe ich !d verwendet und zur Ausgabe von "This is a message." !dd. Im Trace ist zu sehen das HotKeyPressd zwei Mal ausgeführt wird, "This is a message." wird also nie angezeigt.
    Bei dem Script im ersten Post, wird unmittelbar die Funktion Teil036_GC ausgeführt, egal was ich scanne. Müsste nicht eine davorliegende Funktion gegriffen werden?