●课题4的目标
课题4「内含CSV数据控制页面的取得和往FTP服务器的上传」的提出。→从这里提出课题
请活用IT研究生课程中要成为IT技术者最基本的学科与技能
※学习的顺序:
http://cai.cs.shinshu-u.ac.jp/sugsi/info/LecOrdIT.png
这个课题有两个目的。
(1)CSV形式数据生成(PICNIC侧)
以课题3(ver1.2.0.8)为基础、把CSV数据(用逗号隔开的数据)代如web控制画面的HTML数据中
(2)将取得的数据上传到FTP服务器(PC侧)
通过从PICNIC连接可能的Unix(Linux,FreeBSD,Sun等)或是WindowsPC取得HTML页面以及使用各种加工工具,取得页面,检测出CSV数据,过滤,加工,最后把加工好的CSV数据上传到FTP服务器。
・wget:HTML页取得程序
・grep:过滤器
・sed :stream编辑器
・date:日期/时刻取得与表示
因为CSV数据是通用性很高的数据形式,可以把它数据库化,或者是用于掌握各PICNIC最近情况等各种用途。
<附记>
关于各种命令的使用方法、可以用man电子手册、或是用例如像: wget --help
一样的在后面加上 –help后,使用方法会表示出来。
●把CSV数据追加到web控制页面的HTML数据中
取得HTML数据后为了简便加工工作、在web控制画面的HTML数据中、追加以CSV,....开头的各种数据。把他们放到页脚最后。
(1)CSV数据形式
CSV行用逗号隔开的数据,依次为以下内容。
※这次IP地址于端口号不记载到数据中。
<CSV数据形式(实际为一行)>
-------------------------------------------
CSV,
学号,
Firm Version,
MAC Address,
RA0,RA1,RA2,RA3,RA5,
RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7,
门开闭回数counter(终了)
-------------------------------------------
<输出例>
CSV,02TA699X, 1.2.0.9, 00:02:CB:01:2E:75, 0, 0, 0, 0, 27, High , Low
, High , High , High , Low , Low , Low , 0
→实际的web页面(HTML)的例子
(2)程序的变更
把以下的语句追加到Web控制画面#4的页脚部分。
<web控制#4页脚部分追加的语句>
; ;++++++++++++++ 各种CSV数据行 +++++++++++[ver0.9] ; DA "CSV," ; CSV行识别字符串 DA "02TA699X," ; 学号 DA "$8," ; 版本号码($8) DA "$0," ; MAC地址($0) DA "@\x00" ; RA0 '@",0000_0000b DA ", " DA "@\x01" ; RA1 '@",0000_0001b DA ", " DA "@\x02" ; RA2 '@",0000_0010b DA ", " DA "@\x03" ; RA3 '@",0000_0011b DA ", " DA "@\x04" ; RA5 '@",0000_0100b(显示℃的换算值) DA ", " DA "@\x10" ; RB0 '@',0001_0000b DA ", " DA "@\x11" ; RB1 '@',0001_0001b DA ", " DA "@\x12" ; RB2 '@',0001_0010b DA ", " DA "@\x13" ; RB3 '@',0001_0011b DA ", " DA "@\x14" ; RB4 '@',0001_0100b DA ", " DA "@\x15" ; RB5 '@',0001_0101b DA ", " DA "@\x16" ; RB6 '@',0001_0110b DA ", " DA "@\x17" ; RB7 '@',0001_0111b DA ", " DA "$9" ; 门开闭回数counter DA "\n"
|
●各命令的安装
(1)Unix
最近的Linux-OS等以标准安装有sh, bash,grep,sed,date, wget等。
(2)WindowsPC
有以下两种方法。
[A] 安装Cygwin环境
[B] 安装Win32- GNU Unix命令互换实用程序
[A] Cygwin环境
从Cygwin的主页下在安装。
http://www.cygwin.com/
http://www.cygwin.com/setup.exe
grep, sed, date:Base分类中选择default安装。
wget:Web分类中选择 wget 安装。
Bash在command shell中操作。
[B] Win32-Unix互换命令环境(2005/3/25 修正)
用GNU utilities for Win32、安装Unix互换命令。
从这里下载(12.6MB) unxutils.exe并安装。
安装时、选择Basic。
命令集:放到C:\Windows\System32\
使用手册:放到C:\Program Files\UnxUtils\ 。
各命令从DOS窗口调出的 sh 上使用。
关于使用方法、从sh上输入例如man wget 等命令调出电子使用手册。
WinXP的情况下:
【开始】→【程序】→【附件】→<DOS>
或者、
【开始】→【指定文件名执行】→ cmd.exe
然后、输入c:\windows\system32\sh、切换到sh的互换环境。
与Unix(Cygwin)上的shell command是相同的(非常的方便!)。
※注意点 在WinXp下、要安装到具有超级用户权限的用英文字符为用户名下
●网页取得与过滤功能的例(2005/3/25 改正)
※以下、假定PICNIC连接在 IPアドレス 192.168.1.200 / http端口 8080号 的状态下。(试验时、PICNIC通上电源)
(1)用wget取得PICNIC的网页
HTML页面取得的例:
wget http://192.168.1.200:8080/
→ 保存到index.html
wget -O picnic.html http://192.168.1.200:8080/
→ 保存到picnic.html
wget -O - http://192.168.1.200:8080/
→ 写到标准输出中
wget -O picnic.html http://192.168.1.200:8080/modify.cgi?RB6=H
→ 先把PICNIC的RB6端口状态改变为High、然后保存到picnic.html。(即使没有浏览器、也可以通过wget命令远距离操作!)※2005/3/25改正(变量-O追加)
(2)用grep命令检测出CSV行
提出含有"CSV"字符串的行。
grep "CSV" inputfile.txt
(3)用sed实现日期/时刻的附加
echo "s/^/`date`,/g" > date.sed
※注意:一部分日文版Unix(例如:TurboLinux 8 workstation的日文rvt等)的环境下、LOCALE变为ja_JP.eucJP、date的输出是EUC日本語。在这种情况下、为了把date输出表现为英语、使用env 命令、指定LANG=C后实行date就可以了。
例: env LANG=C date
<参考URL>
locale 的設定
下面,使用date.sed、在输入文件的开头附加日期/时刻。
sed -f date.sed inputfile.csv
(4)最终的连续处理
例:追加到02TA699X.csv的情况下
[A] 在Unix(Cygwin)环境下
picnic-get.sh
-----------------------------------------------------------------------
echo "s/^/`date`,/g" > date.sed ; wget -O - http://192.168.1.200:8080/ | grep --text "CSV" | sed -f date.sed >> 02TA699X.csv
-----------------------------------------------------------------------
[B] 在Win32环境下
像下面的例子一样、用sh -c 依次调出。
picnic-get.cmd
-----------------------------------------------------------------------
echo off
sh -c "echo s/^/`date`,/g > date.sed"
sh -c "wget -O - http://192.168.1.200:8080/ | grep --text 'CSV' >
picnic.csv"
sh -c "cat picnic.csv | sed -f date.sed >> 02TA699X.csv"
-----------------------------------------------------------------------
<得出的CSV文件的例>
02TA699X.csv的例
●定期命令执行的调度方法
(1)在Unix下
使用Cron或者at命令。
(2)Cygwin环境、Win32环境下
[A] Win2000,XP下、在schedule起动的情况下:
可以使用AT命令。
WinXP下:
到【开始】→【设定】→【控制面板】→【任务】里设定
※在任务揽中可是定的任务是以天的时刻为最小单位的。
[B] 使用免费软件:
例:Multi Function Alarm Ver.1.52(免费软件)
http://member.nifty.ne.jp/T_sugiyama/#MFA
[C] 在Cygwin上使用cron所需的设定:
为了在Cygwin上使用cron、在NT中安装cygrunsrv也是可能的。
http://www.amy.hi-ho.ne.jp/tachibana/cygwin/cron.html
●把CSV文件上传到FTP服务器上
例:学号为 02TA699X的情况下
02TA699X.csv这个CSV文件位于当前目录中、把它用anonymous用户上传到服务器的incoming/picnic中。
从FTP客户端自动上传有以下两种方法。
(1)使用FTP命令输入文件的方法(在可以使用-s的Cygwin环境下ftp用户端可以使用)
(2)用FTP命令列挙的文件、反复在询问的方法(在可以使用-n的Unix环境下ftp用户端可以使用)
(※2003年10月18日追加)
(1)使用FTP命令输入文件的方法(在可以使用-s的Cygwin环境下ftp用户端可以使用)
<FTP命令输入文件 ftplogin.txt>
open ysserve.cs.shinshu-u.ac.jp anonymous wasaki@cs.shinshu-u.ac.jp ←各自的信箱地址 cd /incoming/picnic del 02TA699X.csv put 02TA699X.csv ←要上传的CSV文件 quit
|
<实行例> 实行ftp -s:ftplogin.txt
THINKPAD2# ftp -s:ftplogin.txt
ftp> open ysserve.cs.shinshu-u.ac.jp Connected to ysserve.cs.shinshu-u.ac.jp. 220 ysserve.cs.shinshu-u.ac.jp FTP server (Version 6.00LS) ready. User (ysserve.cs.shinshu-u.ac.jp:(none)): anonymous ←用户名(实际上不被显示) 331 Guest login ok, send your email address as password.
wasaki@cs.shinshu-u.ac.jp ←密码(实际上不被显示) 230- Welcome to Anonymous FTP server 'ysserve.cs.shinshu-u.ac.jp'! 230- 230 Guest login ok, access restrictions apply. ftp> ftp> cd /incoming/picnic 250 CWD command successful. ftp> put 02TA699X.csv 200 PORT command successful. 150 Opening ASCII mode data connection for '02TA699X.csv'. 226 Transfer complete. ftp: 40 bytes sent in 0.00Seconds 40000.00Kbytes/sec. ftp> quit 221 Goodbye.
|
(2)用FTP命令列挙的文件、反复在询问的方法(使用-n)
<列举FTP命令的文件 ftpupload.txt>
open ysserve.cs.shinshu-u.ac.jp user anonymous wasaki@cs.shinshu-u.ac.jp cd /incoming/picnic del 02TA699X.csv put 02TA699X.csv quit
|
<实行例> 实行ftp -v -n < ftpupload.txt
THINKPAD2# ftp -v -n < ftpupload.txt
ftp> open ysserve.cs.shinshu-u.ac.jp Connected to ysserve.cs.shinshu-u.ac.jp. 220 ysserve.cs.shinshu-u.ac.jp FTP server (Version 6.00LS) ready. User (ysserve.cs.shinshu-u.ac.jp:(none)): anonymous ←用户名(实际上不被显示) 331 Guest login ok, send your email address as password.
wasaki@cs.shinshu-u.ac.jp ←密码(实际上不被显示) 230- Welcome to Anonymous FTP server 'ysserve.cs.shinshu-u.ac.jp'! 230- 230 Guest login ok, access restrictions apply. ftp> ftp> cd /incoming/picnic 250 CWD command successful. ftp> put 02TA699X.csv 200 PORT command successful. 150 Opening ASCII mode data connection for '02TA699X.csv'. 226 Transfer complete. ftp: 40 bytes sent in 0.00Seconds 40000.00Kbytes/sec. ftp> quit 221 Goodbye.
|
从这里确认上传的情况。
ftp://ysserve.cs.shinshu-u.ac.jp/incoming/picnic/
在安装MS-Excel的Windows系统下、从InternetExplorer可以直接打开FTP文件夹中的CSV文件。
#请不要删除别的同学的文件!
●課題4的提交
|
【課題4】(総合実験)
[A]CSV形式数据生成(PICNIC侧)
以课题3(ver1.2.0.8)为基础、把CSV数据(用逗号隔开的数据)代如web控制画面的HTML数据中
[B]将取得的数据上传到FTP服务器(PC侧)
通过从PICNIC连接可能的Unix(Linux,FreeBSD,Sun等)或是WindowsPC取得HTML页面以及使用各种加工工具,取得页面,检测出CSV数据,过滤,加工,最后把加工好的CSV数据上传到FTP服务器。
|
【A】CSV形式数据的生成(PICNIC侧)的报告的提出
(1)更新固件,使CSV数据可以在web控制画面上标示出来。
(2)从门传感器的状态、计数器值的变化、web控制画面上确认机能是否正常运作。
(3)汇编源文件版本号码变为、ver1.2.0.9,另外web控制画面的页脚部分变更位各自的学号。
(4)做成后的汇编源文件 用v1208e4.asm 的文件名保存。
(5)把v1208e4.asm 上传到报告提出系统。报告领受后,进行评分。
<提出方法>
把做成的汇编文件上传到报告提出系统中(扩展名为 *.asm 。不是*.hex)
提出的文件经过机能确认后,如果机能不完备需要再提出,如果机能完备判定为[A]合格。
从这里提交课题3[A](课题编号:picnic-exp04)
(6)变为「等待判定」。如果判定结果一直不出来请来信到这里。
(7)判定为再提出的情况下,改正不正确的地方、改为v1208e4a.asm等的文件名后再提出。
(8)判定为合格后,课题3[A]修了。(接下来作课题3[B])
【B】将取得的数据上传到FTP服务器(PC侧)
(9)准备一台从网络中可以连接PICNIC的计算机、并使他可以使用sh,,bash,grep,sed,date,wget等工具。
(10) 确认从PICNIC中取得上面[A]中输出的CSV文件,与这些文件的追加与记录。日期・时刻是否追加、设定为10秒钟取3至4回。
(11)关于定期命令执行的调度方法,这次不用设定。
(12)做成的以学号.csv为文件名的CSV文件在当前目录中、把它已anonymous用户形式上传到ftp服务器(ysserve.cs.shinshu-u.ac.jp)的incoming/picnic目录下。
(13)打开以下URL、确认各自上传的CSV文件。
ftp://ysserve.cs.shinshu-u.ac.jp/incoming/picnic/
(14)上传确认后、把上传的CSV文件的URL里的内容输入到以下报告提出系统的教官备注栏中,提交上来。
<提出方法>
提出的CSV文件的URL经过确认后,如果不完备需要再提出,如果完备判定为合格。
从这里提出课题3[B](课题编号:picnic-exp03)
(15)变为「等待判定」。如果判定结果一直不出来请来信到这里。
(16)判定为再提出的情况下,改正不正确的地方、改正后再提出。
(17)判定为合格后,课题3[B]修了。(整个报告修了)
完成了以上内容的同学们,大家辛苦了!到这里这门课所有的课题都结束了。今后也希望大家在信州大学IT研究生院里积极的学习和研究、积极参加远程教育的各种活动,在各个方面也请配合我们的工作。m(_o_)m
●研究的重点
以下是这次报告的研究重点。在报告中没有必要提出,请各自在写程序前在头脑中整理。
[1] 关于从PICNIC中取得数据到服务器上传,用什么样的周期比较好呢?在这方面用不同的应用软件中想必会有很大的不同。比如说,很简单的一个[温度记录装置],会要求以10分钟为周期计策并且以数小时的计策结果一起上传。那么我们这次的家安全系统,如果要求不在家时的报警速度要快的话,可能要在不在家的时候以1分钟以下为周期计策与通报。针对这方面请大家好好研究一下。
[2] 用wget命令加上CGI变量(?RB6=Hなど)、可以即时控制PICNIC的端口出力。讨论一下利用这个技能能够做出什么样的应用软件。
[3] wgetコマンドでCGI引数(?RB6=Hなど)を与えることで、シェルスクリプトからのPICNICのポート出力制御が即時可能である。この機能を利用したアプリケーション例について検討してみよ。
●参考URL
UNIX Tools for Win32
http://crocus.sci.kumamoto-u.ac.jp/physics/astro/fujimoto/home/junixwin32.htm
Cygwin
http://www.cygwin.com/
GNU utilities for Win32
http://unxutils.sourceforge.net/
GNU FSF/UNESCO Free Software Directory
http://www.gnu.org/directory/

|