Einscannen von Barcodes

G

Gonzo17

Gast
Servus,

ich betreue eine Projektgruppe, die (grob gesagt) mit einem Barcode-Scanner Barcodes einliest und diese dann verarbeitet. Das Scannen funktioniert problemlos, da der Scanner per USB angeschloßen ist und einfach nur eine Eingabe simuliert (quasi als würde man den Code auf der Tastatur eingeben).

Meine eigentlich Frage wäre jetzt folgende. Meine Gruppe hatte es bisher so umgesetzt, dass beim Klick auf den Button "Scan" ein kleines Textfeld aufging, in das dann der Code "geschrieben" wurde. War nur für Testzwecke und soll natürlich irgendwie schön funktionieren. Meine Idee wäre jetzt gewesen, dass man beim Klick auf "Scan" einen seperaten Thread startet, der quasi auf eine Eingabe wartet. Die Eingabe soll erkannt werden, indem auf dem JFrame einfach ein KeyListener horcht, ob etwas kommt und nur dann etwas tut, wenn man gerade im Scan-Modus ist.

Und die Frage: macht das so Sinn? Oder kann man das schöner umsetzen? Der Klick auf den Button "Scan" soll eigentlich erstmal lediglich dazu da sein, damit nicht einfach bei jedem beliebigen Tastendruck quasi versucht wird daraus einen Barcode zu lesen. :)
 
G

Gonzo17

Gast
Ok, danke für deine Antwort. :)
Das mit dem "Schalter" ist natürlich etwas eleganter. Wobei man dann aufpassen muss, dass man während des "Scan-Modus" auch tatsächlich nur Barcodes akzeptiert und nicht auf einmal irgendwas wildes, das auf die Tastatur gehauen wurde, dann als Barcode liest. Sollte aber machbar sein.
 

kirax

Bekanntes Mitglied
Na ich denke mal du kannst recht schnell feststellen, ob du einen Barcode vor dir hast oder nicht.
Wenn die wie im Supermarkt immer die gleiche Länge haben, kannst du ja einfach "warten" bis das Textfeld "voll" ist und dann versuchen, deinen Code zu verarbeiten.
Mit nem HashSet in dem die Codes stehen, dürfte das theoretisch in O(1) gehen. Und wenn du halt keinen gültigen Code hast, gibst halt nen Fehler aus ;)
 

fastjack

Top Contributor
Bei uns senden die Scanner einen Zeilenumbruch mit, auf den "warten" wir mittels KeyListener, dann werden die Eingaben automatisch verarbeitet. Das mit den Knöpfen wurde als schlecht benutzbar empfunden.
 
G

Gonzo17

Gast
Bei uns senden die Scanner einen Zeilenumbruch mit, auf den "warten" wir mittels KeyListener, dann werden die Eingaben automatisch verarbeitet. Das mit den Knöpfen wurde als schlecht benutzbar empfunden.

Du hast Recht, ich erinnere mich. Da kam immer ein Zeilenumbruch, den haben meine Projektjungs "abgeschnitten" (weil sie ihn ja nicht brauchten). Ist ein guter Punkt.
Und das mit den Knöpfen? Meinste, dass man den "Scan-Modus" aktiviert und deaktiviert? Würdest du eventuell immer auf den Scanner warten?
Wie kann man es eigentlich geschickt machen, dass man bei auf mehrere Zeichen vom KeyListener wartet, ohne dabei wirklich ewig zu warten?
Beispiel: ich warte auf eine Eingabe und der Benutzer drückt versehentlich eine Taste (zB a). Lese ich anschließend den Barcode ein, dann würde natürlich ein Fehler resultieren. Ich will also nach einer Eingabe nur eine bestimmte Zeit warten, bis die nächste Eingabe erfolgen muss, um sicher zu gehen, dass auch tatsächlich etwas vom Scanner kommt. Aber was wäre da geeignet? Ist der Scanner immer gleich schnell?
 

Ähnliche Java Themen

Neue Themen


Oben