chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

3本ローラとGoole StreetViewを連動させる

SH-2の俺OSとか光デジタルネタはちょっと休みにして、3本ローラで走るとGoogle Street Viweが距離に応じて前方スクロール?するシステムを考えることに。なんといっても、3本ローラは部屋で黙々と走るのはしんどいので、そういった気晴らし支援装置を考えてみる*1
最速で実装できるのは、今いじってるSH2に対して回転計測機能をつけて、何回転かしたら、仮想シリアル(Serial Over USB)経由でPCに何か文字を送る(forward/left/right/ etc)。で、PCではWindows Power Shellを走らせておいて、シリアルから文字が入ったらそれをキーボードイベントにしてFirefoxに送りつける。FireFoxではあらかじめGoogle Street Viewを開けておいて、上矢印で前進するように準備しておく。。
ハードとして作るのは回転計測の部分だけで、それはリレースイッチ(磁石でOn/Offになるやつ)をチャリにつければOKだ*2。SH2側のプログラムは日ごろいじってるのでそれほど手間ではない。あとはWindowsPowerShell(WPS)でスクリプトを書けばOK!!


作りたいと思うと我慢できなくて、最初はWindows ScriptHostかPowerShellで調べていたけど、どうも情報があまりまとまっていなくて、結局C#で作ることに。。
そもそも他のアプリを勝手にActiveにしたりイベントを送りつけたりするのは作法に反するようで、かなりトリッキーなことをしないとだめなようでした。とにかくアクティブ(重なりの順番で言うなら一番前)にさえできれば、キーイベントを送りつけられるので、人手でFFの窓を選択するようにして、アクティブなウインドウに上向き矢印のキーイベントを送りつけるアプリを作った。写真では止まっていて分からないけど、アプリを動かすと、延々と上向き矢印がFFに送られるのでGoogle MapsのStreet Viewもいつまでも前進します。あとは、、シリアルポートを開いて、"forward"か何かの文字が届いたら、キーイベントを発行するようにすれば、Windows側のアプリ実装は終わり。。シリアル接続を想定しておけば、BluetoothでもUSBの仮想シリアル?でも対応可能。
マイコン側はCでIOを叩けばどうにでもなるので。。

*1:今はローラの上で走るので精一杯なのだが

*2:磁石はCATEYEのスピードメータのためすでにスポークに付いてる