AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

handcanner an USB

Ein Thema von khh · begonnen am 13. Okt 2010 · letzter Beitrag vom 13. Okt 2010
Antwort Antwort
Seite 1 von 3  1 23      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

handcanner an USB

  Alt 13. Okt 2010, 10:08
Hallo zusammen,
die Übergabe eines Strichcodes per Scanner am USB funktioniert ja kinderleicht, wenn das den Wert aufnehmende Tedit den Focus hat.

Ist es möglich den Focus erst dann auf ein bestimmtes Eingabeelement (Tedit) zu setzen, wenn vom Scanner Daten kommen?

Woran ist das festzumachen?

Gruss KHH
Karl-Heinz

Geändert von khh (13. Okt 2010 um 10:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: handcanner an USB

  Alt 13. Okt 2010, 10:16
So erst mal gar nicht, der verhält sich idR wie eine Tastatur.

Für einige Scanner gibt es aber auch OPOS-Treiber/Software, damit kann man diese wesentlich besser beeinflussen. Der ScanCode wird dann aber nicht mehr als Tastatureingabe übermittelt, sondern über die OPOS Schnittstelle.

Alternativ kann man dem Scanner auch beibringen, vor dem ScanCode ein bestimmtes Zeichen zu senden (wird pro Barcode-Typ definiert). Auf dieses/diese Zeichen kannst du ja warten/reagieren.

Am besten ist es aber die Zeichen vor dem Edit abzufangen TForm.KeyPreview und dann anhand des ersten Zeichens zu entscheiden, was kommt da. Dann bei Bedarf das entsprechende Edit-Feld damit befüllen.

Einen Haken haben die USB-Scanner: Tippt man während des Scanvorgangs auf der Tastatur rum, werden uU die Eingaben vermischt. Mit OPOS passiert das nicht, ist aber auch - wie sollte es anders sein - umständlicher zu implementieren.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Okt 2010 um 10:20 Uhr)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#3

AW: handcanner an USB

  Alt 13. Okt 2010, 10:18

Am besten ist es aber die Zeichen vor dem Edit abzufangen TForm.KeyPreview und dann anhand des ersten Zeichens zu entscheiden, was kommt da. Dann bei Bedarf das entsprechende Edit-Feld damit befüllen.

danke dir, ich denke das ist das Einfachste und wohl auch Sicherste
Karl-Heinz
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#4

AW: handcanner an USB

  Alt 13. Okt 2010, 10:19
Hallo zusammen,
die Übergabe eines Strichcodes per Scanner am USB funktioniert ja kinderleicht, wenn das den Wert aufnehmende Tedit den Focus hat.

Ist es möglich den Focus erst dann auf ein bestimmtes Eingabeelement (Tedit) zu setzen, wenn vom Scanner Daten kommen?

Woran ist das festzumachen?

Gruss KHH
Hallo,

garnicht. Es macht keinen Unterschied, ob die Zeichen vom Scanner kommen oder von der Tastatur oder gemischt (z.B. Zahlen vom Scanner und CR-Taste). Das ist der Vor- und der Nachteil dieser Arbeitsweise.

Du kannst höchstens prüfen, ob der Scanner umstellbar ist z.B. auf V24. Aber dann brauchst du Software dazu.

Du könntest natürlich den Focus immer auf das Editfeld geben, aber das ist wohl anderweitig unpraktisch.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: handcanner an USB

  Alt 13. Okt 2010, 10:34
Ich finde nicht die Zeit alles zu erklären, geht:


Du benötigst JWAWinUser

ladbar unter http://sourceforge.net/projects/jedi-apilib/files/

ein Fetzen Code aus einer unserer Anwendungen...

hoffe Du kommst klar

Delphi-Quellcode:
procedure TMyForm.RawInputMessage(var Message: TMessage);
var
  dwSize : UINT;
  raw : RAWINPUT;
  buffer: array[0..255] of char;
  buffersize:dword;
  result:dword;
