![]() |
handcanner an USB
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 |
AW: handcanner an USB
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. |
AW: handcanner an USB
Zitat:
danke dir, ich denke das ist das Einfachste und wohl auch Sicherste |
AW: handcanner an USB
Zitat:
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 |
AW: handcanner an USB
Ich finde nicht die Zeit alles zu erklären, geht:
Du benötigst JWAWinUser ladbar unter ![]() 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; |
AW: handcanner an USB
danke euch, ich schau es mir durch
|
AW: handcanner an USB
Hab da im Netz auch etwas (mehr) Code zu gefunden, basiert aber auf dem gleichen Ansatz mit Erläuterung
![]() |
AW: handcanner an USB
Zitat:
Edit : Ist length (TEdit.Text) >= 8 dann ist es wohl EAN-Nr. |
AW: handcanner an USB
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. |
AW: handcanner an USB
Zitat:
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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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 by Thomas Breitkreuz