Question

J'écris un programme qui doit prendre l'entrée d'un contrôleur XBox 360. L'entrée sera alors envoyé sans fil à un hélicoptère RC que je suis bâtiment.

Jusqu'à présent, je l'ai appris que cela peut être fait en utilisant la bibliothèque XInput de DirectX, ou le cadre d'entrée dans XNA.

Je me demande s'il y a d'autres options disponibles. La portée de mon programme est assez petit, et d'avoir à installer une grande bibliothèque de jeux comme DirectX ou XNA semble excessive. De plus, je voudrais que le programme soit multi-plateforme et non spécifique à Microsoft.

Yat-il un moyen simple léger, je peux saisir l'entrée du contrôleur avec quelque chose comme Python?

Modifier pour répondre à certains commentaires:

Le copter aura 6 hélices au total, disposés en trois paires co-axiales. En gros, il sera très similaire à cette , seulement il vous coûtera environ 1000 $ plutôt que 15 000 $. Il utilisera un Arduino pour le traitement à bord, et Zigbee pour le contrôle sans fil.

Le contrôleur 360 a été choisi car il est bien conçu. Il est très ergonomique et a toutes les entrées de contrôle nécessaires. Pour ceux qui sont familiers avec les commandes de l'hélicoptère, le joystick gauche contrôlera le collectif, le joystick droit avec contrôle le tangage et le roulis, et les déclencheurs analogiques contrôlera le lacet. Les déclencheurs analogiques sont une grande fonctionnalité pour le contrôleur 360. PS et la plupart des autres ne les ont pas.

J'ai une page web pour le projet, mais il est encore assez rare. Je prévois de documenter la conception de l'ensemble, donc finalement il sera intéressant.
http://tricopter.googlecode.com
Sur une note de côté, serait-il tuer Google d'avoir une fonction de blog pour les projets googlecode?

Je voudrais que le programme d'entrée du contrôleur 360 pour exécuter à la fois Linux et Windows, si possible. Finalement, cependant, je voudrais brancher le contrôleur directement à une carte microcontrôleur intégré (comme Arduino) pour que je ne dois pas passer par un ordinateur, mais ce ne est pas une priorité pour le moment.

Était-ce utile?

La solution

PyGame peut lire joysticks, qui est ce que le contrôleur de X360 apparaît comme sur un PC.

Autres conseils

Il est pas si difficile. Comme mentionné plus tôt gars, vous pouvez utiliser les bibliothèques SDL pour lire l'état du contrôleur de xbox et vous pouvez faire ce que vous voulez avec.

Il y a un tutoriel SDL: http://sdl.beuc.net/sdl.wiki/Handling_Joysticks ce qui est assez utile.

Notez qu'un contrôleur Xbox a les éléments suivants:

  • deux joysticks:
    • joystick vers la gauche est l'axe 0 et 1;
    • gâchette gauche est l'axe 2;
    • joystick vers la droite est l'axe 3 et 4;
    • gâchette droite est l'axe 5
  • un chapeau (le tampon D)
  • 11 touches SDL
    • deux d'entre eux sont des presses du centre joystick
  • deux déclencheurs (agissent comme axe, voir ci-dessus)

La prochaine v1.3 SDL soutiendra également le retour de force (aka. Haptique).

Je suppose, puisque ce fil est vieux de plusieurs années, vous avez déjà fait quelque chose, alors ce poste est avant tout d'informer les futurs visiteurs.

Eh bien, si vous ne voulez vraiment pas ajouter une dépendance sur DirectX, vous pouvez utiliser l'ancienne API Windows Joystick - Windows Multimédia -.> Joystick de référence dans le kit de développement de la plate-forme

La bibliothèque libre standard de jeu cross plaform est Simple DirectMedia Layer, écrit à l'origine aux jeux ports Windows pour les systèmes Unix (Linux). Il est une API très basique, léger qui a tendance à soutenir le sous-ensemble minimal de fonctionnalités sur chaque système, et il a des liaisons pour la plupart des langues principales. Il a joystick très basique et le soutien gamepad (pas de retour de force, par exemple), mais il pourrait être suffisant pour vos besoins.

Peut-être la bibliothèque Mono.Xna a ajouté le support gamepad, qui fournirait la fonctionnalité multi-plateforme que vous recherchez:
  http://code.google.com/p/monoxna/

En ce qui concerne les préoccupations au sujet de la bibliothèque étant trop lourd poids, bien sûr, pour cette option, il peut être vrai ... cependant, il pourrait ouvrir des possibilités de faire une visualisation agréable dans l'avenir.

Disclaimer: Je ne suis pas au courant de l'état du projet XNA mono, donc il ne peut pas avoir ajouté encore cette fonctionnalité. Mais encore, « tis une option: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top