●会場内サーバのプログラム

・会場内サーバメインプログラム

会場内サーバはWindowsノートPCを使用した。回線はUQ WIMAX。ActivePerlで下記のプログラム「main.pl」を動かし、数秒おきに会場外サーバと通信させた。会場外サーバの「check.php」が「1」を返せば、ログファイルである「outdata.xml」をダウンロードする。

当初は、会場外サーバにあるプログラムもすべて会場内サーバで動かし、携帯から直接会場内サーバへアクセスすることを考えていたが、UQ WIMAXの性質上、常時接続でIPアドレスの固定が難しい。今回採用した方式ならば、多少のタイムラグはあるが、会場内サーバのIPアドレスが変化しても問題ない。また、パケット代節約にもなる。

CDトレイのオープンは、Windowsプログラムの「eject-nt.exe」を「main.pl」から実行する。

[codesyntax lang=”perl” title=”main.pl”]

#!usr/bin/perl

use LWP::Simple;
use File::Copy;

$url_1 = "http://techtroid.xii.jp/m/mixart/check.php";
$url_2 = "http://techtroid.xii.jp/m/mixart/outdata.xml";
$file_2 = 'outdata.xml';
$Interval = 5;
$loop = int(131000/$Interval);

$count = 0;

while(1){
  #last if($count > $loop);

#タイマ処理
	my $t_before = time;
	sleep ($Interval);
	my $t_after = time;
	my $t_offset = $t_after - $t_before;

	my ($b_ss, $b_MM, $b_hh, $b_dd, $b_mm, $b_yy) = (localtime($t_before))[0..5];
	my ($a_ss, $a_MM, $a_hh, $a_dd, $a_mm, $a_yy) = (localtime($t_after))[0..5];

	$b_yy += 1900; $b_mm++;
	$a_yy += 1900; $a_mm++;
	print $t_offset*$count."sec\n";
	$count++;

print $count."\n";

#アクセス時の処理
	if(get($url_1) == "1"){

		#ページ更新

		print get($url_2)."\n";
		open (FILE, ">$file_2") or die "$!";
        	print(FILE get($url_2)) or die($!);
		close (FILE);

		print "アクセスがありました!\n";
		#CDイジェクト
		print "トレイをオープンします\n";
		print "-------\n\n";
		print `eject-nt`;
		print `eject-nt -t`;

	}elsif(get($url_1) == "0"){
		print "-------\n\n";
		print `eject-nt -t`;
	}else{}	

}

[/codesyntax]


・アクセス状況をモニタへ表示

最新のアクセスログは、ダウンロードされたログファイル「outdata.xml」をFlashへロードし、モニタへ表示させる。

動作サンプル

 

flaファイルダウンロード

TOPページへ前のページへ戻る  1 2 3