次にWiiRemoteのボタン制御についてプログラミングを行っていきます。
ここでは、WiiリモコンのボタンのON/OFFを取得するプログラムを作成します。
1.ラベルの作成
1.フォームにラベルを4つ貼り付けてください。
2.WiimoteLibの宣言と制御プログラム
Form1.csに以下の部分を追加する。using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using WiimoteLib; //WimoteLib namespace WiimoteLib_Sample { public partial class Form1 : Form { Wiimote wm = new Wiimote(); //Wiimoteの宣言 public Form1() { InitializeComponent(); wm.WiimoteChanged += wm_WiimoteChanged; //イベント関数の登録 wm.Connect(); //Wiimoteの接続 } //Wiiリモコンの値が変化したときに呼ばれる関数 void wm_WiimoteChanged(object sender, WiimoteChangedEventArgs args){ WiimoteState ws = args.WiimoteState; //WiimoteStateの値を取得 if (this.IsHandleCreated) { this.Invoke( (MethodInvoker)delegate() { this.DrawForms( ws ); //フォーム描写関数へ }); } } //フォーム描写関数 public void DrawForms(WiimoteState ws) { this.label1.Text = "Button A:" + (ws.ButtonState.A); //ボタンA this.label2.Text = "Button B:" + (ws.ButtonState.B); //ボタンB this.label3.Text = "Button 1:" + (ws.ButtonState.One);//ボタン1 this.label4.Text = "Button 2:" + (ws.ButtonState.Two);//ボタン2 } } }実行
1.WiiRemoteを接続してください。 2.F5キーを押して実行してください。
実行すると下図のようなアプリケーションが起動します。
※もしエラーが発生する場合はWiiRemoteが正しく接続されているか確認してください。
3.WiiリモコンのAボタンをクリックし続けてください。
4.Wiiリモコンのすべてのボタンを押さないでください。
5.WiiリモコンのAボタンとBボタンを同時にクリックしてください。
6.Wiiリモコンの1ボタンと2ボタンを同時にクリックしてください。
解説
WiiリモコンのボタンのON/OFFによってFormのラベルが変化します。FalseがOFF, TrueがONに対応しています。
wm.WiimoteChanged += wm_WiimoteChanged; //イベント関数の登録Wiiリモコンのボタンが押されたなど、値に変化があったときに呼ばれる関数を宣言しています。ここでは、Wiiリモコンの値に変化があった場合、WiimoteChangedという関数が呼ばれるように設定しています。
WiimoteState ws = args.WiimoteState; //WiimoteStateの値を取得Wiiリモコンのステータスをとりこんでいます。WiimoreState wsの中には、イベントで発生したボタンなどの値が取り込まれます。
this.label1.Text = "Button A:" + (ws.ButtonState.A); //ボタンAWiiリモコンのAボタンの値をlabel1に表示しています。
ボタンが押されていたら、True を表示します。
ボタンが離されていたら、Falseを表示します。
this.label2.Text = "Button B:" + (ws.ButtonState.B); //ボタンBWiiリモコンのBボタンの値をlabel2に表示しています。
ボタンが押されていたら、True を表示します。
ボタンが離されていたら、Falseを表示します。
this.label3.Text = "Button 1:" + (ws.ButtonState.One);//ボタン1Wiiリモコンの1ボタンの値をlabel1に表示しています。
ボタンが押されていたら、True を表示します。
ボタンが離されていたら、Falseを表示します。
this.label4.Text = "Button 2:" + (ws.ButtonState.Two);//ボタン2Wiiリモコンの2ボタンの値をlabel1に表示しています。
ボタンが押されていたら、True を表示します。
ボタンが離されていたら、Falseを表示します。







