WINシステムからデータを抽出して、波形表示JavaScriptのリアルタイムモードで使用するファイルを指定ディレクトリに作成するプログラム。動作としては、winのUDPパケットを受け取り、設定されたチャネルグループ毎の2秒ファイルを毎秒更新します。
ソースコードをCでコンパイルしてください。念のため64bit環境では、-m32をつけてください。
$ cc wrt180722.c -o wrt
wrtは指定されたチャネルテーブルを読んで、同一の観測点コードをもつチャネルごとにファイルにまとめます。元々使っていたチャネルテーブルだとチャネルの分配上都合が悪い場合には、wrt用のチャネルテーブルファイルを新たに作成してください。このチャネルテーブルは、波形表示JavaScriptからも参照できる必要があるため、Webで参照できるところにおいてください。ここでは、apacheのドキュメントルートが/dataに設定されていると仮定し、そこにtable.chというファイルが置かれているものとします。
wrtが書き出す2秒ファイルは、波形表示JavaScriptから読むことができる必要があるため、それを置くためのディレクトリを用意してください。ここでは、/data/tmpとします。頻繁に書き換えられる上に残しておく必要も無いファイルなので、このディレクトリはメモリファイルシステムにすることをおすすめします。
wrtはUDPパケットを受け取って仕分けするため、セットでsend_rawを起動してください。ここでは、時間順整列済の共有メモリがキー13、4129番ポートを使用するものとします。
$ send_raw -1 13 127.0.0.1 4129 -
wrtの起動引数は順に、チャネルテーブル、受信ポート番号、書出しディレクトリ、ファイル接頭文字列?となっている。下記のように起動すると、
$ wrt /data/table.ch 4129 /data/tmp rt
/data/table.chで観測点コードが"CODE"となっているチャネルがあった場合、そのデータは/data/tmp/rtCODE.winに書き出されます。
下に、htmlファイルの例を示します。このようなhtmlファイルをWebサーバ側に置いておきます。
<!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <div id="ITK"></div> <!--波形表示JavaScriptが表示を行うための領域--> <form name="itkForm"> <!JavaScriptにパラメータを伝えるためのフォーム--> <input type="hidden" name="mode" value="rtime"> <!--リアルタイムモードを指定します--> <input type="hidden" name="files" value="/tmp/rtCODE.win"> <!--毎秒読み込むwinファイルを指定します。","で区切って複数指定可--> <input type="hidden" name="ini" value="/table.ch"> <!--チャネルテーブルを指定します--> <input type="hidden" name="mscale" id="mscale" value="1.0"> <!--オートスケールを制限する値(この場合、p-pが1.0より小さいときはそれ以上拡大しない)--> <input type="hidden" name="length" id="length" value="9"> <!--表示する時間長--> </form> <script src="http://seism.jp/winPrint.js"></script> <!--JavaScriptの指定--> </body> </html>