AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Barcode-Scanner und USB

Ein Thema von jan_derer · begonnen am 4. Apr 2006 · letzter Beitrag vom 6. Apr 2006
Antwort Antwort
Seite 1 von 3  1 23      
jan_derer

Registriert seit: 4. Apr 2006
12 Beiträge
 
#1

Barcode-Scanner und USB

  Alt 4. Apr 2006, 14:21
Hallo Zusammen!

Für eine Anwendung habe ich die Idee, mehrere Barcode-Scanner an einem PC anzuschließen (über USB).

Nun habe ich folgendes Problem. Wie erkenne ich, dass irgendwelche einkommenden Daten von einem bestimmten Scanner stammen. Gibt es eine Bibliothek, welche mir einkommende Daten (seitens des USB) mitteilt, die Daten zur Verfügung stellt und mir die ID des Geräts im USB-Baum mit gibt?

Alternativ ... Kennt jemand ein Barcode-Scanner der über entsprechende Bibliotheken verfügt?

Greetz
Jan
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Barcode-Scanner und USB

  Alt 4. Apr 2006, 14:30
Das Problem hier ist das Barcode-Scanner meist als USB-Tastaturen auftreten statt als USB-Barcode-Geraete.
Als Tastatur gibt es nur die Moeglichkeit mit WM_INPUT zu operieren, aber da habe ich noch keine Experimente damit durchgefuehrt.
Siehe die MS-Hilfe zu WM_INPUT und RegisterRawInputDevices. Die noetigen Headerkonversionen sind im Modul win32api von http://jedi-apilib.sf.net zu beziehen.

Sollten die Barcode-Scanner als USB-Barcode-Geraete (aus der Unterklasse der HID-Geraete) auftreten koennen (manche sind umschaltbar) so lassen sie sich mit meiner HID-Komponente behandeln. Selbige ist als Teil der JVCL oder von http://www.soft-gems.net erhaeltlich.

Nachtrag:
Welches Geraet wo angeschlossen ist, laesst sich beim USB nicht eindeutig beantworten.
Man kann zwar mit Wissen aus dem Windows DDK (Stichwort USBVIEW-Beispiel) durchaus den Baum der USB-Geraete eruieren, aber die logische Numerierung der Ports eines Hubs muss nicht mit der physischen Portanordnung korrespondieren.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Barcode-Scanner und USB

  Alt 4. Apr 2006, 14:34
Normalerweise verhält sich ein Barcodescanner so wie eine Tastatur. Obwohl, du sprichst ja von USB, das weiss ich das nicht. In der Industrie verwendet man typischerweise RS-232 Scanner, wenn man unterscheiden will, woher eine Eingabe stammt. Ich habe eine Komponente für RS-232 Scanner geschrieben, die einfach ein Ereignis feuert, sobald ein Scan vorliegt. Praktische Sache.

Es gibt einige Keyboard-wedge-Scanner, die schicken vor dem Barcode eine Preambel, also eine Tastensequenz, die man so auf einem Keyboard nicht simulieren kann. z.B. 3x hintereinander ein KeyDown. Das geht ja nicht per Tastatur, weil nach einem KeyDown immer ein Keyup erfolgt (bei ein und der selben Taste logischerweise). Ich habe dann einen KbdHook geschrieben, der auf die Preambel wartet. Sobald er die erkannt hat, liest er Alles bis zum Return ein und schickt dann eine Message an registrierte Fenster. Die wissen dann, das gerade jemand einen Barcode gescannt ht.

Aber was Robert Marquardt vorschlägt, wäre natürlich noch besser.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Barcode-Scanner und USB

  Alt 4. Apr 2006, 14:50
Ich habe die Interfaces für eine Kassensoftware geschrieben und dort werden gleich alle 3 Arten von Scannern verwendet.
Aber ausser der RS232 Version kommunizierten alle anderen über das Keyboard Interface.
Dabei war es mir nicht möglich, einen USB Scanner von einem Scanner der direkt ins Keyboard Kabel geschlauft wurde zu unterscheiden. Brauchte ich auch nicht.

Wir verwenden die Voyager Scanner von Metrologic (USB) und die senden standardmässig ein SHIFT+CTRL+B+SHIFT+CTRL+B Keydown. (siehe Info alzaimar)

Dieser Code ist Programmierbar. Falls es also darum geht, 2 verschiedene USB Scanner zu unterscheiden, so können die Scanner unterschiedlich programmiert werden. (zB:ScannerA sendet SHIFT+CTRL+A, ScannerB SHIFT+CTRL+B)
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Barcode-Scanner und USB

  Alt 4. Apr 2006, 14:55
