| Autor |
Beitrag |
Oliver Maas
      
Beiträge: 55
|
Verfasst: Fr 10.02.12 10:06
Guten Morgen
ich habe eine Anwendung, in der der User bisher über eine ComboBox vorgegebene Strings auswählt. Nun ist der neue Wunsch entstanden, hierfür einen Barcode Scanner zu verwenden, d.h. der Scanner schickt diese Strings selber, und der User braucht nichts mehr selber auszuwählen.
Ich dachte zunächst mal an einen Scanner, der wie ein Keyboard Daten übermittelt (für das Programm ist es dann genauso, wie wenn der User was eintippen würde).
Würde man dazu "OnKeyPress" von der Form benutzen (die nimmt ja nur jeweils ein Char), oder würde man das besser anders machen (um die Zeichen vom Barcode zu sammeln)?!
Ich nehme an, ich müsste die ComboBox durch ein Edit Feld ersetzen, und ich müsste dann selber checken, ob der String Bestandteil der Liste ist, oder?
freundliche Grüße
Olli
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 10.02.12 10:28
Moin,
wir haben die Keyboardscanner aus unserem Angebot raus geworfen. Sie haben ihr Daseinsberechtigung, wenn man eine bestehende Anwendung, die man nicht ändern kann, um einen Scanner erweitern möchte. Man hat z.B. sowieso schon ein Feld, wo der User eine Artikelnummer eintippt: das kann man gut mit einem Keyboard-Scanner machen.
Aber wenn man etwas mehr Logik braucht, kommt man schnell an seine Grenzen. Stell Dir vor, der User muss irgendwo eine Artikelnummer eingeben/scannen und gleichzeitig in ein andere Editfeld eine Menge eintippen. Wenn der Cursor jetzt im Mengenfeld steht und der User scannt, dann landet die Artikelnummer im Mengenfeld. Du hast im Programm keine Möglichkeit zu unterscheiden, ob es eine Eingabe von der Tastatur war (Menge) oder vom Scanner (Artikelnummer). Gut, man kann dem User sagen "wenn Du im Mengenfeld bist, darfste nicht scannen". Aber das kapieren 9 von 10 Benutzer nicht.
Von daher nehmen wir nur Scanner mit seriellem Anschluss. Dabei empfängst Du die gescannten Daten über einen ganz anderen Weg (TComPort). So weißt Du genau, dass das eine Artikelnummer ist und keine eingetippte Menge. So kann der Focus stehen, wo er will. Der User kann jederzeit scannen, Du weiß dass das ne Artikelnummer ist und kannst entsprechend drauf reagieren.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Tastaro
      
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Fr 10.02.12 12:27
Wie Nersgatt schon sagt arbeiten viele Barcodescanner wie eine Tastatur. D.h. du schließt das Ding an einem USB-Port an und scannst. Am Scanner lässt sich einstellen ob am Ende z.B. noch ein CRLF angehägt werden soll oder nicht. Du musst also an deinem Programm erst mal gar keine Änderungen vornehmen. Der Cursor muss in dem Eingabefeld stehen, dann kannst du munter losscannen. Das funktioniert, ist toll und praktisch.
@Nersgatt: Ich will den Nutzen von COM-Port-Scannern ja nicht ganz in Abrede stellen, aber RS232 ist eher eine Technik aus dem letzten Jahrhundert. 
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 10.02.12 12:55
Wir nutzen die Comportscanner praktisch ausschließlich mit COM-USB-Adaptern. Funktioniert problemlos. Auch Waagen binden wir über COM (mit USB-Adapter) an. Die Waagen haben keine anderen Anschlüsse. Teilweise auch über COM-Bluetooth-Adapter. Funktioniert auch zuverlässig. Und für die Software wird völlig transparent einfach ein virtueller COM-Port zur Verfügung gestellt.
Im Industriellen Umfeld ist RS232 noch an der Tagesordnung und wird es wohl auch noch lange bleiben.
Übrigens, das fällt einem oft nicht auf: viele Geräte, die einen USB-Anschluss haben, haben einfach einen COM-USB-Adapter eingebaut!
Schau Dir mal die ganzen Mikrocontroller an. Viele haben einen U(S)ART eingebaut. Dahinter einen MAX232 und einen COM-USB-Adapter, fertig ist der USB-Anschluss. Aber in Wirklichkeit ist es eigentlich ein RS232.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Oliver Maas 
      
Beiträge: 55
|
Verfasst: Fr 10.02.12 13:33
Hi
danke für den Hinweis mit dem RS Scanner. Der Einwand ist berechtigt, bei einem Keyboard Scanner muss der User den Fokus richtig setzen.Übrigens machen wir das mit den Waagen (die sind fast immer noch RS232) auch so: COM/USB Adapter + im Programm COM... In Zukunft wird es auch USB Waagen geben, aber das wird da noch dauern, bis sich das durchsetzt.
In der Mess- und Regeltechnik gibt es auch Geräte, die haben RS485, setzen das auf USB um, und im Windows hat man dann doch
wieder einen virtuellen COM Port...
freundliche Grüße
Olli
|
|
jaevencooler
      
Beiträge: 166
Erhaltene Danke: 6
MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
|
Verfasst: Fr 10.02.12 16:34
Moin Olli,
also wir haben das folgendermaßen gelöst:
- Tatstatur Hook geschrieben
- Barcode Scanner so programmiert das er vor und nach jedem Scan eine gewissen Zeichenfolge mit schickt
- Hook erkennt dieses Format und teilt dann der Anwendung mit : "Hallo Scanner Eingabe"
funktioniert einwandfrei, seit Jahren schon !!!
Gruß
Michael
_________________ Wissen ist Macht, nichts wissen macht auch nichts...
|
|
Oliver Maas 
      
Beiträge: 55
|
Verfasst: Di 14.02.12 15:54
Hallo Michael
danke für den Tip mit dem Tastatur Hook.
Ich habe es nun doch (auf Wunsch des Kunden) mit dem Keyboard Scanner gemacht (Suffix: Tabulator). Es sind nur drei Felder, die so befüllt werden, der User ist eigentlich recht clever, der sollte das mit dem Fokus schon irgendwie auf die Reihe kriegen.
Ich hab zudem die ComboBox versteckt, und ein neues Editfeld eingebaut, das den Wert annimmt und dann den Index in der ComboBox Liste selber setzt (in OnExit). Im OnSelect der ComboBox ist dann das Ereignis drin, was zuvor manuell ausgelöst wurde (und jetzt eben per Barcode).
vielen Dank an alle
Olli
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
|