Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   USB Scanner (HID) nur per tastatur? (https://www.delphipraxis.net/99659-usb-scanner-hid-nur-per-tastatur.html)

Gruber_Hans_12345 15. Sep 2007 15:26


USB Scanner (HID) nur per tastatur?
 
Hallo Robert Marquardt und alle anderen

Wir verwenden bis jetzt RS232 Scanner, aber möchten jetzt auch USB Scanner verwenden

ich hab mal das log aus dem usage unten angehängt

ich fürchte fast, das der scanner NUR als Tastatur arbeitet (da man oft Keyboard liest ;) ) und habe hier im Board schon gelesen, das Tastaturen read only sind.
Mein problem ist, das der scanner im moment die daten wie eine tastatur eingibt, aber die funktionsweise sollte anders sein, da ich die daten im hintergrund einlesen möchte - sprich der user hat zb winword offen, scannt einen barcode, und mein programm liest die daten ein, und macht was damit (bei rs232 gehts ja ohne prob, aber bei scanner mit tastaturweiche zb nicht)
gibt es noch eine andere möglichkeit die daten zu erhalten (hooks und co möchte ich vermeiden ...)

Code:
"© Datalogic 2002" "Datalogic Bar Code Scanner" VID=$080C PID=$0300
SerialNumber=S/N E07G18481
Input Report Size=8
Output Report Size=1
Feature Report Size=0

Button Input
============

0)
UsagePage:        Keyboard ($0007)
ReportID:         0
IsAlias:          False
BitField:         2
LinkCollection:   0
LinkUsage:        Keyboard ($0006)
LinkUsagePage:    Generic Desktop ($0001)
IsRange:          True
IsStringRange:    False
IsDesignatorRange: False
IsAbsolute:       True
UsageMin:     224 UsageMax:     231
StringMin:    0 StringMax:    0
DesignatorMin: 0 DesignatorMax: 0
DataIndexMin: 0 DataIndexMax: 7

1)
UsagePage:        Keyboard ($0007)
ReportID:         0
IsAlias:          False
BitField:         0
LinkCollection:   0
LinkUsage:        Keyboard ($0006)
LinkUsagePage:    Generic Desktop ($0001)
IsRange:          True
IsStringRange:    False
IsDesignatorRange: False
IsAbsolute:       True
UsageMin:     0 UsageMax:     255
StringMin:    0 StringMax:    0
DesignatorMin: 0 DesignatorMax: 0
DataIndexMin: 8 DataIndexMax: 263

Button Output
=============

0)
UsagePage:        LED ($0008)
ReportID:         0
IsAlias:          False
BitField:         2
LinkCollection:   0
LinkUsage:        Keyboard ($0006)
LinkUsagePage:    Generic Desktop ($0001)
IsRange:          True
IsStringRange:    False
IsDesignatorRange: False
IsAbsolute:       True
UsageMin:     1 UsageMax:     5
StringMin:    0 StringMax:    0
DesignatorMin: 0 DesignatorMax: 0
DataIndexMin: 0 DataIndexMax: 4

Robert Marquardt 15. Sep 2007 16:21

Re: USB Scanner (HID) nur per tastatur?
 
Das geht ab XP ueber das Raw Input API. WM_INPUT im Platform SDK oder einer anderen Microsoft Hilfe nachschlagen und sich von dort aus weiterarbeiten. Letztens war ein Thread dazu von jemanden der damit experimentiert. "Raw Input" im Titel das sollte sich leicht finden lassen.

Gruber_Hans_12345 15. Sep 2007 17:54

Re: USB Scanner (HID) nur per tastatur?
 
ok, danke erst mal, aber bin mir noch nicht sorichtig sicher, ob mir das weiterhilft

habe das mit dem RAWInput mal probiert

nur wenn ich mit UsagePage 1 und Usage 6 horche, dann bekomme ich die events des barcodescanner (und auch der tastatur) kann dann im WM_INPUT herausfinden, wer das geschickt hat, aber die fokusierte anwendung bekommt immer auch die daten des barcodescanners mit ...
(ausser mit RIDEV_NOLEGACY, aber dann wird ja gar nichts mehr geschickt - weder barcodescanner noch tastatur)

ich habe als RawInput auch noch andere HID_DEVICES, wobei eines davon sogar der Barcodescanner selber ist (ausprobiert durch aus und anstecken - da war der mal weg und wieder da), aber mit diesen UseagePage reagiert gar nix (RIDEV_NOLEGACY bekommt fehlermeldung) und auch keine WM_INPUT messages

was ich bräuchte wäre eine RegisterRawInputDevices auf ein Handle (damit kann ich den Barcodescanner ja eindeutig identifizieren)

[edit]verguckt - ich habe doch NUR das RIM_TYPEKEYBOARD, die RIM_TYPHID, mit denen ich es verwechselt habe, war eine externe Tastatur[/edit]

Gruber_Hans_12345 15. Sep 2007 18:55

Re: USB Scanner (HID) nur per tastatur?
 
also hab schon ne lösung für mich

den scanner kann man umkonfigurieren, und dann nen USB-COM Treiber installieren und schwups meldet der sich mit einer virtuellen RS232 an, und alles läuft perfekt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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