測定用のコンピュータには、FreeBSD-2.2.1-RELEASEをインストールしています。
まず、AD変換モジュールの制御についてですが、ここではデバイスドライバー
を使わずに直接I/Oポートにアクセスする方法を採用しました。(参考:FreeBSDメーリングリストの過去メール)
/dev/io ファイルをオープンすれば、これが可能になります。
この部分はC言語で作成しました。DOS用のC言語ソースに少し手を入れるだけで使用できます。
という方式にしていたんですが、FreeBSD-2.2.6-RELEASE にバージョンアップしたところ、
一般ユーザが /dev/io ファイルをオープンできないような仕様に変更されていました。
当然この方が安全で、UNIX はかくあるべきなんですが、今度はデバイスドライバを作らなければなりません。
運の良い事に Software Design 1998 年 4 月号 p.50 (三田吉郎 氏)に プリンタポートを汎用 I/O ポートとして
使用するための記事がありましたのでこれを参考にして lpt0 を改良しました。
これによりユーザプログラムの方ではI/Oポートアドレス等を全く意識せずにプログラム
できるようになります。
FreeBSD-3.*-RELEASE 以降では汎用 I/O ポートドライバ /dev/ppi0 がデフォルトで実装されて
いますのでこれを使います。C言語のソースはこのようになります。
これをcronデーモンを使って10分おきに起動し、データをファイルに
記録しています。そして1日の終りには、その日のデータファイルの名前を変えて
セーブし、新しいファイルを準備します。
こういうところ、UNIXは非常に簡単にできてしまいます。
WEBページに表示する方法ですが、測定用コンピュータとWEBサーバーが別になっていますので、
測定用コンピュータにもappache(httpd)をインストールし、CGIを実行できるように設定します。
このあたりの準備は、FreeBSDのpackageをインストールすれば、ほとんど特別な事をする
必要はありません。訪問者による遠隔測定用のCGIスクリプトと、データをグラフに表示する
CGIスクリプトをperlにより作成しました。グラフ表示は、gdグラフィックライブラリを
用いて、データをGIF画像に変換し、ブラウザにわたすという方法をとっています。
(参考:"C&Perl5によるCGI入門"、星雲社)