© best_vector/Shutterstock.com
Windows Developer
Teil 1: Microsofts Xbox Controller den eigenen Anforderungen anpassen

Robotersteuerung per Xbox Controller

Innovation kommt mitunter aus unverhoffter Richtung: Als der Energie- und Automatisierungstechnikkonzern Asea Brown Boveri (ABB) einen Roboter zur Inspektion von in Öl gelagerten Transformatoren präsentierte, handelte es sich bei dem zur Steuerung verwendeten Peripheriegerät um einen Controller für Microsofts Spielkonsole Xbox. Achtung: Die Controller für die beiden Xbox-Generationen sind trotz ihres ähnlichen Aussehens fundamental inkompatibel. Dieser Artikel bezieht sich auf den der Xbox One - derartige Controller erkennt man am flachen Xbox-Logo.

Tam Hanna


Quellcode zum Download

ArtikelserieTeil 1: Microsofts Xbox Controller den eigenen Anforderungen anpassenTeil 2: Der Xbox Controller im Internet of Things

Diese auf den ersten Blick seltsam klingende Idee ergibt tatsächlich Sinn: Das Entwickeln ergonomischer Eingabegeräte ist nun mal eine Aufgabe für sich. Als Konsolenhersteller der dritten Generation hat Microsoft hier langjährige Erfahrung vorzuweisen und kann die Hardware dank der immensen Stückzahlen zudem vergleichsweise preiswert anbieten.

Der Hardwarezoo

Microsofts Gerhard Göschl erwies sich als gewohnt großzügig: Auf Anfrage stellte er mehrere verschiedene Xbox One Controller zur Verfügung, darunter der normale Controller, der über sein Ladekabel oder über ein fix verbautes Modul samt Kabel Kontakt zur Workstation aufnimmt. Stehen ausreichend USB-Ports zur Verfügung, lassen sich so acht Controller anschließen. Das gilt auch für den Wireless Controller, der über einen Funkadapter Kontakt zur Workstation aufnimmt.

Fürs Erste verbinden wir den verkabelten Controller mit der Workstation, hierbei kommt Windows 10 in Version 1709 zum Einsatz, und zeigen damit, wie man ihn für den Einsatz in größeren Projekten vorbereitet.

Programmatisches

Als „Nachwehen“ der teilweise chaotischen Evolution von Microsofts Spieleprogrammierumgebungen buhlt eine Vielzahl verschiedener APIs um Aufmerksamkeit: Wir setzen in den folgenden Schritten auf Windows.Gaming.Input, weil die Programmierschnittstelle meines Erachtens am zukunftsträchtigsten ist.

Erstellen Sie ein neues C#-Projekt und legen Sie eine Member-Variable vom Typ Gamepad an. Sie erlaubt uns das Einbinden des folgenden Namespace:

public sealed partial class MainPage : Page { Gamepad myGamepad;

Windows 10 vermeldet das Auftauchen neuer bzw. das Verschwinden vorhandener Gamepad-Instanzen durch Event Handler, die wir im Rahmen von MainPage() mit Event Handlern ausstatten:

public MainPage() { this.InitializeComponent(); Gamepad.GamepadAdded += Gamepad_GamepadAdded; Gamepad.GamepadRemoved += Gamepad_GamepadRemoved;}

Interessant ist, dass die Funktion Gamepad_Added beim Programmstart pro angeschlossenem Gamepad einmal aufgerufen wird; nicht wundern, wenn der mit einer NotImplemented Exception ausgestattete Default-Event-Handler Ihr Programm über den Jordan schickt.

Wir wollen unsere Gamepad-Instanzen hier in einem Array zwischenspeichern, was die in Listing 1 dargestellten Änderungen im Projektskelett voraussetzt.

Listing 1List myGamepad; public MainP...

Windows Developer
Teil 1: Microsofts Xbox Controller den eigenen Anforderungen anpassen

Robotersteuerung per Xbox Controller

Innovation kommt mitunter aus unverhoffter Richtung: Als der Energie- und Automatisierungstechnikkonzern Asea Brown Boveri (ABB) einen Roboter zur Inspektion von in Öl gelagerten Transformatoren präsentierte, handelte es sich bei dem zur Steuerung verwendeten Peripheriegerät um einen Controller für Microsofts Spielkonsole Xbox. Achtung: Die Controller für die beiden Xbox-Generationen sind trotz ihres ähnlichen Aussehens fundamental inkompatibel. Dieser Artikel bezieht sich auf den der Xbox One - derartige Controller erkennt man am flachen Xbox-Logo.

Tam Hanna


Quellcode zum Download

ArtikelserieTeil 1: Microsofts Xbox Controller den eigenen Anforderungen anpassenTeil 2: Der Xbox Controller im Internet of Things

Diese auf den ersten Blick seltsam klingende Idee ergibt tatsächlich Sinn: Das Entwickeln ergonomischer Eingabegeräte ist nun mal eine Aufgabe für sich. Als Konsolenhersteller der dritten Generation hat Microsoft hier langjährige Erfahrung vorzuweisen und kann die Hardware dank der immensen Stückzahlen zudem vergleichsweise preiswert anbieten.

Der Hardwarezoo

Microsofts Gerhard Göschl erwies sich als gewohnt großzügig: Auf Anfrage stellte er mehrere verschiedene Xbox One Controller zur Verfügung, darunter der normale Controller, der über sein Ladekabel oder über ein fix verbautes Modul samt Kabel Kontakt zur Workstation aufnimmt. Stehen ausreichend USB-Ports zur Verfügung, lassen sich so acht Controller anschließen. Das gilt auch für den Wireless Controller, der über einen Funkadapter Kontakt zur Workstation aufnimmt.

Fürs Erste verbinden wir den verkabelten Controller mit der Workstation, hierbei kommt Windows 10 in Version 1709 zum Einsatz, und zeigen damit, wie man ihn für den Einsatz in größeren Projekten vorbereitet.

Programmatisches

Als „Nachwehen“ der teilweise chaotischen Evolution von Microsofts Spieleprogrammierumgebungen buhlt eine Vielzahl verschiedener APIs um Aufmerksamkeit: Wir setzen in den folgenden Schritten auf Windows.Gaming.Input, weil die Programmierschnittstelle meines Erachtens am zukunftsträchtigsten ist.

Erstellen Sie ein neues C#-Projekt und legen Sie eine Member-Variable vom Typ Gamepad an. Sie erlaubt uns das Einbinden des folgenden Namespace:

public sealed partial class MainPage : Page { Gamepad myGamepad;

Windows 10 vermeldet das Auftauchen neuer bzw. das Verschwinden vorhandener Gamepad-Instanzen durch Event Handler, die wir im Rahmen von MainPage() mit Event Handlern ausstatten:

public MainPage() { this.InitializeComponent(); Gamepad.GamepadAdded += Gamepad_GamepadAdded; Gamepad.GamepadRemoved += Gamepad_GamepadRemoved;}

Interessant ist, dass die Funktion Gamepad_Added beim Programmstart pro angeschlossenem Gamepad einmal aufgerufen wird; nicht wundern, wenn der mit einer NotImplemented Exception ausgestattete Default-Event-Handler Ihr Programm über den Jordan schickt.

Wir wollen unsere Gamepad-Instanzen hier in einem Array zwischenspeichern, was die in Listing 1 dargestellten Änderungen im Projektskelett voraussetzt.

Listing 1List myGamepad; public MainP...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang