LinuxでPICNICに行こう


はじめに

PICNICは、10 Base T Ethernetに接続し、Serial, Parallel, アナログインターフェースを手軽に操作できるKitです。

Windows用の、サンプルプログラムが付属しており、Linux版のライブラリーは提供される予定の様ですが、私が使おうと思ったときには、まだ準備中でした。

UDPの上に乗った、専用のプロトコルで操作するので、それほど難しくはありませんが、既にあるプログラムを改造する場合、最小限の変更にしたいものです。

TCPで接続する、いわゆるターミナルサーバー用に作成したものがあったので、これをPICNICでも使用できるようにしたいと考え、protocol converterを制作しました。


Install

このアーカイブを展開し、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の特長のひとつだと思っています。