[C#,C++, DirectX]Bepalen van een XInput device nummer

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • NC83
  • Registratie: Juni 2007
  • Laatst online: 08-07 22:30
Hallo,

Het probleem waar ik mee zit is dat ik de device index van een XInput controller(X360 controller en wheel bijvoorbeeld) moet hebben. Alle controllers die op een PC zijn aangesloten worden via Direct Input op gesomt , hier bij wordt dan gekeken of dit een XInput Device is.
Het probleem is nu echter dat er meerdere XInput devices( tot maximaal vier) op een PC kunnen zijn aangesloten.

Uit deze opsomming wil ik echter ook het device id krijgen. Tot dusver zie ik geen mogelijkheid om dit te krijgen. Wat ik wel krijg is de naam van het device, maar hier heb ik niks aan omdat er meerdere aparaten met dezelfde naam aan de PC verbonden kunnen zijn, en je niet via XInput deze naam kan krijgen. Je hebt in XInput het device id nodig om de state van de knopen en dergelijken op te halen.

De applicatie die wordt ontwikkeld moet Direct Input en XInput ondersteunen. Het moet zowel joysticks en wheels ondersteunen, enkel onderscheid maken op type heeft geen zin omdat er meerdere wheels of controllers verbonden kunnen zijn met dezelfde naam.

De controlle om te kijken of een device een XInput device is wordt in C++ gedaan waarna de informatie hiervan aan een C# applicatie wordt gegeven. De C# applicatie zelf maakt gebruik van MDX en niet XNA, Xinput wordt door middel van Marshalling gedaan binnen de C# applicatie.

[ Voor 11% gewijzigd door NC83 op 25-09-2009 13:11 ]

ex-FE Programmer: CMR:DiRT2,DiRT 3, DiRT Showdown, GRID 2, Mad Max


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik snap je probleem niet helemaal. Je kunt toch gewoon met XInput de devices opsommen? Dan heb je toch het device index, waarmee je de buttons kan queryen?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NC83
  • Registratie: Juni 2007
  • Laatst online: 08-07 22:30
Het probleem is dat de device keuze aan de hand van een combo wordt gemaakt die enkel de device naam heeft en XInput heeft geen opsommings functie. Xinput zegt enkel dat er maximaal 4 devices zijn van 0 tot en met 3.

De applicatie laat de gebruiker echter alleen toe om een device uit een lijst te kiezen van verschillende devices. Direct input is de enige manier om uit te vinden welke devices er aan een pc zitten, ook al zijn dit XInput devices, Echter het probleem zit erin dat deze tool een action map editor is, en dat de applicatie die de action maps gebruikt XInput controllers anders benadert dan Direct Input.

ex-FE Programmer: CMR:DiRT2,DiRT 3, DiRT Showdown, GRID 2, Mad Max


Acties:
  • 0 Henk 'm!

Anoniem: 261819


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ok, wat je met die hele lap tekst dus eigenljik wilt omschrijven is dat je niet weet welke DirectInput devices bij welk XInput devices horen? ;)
Is 't niet toevallig zo dat de volgorde altijd overeen komt?
Dat zorgt er alleen maar voor dat je XInput devices niet mee-enumereert met je DirectInput devices. Je kan nog steeds geen koppeling maken tussen de DirectInput-device en XInput user index.

[ Voor 48% gewijzigd door .oisyn op 25-09-2009 15:17 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Anoniem: 261819

.oisyn schreef op vrijdag 25 september 2009 @ 15:15:

[...]

Dat zorgt er alleen maar voor dat je XInput devices niet mee-enumereert met je DirectInput devices. Je kan nog steeds geen koppeling maken tussen de DirectInput-device en XInput user index.
Jawel, maar de code laat tevens zien hoe je het DeviceID kan krijgen. Dat was toch het probleem dat de TS heeft ? (Of ik ben echt nodig aan weekend toe)

[ Voor 12% gewijzigd door Anoniem: 261819 op 25-09-2009 15:23 ]


Acties:
  • 0 Henk 'm!

  • NC83
  • Registratie: Juni 2007
  • Laatst online: 08-07 22:30
Nee wat die code doet is je enkel vertellen welke devices XInput devices zijn en die code wordt gebruikt om de XInput van Direct Input te scheiden.

Nee helaas is het niet zo dat de volgorde van device index de volgorde van connectie is :(, was dat maar zo dan was dit geen probleem.

ex-FE Programmer: CMR:DiRT2,DiRT 3, DiRT Showdown, GRID 2, Mad Max

Pagina: 1