![]() |
HID-Komponente - Status der Buttons abfragen
Hallo,
ich schlage mich jetzt schon seit ein paar Tagen mit der HID-Komponente herum, die der JVCL beiliegt. Habe hier auch ein paar Threads zum Thema gefunden. Ich möchte lediglich bei einem Joystick/Gamepad den Status der Buttons und der Achsen ermitteln. Kennt jemand dafür eine einfache Methode? Ich habe gelesen, dass das Abfragen des Button-Status mit HidP_GetUsages möglich sein soll und das Abfragen der Achsen mit HidP_GetUsageValue. Allerdings habe ich keine Ahnung wie. Viele Grüße |
AW: HID-Komponente - Status der Buttons abfragen
Dafür reicht eine Joystick-Unit.
Erscheint das Device tatsächlich als HID-Device? |
AW: HID-Komponente - Status der Buttons abfragen
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn es nicht die Jedi's sein müssen ... im Anhang ist der Teil mit TGamepad das was ich meine dass Du es suchen müsstest.
Beruht auf TJoyInfoEx aus MMSystem. |
AW: HID-Komponente - Status der Buttons abfragen
Danke für Eure Antworten.
Zitat:
Danke Bummi für den Anhang. Nein, es müssen nicht unbedingt die Jedi's sein. Mein Delphi2005 PE kennt leider noch keine Generics. Allerdings habe ich bereits ein Beispiel, das hier im Forum gepostet wurde und auf TJoyInfoEx basiert, ausprobiert. Leider wird eines meiner beiden Gamepads nicht erkannt (vielleicht weil es keinen Analog-Stick hat?). Und das war auch der Grund für mich, nach einer anderen Lösung zu suchen. Wie schon geschrieben, habe ich schon einiges zur HID-Komponente gefunden, leider jedoch nicht, wie man den Status der Buttons und der Achsen ermittelt (Ich erhalte nur die Rohdaten). Hier mal ein Link, wo erklärt wird, wie es funktionieren sollte: ![]() Leider komme ich damit nicht zurecht, da ich nicht genau weiss, wie ich die Parameter in Delphi nutzen muss. |
AW: HID-Komponente - Status der Buttons abfragen
Zitat:
Bei der HID-Komponente interpretiere ich nun die Rohdaten selbst. Ich kann mir ehrlichgesagt nicht vorstellen, dass die Werte bei verschiedenen Joysticks/Gamepads abweichen, testen kann ich das jedoch leider nicht in großem Ausmaß, da ich, wie schon erwähnt, nur zwei Gamepads besitze. Eigentlich wollte ich die Dataindices benutzen, allerdings sind diese für die Input Values in umgekehrter Reihenfolge. Die X-Achse hat somit den Index 1 und die Y-Achse den Index 0. Wenn ich die Bytes von links nach rechts lese, müsste es eigentlich umgekehrt sein. Ich gehe davon aus, dass die ersten Bytes genutzt werden, um die Achsen in folgender Reihenfolge einzulesen: X-Achse, Y-Achse, und eventuell weitere Achsen (Z-Achse, relative Z-Achse). Danach wird der Hat-Switch eingelesen, falls vorhanden (4 Bits) und anschließend die Buttons (Gedrückter Button bei gesetztem Bit). Sollte Interesse bestehen, kann ich mein Demo-Programm hochladen. Viele Grüße |
AW: HID-Komponente - Status der Buttons abfragen
Zitat:
Ja, bitte! :-D |
AW: HID-Komponente - Status der Buttons abfragen
O.k. hier mal mein Demo-Programm mit Quelltext und Exe. Das Programm ist jedoch noch nicht optimiert, ich werde daran noch einige Änderungen vornehmen. Im Moment wird davon ausgegangen, dass die Werte für Achsen (8 Bit), Hat-Switch (4 Bit) und die Buttons (jeweils 1 Bit) immer gleich lang sind. Ich bin mir nicht sicher, ob das auf jeden Joystick/Gamepad zutrifft. Eine Überprüfung diesbezüglich fehlt im Moment, werde ich aber noch einbauen. Eigentlich wollte ich den Dataindex zu Lokalisation der Werte nutzen. Ich denke, das werde ich noch dementsprechend ändern. Merkwürdig finde ich, dass die Werte für die Input Values in umgekehrter Reihenfolge angezeigt werden. Würde mich interssieren, ob das bei anderen Joysticks auch der Fall ist.
Unterstützt wird folgendes: Achsen: X,Y,Z,Rel. Z; Hat-Switch, Nummern-Buttons Zusätzliche Buttons, wie z.B. MODE oder VIBRATION, werden nicht unterstützt. Getestet habe ich das Programm mit dem Rumblepad 2 und dem Precision Gamepad (beide von Logitech). Viele Grüße |
AW: HID-Komponente - Status der Buttons abfragen
Hallo,
habe das Problem nach langem Ausprobieren endlich gelöst. Bitte nutzt den Download im vorherigen Post nicht mehr. Ich würde den Download entfernen, kann jedoch meine alten Beiträge nicht mehr editieren. Ist vermutlich ein Fehler in meinem Browser? Viele Grüße |
AW: HID-Komponente - Status der Buttons abfragen
Zitat:
|
AW: HID-Komponente - Status der Buttons abfragen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Da ich immer wieder froh bin, wenn mir hier geholfen wird und ich im Internet keine entsprechende Beispiele für Delphi finden konnte, möchte ich Euch meine Lösung nicht vorenthalten. Letztendlich ist es doch recht einfach (wenn man weiss, wie es funktioniert ;-) ). Das Programm im Anhang demonstriert, wie man mit der HID-Komponente der JVCL die Werte der Achsen eines Joysticks/Gamepads einlesen und überprüfen kann, welche Buttons gedrückt sind. Das Programm sollte mit jedem USB-Joystick/Gamepad funktionieren. Über Feedback diesbezüglich und Verbesserungsvorschläge würde ich mich natürlich freuen. Im Moment ist das Programm auf 6 Achsen und 255 Buttons begrenzt (Ich habe keine Ahnung, wo die Limits bei einem Joystick liegen). Vielleicht kann es jemand von Euch gebrauchen. Viele Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 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