USB-Barcode-Scanner melden sich traditionell als Tastaturen, damit sie als Ersatz fuer Keyboard-Wedge-Scanner dienen koennen.
Das ist Schuld der Kassensystem-Software-Anbieter, die zu faul waren ihre Programme auf USB anzupassen und stattdessen Druck auf die Barcode-Scanner-Hersteller ausgeuebt haben.
Eigentlich ist die Barcode-HID-Klasse sehr ausgefeilt und man koennte viel mehr Information ueber den Scanner erhalten als nur die ASCII-Zeichen der gescannten Codes.

Der Nachteil von WM_INPUT ist das es erst ab Windows XP vorhanden ist.
  Mit Zitat antworten Zitat
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Barcode-Scanner und USB

  Alt 4. Apr 2006, 16:02
Zitat:
Das ist Schuld der Kassensystem-Software-Anbieter, die zu faul waren ihre Programme auf USB anzupassen und stattdessen Druck auf die Barcode-Scanner-Hersteller ausgeuebt haben.
Es gibt sogar Treiber, die das Schubladenöffnungsflag invertieren, nur weil ein 3 Buchstaben Kassenhersteller ein Fehler in den Schubladen hatte. Aber das ist jetzt OT.

Also, wenn ich Robert richtig verstehe, so wäre WM_INPUT für die Abfrage der Tastatur bestimmt. Die Alternative dazu wäre dann ein Keyboardhook (a la SetWindowsHookEx(WH_KEYBOARD,@KeyboardHookProc,HIn stance,GetCurrentThreadId()); Das funktioniert auch unter W2K und anderen OS.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Barcode-Scanner und USB

  Alt 5. Apr 2006, 04:37
Ein Keyboard-Hook kann nicht erkennen woher die Daten kommen, da fuer ihn die Daten von der einzigen virtuellen Tastatur des Systems kommen.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Barcode-Scanner und USB

  Alt 5. Apr 2006, 06:48
Hi Robert,

das stimmt, aber durch die Preambel, die der Scanner sendet, bekommt man doch den Unterschied mit. Von einer Tastatur kann die Sequenz 'A'-Down, 'A'-Down einfach nicht kommen. Ok, wenn ich zwei Tastaturen anschließe, schon .
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
jan_derer

Registriert seit: 4. Apr 2006
12 Beiträge
 
#9

Re: Barcode-Scanner und USB

  Alt 5. Apr 2006, 09:27
Hallo Zusammen!

Erstmal Dank für die vielen Infos und für die schnellen Antworten. Ich konnte nicht so schnell reagieren, da ich gestern Nachmnittag dauernd unterwegs war.

Das mit WM_INPUT geht leider nicht (weil wie schon gesagt erst ab XP), weil das System auf 2K laufen soll.

Das mit der programmierbaren Preamble klingt super. Das geht aber nicht für jeden Barcode-Scanner oder? Liefert Metrologic eine Software dazu?
Wird die Preamble zusammen mit den eingescannten Daten gesendet? Ist das ein Datenpaket? Wichtig ist für mich, falls die ungünstige Situation kommen sollte, dass zwei Barcode-Scanner gleichzeitig etwas einscannen, dass unterschieden werden kann von wem die Daten sind.

Greetz
Jan
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: Barcode-Scanner und USB

  Alt 5. Apr 2006, 09:45
Zitat von jan_derer:
Das mit der programmierbaren Preamble klingt super. Das geht aber nicht für jeden Barcode-Scanner oder? Liefert Metrologic eine Software dazu?
Wird die Preamble zusammen mit den eingescannten Daten gesendet? Ist das ein Datenpaket? Wichtig ist für mich, falls die ungünstige Situation kommen sollte, dass zwei Barcode-Scanner gleichzeitig etwas einscannen, dass unterschieden werden kann von wem die Daten sind.
Metrologic? Keine Ahnung. Mal auf der Webseite nachschauen.
Ich glaube du solltest erst mal genau sagen welche Barcode-Scanner eingesetzt werden sollen. Ist das auf Metrologic begrenzt?
Was ich auf der Metrologic-Webseite gelesen habe ist nicht ermutigend. Es scheint keine USB-Scanner zu geben.

Die Praeambel ist Teil der gesendeten Daten und alles besteht aus WM_KEYDOWN- und WM_KEYUP-Messages, da es sich ja um eine Tastatur handelt.
Was passiert wenn jemand gleichzeitig mit zwei Barcode-Scannern scannt ist unklar. Vermutlich koennen sich die Sequenzen vermischen.
Die Scanner unterscheidet man dadurch das man ihnen unterschiedliche Praeambeln verpasst.

Mit echten HID-Barcode-Scannern hat man die Probleme nicht, da man diese direkt liest. Man weiss immer das die Daten von einem bestimmten Geraet sind.
Die Zuordnung zu einem physischen Geraet koennte allerdings schwierig werden. Man sollte darauf achten das die Geraete USB-Seriennummernstrings haben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz