![]() |
Tastatur-Barcode-Scanner
Hallo Zusammen,
ich möchte in einem Delphi7-Programm einen Tastatur-Barcode-Scanner einbinden um einen Barcode vom Produkt mit einer Datenbank zu vergleichen. Gibt es eine Möglichkeit die Zeichen die mir der Scanner sendet im Hintergrund einzulesen? Vielen Dank für Eure Hilfe juezi |
Re: Tastatur-Barcode-Scanner
Mit einem Tastaturscanner nicht. Du kannst nicht unterscheiden ob der Benutzer ein Zeichen getippt hat oder der Scanner es sendet. Du könntest Den Scanner aber so programmieren, dass er vor jedem Code eine bestimmte Taste als Präfix sendet. Daran kannst Du es dann erkennen. Ansonsten setze einen seriellen oder WLAN / Web fähigen Scanner ein.
|
Re: Tastatur-Barcode-Scanner
Hallo Union,
erst einmal vielen Dank für Deine Hilfe, der Barcode-Scanner wurde mir vorgegeben, ich denke ich werde dann wohl irgendwo ein Edit-Feld setzen in der der Barcode von Hand oder mit dem Barcode eingegeben werden kann. Danke juezi |
Re: Tastatur-Barcode-Scanner
Was ist das für ein Modell?
|
Re: Tastatur-Barcode-Scanner
Hallo,
es ist ein Sick Handscanner Typ IT3800LR-12 |
Re: Tastatur-Barcode-Scanner
Wie gesagt, die besseren Scanner kan man konfigurieren (über das Einlesen von Konfigurations-Barcodes) so dass sie einen Präfix senden. Auf diesen könntest Du dann einen Hotkey legen oder es im OnKeyDown handlen. Den folgenden Code liest Du dann mit TimeOut ein.
|
Re: Tastatur-Barcode-Scanner
Hallo,
was verstehst Du unter einem HotKey, ich bin im Delphi nicht so fit. Ich hab inzwischen mal mit einem Editfeld probiert, geht so weit ganz gut, nur wenn der cursor auf einem anderen Editfeld steht hab ich leider verloren. Danke |
Re: Tastatur-Barcode-Scanner
Hallo,
kann man nicht irgendwie dauernd die Tastatur abfragen, egal wo der cursor steht, denn wenn der Barcode gescannt wird kommt entweder eine 10- oder 12-stellige Zahl? Danke |
Re: Tastatur-Barcode-Scanner
In einem Delphi Form kannst Du die Eigenschaft KeyPreview auf true setzen. Dadurch werden die Tastaturereignisse zuerst vom Formular verarbeitet. Du kannst dann einen OnKeyDown Event des Formulars erzeugen und dort auf jede Taste reagieren.
|
Re: Tastatur-Barcode-Scanner
Hallo,
entschuldige das ich nicht so gut folgen kann, ich habe das KeyPreview auf true gesetzt, dann habe ich das Event KeyDown vom Formular genommen, jetzt möchte ich diesen Barcode ganz einfach zum testen in einem Label ausgeben. Was muss ich dem Label zuordnen wenn ich die procedure unten verwende? procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin label1.Caption:= end; Vielen Dank |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Du willst das in die Codelibrary hinzufügen? Sorry, aber das ist kein Code der in die Library gehört. Genau genommen ist da gar kein Code... |
Re: Tastatur-Barcode-Scanner
Für "normale" Zeichen ist auch eher OnKeyPress zuständig. Dabei muss Dir klar sein, dass jedes Zeichen einzeln reinkommt. Du brauchst also einen "Speicher" für die bereits empfangenen Zeichen an den Du dann anhängst. Beispiel:
Delphi-Quellcode:
Die Variablen sEposNr und dtEposInputStart sind im private Teil des Formulares enthalten:
//------------------------------------------------------------------------
procedure TfrmLSchein.dbgLsPosKeyPress(Sender: TObject; var Key: Char); //------------------------------------------------------------------------ // Für die Eingabe der EPos-Nummer über Barcode //------------------------------------------------------------------------ begin // wenn nicht innerhalb einer Sekunde alles kommt, handelt es sich um eine manuelle Eingabe... if SecondsBetween(now, dtEposInputStart) > 1 then begin // ... also löschen sEposNr := ''; dtEposInputStart := now; end; case key of // Gültige Zeichen, anhängen '0'..'9' : sEposNr := sEposNr+Key; else sEposNr := ''; end; end;
Delphi-Quellcode:
Iregdnwann kommt ja (auch vom Scanner) ein Return, und dann kannst Du die gesammelte Zeichenfolge weiterverarbeiten.
private
{ Private-Deklarationen } sEposNr : string; dtEposInputStart : TDateTime; |
Re: Tastatur-Barcode-Scanner
Hallo,
vielen Dank für den Code, ich hätte aber noch eine Frage zu if SecondsBetween(now, dtEposInputStart) > 1 then now entspricht der aktuellen Systemzeit dtEposInputStart entspricht der Zeit wann der Eingabe erfolgt Was liefert mir SecondsBetween zurück? Vielen Dank |
Re: Tastatur-Barcode-Scanner
Die Sekunden zwischen zwei Werten, siehe
![]() |
Re: Tastatur-Barcode-Scanner
Hallo,
ich habe vergessen die DateUtils im uses anzugeben. Mit dem Quellcode den Du mir gegeben hast denke ich werde ich zurechtkommen und ihn auch nutzen. Ich möchte mich recht herzlich bei Dir bedanken für Deine Schnelle, gute und kompetente Hilfe. Wenn ich vielleicht auch mal soweit bin kann ich auch weiterhelfen. Nochmal Danke für die gute Hilfe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz