AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi HID (von Robert Marquardt) und USB-Barcodescanner
Thema durchsuchen
Ansicht
Themen-Optionen

HID (von Robert Marquardt) und USB-Barcodescanner

Ein Thema von Poolspieler · begonnen am 9. Aug 2004 · letzter Beitrag vom 9. Aug 2004
Antwort Antwort
Seite 1 von 3  1 23      
Poolspieler

Registriert seit: 9. Aug 2004
165 Beiträge
 
Delphi 10.3 Rio
 
#1

HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 10:07
Hallo,
ich benutze einen Barcodescanner (USB).
Folgendes würde ich gern realisieren:
Wenn der Scanner ein zeichen liest, soll ein Ereignis aufgerufen werden, welches das Zeichen verarbeitet.
Das Zeichen soll (im Idealfall) aber nicht an die Anwendung geschickt werden.

Mit der HIDKomponente von dem Robert habe ich es ausprobiert.
Ich sehe zwar das HID-Interface, kann auch ein CheckOut machen.

HasReadWriteAccess ist aber false
Und wenn ich die Hilfe richtig verstanden habe, wird das OnData-Ereignis NUR aufgerufen, wenn HasReadWriteAccess true ist.

--> Was kann ich jetzt machen

Wäre schön, wenn mir jemand helfen könnte, bin grade am Verzweifeln

Gruß

Poolspieler
Andreas
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:10
Zitat von Poolspieler:
Wenn der Scanner ein zeichen liest, soll ein Ereignis aufgerufen werden, welches das Zeichen verarbeitet.
Das Zeichen soll (im Idealfall) aber nicht an die Anwendung geschickt werden.
Das ist genauso zu behandeln wie ein Tastaturereignis. Also im OnKeyPress. Es sei denn es ist ein serieller Scanner.
Gruß
Hansa
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
165 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:15
Hallo,
das habe ich auch schon ausprobiert, doch da gibt es ein riesen Problem:

Da meine Anwendung ja sowohl den Benutzer vor dem PC, als auch den Barcodeleser (der wo anders steht und von wem anderem benutzt wird) bedienen soll, kann es vorkommen, dass während des Scanvorgangs der Benutzer vor dem PC Text eingiebt. Und genau dann kommt es zu irgendwelchen Kryptischen Zeichen, weil wahrscheinlich die Scancodes der Tastatur mit dem Scancode des Barcodescanners "vermischt" wird.
Und diesen Fehler kann ich nicht abfangen - ich weiß zumindest nicht wie...

Ich hätte im Barcode halt am anfang und am Ende eine Tilde~ eingebaut und im OnKeyDown-Ereignis darauf abgefragt, aber wie gesagt, wenn Kryptische Zeichen kommen ist das Sinnlos...

Gruß

Poolspieler
Andreas
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:30
Zitat von Poolspieler:
Hallo,
das habe ich auch schon ausprobiert, doch da gibt es ein riesen Problem:

Da meine Anwendung ja sowohl den Benutzer vor dem PC, als auch den Barcodeleser (der wo anders steht und von wem anderem benutzt wird) bedienen soll,...
Der steht woanders und wird von jemand anderem benutzt ? Und dein Programm erhält von jemand anderem kryptische Zeichen ? Tut mir leid, aber damit kann ich nichts anfangen.
Gruß
Hansa
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:35
Naja, ich kann mir das schon vorstellen. Der Rechner wird sozusagen im "Multiuserbetrieb" verwendet.
Stimmt doch so, oder?

So ein Problem in der Art habe ich auch. Der PC wird nur als Interface benutzt, um Seriennummern
elektronisch in einem Gerät zu speichern. Das funktioniert (momentaner Stand) halt nur, wenn das
Programm den "Focus" hat....

Ich denke, die Probleme sind ähnlich.

Gruß,

