2012-02

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Mac で Wiiコントローラー を使う (C++)

概要:
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で動かす場合は、ライブラリのリンカを設定させる必要があります。
下の画像のようにリンカを設定をします。
wiicライブラリリンク
あとは適当にサンプルを参考にしてソースを書いてコンパイルをするだけです。


#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
スポンサーサイト

NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

カレンダー

01 | 2012/02 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 - - -

FC2カウンター

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (7)
日記 (7)
wiiremote (1)
google (1)
回路 (3)
psp (1)
programing (15)
linux (0)
OpenWRT (3)
kinect (1)
Raspberry Pi (8)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

google adsense

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。