Hilfe bei Scannereingabe in ein Textfeld

  • Moinsen,
    vorab; sollte es eine Vorstellungsecke geben die ich nicht gefunden habe, bitte mich mit der Nase draufstoßen.^^

    Mein Problem (bin blutiger Anfänger mit autoit):
    Ich warte in einem Inputfeld auf eine Scannereingabe die einer Bedingung unterliegen soll: Nicht kleiner als x und nicht größer als y. (GTIN-Code)
    Leider wird dies bei meinem Script völlig ignoriert. :(
    Irgendwie hab ich da mind. ein Brett vor dem Kopf.


    Über einen Denkanstoß würde ich mich sehr freuen.
    lg
    Tom

  • Hallo @kyloe,

    ändere doch mal

    AutoIt
    If $var (($var < 4250000000000) Or ($var > 4350000000000)) Then

    in

    AutoIt
    If $var < 4250000000000 Or $var > 4350000000000 Then

    oder liegt es daran, dass in deiner Schleife abgebrochen wird, wenn der Wert mal nicht kleiner 4250000000000 oder größer 4350000000000 ist. Vielleicht ist dein Problem, dass der erste Wert innerhalb dieses ausgeklammerten Bereichs ist?

    Grüße autoiter

  • @autoiter:
    erstmal thx für die Aufmerksamkeit. :)
    Leider funktioniert es auch ohne Klammern nicht. Sobald ich den Wert mit dem Scanner einlese wird das Feld wieder geleert (soll auch so), aber der Scriptablauf geht nicht weiter.
    Egal ob ich 1, 100 oder 4250515105553 scanne.
    Normalerweise sollte bei einem bestimmten Wertebereich die Schleife beendet werden.

  • Oha, ja. :D
    Ergänze deinen Code unter der Zeile mit ControlSetText noch um ein ExitLoop, damit auch in dem Fall die Schleife beendet wird.

    AutoIt
    ControlSetText($fenster, "", $input_eti, "")
    ExitLoop

    Grüße autoiter

  • Hi,

    Wenn ich mich recht entsinne schicken Scanner häufig zum Abschluss ein bestimmtes Zeichen (z.B. @LF) oder?
    In diesem Fall wäre es günstiger auf dieses Zeichen zu warten als ständig zu überprüfen ob alle Bedingungen erfüllt sind.
    Es kann ja auch sein das du überprüfst wärend das Gerät grade schreibt und so gültige Werte ignoriert werden.

    Hier mal ein Beispiel:

    mfg
    Zeitriss

  • Local $iInput = Number(GUICtrlRead($hI_ETI))

    Naja, mal wieder ein Versuch....
    Wie so nicht einfach RICHTIG den Scanner abfragen und den gesendeten Code mittels Binary untersuchen?! Dann werden jedenfalls sämtliche gesendeten Zeichen angezeigt, incl. der nicht darstell(umwandel)baren! Je nach Tastaturemulation können beim Scannen diverse Zeichen mitgeschickt werden, das erlaubt u.a. auch die Erkennung/Unterscheidung, ob eine Tastatur oder ein Scanner angeschlossen/bedient wurden.

  • Da bin ich wieder. ;)
    Den Code hab ich noch nicht eingebaut, aber zur Verdeutlichung hab ich mal ein Bild von der Problematik gemacht:

    Zwischenablage01.jpg

    Bei "1" wird der gescannte EAN-Code eingefügt
    Bei "2" muss der Artikel markiert werden
    Bei "3" der Button Etikett geklickt werden
    Bei "4" erfolgt wieder eine Scannereingabe mit der Menge der zu druckenden Etiketten
    Bei "5" der abschließende "OK"-Button

    Danach soll das Ganze wieder auf Anfangsstellung. Wichtig für mich ist, dass ein Fehlscann nicht zum Druck von 4250615113152 Stück Etiketten führen kann und
    auch das EAN-Feld nur einen Code innerhab eines Wertebereichs akzeptiert. So kann das narrensicher an einem Arbeitsplatz laufen. So die Theorie. ;)

    @Andy
    Verstehen kann ich das nicht ganz mit dem "binary". Hier hilft mir auch nicht die Hilfe weiter... :(
    Der Scanner ist auf EAN13 eingestellt und liefert auch den passenden Wert incl. abschließendem @LF.

    Edit: Sorry, es ist ein "@CR" vom Scanner, was aber auch kein Problem ist.

    Einmal editiert, zuletzt von kyloe (9. Dezember 2016 um 12:23)

  • Damit ihr fürs Wochenende noch was zu lachen habt (oder zu weinen)^^
    Das Script tut was es soll, aber auf Dauer wird es nicht gehen.

    Wenn jemand Lust hat das Script zu professionaliesieren; bitte Bescheid geben (PN). Je nach Einsatz wäre ein Pfund Cashew in Schoki oder mehr drin. ;)

  • So, nach ein bischen Feinschliff (soweit man das nennen kann) startet das Script pünktlich Montag zum Arbeitsbeginn.
    Leider immer noch sehr amateurhaft, aber soweit passend.

    Einen herzlcihen Dank an alle die mir ihre Aufmerksamkeit geschenkt haben und mit Tipps geholfen haben. :D

    Soweit der Code: