●会場内サーバのプログラム
・会場内サーバメインプログラム
会場内サーバは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へロードし、モニタへ表示させる。
