2010年7月9日金曜日

Procseccingでシリアル通信

Processingにはシリアル通信のライブラリがあって、これを利用すると簡単にシリアル通信ができます。

サンプルプログラムを動かせばだいたいの挙動がわかると思います。
僕はシリアルデータの受信だけ出来ればよかったので送信側はよくわかりませんが・・・

サンプルはこんな感じになっていると思います。
////////////////////

Seial myPort;

void setup(){
String portName = Serial.list(){0];
int = val;
myPort = new Serial(this, portName, 9600);
}

void draw(){
if(myPort.available() > 0){
val = myPort.read();
}
}

////////////////////

上記のコードを実行するとループのたびに送られてきたデータがvalに格納されるので、あとは煮るなり焼くなりすればOKです。

なお、複数の機器が接続されていたり指定したポートで受信したりしたい時があると思います。
そんなときはsetupあたりに(どこでもいいけど)

////////////////////

void setup(){
...
...
...
for(int i=0; i println(Serial.list()[i]);
}
}

////////////////////

てなコードを追加してやると接続されている機器のリストが表示されます。
Serial.list()は接続されている機器の配列を返してくるので、それのlengthだけfor文を回してリストを表示
してやれば接続されている機器が全部表示されるってわけです。
あとはその中から使用したい機器を指定してオブジェクトを生成してやれば通信できます。

2010年7月4日日曜日

Processingでフルスクリーン

ラベル作成ついでに。

javaのグラフィックに特化して、コードの記述を簡易化したprocessingという環境があります。

アート系で注目を集めているProcessingですが、なんと標準でフルスクリーンができません。
フルスクリーン用のライブラリもあるようですが、自分が使ってみたところ微妙だった記憶があるので、今使っている方法を紹介します。



1.画面サイズの指定
通常はsize(320, 240);などとするところを、
size(screen.width, screen.height);;
と記述します。これで表示しているディスプレイの縦横の値が取れます。

2.プレゼンモードで表示する
shift+command+Rで実行するとプレゼンモードになり、ウインドウではなくフルスクリーンで表示されます。
通常の画面サイズ設定だとサイズ外の領域が灰色になってきちんと画面を満たしてくれないのですが、この方法だとディスプレイのサイズでフルスクリーン表示されるので画面いっぱいに表示することができます。



これだけですw

ちなみに環境はMacBook Pro 2.53GHzメモリ4GBです。
また、自分の使い方はミラーリングしてプロジェクタで投影というものです。デュアルにしたかったですが、上記の方法だと一方のディスプレイは真っ暗になってしまいます。


Processingerの方々の参考になれば幸いです。

作ってみた

Androidとかの開発忘備録的な使い方になるといいな。