| |
|
|
- Página 1 - |
|
Erasmus.Herold | ¡Hola liebe Comunidad.
Möchte lo con diesem Thema todavía una vez bastante anders versuchen, a Ayuda a kommen. El COM Schnittstelle al PC auszulesen es con XProfan simpel.
Como sieht lo de con el USB Schnittstelle? Sombrero alguien se daran intenta y ha Codeschnipsel para mich?
Bitte no Diskussion en Treiber, Windowshoheiten oder USB2COM Adapter, pero a diesem Hilo Por favor, sólo el Austausch, si alguien con XProfan USB direkt auslesen kann.
Gracias euch. |
|
|
| |
|
|
|
« Dieser Contribución wurde como Solución gekennzeichnet. » |
|
Paul Glatz | El "1995378067" en hScanner& es una Handle el Gerät y se se zwischen Programa- oder Computerneustarts ändern. Der Gerätename (\\?\HID#VID_????&PID_????...) debería konstant bleiben.
Mir es no Möglichkeit bekannt valor anzuzeigen. Aber el VID/PID sieht uno auch en el Geräte-Manager bajo "Hardware-IDs". |
|
|
| |
|
|
|
|
Paul Glatz | ¡Hola,
para HID Geräte Yo bisher (außerhalb de XProfan) HIDAPI [...] verwendet.
El de Windows bereitgestellten HID APIs verbieten sin embargo el Zugriff en HID-Tastaturen y Mäuse.
Für el Verwendung de HIDAPI en XProfan Yo veces una kleines Beispielprogramm angehangen.
Descargar
Für el Zugriff en HID-Tastaturen y Mäuse u otros (no HID) USB Geräte es una separater Treiber notwendig. libusb [...] enthält una Treiber con el uno de una eigenen Programa kompletten Zugriff en una USB-Gerät erhält. |
|
|
| |
|
|
|
Erasmus.Herold | Das hört se ya una vez prima a. Werde Yo kurzfristig testen.
Bedeutet also. 1. Yo muss el zuletzt genannten zusätzlichen Treiber installieren? 2. El HIDAPI downloaden y bereitstellen? 3. Das kleine Demoprogramm testen?
Saludo y DANKE Erasmus |
|
|
| |
|
|
|
Paul Glatz | Für HIDAPI braucht uno no Treiber y el hidapi.dll Yo en el zip con previsto.
Den Treiber braucht uno para libusb. Mit libusb muss uno son el komplette USB Kommunikation incluso kümmern. Dazu Yo kein Demoprogramm. Tal vez versuche Yo morgen veces eins a redactar. |
|
|
| |
|
|
|
Erasmus.Herold | ¡Hola Paul.
Ein erster Test sieht ya veces nada así schlecht de. Anbei una Screenshot. Yo erkenne mi 6 USB Anschlüsse. Dazu una Referencia en angeschlossene Tastatur y Ratón de Logitech.
Aus el Ferne fehlt me heute al Sonntag el Macht, una Barcode-Scanner y / oder una RFID-Reader a USB anzuschließen.
Bin gespannt, si Yo entonces una direkten Zugriff darauf bekomme y z.B. una gescannte EAN direkt en una variable abgreifen kann. |
|
|
| |
|
|
|
H.Brill | Der Barcode Reader se en me auch erkannt.
Wobei Yo ya Internet Beispiele en C / Delphi usw. gesehen habe, el sin libusb el Scanner erkennen o. auslesen puede.
Es auch encima API y wm_input y entsprechenden Estructuras. Zuerst muß entonces una Gerät con RegisterRawInputDevices angemeldet voluntad. Como kommen sólo Standardkonstanten antes, el en el MSDN beschrieben son.
Lo llevará a cabo schwierig, como XProfan sólo el wichtigsten Standard-Messages durchläßt. Somit muß uno wahrscheinlich el Messageverwaltung abschalten y GetMessage trabajo, qué pero en uno grafischen Benutzer- Oberfläche (GUI) muy hinderlich es.
En Rolands Ejemplo con GetMessage (Messageverwaltung incluso tomar) bekomme Yo z.B. beim Einlesen uno Barcodes en el Editar el Message 257.
Also se como ya una Message geschickt.
Man podría auch una avanzado Tastatur - Hook escribir, el cierto Tastenkürzel abfängt. Dazu muß una continuación wiederum el Scanner así konfigurieren, daß Anfang y Ende des Barcodes con un de el Tastatur unerreichbaren virt. Tastencode gekennzeichnet se. Aber mejor wäre lo, alles sin Editar campo y en el Hintergrund a hacer. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 05.05.2019 ▲ |
|
|
|
|
Paul Glatz | Yo bin en Búsqueda después de uno Möglichkeit una Barcode Scanner auszulesen auch ya en RegisterRawInputDevices gestoßen.
Jedoch Yo encima RawInput no Möglichkeit gefunden en a verhinden, dass el Eingaben des Scanners zusätzlich a RawInput Messages como normale Tastatureingaben gesendet voluntad.
Somit se z. B. si grad una Editar campo el enfoque ha el Barcode zusätzlich hay eingegeben oder si una Button ausgewählt es se dieser por el Barcodescanner ausgelöst (si la Scanner al Ende des Barcodes Enter "drückt"). |
|
|
| |
|
|
|
H.Brill | Na el wäre sí ya qué. El Editfelder podría uno en efecto con $00CF en Read only conjunto, si la Barcode eintrifft y después de el Lesen otra vez zurücksetzen. Oder necesidad du necesariamente el ENTER en el Barcode ? |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 05.05.2019 ▲ |
|
|
|
|
Erasmus.Herold | Gracias para el Ideen y Ansätze. Gleichwohl vom einfachen (luxuriösen) Erfassen á la COM es doch weit lejos. Saludo Erasmus |
|
|
| |
|
|
|
H.Brill | Was para una Scanner hast du porque ? Kann uno el no ajustar en COM Emulation ? |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 05.05.2019 ▲ |
|
|
|
|
Erasmus.Herold | Exactamente el es mein Ansatz. Un Solución en XProfan para reine USB Geräte para encontrar. Via COM es nie una Problema. |
|
|
| |
|
|
|
Paul Glatz | Posesiones otra vez con RawInput rumprobiert y una Möglichkeit gefunden a Eingaben des Scanners abzufangen.
Das Programa setzt si una Eingabe vom Scanner erkannt se el Focus en una verstecktes Editar y si una Enter vom Scanner kommt se el Foco el ursprüngliche Control zurück gesetzt y Barcode kann de el verstecken Editar gelesen voluntad.
Posesiones gerade no Barcodescanner para Testen como y podría lo por lo tanto sólo uno zweiten Tastatur testen.
Struct RAWINPUTDEVICE = usUsagePage%, usUsage%, dwFlags&, hwndTarget&
Struct RAWINPUTKEYBOARD = dwType&, dwSize&, hDevice&, wParam&, MakeCode%, Flags%, Reserved%, VKey%, Message&, ExtraInformation&
Def RegisterRawInputDevices(3) !"User32", "RegisterRawInputDevices"
Def GetRawInputData(5) !"User32", "GetRawInputData"
Def GetRawInputDeviceList(3) !"User32", "GetRawInputDeviceList"
Def GetRawInputDeviceInfoA(4) !"User32", "GetRawInputDeviceInfoA"
Título de la ventana "RawInput"
Ventana 1000, 600
SubClass %HWnd, 1
Declarar hScanner&, CodeStatus%, CodeFocus&
DrawText 5, 5, "Scanner:"
Var hDev& = Crear("ChoiceBox", %hwnd, 1, 5, 25, Width(%hwnd) - 10, 300)
AddDevices hDev&
Crear("Button", %hwnd, "Testbutton", 5, 60, 200, 25)
Crear("Edit", %hwnd, "Testedit", 5, 90, 200, 25)
Var hCode& = Crear("Edit", %hwnd, "", 2000, 2000, 0, 0)// Verstecktes Textfeld para Barcodeeingabe
Var hLog& = Crear("MultiEdit", %hwnd, "", 5, 120, Width(%hwnd) - 10, Height(%hwnd) - 125)
// RawInput registrieren
Declarar rid#
Dim rid#, RAWINPUTDEVICE
rid#.usUsagePage% = 1// RegisterRawInputDevices
rid#.usUsage% = 6// Keyboard
rid#.dwFlags& = 0// $30 /* RIDEV_NOLEGACY */
rid#.hwndTarget& = %hwnd
Caso negativo RegisterRawInputDevices(rid#, 1, SizeOf(rid#))
MessageBox("RawInput podría no registriert voluntad " + Hex$(%WinError), "", 0)
EndIf
// Hauptschleife
Mientras que 1
WaitInput
If Clicked(hDev&)
hScanner& = Val(Substr$(GetText $(hDev&), 2, "|"))
ElseIf %MenuItem = 1234
SetText hLog&, GetText $(hLog&) + "Barcode gelesen: " + GetText $(hCode&) + "\n"
EndIf
EndWhile
Proc AddDevices
Parámetros hList&
Declarar numDevices&, devices#, hDevice&
GetRawInputDeviceList(0, Addr(numDevices&), 8)
If numDevices& = 0
Volver
EndIf
Dim devices#, numDevices& * 8
GetRawInputDeviceList(devices#, Addr(numDevices&), 8)
WhileLoop numDevices&
If Largo(devices#, (&Loop * 8) + 4) = 1/* RIM_TYPEKEYBOARD */
hDevice& = Largo(devices#, &Loop * 8)
AddStrings(hList&, GetDeviceName(hDevice&) + "|" + Str$(hDevice&))
EndIf
EndWhile
ENDPROC
Proc GetDeviceName
Parámetros hdev&
Declarar buf#, len&
GetRawInputDeviceInfoA(hdev&, $20000007 0, Addr(len&))/* RIDI_DEVICENAME */
If len& = 0
Volver ""
EndIf
Dim buf#, len&
GetRawInputDeviceInfoA(hdev&, $20000007 buf#, Addr(len&))/* RIDI_DEVICENAME */
Volver String$(buf#, 0)
ENDPROC
SubClassProc
If SubClassMessage(%hWnd, $00ff)/* WM_INPUT */
Declarar raw#
Dim raw#, RAWINPUTKEYBOARD
Var size& = SizeOf(raw#)
Caso negativo GetRawInputData(&sLParam, $10000003 raw#, addr(size&), 16) == -1/* RID_INPUT */
If (raw#.hDevice& = hScanner&) AND ((raw#.flags% & 1 = 0)/* RI_KEY_BREAK */
Caso negativo GetFocus(hCode&)
CodeFocus& = %GetFocus
SetFocus(hCode&)
SetText hCode&, ""
EndIf
If raw#.VKey% = 13// scancode 13 = Enter
SetFocus(CodeFocus&)
CodeFocus& = 0
SetMenuItem 1234
EndIf
EndIf
EndIf
EndIf
ENDPROC
|
|
|
| |
|
|