AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) HID-Komponente - Status der Buttons abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

HID-Komponente - Status der Buttons abfragen

Ein Thema von Breager · begonnen am 31. Jul 2012 · letzter Beitrag vom 24. Jan 2021
Antwort Antwort
Seite 1 von 2  1 2      
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#1

HID-Komponente - Status der Buttons abfragen

  Alt 31. Jul 2012, 22:32
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

Geändert von Breager (31. Jul 2012 um 22:34 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

AW: HID-Komponente - Status der Buttons abfragen

  Alt 1. Aug 2012, 00:01
Dafür reicht eine Joystick-Unit.
Erscheint das Device tatsächlich als HID-Device?
  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
 
#3

AW: HID-Komponente - Status der Buttons abfragen

  Alt 1. Aug 2012, 00:09
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.
Angehängte Dateien
Dateityp: pas TPXJoyThread.pas (6,6 KB, 15x aufgerufen)
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
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#4

AW: HID-Komponente - Status der Buttons abfragen

  Alt 1. Aug 2012, 01:06
Danke für Eure Antworten.

Zitat von hathor:
Erscheint das Device tatsächlich als HID-Device?
Funktioniert mit beiden USB-Gamepads, die ich besitze.

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:
http://www.codeproject.com/Articles/...Joystick-Input

Leider komme ich damit nicht zurecht, da ich nicht genau weiss, wie ich die Parameter in Delphi nutzen muss.

Geändert von Breager ( 1. Aug 2012 um 01:10 Uhr)
  Mit Zitat antworten Zitat
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#5

AW: HID-Komponente - Status der Buttons abfragen

  Alt 1. Aug 2012, 23:31
Zitat von breager:
Leider wird eines meiner beiden Gamepads nicht erkannt
Ich habe mich geirrt. Dass Gamepad wird erkannt. Allerdings werden die Tasten nicht eingelesen. Vielleicht liegt es wirklich daran, dass kein Analogstick vorhanden ist.

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
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

AW: HID-Komponente - Status der Buttons abfragen

  Alt 2. Aug 2012, 09:16
...Sollte Interesse bestehen, kann ich mein Demo-Programm hochladen.

Viele Grüße

Ja, bitte!
  Mit Zitat antworten Zitat
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#7

AW: HID-Komponente - Status der Buttons abfragen

  Alt 2. Aug 2012, 18:23
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

Geändert von MrSpock ( 5. Aug 2012 um 18:42 Uhr) Grund: Anhang auf Wunsch des Erstellers gelöscht.
  Mit Zitat antworten Zitat
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#8

AW: HID-Komponente - Status der Buttons abfragen

  Alt 4. Aug 2012, 00:43
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
  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: HID-Komponente - Status der Buttons abfragen

  Alt 4. Aug 2012, 08:05
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
nein, jeder eigene Beitrag kann innerhalb von 24h geändert werden, aber danach halt nur noch von einem Mod
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
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#10

AW: HID-Komponente - Status der Buttons abfragen

  Alt 5. Aug 2012, 00:10
Zitat von Sir Rufo:
nein, jeder eigene Beitrag kann innerhalb von 24h geändert werden
Danke Sir Rufo, dann muss ich mich diesbezüglich ans Team wenden.

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
Angehängte Dateien
Dateityp: zip JoystickDemo02.zip (240,5 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:59 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