Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Tastatur-Barcode-Scanner (https://www.delphipraxis.net/79328-tastatur-barcode-scanner.html)

juezi 20. Okt 2006 12:16


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

Union 20. Okt 2006 12:31

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.

juezi 20. Okt 2006 12:40

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

Union 20. Okt 2006 12:42

Re: Tastatur-Barcode-Scanner
 
Was ist das für ein Modell?

juezi 20. Okt 2006 12:45

Re: Tastatur-Barcode-Scanner
 
Hallo,
es ist ein Sick Handscanner Typ IT3800LR-12

Union 20. Okt 2006 12:47

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.

juezi 20. Okt 2006 12:52

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

juezi 20. Okt 2006 12:57

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

Union 20. Okt 2006 12:58

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.

juezi 20. Okt 2006 13:07

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 20. Okt 2006 13:11

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...

Union 20. Okt 2006 13:33

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:
//------------------------------------------------------------------------
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;
Die Variablen sEposNr und dtEposInputStart sind im private Teil des Formulares enthalten:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
    sEposNr : string;
    dtEposInputStart : TDateTime;
Iregdnwann kommt ja (auch vom Scanner) ein Return, und dann kannst Du die gesammelte Zeichenfolge weiterverarbeiten.

juezi 20. Okt 2006 13:52

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

Union 20. Okt 2006 13:55

Re: Tastatur-Barcode-Scanner
 
Die Sekunden zwischen zwei Werten, siehe Delphi-Referenz durchsuchenSecondsBetween.

juezi 20. Okt 2006 14:06

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