StTüff
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:45
Multiuser ist was anderes. Das da ist, wenn schon dann Multi-Program-User Betrieb. Woher soll nun das arme Programm wissen, was getan werden muß Das ist so ähnlich, als wollten 2 Leute eine Tür aufschließen, der eine von innen und der andere von außen. 8) Das wird nicht viel. Was z.B. wenn der "Tastatur-User" aus Versehen eine ~ eingibt ?

Wie wäre es denn mal alternativ über Multitasking nachzudenken. Das Programm also ganz einfach in 2 Instanzen laufen zu lassen ?
Gruß
Hansa
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:52
Mutitasking wird nichts.... Da trotzdem die Windowsnachrichten nur an das aktive Programm
(das das halt momentan den Focus hat) weiterleitet. Wenn Dann müssten schon eher die
Tastatureingaben Systemglobal abgefangen werden.
Der Ansatz mit Start- und End-Code ist schon der richtige (dafür ist dieses Feature ja
schließlich bei den Scannern eingebaut).

Also: Die Lösung ist, die Tastatureingaben mit einem Hook global abzufangen und auszuwerten.
Das geht dann auch, wenn das Programm im Hintergrund, oder als Dienst arbeitet. Ich hab's
zwar noch nicht ausprobiert, bin mir aber ziwmlich sicher, dass es so geht.

Gruß,

StTüff
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
165 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:53
Hi,
wenn der User aus Versehen eine ~ eingiebt ist nicht sooo schlimm, weil:
sobald die erste Tilde eingegeben wurde, merke ich mir diesen Zeitpunkt.
Für die nächsten z.B. 500 Millisekunden gehe ich davon aus, das Daten vom Scanner kommen.
Wenn wirklich Daten vom Scanner kommen, muss innerhalb von 500 Millisekunden eine weitere Tilde kommen.
Außerdem muss die Anzahl der Zeichen zwischen den beiden Tilden stimmen...

Zum zwei Instanzen:
Das löst mein Problem nicht im geringsten, weil:
Normalerweise kommt vom Scanner z.B. folgendes:
~text1234~

Im Fehlerfall (bei gleichzeitiger Eingabe von Text durch den Benutzer):
~tex►123~

Egal, ob ich mit einem, oder mehreren Threads arbeite, der Müll, der vom Scanner (bzw. der Tastatur) kommt, bleibt Müll.
Die einzige Alternative, die ich sehe: Ich müßte irgendwie NUR die Daten des Scanners herausfiltern können, noch bevor sie über den Tastaturtreiber geschickt werden.
Aber da bin ich irgendwie zu dämlich dafür
Aber vielleicht gibt es hier ja einen schlauen Kopf, der mir sein Wissen leiht

Gruß

Poolspieler
Andreas
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:54
Barcodescanner sind fast ausschliesslich als HID-Tastaturen implementiert.
Tastaturen (und Maeuse) aber werden von Windows als System-Geraete verstanden, auf die nur Windows
selbst Zugriff haben darf. Windows setzt also einen CreateFile-Aufruf mit Exklusiv-Zugriff ab.
Damit sind alle anderen CreateFile-Aufrufe blockiert, sofern sie Lese- oder Schreibrechte wollen.
Leider kann man eine HID-Tastatur nur mit ReadFile lesen.
  Mit Zitat antworten Zitat
Poolspieler

Registriert seit: 9. Aug 2004
165 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: HID (von Robert Marquardt) und USB-Barcodescanner

  Alt 9. Aug 2004, 11:56
Hallo StTüff,
das mit dem Hook hätte aber noch einen Haken:
So weit ich weiß, kann man zwar die Daten abfangen, aber NICHT ändern, was bedeuten würde, dass die Daten trotzdem an die Anwendung geschickt würden, die gerade den Focus hat.

Des weiteren gilt halt noch obiges beschriebenes Problem (mit dem Datenmüll)

Gruß

Poolspieler
Andreas
  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 16:54 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