このブログへの投稿/アップロードについて(コメントは誰でも、投稿は受講者+スタッフのみ)
コメント/投稿/ラベルについて(基本事項)投稿時間の設定(下書き/予定など)プログラム(ソースコード)を投稿する際の注意点Processingのプログラム(Applet)を表示する方法
ArduinoやProcessingについては「建築発明工作ゼミ2008」の方にまとめてあります。
秋葉原の電子工作マップ、Arduino販売店についてはこちら。 :

2009年6月21日日曜日

processing applet test(2)

再び実験してみます。
こんどは、サーバにアップしたテキストデータを読み込み、視覚化してみます。
読み込みは10秒ごとです。





テキストデータを表示


processingスケッチ

/*
webサーバにアップされたテキストデータ(日付時刻と温度)を
読み込み、加工表示する
*/

PFont font; // フォント情報
String dateTime; // 日付時刻
int Temp; // 温度
int Correction = 2; // 表示補正

// データファイルから1行づつ読み込むためのJAVAのクラス
BufferedReader reader;

void setup()
{
// 画面サイズ

size(245, 260);

// 四角形のモード
rectMode(CORNERS);

// フォントを読み込む
font = loadFont("FranklinGothic-Medium-12.vlw");

// dataフォルダからデータを読み込む
// ○の部分は個々に設定
reader = createReader("http://www.○/data/.txt");
}

void draw()
{

// エラーがない場合
try {

// 1行分読み込む
String line = reader.readLine();

// もし読み込んだ1行分のデータが存在するならば
if (line != null) {

// テキストデータを「|」で分割、配列に格納
// 例)
// columns[0] には'2009/06/21 00:03:20'などの日付時刻部分が格納される
// columns[1] には'015'などの温度データ部分が格納される
String[] columns = split(line, '|');

// 日付時刻部分のテキストデータを変数に格納
dateTime = columns[0];

// 温度部分のテキストデータを数値型に変換して変数に格納
Temp = int(columns[1]);
}

// なんらかのエラーがあった場合
} catch (IOException e) {

// エラーメッセージを出力
e.printStackTrace();
}

// 描画前にdraw()ループごとに一度画面全体をクリアする
background(255);

fill(255);
rect(30, 10, 230, 210);
stroke(200);
line(30, 30, 230, 30);
line(30, 50, 230, 50);
line(30, 70, 230, 70);
line(30, 90, 230, 90);
line(30, 110, 230, 110);
line(30, 130, 230, 130);
line(30, 150, 230, 150);
line(30, 170, 230, 170);
line(30, 190, 230, 190);

fill(255);
textFont(font, 12);

fill(0);
text("90", 10, 35);
text("80", 10, 55);
text("70", 10, 75);
text("60", 10, 95);
text("50", 10, 115);
text("40", 10, 135);
text("30", 10, 155);
text("20", 10, 175);
text("10", 10, 195);
text("(C)", 10, 215);
text("datetime : " + dateTime, 45, 230);
text("temp : " + Temp + " C", 45, 245);

// 棒グラフ
rect(125, (210 - (Temp * Correction)), 135, 210);

// 10秒間ストップ
delay(10000);
}



植物・農業・エレクトロニクス・音楽...。実験とプロジェクトのblog。
projects : Biotope

2 件のコメント:

  1. 便利そうです。
    これはリアルタイムでできるようになったのでしょうか?

    返信削除
  2. いまはarduinoからのデータアップ方法を試しているところです。このスケッチも正確に10秒ごとの更新ではないようだし、ひとつのファイル内で読み込みと書き出しがバッティングしてファイルのデータ自体が壊れてしまう可能性もあるので、何処かから正確な時刻情報を取得してprocessingでのデータの取得時刻とarduinoでのデータアップ時刻を同期させなくてはなりません。
    ちょっと制約はあるようですが、ウェブでの表示は確認できたのであとはデータアップ方法を確率すれば、完全リアルタイムは無理ですがそれに近いことはできるのではないかと思っています。

    返信削除

*