0
WPFアプリでXbox Oneコントローラーを読むことはできますか?私はUSBケーブルで接続しています。私はボタンからブール値を取得し、スティックやトリガーからアナログ値を読み取ることができるようにしたいと思います。 私はこれらの値をPollu 3piロボットを制御するために使用します。WPF AppでXboxコントローラーを読む
これを達成する簡単な方法はありますか?
WPFアプリでXbox Oneコントローラーを読むことはできますか?私はUSBケーブルで接続しています。私はボタンからブール値を取得し、スティックやトリガーからアナログ値を読み取ることができるようにしたいと思います。 私はこれらの値をPollu 3piロボットを制御するために使用します。WPF AppでXboxコントローラーを読む
これを達成する簡単な方法はありますか?
これを試しましたか? Code4Funがコントローラのお手伝いをするかもしれません。ウェブサイトから
https://elbruno.com/2014/06/28/coding4fun-xboxone-game-controller-c-fun-time-2/
:WPFアプリケーションコードのメインビューは、次の
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Threading;
using SharpDX.XInput;
namespace ElBruno.GameController
{
public partial class MainWindow : INotifyPropertyChanged
{
DispatcherTimer _timer = new DispatcherTimer();
private string _leftAxis;
private string _rightAxis;
private string _buttons;
private Controller _controller;
public MainWindow()
{
DataContext = this;
Loaded += MainWindow_Loaded;
Closing += MainWindow_Closing;
InitializeComponent();
_timer = new DispatcherTimer {Interval = TimeSpan.FromMilliseconds(100)};
_timer.Tick += _timer_Tick;
_timer.Start();
}
void _timer_Tick(object sender, EventArgs e)
{
DisplayControllerInformation();
}
void DisplayControllerInformation()
{
var state = _controller.GetState();
LeftAxis = string.Format("X: {0} Y: {1}", state.Gamepad.LeftThumbX, state.Gamepad.LeftThumbY);
RightAxis = string.Format("X: {0} Y: {1}", state.Gamepad.RightThumbX, state.Gamepad.RightThumbX);
//Buttons = string.Format("A: {0} B: {1} X: {2} Y: {3}", state.Gamepad.Buttons.ToString(), state.Gamepad.LeftThumbY);
Buttons = string.Format("{0}", state.Gamepad.Buttons);
}
void MainWindow_Closing(object sender, CancelEventArgs e)
{
_controller = null;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
_controller = new Controller(UserIndex.One);
if (_controller.IsConnected) return;
MessageBox.Show("Game Controller is not connected ... you know ;)");
App.Current.Shutdown();
}
#region Properties
public string LeftAxis
{
get
{
return _leftAxis;
}
set
{
if (value == _leftAxis) return;
_leftAxis = value;
OnPropertyChanged();
}
}
public string RightAxis
{
get
{
return _rightAxis;
}
set
{
if (value == _rightAxis) return;
_rightAxis = value;
OnPropertyChanged();
}
}
public string Buttons
{
get
{
return _buttons;
}
set
{
if (value == _buttons) return;
_buttons = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
}
あなたは[SharpDXの](HTTPを使用することができます:// sharpdx.org/)DirectInputまたは同様のもの。これは、任意の入力装置の比較的容易な相互作用を可能にする。 – SharpShade
XboxコントローラがDirectInputを使用せず、デフォルトのUSBドライバを使用する場合、https://msdn.microsoft.com/en-us/library/windows/hardware/ff540174%28v=vs.85%29.aspxを使用することができます?f = 255&MSPPError = -2147217396 – bradbury9