【MPFS】
MPFS:Microchip File Systemは、Webページ用のHTML関連データ
を保存するための簡易なファイルシステムです。
MPFSの構造は下図のようになっていて、8+3文字で表される
ファイル名でデータを扱うことが出来ます。(Mypage.htmなどの表現)
またファイルを格納する物理的な場所は、PICのプログラムメモリか、
外付けのEEPROMのいずれかを指定できるようになっています。
【FATとファイルの詳細】
MPFSのディレクトリに相当する場所には、FAT:File Allocation Table
が用意されていてファイル毎に1つのFATが作られます。
このFATの中味の詳細は下図のようになっています。
プログラムメモリを使う場合とEEPROMを使う場合でアドレス部分が
少し異なっていますが、コンパイルするときのオプションでSmall Memory
Modelを指定した場合には同じになります。
各ファイルは下図のような構造で格納されます。ファイルのデータ
そのものは必要なサイズで格納し、ファイルの最後のマークを付けた
形式となっています。この先頭のアドレスがFATに格納されています。
【Webページの動作概要】
このデモ版Web Serverに含まれているHTTP処理プログラムは、下図のような
関係で動作するようになっています。
HTTP.cとStackDemo.cの2つのプログラムが連携して動作するようになっています。
つまいhtmとcgiのページ転送はHTTP.cが実行し、CGIの実行処理部分を
StcakDemo.cが実行しています。
単純なhtm形式だけでなくCGIやダイナミックHTMLのページも処理できるように
作られていますので、結構本格的なページ構成で機器の監視制御を行う画面が
製作可能です。
ただし、Webページデータのサイズにはメモリサイズの制限があるので、画像
などを取り込んだ画面はちょっと厳しいかも知れません。gif、jpg画像ファイルにも
対応していますので、画像も表示させることも可能です。
基本的なWebページの機能の流れは下記のようになります。
(1) パソコンのブラウザから、デバイスのIPアドレスをURLとして表示要求する。
(2) デバイス側では、index.htmをデフォルトのページとして返信を開始する。
(3) このときCGIファイルの時には、CGIファイルを実行し、内容で「%XX」という
文字列を発見したときには、Dynamic HTMLということと判断する。
(4) HTTPGetVar()関数を実行して%XXに対応するデータを入力して返送する。
これがパソコン側に送られて現在状態値として表示されます。
(5) CGIで繰り返し表示の指示があるときには、(1)からの動作を繰り返します。
(6) 次にブラウザで制御ボタンを押したときには、GETコマンドが発行されます。
(7) デバイス側でこれを受信したら、HTTPExecCmd()関数を実行して、指定
された制御を実行します。
(8) 制御実行後、Commands.cgiというページの再表示を行います。
【Webページの作り方】
通常のWebページを作るのと同じ作業で作ることが出来ます。ホームページビルダ
などの作成ソフトを使って基本的な構成を作成します。
ホームのページはindex.htmというデフォルトの名前で格納します。
ここで注意が必要なことは、状態表示と制御用のページは後でCGIファイルにする必要
があるので、フレームで分割して独立のページとして作成しておきます。
状態表示に関係の無いフレームのページはそのまま拡張子をhtmとして保存します。
状態表示については、%XX 文字列で変数指定して状態要求できるようにします。
このXX(00から99の値)に対応した処理関数はデバイス側で作成する必要が
あります。(HTTPGetVar関数の中に追加)
このページを作成したらあとでこのページの拡張子htmをcgiに変更します。
制御については、Commands.htmという固定名称のページ名で作成します。
入力ツールの送信ボタンを追加し、そこに name=X の文字列で変数X指定をします。
このXに対応した処理も、HTTPExecCmd関数に追加する必要があります。
このページも作成したら、あとで拡張子をcgiにしておきます。
状態表示と制御用のページは同じページにはできません。
以上でページ作成は完了します。しかしこのままでは余分な内容が多いので、
ソースを見て、直接ページに関係の無い行は削除して全体の容量を削減します。
さらにindex.htm内の制御と状態表示のページ参照部のファイル名の拡張子を
htmからcgiに変更します。
こうしてページのソースは出来上がりますが、このままではPICターゲットには実装でき
ませんので、添付のツールでMPFS形式のファイルに変換します。
【WebページのMPFSへの変換】
出来上がったWebページをMPFSの形式に変換するためのツールと
して、TCP/IPスタックの中に変換ツール「MPFS.exe」が同梱されて
います。このツールは指定されたディレクトリ内のファイルを全て変換
してMPFS形式のデータファイルとして出力します。
出力形式は、C言語のソースファイル形式と、バイナリ形式の2種類が
できるようになっています。
ツールの仕様から、Webページを変換する場合には、関連ファイルを
1つのディレクトリの下に全て集めておくことが必要です。
MPFS変換ツールはDOSプログラムとなっていますので、Windowsの
コマンドプロンプトからコマンドで実行させます。コマンドフォーマットは
下記のようになっています。つまりディレクトリだけ指定すれば、あとは
その中にある全てのファイルをMPFS形式に変換してファイルとします。
出力形式は、ウェブページ格納にプログラムメモリを使う場合には、
/cオプションでCソースファイルを指定し、
EEPROMを使う場合には/bオプションでバイナリを指定します。
Cソースの場合には、コンパイルリンクする必要がありプロジェクトに
登録追加してコンパイル、リンクして使います。
【実際の例】
実際に作成したページの例です。
メニューにより中央部の図が入れ替わります。メモリサイズ制限により
写真の画質がかなり悪くなってしまいましたが、JPG画像も確かに扱えます。
左下はStatus.cgiというページとなっていて、1秒間隔で更新されるように
なっています。この更新は状態表示のcgiのページに下記の行を追加します。
この行で1秒周期の更新となります。
<meta http-equiv="refresh" content="1">
右下はCommands.cgiというページで、発光ダイオードのオンオフ制御を
行い、そのあとCommands.cgiというページ全体が再表示されます。