Aangezien XInput niet meer onderhouden wordt door Microsoft sinds de introductie van XNA ben ik genoodzaakt over te stappen op de community library van SlimDX als ik gebruik wil maken van een Xbox controller zonder de hele XNA library in mijn project te integreren.
In C# is een controller gerepresenteerd door de class SlimDX.XInput.Controller. Deze wordt constructed met een UserIndex enum, welke de volgende waardes kan hebben: {Any, One, Two, Three, Four}
Deze code geeft echter de volgende nietszeggende XInputException:
ERROR_BAD_ARGUMENTS: n/a (-2147024736)
Wat ik op internet kon vinden, was dat deze error veelal betekent dat er ergens in de onderliggende laag iets misgaat, vaak in de vorm van drivers / connectiviteit. Dit heb ik onderzocht op de volgende manier:
Als ik UserIndex.One (of two, three, four) probeer in plaats van Any, dan is IsConnected altijd false.
Als ik de controller uit de PC haal, dan reageert de applicatie nog steeds hetzelfde (Any > IsConnected = true, exception, One,Two,Three,Four > IsConnected = false).
Lijkt dus alsof de controller niet herkend wordt...
In apparatenbeheer is hij echter wel netjes te zien als 'Xbox 360 Wireless Controller via Play & Charge Kit'.
Mis ik iets van drivers of iets dergelijks? Alles wat ik op internet kan vinden is óf achterhaald (gaat over oude DirectX library ipv SlimDX), óf gaat er van uit dat alles prima werkt en gaat gelijk dieper in op de controller uitlezen.
In C# is een controller gerepresenteerd door de class SlimDX.XInput.Controller. Deze wordt constructed met een UserIndex enum, welke de volgende waardes kan hebben: {Any, One, Two, Three, Four}
code:
1
2
3
4
5
| controller = new SlimDX.XInput.Controller(UserIndex.Any); if (controller.IsConnected) { State state = controller.GetState(); } |
Deze code geeft echter de volgende nietszeggende XInputException:
ERROR_BAD_ARGUMENTS: n/a (-2147024736)
Wat ik op internet kon vinden, was dat deze error veelal betekent dat er ergens in de onderliggende laag iets misgaat, vaak in de vorm van drivers / connectiviteit. Dit heb ik onderzocht op de volgende manier:
Als ik UserIndex.One (of two, three, four) probeer in plaats van Any, dan is IsConnected altijd false.
Als ik de controller uit de PC haal, dan reageert de applicatie nog steeds hetzelfde (Any > IsConnected = true, exception, One,Two,Three,Four > IsConnected = false).
Lijkt dus alsof de controller niet herkend wordt...
In apparatenbeheer is hij echter wel netjes te zien als 'Xbox 360 Wireless Controller via Play & Charge Kit'.
Mis ik iets van drivers of iets dergelijks? Alles wat ik op internet kan vinden is óf achterhaald (gaat over oude DirectX library ipv SlimDX), óf gaat er van uit dat alles prima werkt en gaat gelijk dieper in op de controller uitlezen.