Hallo,
ich habe einen Logitech Extreme Pro 3D Joystick. Mit dem hab ich vor einigen Jahren (Gekaufte) Spiele gespielt, bis irgendwann etwas mit den Achsen kaputt war und der Joystick irgendwelche Drehbewegungen X/Y ausführte, obwohl er sich in Mittelstellung befand. Das ist aber schon einige Jahre her, deshalb weiß ich es nicht mehr so genau.
Jetzt habe ich den Joystick ausgegraben und versucht an mein Spiel anzudocken. Anbindung erfolgte über HID. Allerdings habe ich folgendes beobachtet:
- Das erste Byte der HID-Daten liefert bei Links-Stellung des Joysticks 0 und bei Rechtsstellung 255. Soweit so gut.
- Jedoch in der Mittelstellung liefert der Joystick alle möglichen Werte, meistens 0xFC, manchmal aber auch 0 und ganz selten die erwartete 128.
Tippe ich den Joystick in Mittelstellung leicht an, schwanken die Werte extrem. (Von 0 bis 255 ist da alles dabei, es tauchen aber vorrangig werte im min bzw. max Bereich auf)
Auch in leichter Rechts/Links Stellung liefert er unpassende Werte, wenn man dann über 25% hinaus geht sind die Werte stabil zwischen 0...~100 für Links-Stellung bzw. ~158...255 für Rechtsstellung.
Dachte mir, ja gut, der ist ja auch kaputt und habe denselben Joystick nochmal bestellt. Allerdings -wie sich im nachhinein herausstellte - gebraucht und er liefert genau das selbe Verhalten.
Ich kenne sonen irrsinn aus der Embedded Entwicklung, da gibt es z.b bei billig-Dreh-Enodern undefinierte Zustände, die man berücksichtigen sollte. Ich hätte allerdings nicht erwartet dass mir so ein quatsch in der PC-Welt begegnet, wo die Hardware mit HW-Treibern und Software daherkommt. Ich habe auch hinweise gefunden, dass Leute schon davon ausgehen, dass die Range -127 ... +127 gilt [1] und so ein Jittering in der Mittelstellung nicht auftreten sollte / bzw. berücksichtigt werden muss.
Es scheint ja auch so zu sein, dass moderne Joysticks mit 16 bit achsenwerten arbeiten. Bevor ich jetzt noch mehr Nerven in den Sand setze und irgendwelche statemachines programmiere um meinen defekten (?!) joystick softwareseitig zu kompensieren frag ich lieber mal nach, was eure Erfahrungen mit Joystick Anbindung sind. Welche Joysticks/SW-Treiber empfehlt ihr?
Eigentlich hätte ich die Anbindung über das Mono-Framework gemacht, aber dieses scheint den Joystick nicht zu unterstützen, also habe ich irgendeine HID-Library verwendet. Die scheint auch zu funktionieren, ich denke das Problem liegt an der Joystick-Hardware. (Die Z-Achse funktioniert, X/Y Achse liefert o.g. Jittering in der Mittelstellung und ich meine mich wie gesagt zu erinnern, dass auch gekaufte spiele Probleme mit dem Joystick hatten)
Daraus ergeben sich die Fragen:
1. Kennt ihr so ein Jittering bei der Mittelstellung der Joystick Achse?
2. Muss ich das Softwareseitig kompensieren oder ist der Joystick defekt?
3. Welche Treiberarchitektur empfehlt ihr für Joystick Anbindung als Referenz?
4. Welche aktuellen Joysticks/Treiber mit 16-Bit Achsenwerten empfehlt ihr als Referenz?
[1]
https://github.com/betaflight/betaflight/issues/6791