PICNICは、10 Base T Ethernetに接続し、Serial, Parallel, アナログインターフェースを手軽に操作できるKitです。
Windows用の、サンプルプログラムが付属しており、Linux版のライブラリーは提供される予定の様ですが、私が使おうと思ったときには、まだ準備中でした。
UDPの上に乗った、専用のプロトコルで操作するので、それほど難しくはありませんが、既にあるプログラムを改造する場合、最小限の変更にしたいものです。
TCPで接続する、いわゆるターミナルサーバー用に作成したものがあったので、これをPICNICでも使用できるようにしたいと考え、protocol converterを制作しました。
このアーカイブを展開し、makeします。できあがったbinaryは、/usr/local/binなど、適当な場所にコピーします。
% picterm picnic picport myport speed
picnic: IP or hostname of picnic
picport: port # of serial port of picnic
myport: port # for listen
speed: serial speed (9600 ... 115200)
このプログラムを走らせてから、
myportにtelnet protocolで接続します。
たとえば、IP Address 192.168.0.10のLinux boxで、
% picterm 192.168.0.200 10002 2000 9600 &
% telnet 192.168.0.10 2000
のようにすると、Keyboardの入力が、PICNICのシリアルポートに出力され、PICNICのシリアルポートに入力されたものが、CRTに表示されます。
telnetを切断すると、pictermも終了します。
現在のところ、エラーが起きても一切、回復処置をしませんし、他のマシンが使用中でも、お構いなしにPICNICを横取りします。もっとも、UDPで送信し、それにUDPで答えているので、「応答がない」とき、上りでlossしたのか、下りでlossしたのか判定できませんので、コマンドの再送は、重複して送る危険があるし、Serialの受信に至っては、回復のしようがありません。
RS-232Cライン上でもエラーは起こるので、送受全体でエラー制御する必要があり、PICNICとマシンのそれも片道のエラー発生をリカバーしてもあまり意味がありません。
また、他のマシンからPICNICを横取りされる危険があるのですが、Linux BoxにNICをつけてそのマシン専用のPrivate LANで使えばよいと思います。なければなくても済む、一切を切り捨てたところが、PICNICの、そしてPICの特長のひとつだと思っています。