Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Daten von Barcodescanner verarbeiten

37 views
Skip to first unread message

Detlev Wenzel

unread,
Oct 26, 2014, 10:33:07 AM10/26/14
to
Ich suche nach einer Idee, wie ich mit empfangenen Daten von einem
Barcodescanner umgehe.
Der (Hand)scanner sendet seine Daten (eine EAN) vereinfacht gesagt an die
aktuelle Cursorposition. Das kann eine beliebige Anwendung sein (Word,
Excel, etc.).

Zur Zeit nehme ich diese EAN eines Barcodes in einem Textfeld entgegen und
verarbeite es dann im .Change Ereignis.
Das ist aber nicht so verlässlich, da ich nicht immer sicherstellen kann,
dass sich der Cursor dort befindet.
Deshalb wäre es mir lieber ich könnte in meiner Anwendung diese EAN
unabhängig von der Cursorposition in eine Variable schreiben und dann
weiter verarbeiten.

Mir fehlt einfach der Ansatz wie ich, unabhägig davon welches Steuerelement
meiner Anwendung den Focus hat.
Wahrscheinlich ist es wieder ganz einfach doch mir fehlt gerade eine Idee
dazu. Hat jemand hier vielleicht eine?

Ein schönes Restwochenende

Wolfgang Wolf

unread,
Oct 27, 2014, 2:26:52 AM10/27/14
to
Am 26.10.2014 15:29, schrieb Detlev Wenzel:
> Ich suche nach einer Idee, wie ich mit empfangenen Daten von einem
> Barcodescanner umgehe.

Key-Preview in der Form, weil der Scanner auch nur eine Tastatur ist!
Danach unterschiedliche Ansätze:

1. Scanner erlauben i.d.R. eine Parametrisierung. Damit kann man bei
vielen Scannern auch ein Präfix einstellen. Der Scanner sendet dann vor
dem eigentlichem Code dieses Präfix. Im KeyPress der Form musst du also
nur auf dieses Präfix "horchen" und den folgenden Code an das richtige
Control umleiten.
2. Ohne Präfix, musst du im KeyPress der Form auf eine gültige EAN
"horchen". Da die EAN eine Prüfziffer hat, kannst du eigentlich gut
erkennen, wann so eine Zahl gesendet wurde. Ab hier weiter wie unter 1.

Schönen Gruß
W. Wolf

Detlev Wenzel

unread,
Oct 28, 2014, 3:02:31 PM10/28/14
to
Wolfgang Wolf schrieb:

> Key-Preview in der Form, weil der Scanner auch nur eine Tastatur ist!

Das hatte ich auch zuerst gedacht. Eine wichtige Information habe ich
leider verschwiegen.:( Der Scanner st mit dem PC drahtlos verbunden. Nich
Bluetooth sonder 2,4 Ghz. Wie genau das Teil heisst könnte ich jetzt auch
nicht sagen, denn der liegt auf der Arbeit.
Sagen kann ich, dass er ohne Software/Treiber geliefert wurde. An Windows 7
Rechnern stecke ich sein Dongle rein und WUpdate besorgt den Treiber. Also
gibt es auch kein API dafür. Bei einer Messuhr hatte ich mal ein ähnliches
Problem, aber dazu gab es eine CD mit DLLs inclusive einer Doku. Da war das
Problem schnell entschärft.

> Danach unterschiedliche Ansätze:

> 1. Scanner erlauben i.d.R. eine Parametrisierung. Damit kann man bei
> vielen Scannern auch ein Präfix einstellen. Der Scanner sendet dann vor
> dem eigentlichem Code dieses Präfix. Im KeyPress der Form musst du also
> nur auf dieses Präfix "horchen" und den folgenden Code an das richtige
> Control umleiten.
> 2. Ohne Präfix, musst du im KeyPress der Form auf eine gültige EAN
> "horchen". Da die EAN eine Prüfziffer hat, kannst du eigentlich gut
> erkennen, wann so eine Zahl gesendet wurde. Ab hier weiter wie unter 1.

Heute kam ich endlich dazu Deinem Tip nachzugehen, aber im KeyPress kommt
einfach nichts an. Drücke ich dagegen eine Taste auf der Tastatur, dann
feuert es sofort.
Beim schreiben fällt mir aber ein, dass ich auch mal KeyUp/KeyDown
probieren sollte.

Eigentlich geht alles gut, wenn der Cursor beim Scannen im vorgesehen
Textfeld steht.
Mir fällt ein: Wenn nach dem Scan die weiteren Informationen eingeben und
gespeichert sind, dann springt mein Cursor sowieso in das Textfeld.
Vielleicht sollte ich da in einem Timer 100ms ;) einfach den Cursor
zurücksetzen. Dann brauche ich nur noch einen Hotkey basteln um da raus zu
kommen.

Mal schauen. Vielleicht bringt mich KeyUp/KeyDown ja doch weiter oder hier
kommen noch andere Ansätze.

Danke für die Hilfe.

Anton Bayer

unread,
Oct 30, 2014, 9:21:05 AM10/30/14
to
>> weil der Scanner auch nur eine Tastatur ist!
>
> Das hatte ich auch zuerst gedacht.

Das kannst Du auch weiterhin denken :-) , denn es kommt nicht auf die
Verbindungstechnik an. Meine Tastatur-Maus-Kombination ist z.B. auch per
Funk mit einem Empfänger am USB-Port verbunden.


Nichtsdestotrotz:

Wenn der Scanner kein Präfix liefert, anhand dessen man im Datenstrom den
Beginn einer EAN herausfinden kann, dann hätte ich noch das Stichwort 'raw
input' zu bieten:

microsoftmäßig verquirkelt:
About Raw Input -
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645543%28v=vs.85%29.aspx

oder vielleicht besser vom praktischen Standpunkt aus:

Using multiple keyboards with different layouts on the same machine
http://www.codeproject.com/Articles/20994/Using-multiple-keyboards-with-different-layouts-on

Alternativ könnte man sich noch einfallen lassen, den gesamten input stream
mitzuschneiden und sobald eine gültige EAN voll ist ggfs. die letzten
Zeichen stornieren, ins Textfeld hüpfen und dort einfügen.



Ulrich Möller

unread,
Oct 30, 2014, 9:41:43 AM10/30/14
to
Hallo Anton,

die Idee, Scanner Daten mit Hilfe von "Raw Input" vom allgemeinen
Eingabe Datenstrom zu separieren, hört sich sehr elegant an. Als
universelle ActiveX Komponente ausgelegt wäre das sicherlich für viele
Anwendungen ein Fortschritt.

Grüße

Ulrich

Detlev Wenzel

unread,
Oct 31, 2014, 2:04:26 AM10/31/14
to
Ulrich Möller schrieb:
KeyUp bringt mir mittlerweile die 13 Ziffern plus einem CR.
Das hat schon mal funktioniert.
Aber die Separierung vom Datenstrom ist mein Problem. Ich will ja nicht
alles verarbeiten was da reinkommt. Da sind mir eure Tipps sehr willkommen.
Vielen Dank allen hier für die Links und Denkanstösse.
Ich bin nun eine Woche mit dem Auto quer durch D unterwegs, aber das
Problem ist akut auch wenn ich nicht gleich berichte.
Danke für die Hilfe bisher.
0 new messages