at_kazutaka.bito
2015年7月4日 18時21分
Armadillo-400シリーズで下記のようにWebページ上で表を表示するサンプルデモを作ってみた。
1.まず、表の要素となるデータを出力するスクリプト"rand_data"を作成。
rand_data
rm -f /tmp/log.txt
rm -f /home/www-data/log20.txt
touch /tmp/log.txt
touch /home/www-data/log20.txt
for i in `seq 1 1000`
do
echo -n `date +"%Y/%m/%d %p %I:%M:%S"` >> /tmp/log.txt
echo -n ',' >> /tmp/log.txt
echo -n $((RANDOM % 100)) >> /tmp/log.txt
echo -n ',' >> /tmp/log.txt
echo $((RANDOM % 100)) >> /tmp/log.txt
tail -n 20 /tmp/log.txt > /home/www-data/log20.txt
sleep 1
done
このスクリプトは、1秒毎に 日付,乱数,乱数 という形式で、 /tmp/log.txt に1000回まで出力する。 うち、最新の20行が /home/www-data/log20.txt に出力される。
2.Webページに表を作るプログラムをCGIで作成。
ArmadilloをCGIで制御するサンプル(LED点灯) のredled.cを改造して、下記のような"table_demo.c"を作成する。 table_demo.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char str[256], str1[256], str2[256];
int ret, val1, val2;
puts(
"Content-type: text/html\n"
"\n"
"<HTML>\n"
"<HEAD>\n"
"<TITLE> Armadillo-440 </TITLE>\n"
"</HEAD>\n"
"<BODY>\n"
);
// system("echo 1 > /sys/class/leds/red/brightness");
// system("sleep 1");
// system("echo 0 > /sys/class/leds/red/brightness");
/**** table_demo: begin ****/
fp = fopen("/home/www-data/log20.txt", "rt");
if( fp == NULL ){
printf( "cannot open /home/www-data/log20.txt¥n");
return -1;
}
puts(
"<TABLE border=\\"1\\" align=\\"left\\">\n"
);
while((ret = fscanf( fp, "%[^,],%d,%d", str, &val1, &val2)) != EOF){
sprintf(str1, "%d", val1 * 10);
sprintf(str2, "%d", val2 * 10);
if(ret == 3) {
puts(
"<TR>\n"
"<TD>"
);
puts(str);
puts(
"</TD>\n"
"<TD>"
);
puts(str1);
puts(
"</TD>\n"
"<TD>"
);
puts(str2);
puts(
"</TD>\n"
"</TR>\n"
);
}
}
puts(
"</TABLE>\n"
);
fclose(fp);
/**** table_demo: end ****/
puts(
"</BODY>\n"
"</HTML>"
);
return 0;
}
備考) /**** table_demo: begin ****/ /**** table_demo: end ****/ で囲んだ箇所で、/home/www-data/log20.txtの内容を読み込んで、乱数は計算(今回は単に10倍)して表に表示している。
3.ビルドをかける(実行ファイルは、table_demo.cgiとする)
arm-linux-gnueabi-gcc table_demo.c -o table_demo.cgi
4.上記1,2のファイル"rand_data"、"table_demo.cgi"をArmadilloに転送し、/home/www-dataに置く
5.実行権限をつける
[armadillo ~]# chmod +x /home/www-data/rand_data
[armadillo ~]# chmod +x /home/www-data/table_demo.cgi
6.PCのWebブラウザで確認する。
まず、PCとArmadilloをネットワーク経由で接続し、ArmadilloのIPアドレスを確認する。
Armadillo上で
[armadillo ~]# /home/www-data/rand_data &
を実行後、PCのWebブラウザで [ArmadilloのIPアドレス]/table_demo.cgi にアクセスすると、/home/www-data/log20.txtの内容が、Webブラウザで表になって見える。