Archive for 1 月, 2008

DI tutorial from c-base@MULTITOUCH DEV BLOG
Building a MultiTouch Consoleという記事が取り上げられていたので
ちょっと読んでみる.

Diffused Illuminationで具体的にどんな機材や素材を使っているかってあまり公開されていないので特にDiffuserなんかは参考になりそう(海外製品なので入手困難なものもあるけどね).まぁ,結構コストかかってるみたいですが。。。

前回予告していたようにC++でGainerを扱うために行った処理を簡単に書いてみます.
もしかしたら,間違っていたり,こうした方が良い点などがあるかもしれないので,ご指摘お願いします.

ということで,今のところ最低限用意しているメソッドはこんな感じ.

(1)Gainer初期化
通信速度,パリティ等の設定(こちらを参考)

(2)リセットメッセージ送信
Gainerモジュールに文字列「Q*」 を送信.
(送信に成功したらGainer側からメッセージが送られるので受け取る)

(3)コンフィギュレーションの設定
Gainerモジュールに文字列「KONFIGURATION_1*」を送信.
(送信に成功したらGainer側からメッセージが送られるので受け取る)

(4)データの取得
Gainerモジュールに文字列「I*」を送信.
送信に成功したら,アナログ入力ain0~ain3のデータが文字列として
送られてくるので,その文字列を受信.

(5)文字列→数値変換
受信したアナログ入力のデータは,「Ixx…xx*」(※xx…xxがデータ部)
という構成の文字列なので,まずは入力分だけ文字列を分割.
また,値は16進なので10進に変換して利用.

(6)後処理
ポートのクローズ処理.

************************
あと,「プログラム風」に書くとこんな感じです.
※前回の記事ではこれらの処理に移動平均法の処理も加えています.

C++:
  1. #include "MyGainer.h"   //ヘッダのインクルード
  2. MyGainer *gainer;
  3.  
  4. int main(int argc, char** argv)
  5. {
  6.     //Gainerオブジェクト生成
  7.     //ここではCOM3を指定
  8.     gainer = new MyGainer(3);
  9.  
  10.     //初期化
  11.     //(COMポートオープン、通信速度等設定)
  12.     gainer->initialize();
  13.  
  14.     //コンフィギュレーションの設定(MODE1)
  15.     gainer->setConfiguration(1);
  16.  
  17.     //キー値
  18.     int key = 0;
  19.  
  20.     //ループ
  21.     while(1)
  22.     {
  23.         //データ取得
  24.         //(メッセージ送信 + データ受信 + 文字列→数値)
  25.         gainer->getAllAnalogInput();
  26.  
  27.         //キー入力待ち(1msec)
  28.         key = getKeyInput();
  29.  
  30.         //ESCキーが押されたら終了
  31.         if(key == 0x1b)
  32.         {
  33.             break;
  34.         }
  35.     }
  36.  
  37.     //後処理(COMポート解放)
  38.     gainer->release();
  39.     delete gainer;
  40.  
  41.     return 0;
  42. }

C++でGainerを扱う(といってもアナログ入力のみ)ライブラリを自作したので,早速OpenGLと組み合わせて実験.とりあえず,動いたー!!

でも,ソースが汚いです。。。_| ̄|○
ということで,公開はまだまだ先になりそう(コードがグダグダなのでしないかも。。。).

とりあえず,どんな感じでシリアル通信しているかを簡単に記述した擬似コードを後日記事にする予定.

Gainer with C++(加速度センサ)

前回の記事で,

>C++でGainerを扱えるライブラリもあったら便利そうですが
とか言ってたけど,ちょっと探した感じだと無さそうなので自力でなんとか作ってみる.

まぁ,Gainerモジュールとはシリアル通信ができるので,Tutorial/Basic/Common/03/ja - GAINER.ccやSourceForgeに置いてある資料(シリアル通信の際のコマンド表),javaのソースなんかを参考にしながらゴリゴリと(自分用なのでエラー処理とか適当).

とりあえず,アナログ入力1~4までのデータ取得はできた感じなので,時間を見つけて簡単なアプリができたらなぁと.
以下はアナログ入力1~3の値(加速度センサのデータ)表示のスクリーンショット.

blogを2か月放置してました。。。
あと,新年明けましておめでとうございます(遅)

今年もよろしくお願いします.

****
さてさて,だいぶ話はさかのぼりますがGainerの和書が出たということで,10月に

+GAINER―PHYSICAL COMPUTING WITH GAINER
著者/訳者:GainerBook Labo くるくる研究室
出版社:九天社( 2007-10 )
定価:¥ 3,780
単行本
ISBN-10 : 4861672015
ISBN-13 : 9784861672019



を買ったんです…が,肝心のGainerを入手できていなかったので,本を眺めながら「楽しそうだなぁ」とか思っている間に2008年が到来してしまいました。。。(苦笑)

これではいかんと,TriggerDevice itemsのサイトを訪れてみると,念願のGainerモジュールが入荷されていたので「今しかない!」と思い切って購入ボタンをポチっと(注文した数日後には在庫切れになってました。。。恐るべしGainer人気).

注文から数日後届いたので早速Gainerで遊んでみて作業ログをwikiの方にちょこちょこ書いてみました(だいぶやっつけ仕事ですが).それにしても,いろいろ制限はあるもののセンサなんかが手軽に扱えて楽しいなぁ(C++でGainerを扱えるライブラリもあったら便利そうですが).時間を見つけていろいろ遊んでみる予定.

#Diffused Illuminationネタもやりたいけど材料が揃ってないので,とりあえず急死。。。
#じゃなくて休止中.