«前の日記(2006年12月26日) 最新 次の日記(2006年12月28日)» 編集

ema log


2006年12月27日 [長年日記]

_ [最近] Bluetooth アダプタかってきた

寝坊して研究室行きを中止。大変、申し訳ない。明日は行く予定ですが・・・

Bluetooth アダプタをヨドバシで買ってきて、無事 Wii リモコンを接続できました。

WiinRemote を使って動作確認も完了。

_ [Wiiリモコン] HID デバイスってどうやって制御するんだろう。

HID 拡張ライブラリ をとりあえず,おいておきます」「Wii リモコンをプレゼンマウスにする - ema log (2007-06-29)」なんかも置いてます。

デバイスクラスがジョイスティックになっている。もしやと思って、Ruby/SDL からアクセスを試みてみた。

>irb
irb(main):0> require 'sdl'
=> true
irb(main):0> SDL.init( SDL::INIT_JOYSTICK )
=> nil
irb(main):0> SDL::Joystick.num
=> 2
irb(main):0> SDL::Joystick.num.times do |i|
irb(main):1*   puts SDL::Joystick.index_name(i)
irb(main):1> end
PS TO USB CONVERTOR
Bluetooth HID port
=> 2

おおお?

irb(main):0> joystick = SDL::Joystick.open( 1 )
=> #<SDL::Joystick:0x2b600d8>
irb(main):0> joystick.num_axes
=> 0
irb(main):0> joystick.num_balls
=> 0
irb(main):0> joystick.num_hats
=> 0
irb(main):0> joystick.num_buttons
=> 0

うはーーー。という、非常に残念な結果に終わりました。今後、引き続き調査を行います。

センサ バー も自作したいな。

_ [Wiiリモコン] HID Device の取得 → DDK の hidsdi.h

WiinRemote の使用しているコンポーネントのソースを頼りに DDK に含まれる hidsdi.h 辺りで操作できそうな予感。とりあえず、デバイスを列挙させてみた。Google Code Search 便利!サンプルのため、可読性を優先して、メモリリークとリソースリークしているのを放置してます。実行結果

00365BAC
ACCESS DENIED...
00365F0C
ACCESS DENIED...
00365FE4
VenderID : 57e
ProductID: 306
00366104
VenderID : 773
ProductID: 201

WiiLi の情報と照らし合わせると、3番目が Wii リモコンです。続きは明日以降に。

References
WiiLi.org Wii Linux - Wiimote [wiili.org]
loader/usbdl.cpp [Google Code Search]
StepMania-3.9-rc2a-src/src/archutils/Win32/USB.cpp [Google Code Search]