| |
|
|
- page 1 - |
|
 Erasmus.Herold | allô liebe Community.
voudrais es avec diesem Thema encore einmal entier anders versuchen, trop Aider trop venons. qui COM Schnittstelle am PC auszulesen ist avec XProfan simpel.
comment sieht es aus avec qui USB Schnittstelle? Hat quelqu'un sich daran versucht et hat Codeschnipsel pour mich?
s'il te plaît aucun Diskussion um Treiber, Windowshoheiten ou bien USB2COM Adapter, mais trop diesem Fil s'il te plaît seulement den Austausch, si quelqu'un avec XProfan USB direct auslesen peux.
merci euch. |
|
|
| |
|
|
 |
« cette Beitrag wurde comme Solution gekennzeichnet. » |
|
 Paul Glatz | qui "1995378067" dans hScanner& est un Handle sur cela Gerät et wird sich entre Programme- ou bien Computerneustarts changement. qui Gerätename (\\?\HID#VID_????&PID_????...) sollte konstant rester.
Mir ist aucun Possibilité bekannt la valeur anzuzeigen. mais qui VID/PID sieht on aussi im Geräte-Manager sous "Hardware-IDs". |
|
|
| |
|
 |
|
|
 Paul Glatz | Salut,
pour HID Geräte habe je bisher (außerhalb de XProfan) HIDAPI [...] verwendet.
qui de Windows bereitgestellten HID APIs prohiber cependant den Zugriff sur HID-Tastaturen et Mäuse.
Pour qui Verwendung de HIDAPI dans XProfan habe je la fois un kleines Beispielprogramm angehangen.
Herunterladen
Pour den Zugriff sur HID-Tastaturen et Mäuse ou bien autre (pas HID) USB Geräte est un separater Treiber notwendig. libusb [...] contient une Treiber avec dem on aus einem eigenen Programme kompletten Zugriff sur un USB-Gerät erhält. |
|
|
| |
|
|
|
 Erasmus.Herold | cela hört sich déjà einmal prima à. Werde je kurzfristig testen.
Bedeutet alors. 1. je muss den zuletzt genannten zusätzlichen Treiber installer? 2. qui HIDAPI downloaden et bereitstellen? 3. cela kleine Demoprogramm testen?
Salut et DANKE Erasmus |
|
|
| |
|
|
|
 Paul Glatz | Pour HIDAPI braucht on keinen Treiber et qui hidapi.dll habe je dans qui zip avec bereitgestellt.
Den Treiber braucht on pour libusb. avec libusb muss on sich à komplette USB communication selbst kümmern. en supplément habe je ne...aucune Demoprogramm. peut-être versuche je demain la fois une trop erstellen. |
|
|
| |
|
|
|
 Erasmus.Herold | allô Paul.
un erster Test sieht déjà la fois gar pas so mal aus. Anbei un Screenshot. je erkenne mon 6 USB Anschlüsse. en supplément un Hinweis sur angeschlossene clavier et souris de Logitech. 
Aus qui Ferne fehlt mir aujourd'hui am dimanche qui pouvoir, une Barcode-Scanner et / ou bien une RFID-Reader à USB anzuschließen. 
suis gespannt, si je ensuite une direkten Zugriff puis bekomme et z.B. une gescannte EAN direct dans une variable abgreifen peux. |
|
|
| |
|
|
|
 H.Brill | qui Barcode Reader wird chez mir aussi erkannt.
Wobei je déjà im Internet Beispiele dans C / Delphi usw. gesehen habe, qui sans libusb den Scanner erkennen bzw. auslesen peut.
cela allez aussi sur API et wm_input et entsprechenden Strukturen. d'abord doit ensuite un Gerät avec RegisterRawInputDevices angemeldet volonté. là venons seulement Standardkonstanten avant, qui dans qui MSDN beschrieben sommes.
Es wird arrêt schwierig, là XProfan seulement qui wichtigsten Standard-Messages durchläßt. Somit doit on wahrscheinlich qui Messageverwaltung débrancher et GetMessage travailler, quoi mais chez einer grafischen Benutzer- surface (GUI) très hinderlich ist.
chez Rolands Beispiel avec GetMessage (Messageverwaltung selbst prendre) bekomme je z.B. beim Einlesen eines Barcodes ins Éditer qui Message 257.
alors wird là déjà une Message envoyé.
on pourrait aussi une erweiterten clavier - Hook écrivons, qui bestimmte Tastenkürzel abfängt. en supplément doit on ensuite wiederum den Scanner so konfigurieren, qui Anfang et Ende des Barcodes avec einem de qui clavier unerreichbaren virt. Tastencode gekennzeichnet wird. mais besser wäre es, alles sans Modifier le champ de et im Hintergrund trop faire. |
|
|
| 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 | je suis chez qui cherche pour einer Possibilité une Barcode Scanner auszulesen aussi déjà sur RegisterRawInputDevices gestoßen.
cependant habe je sur RawInput aucun Possibilité trouvé afin de verhinden, dass qui Eingaben des Scanners zusätzlich le RawInput Messages comme normale Tastatureingaben gesendet volonté.
Somit wird z. B. si grad un Modifier le champ de den Concentrer hat qui Barcode zusätzlich là eingegeben ou bien si un Button ausgewählt ist wird cette par den Barcodescanner ausgelöst (si qui Scanner am Ende des Barcodes Enter "drückt"). |
|
|
| |
|
|
|
 H.Brill | Na cela wäre oui déjà quoi. qui Editfelder pourrait on oui aussi avec $00CF sur Read only mettons, si qui Barcode eintrifft et pour dem Lesen wieder zurücksetzen. ou bien brauchst du absolument cela ENTER im 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 | merci pour qui idées et Ansätze. Gleichwohl vom einfachen (luxuriösen) Erfassen á la COM ist es doch large entfernt. Salut Erasmus |
|
|
| |
|
|
|
 H.Brill | quoi pour une Scanner la hâte du car ? peux on den pas ajuster sur 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 | oui c'est ca c'est mon Ansatz. une Solution dans XProfan pour reine USB Geräte pour trouver. Via COM ist nie un Problem. |
|
|
| |
|
|
|
 Paul Glatz | Habe nochmal avec RawInput rumprobiert et une Possibilité trouvé à Eingaben des Scanners abzufangen.
cela Programme mets si une Eingabe vom Scanner erkannt wird den Concentrer dans un verstecktes Éditer et si un Enter vom Scanner venez wird qui Concentrer sur cela ursprüngliche Contrôle zurück gesetzt et qui Barcode peux aus dem verstecken Éditer gelesen volonté.
Habe justement aucun Barcodescanner zum Testen là et konnte es daher seulement avec einer zweiten clavier 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"
Titre de la fenêtre "RawInput"
Fenêtre 1000, 600
SubClass %HWnd, 1
Déclarer hScanner&, CodeStatus%, CodeFocus&
DrawText 5, 5, "Scanner:"
Var hDev& = Créer("ChoiceBox", %hwnd, 1, 5, 25, Width(%hwnd) - 10, 300)
AddDevices hDev&
Créer("Button", %hwnd, "Testbutton", 5, 60, 200, 25)
Créer("Edit", %hwnd, "Testedit", 5, 90, 200, 25)
Var hCode& = Créer("Edit", %hwnd, », 2000, 2000, 0, 0)// Verstecktes Textfeld pour Barcodeeingabe
Var hLog& = Créer("MultiEdit", %hwnd, », 5, 120, Width(%hwnd) - 10, Height(%hwnd) - 125)
// RawInput registrieren
Déclarer rid#
Faible rid#, RAWINPUTDEVICE
rid#.usUsagePage% = 1// RegisterRawInputDevices
rid#.usUsage% = 6// Keyboard
rid#.dwFlags& = 0// $30 /* RIDEV_NOLEGACY */
rid#.hwndTarget& = %hwnd
Si non RegisterRawInputDevices(rid#, 1, SizeOf(rid#))
MessageBox("RawInput konnte pas registriert volonté " + Hex$(%WinError), », 0)
EndIf
// Hauptschleife
Tandis que 1
WaitInput
Si Clicked(hDev&)
hScanner& = Val($ Substr(GetText $(hDev&), 2, "|"))
ElseIf %MenuItem = 1234
SetText hLog&, GetText $(hLog&) + "Barcode gelesen: " + GetText $(hCode&) + "\n"
EndIf
Endwhile
Proc AddDevices
Paramètres hList&
Déclarer numDevices&, devices#, hDevice&
GetRawInputDeviceList(0, Addr(numDevices&), 8)
Si numDevices& = 0
Retour
EndIf
Faible devices#, numDevices& * 8
GetRawInputDeviceList(devices#, Addr(numDevices&), 8)
WhileLoop numDevices&
Si Long(devices#, (&Boucle * 8) + 4) = 1/* RIM_TYPEKEYBOARD */
hDevice& = Long(devices#, &Boucle * 8)
AddStrings(hList&, GetDeviceName(hDevice&) + "|" + Str$(hDevice&))
EndIf
Endwhile
ENDPROC
Proc GetDeviceName
Paramètres hdev&
Déclarer buf#, len&
GetRawInputDeviceInfoA(hdev&, $20000007 0, Addr(len&))/* RIDI_DEVICENAME */
Si len& = 0
Retour »
EndIf
Faible buf#, len&
GetRawInputDeviceInfoA(hdev&, $20000007 buf#, Addr(len&))/* RIDI_DEVICENAME */
Retour String$(buf#, 0)
ENDPROC
SubClassProc
Si SubClassMessage(%hWnd, $00ff)/* WM_INPUT */
Déclarer raw#
Faible raw#, RAWINPUTKEYBOARD
Var size& = SizeOf(raw#)
Si non GetRawInputData(&sLParam, $10000003 raw#, addr(size&), 16) == -1/* RID_INPUT */
Si (raw#.hDevice& = hScanner&) AND ((raw#.flags% & 1 = 0)/* RI_KEY_BREAK */
Si non GetFocus(hCode&)
CodeFocus& = %GetFocus
SetFocus(hCode&)
SetText hCode&, »
EndIf
Si raw#.VKey% = 13// scancode 13 = Enter
SetFocus(CodeFocus&)
CodeFocus& = 0
SetMenuItem 1234
EndIf
EndIf
EndIf
EndIf
ENDPROC
|
|
|
| |
|
|