Mac で Wiiコントローラー を使う (C++)
概要:
WiimoteをMacでC++を使って動かす資料が少なかったので、
ライブラリ導入とサンプル作成のためのメモです。
使用機器:
・Wiimote(Wiiコントローラー)
・PC(Mac)
導入方法:
「WiiCpp」というライブラリを使用します。
1. ソースのダウンロード
2. ビルドとインストール
ヘッダとライブラリファイルは以下のディレクトリにインストールされます。
サンプル実行:
サンプルを実行してみます。
これでWiiremoteをONにするだけで動作するはず。
XCode4を使ったサンプル作成:
XCodeで動かす場合は、ライブラリのリンカを設定させる必要があります。
下の画像のようにリンカを設定をします。

あとは適当にサンプルを参考にしてソースを書いてコンパイルをするだけです。
まとめ:
簡単にC++でWiimoteを動かすことが出来ました。
ライブラリの作成者様に感謝!
参考サイト
A C/C++ Library for Wiimote
WiimoteをMacでC++を使って動かす資料が少なかったので、
ライブラリ導入とサンプル作成のためのメモです。
使用機器:
・Wiimote(Wiiコントローラー)
・PC(Mac)
導入方法:
「WiiCpp」というライブラリを使用します。
1. ソースのダウンロード
svn co https://wiic.svn.sourceforge.net/svnroot/wiic
2. ビルドとインストール
cd (解凍したフォルダ)
mkdir build
cd build
cmake ../src
make
make doc
sudo make install
ヘッダとライブラリファイルは以下のディレクトリにインストールされます。
/usr/local/include
/usr/local/bin
サンプル実行:
サンプルを実行してみます。
cd (解凍したフォルダ)/build/bin
./wiicpp-sample
これでWiiremoteをONにするだけで動作するはず。
XCode4を使ったサンプル作成:
XCodeで動かす場合は、ライブラリのリンカを設定させる必要があります。
下の画像のようにリンカを設定をします。

あとは適当にサンプルを参考にしてソースを書いてコンパイルをするだけです。
#include
#include
#include
using namespace std;
// 状態が更新されたら呼ぶ関数
void callHandleEvent( CWiimote& wm ) {
if( wm.Buttons.isPressed(CButtons::BUTTON_A) ) {
cerr << "button A pressed" << endl;
}
if( wm.Buttons.isPressed(CButtons::BUTTON_B) ) {
cerr << "button B pressed" << endl;
}
}
void callHandleDisconnect( CWiimote& wm ) {
cerr << "Disconnected :" << wm.GetID() << endl;
}
int main (int argc, const char * argv[]) {
CWii wii;
bool reload_flag = false;
std::vector::iterator it;
// コントローラーの検索開始
std::vector& wiimotes = wii.FindAndConnect();
// 何も接続されていなかったら終了
if( !wiimotes.size() ) {
std::cerr << "can't find wiimote" << std::endl;
return 0;
}
do {
// Wiimoteが接続解除された場合、動的配列を再構築する
if( reload_flag ) {
wiimotes = wii.GetWiimotes();
}
// Wiimoteのデータ更新
if( wii.Poll() ) {
// 取得したコントローラーに対して操作を行う
for( it=wiimotes.begin(); it!=wiimotes.end(); ++it ) {
switch( it->GetEvent() ) {
// コントローラーの接続解除がされた場合の処理
case CWiimote::EVENT_DISCONNECT:
case CWiimote::EVENT_UNEXPECTED_DISCONNECT:
reload_flag = true;
callHandleDisconnect( *it );
break;
// 状態が更新されたら
case CWiimote::EVENT_EVENT:
callHandleEvent( *it );
break;
default:
break;
}
}
}
// 接続しているコントローラーがなくなったら終了
} while (wiimotes.size());
return 0;
}
まとめ:
簡単にC++でWiimoteを動かすことが出来ました。
ライブラリの作成者様に感謝!
参考サイト
A C/C++ Library for Wiimote
● COMMENT FORM ●
トラックバック
http://chicklab.blog84.fc2.com/tb.php/39-27aaddae
この記事にトラックバックする(FC2ブログユーザー)