以前紹介したネットワーク温度計はIP接続が可能で、インターネットを使えば遠隔地からも簡単に温度の監視が可能だ。また、無線LANを使えば温室内などの設置も容易となる。
そこで、放射温度計が接続されているPCに簡易サーバを構築し、ネットワーク経由でいつでもデータを取得できるようにしてみた。
放射温度計がRS-232Cで接続されているPCは、現在は10分毎にデータを取得、テキストファイルにデータを保存している。そこで、このPCにサーバプログラムを設置し、クライアントからの要求に応じて、温度データを取得、クライアントに送信するプログラムを作成した。 データを取得するプログラム自信は、このサーバプログラムには組み込まず、これまで使っているものを利用している。 Windows 向けのActivePerlで作成している。 |
| ☆サーバプログラム |
|
use IO::Socket; $listening_socket = IO::Socket::INET->new(LocalPort => $port, if ( ! $listening_socket ){ $client_sockaddr = $new_socket->peername(); print "接続: $client_hostname($client_ip) ポート $client_port\n"; select($new_socket); $|=1; select(STDOUT); while (<$new_socket>){ |
| ☆クライアントプログラム |
use IO::Socket; # IO::Socket モジュールを使う。 # ホスト名とポート番号を設定 $host = "192.168.XX.XX"; $port = 80; $mes = "get_data"; print "$host:$port に接続します。\n"; $socket = IO::Socket::INET->new(PeerAddr => $host, # 文字列を受信 $socket->close(); #【参考】http://x68000.q-e-d.net/~68user/net/module-1.html |
上記サーバプログラムをPCで起動して、クライアントからアクセスがあったときの様子。 |
上記クライアントを別のPCで起動し、無事放射温度計のデータを取得できた。 |