begin
  dwSize := sizeof(RAWINPUT);
  GetRawInputData(Message.lParam, RID_INPUT, @raw, dwSize, sizeof(RAWINPUTHEADER));

  if (raw.header.dwType = RIM_TYPEKEYBOARD) then begin
    buffersize := 256;
    result := GetRawInputDeviceInfo(raw.header.hDevice, RIDI_DEVICENAME, @buffer, buffersize);
    if (result > 0) and (FScannerKey = buffer) then
      CaptureAmountForArticle(Chr(raw.keyboard.VKey));
  end;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#6

AW: handcanner an USB

  Alt 13. Okt 2010, 10:36
danke euch, ich schau es mir durch
Karl-Heinz

Geändert von khh (13. Okt 2010 um 10:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: handcanner an USB

  Alt 13. Okt 2010, 10:56
Hab da im Netz auch etwas (mehr) Code zu gefunden, basiert aber auf dem gleichen Ansatz mit Erläuterung

http://meinews.niuz.biz/wie-t60980.html
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Hansa

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

AW: handcanner an USB

  Alt 13. Okt 2010, 11:28
Ist es möglich den Focus erst dann auf ein bestimmtes Eingabeelement (Tedit) zu setzen, wenn vom Scanner Daten kommen?
Wozu das überhaupt ? Willst Du nur wissen, ob die Eingabe vom Scanner kommt oder Tastatur ? Für mich macht das nur Sinn, wenn geklärt werden muss, ob die Eingabe über EAN-Nr. (also Scanner) kam oder von Hand eingegeben wurde. Im ersten Fall suche ich dann Artikel über EAN-Tabelle, ansonsten über normale Art.Nr. Du willst ja hoffentlich nicht verhindern, dass EAN-Nr. von Hand eingegeben wird ? Manchmal sind die Strichcodes zerrissen, wellig etc. zumindest nicht lesbar. Na und ? Sofern die Nr. noch zu lesen ist, soll man dann nicht zulassen, dass sie auch von Hand eingegeben werden können ?

Edit : Ist length (TEdit.Text) >= 8 dann ist es wohl EAN-Nr.
Gruß
Hansa

Geändert von Hansa (13. Okt 2010 um 11:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: handcanner an USB

  Alt 13. Okt 2010, 11:34
Wenn die Eingabe vom Scanner kommt, dann bezieht sich die Eingabe auf einen Barcode und zwar unabhängig wo sich der Focus in der Anwendung befindet.

Eine Tastatureingabe bekommt den Kontext über den Focus.
z.B. Artikelnr, Barcode, Preis, etc.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#10

AW: handcanner an USB

  Alt 13. Okt 2010, 11:56
Ist es möglich den Focus erst dann auf ein bestimmtes Eingabeelement (Tedit) zu setzen, wenn vom Scanner Daten kommen?
Wozu das überhaupt ? Willst Du nur wissen, ob die Eingabe vom Scanner kommt oder Tastatur ? Für mich macht das nur Sinn, wenn geklärt werden muss, ob die Eingabe über EAN-Nr. (also Scanner) kam oder von Hand eingegeben wurde. Im ersten Fall suche ich dann Artikel über EAN-Tabelle, ansonsten über normale Art.Nr. Du willst ja hoffentlich nicht verhindern, dass EAN-Nr. von Hand eingegeben wird ? Manchmal sind die Strichcodes zerrissen, wellig etc. zumindest nicht lesbar. Na und ? Sofern die Nr. noch zu lesen ist, soll man dann nicht zulassen, dass sie auch von Hand eingegeben werden können ?

Edit : Ist length (TEdit.Text) >= 8 dann ist es wohl EAN-Nr.
nee, natürlich sollen die Codes auch manuell eingegeben werden können.
Ich wollte den Fokus beim Scan aufs edit-feld legen, um diesen darin auf dem BS anzuzeigen und daraus zu übernehmen.
sollte ich den lieber vorher abfangen und verarbeiten?
Karl-Heinz
  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 13:33 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