23
くくくくくくく フフフフフフフフフフフフフフフ フフフフフ

Lightweight Language Tiger 2010

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Lightweight Language Tiger 2010

くるくる研究室

フィジカルコンピューティングをはじめよう。

Page 2: Lightweight Language Tiger 2010

くるくる研究室

くるくる研究室とは、クリエイティブ集団「 kurukuru」の部活のひとつ。ケータイアプリからフィジカルコンピューティングまで、幅広く色々なアプリやプロダクトを開発する部活である。

http://labs.kuru2jam.com/原 

央樹 尾崎俊介http://labs.kuru2jam.com/

@hara3 @biscuitjam

Page 3: Lightweight Language Tiger 2010

作品紹介

3

http://labs.kuru2jam.com/

くるくる研究室

Page 4: Lightweight Language Tiger 2010

4

【事例】お化け屋敷

Page 5: Lightweight Language Tiger 2010

5

フィジカルコンピューティング

Page 6: Lightweight Language Tiger 2010

6

と言っても、いきなり難しいと思うので、できるところから、やってみる。

Page 7: Lightweight Language Tiger 2010

7

体験しよう【ポチっとレンジ】

Page 8: Lightweight Language Tiger 2010

8

体験したい人!

Page 9: Lightweight Language Tiger 2010

動作の仕組み

9

③ソケット通信

電気信号

④電子回路

Data

②一定間隔でデータを確認①HTMLから POST

Page 10: Lightweight Language Tiger 2010

10

HTMLから POSTPHP

Page 11: Lightweight Language Tiger 2010

ケータイからアクセスする PHP

11

<?php// HTML文字のエスケープ$text = htmlspecialchars( $_POST["push"] );if($text){

$fp = fopen("./status.dat", "w");fwrite($fp, 1);fclose($fp);

$url = "http://www.yourserver.com/complete.html";header("Location: $url") ;

?><html><head>

Page 12: Lightweight Language Tiger 2010

ケータイからアクセスする HTML

12

…<html><head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>

<img src="logo.gif"><br /><form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>"

method="post"> <input type="submit" name="push" id="push" value="ボタンを押す ">

</form><br /><hr />2010 kurukuru labs.

</body></html>

Page 13: Lightweight Language Tiger 2010

13

一定間隔でデータを確認ActionScript 3.0

Page 14: Lightweight Language Tiger 2010

14

package {

import flash.display.MovieClip;import flash.events.Event;import flash.net.URLLoader;import flash.net.URLRequest;import flash.utils.Timer;import flash.events.TimerEvent;

import funnel.*;

public class Pochitto extends MovieClip{

private var _timer:Timer;private var _gio:Gainer;private const _D_OUT_1:int = 12;

public function Pochitto() {

_gio = new Gainer();_gio.addEventListener(FunnelEvent.READY, trace);_gio.addEventListener(FunnelEvent.READY, _gioReadyHandler);_gio.addEventListener(FunnelErrorEvent.REBOOT_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.CONFIGURATION_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.ERROR, trace);

}

private function _gioReadyHandler(e:FunnelEvent):void {

_gio.digitalOutput(0).value = 0;_timer = new Timer(1000, 0);_timer.addEventListener(TimerEvent.TIMER,_timerHandler);_timer.start();

}

private function _timerHandler(e:TimerEvent):void {

var urlLoader:URLLoader = new URLLoader();urlLoader.addEventListener(Event.COMPLETE, _completeHandler);urlLoader.load(new URLRequest("http://www.yourserver.com/getStatus.php?" +

Math.random()));}

private function _completeHandler(e:Event):void {

var status:Number = Number(URLLoader(e.target).data);trace("status : " + status);if (status == 1) {

_gio.digitalOutput(0).value = 1;}

}

}

}

Page 15: Lightweight Language Tiger 2010

15

Flashから PHPにアクセスActionScript 3.0

Page 16: Lightweight Language Tiger 2010

16

public class Pochitto extends MovieClip{

private var _timer:Timer;

public function Pochitto() {

_gio = new Gainer(); _gio.addEventListener(FunnelEvent.READY, _gioReadyHandler);

}

private function _gioReadyHandler(e:FunnelEvent):void {

_gio.digitalOutput(0).value = 0;_timer = new Timer(1000, 0);_timer.addEventListener(TimerEvent.TIMER,_timerHandler);_timer.start();

}

private function _timerHandler(e:TimerEvent):void {

var urlLoader:URLLoader = new URLLoader();urlLoader.addEventListener(Event.COMPLETE, _completeHandler);//キャッシュ対策のため、パラメタにランダムな値を入れるurlLoader.load(new URLRequest("http://www.yourserver.com/getStatus.php?" + Math.random()));

}

private function _completeHandler(e:Event):void {

var status:Number = Number(URLLoader(e.target).data);if (status == 1) {

_gio.digitalOutput(0).value = 1;}

}

}

Page 17: Lightweight Language Tiger 2010

Flashからアクセスする PHP

17

<?php//読み込み$status = 0;$fp = fopen("status.dat", "r");while ($line = fgets($fp)) {

$status = $line;}

fclose($fp);

//ファイルをリセット$fp = fopen("status.dat", "w");fwrite($fp, "0");fclose($fp);

echo $status;?>

Page 18: Lightweight Language Tiger 2010

18

Gainerと接続

Page 19: Lightweight Language Tiger 2010

19

package {

import funnel.*;

public class Pochitto extends MovieClip{

private const _DT:Number = 1000;//1秒 (1000ミリ秒毎 )private const STATUS_URL:String = "http://www.yourserver.com/getStatus.php";private var _timer:Timer;private var _gio:Gainer;private const _D_OUT_1:int = 12;

//コンストラクターpublic function Pochitto() {

//インスタンス化_gio = new Gainer();_gio.addEventListener(FunnelEvent.READY, trace);_gio.addEventListener(FunnelEvent.READY, _gioReadyHandler);_gio.addEventListener(FunnelErrorEvent.REBOOT_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.CONFIGURATION_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.ERROR, trace);

}

//準備ができたら実行private function _gioReadyHandler(e:FunnelEvent):void {

_gio.digitalOutput(0).value = 0;_timer = new Timer(_DT, 0);_timer.addEventListener(TimerEvent.TIMER,_timerHandler);_timer.start();

}

}

}

Page 20: Lightweight Language Tiger 2010

20

Gainerに命令

Page 21: Lightweight Language Tiger 2010

Gainerに命令

21

//読み込みコンプリートハンドラーprivate function _completeHandler(e:Event):void {

var status:Number = Number(URLLoader(e.target).data);trace("status : " + status);if (status == 1) {

_gio.digitalOutput(0).value = 1;}

}

Page 22: Lightweight Language Tiger 2010

22

ありがとうございました。

Page 23: Lightweight Language Tiger 2010

あっ!本買ってください。

23