いしじまだい
/
ソフトウェア
/
BSD UNIXをHP 200LXのプリンタサーバに
UNIX母艦化計画 その2
BSD Prn v0.0 -- UNIXを HP 100/200LXのプリントサーバに
Copyright (C) 1996 by Dai ISHIJIMA
|☆ はじめに|
|☆ 動作環境|
|☆ アーカイブファイルに含まれるファイル|
|☆ コンパイル・インストール方法|
|☆ DOSでのコンパイル方法|
|☆ 使用方法|
|☆ バグ|
|☆ おことわり|
|☆ 参考文献|
|☆ 関連ページ: PS, ESC/Pプリンタの設定|
HP 100/200LX (以下LX) には、プリンタを接続するためのパラレルポートは
用意されていませんが、シリアルポートにプリンタを接続することが可能にな
っています。シリアルポートを備えたプリンタ、あるいはシリアル→パラレル
変換器経由でプリンタを接続すれば、Fn + 0 (Prt Sc) キーで画面ハードコピ
ーをとったり、若干の制限はありますが、MENU→File→PrintでPIMのデータを
印刷することができます。
このプログラムは、ESC/P互換プリンタ、あるいは PostScriptプリンタがつ
ながっているFreeBSDマシンを、LXのプリンタにするプログラムです。 このプ
ログラムを使うことによって、 LXからは、FreeBSDマシンとプリンタがあたか
も「シリアルポートを装備したESC/Pプリンタ」に見えます。 別の表現をすれ
ば、「FreeBSDマシンを (高価な?) シリパラ変換器として使う :-)」というこ
とになるでしょうか。 もっとも、FreeBSDはちゃんとしたマルチタスクのオペ
レーティングシステムですから、このプログラムを動かしたからといって、他
の作業ができなるなるなんてことはありませんのでご安心を。
このプログラムは、シリアルポートを通してLXから印刷データを受け取り、
ESC/Pプリンタへはそのまま、PostScriptプリンタへはESC/P→PostScript変換
を行ってから、プリンタにデータを転送します。
このプログラムは以下の3つのサブプログラムから構成されています。
- caps
- シリアルポートから受信したデータを標準出力に書き出す
- esc2ps
- LXが出力するESC/P形式のデータをPostScriptに変換
- esc2bm
- LXが出力するESC/P形式のデータからビットマップファイルを生成
この中でcapsはFreeBSDでのみ動きます。 LXでは動きません。esc2psとesc2bm
はFreeBSDだけでなく、LXなどのDOS環境でも動きます。
動作テストは以下の機種で行いました。
- プリンタ
- XEROX LaserWind 1040PS (+PostScriptフォントJ2)
- Apple LaserWriter16/600PS-J
- EPSON MJ-5000C
- サーバ
- Digital HiNote Ultra CS433
- クライアント
- HP 200LX 2Mモデル (新ハード、無改造)
なお、esc2ps, esc2bmのMS-DOS版は、HP 200LXおよび EPSON PC-386GS2でテ
ストを行いました。実行形式はアーカイブに含まれていませんので、MS-DOSで
これらのプログラムを利用する場合は
「☆ DOSでのコンパイル方法」を参考に
してコンパイルしてください。 コンパイラは、Turbo C++ 1.0 2nd Editionと
LSI C-86 Ver 3.30c 試食版に対応しています。
アーカイブファイル
bsdprn00.lzhには、
- readme.doc
- このファイル
- caps.c
- capsのソース
- tty.c
- capsが使うシリアルまわりの関数
- caps.man
- capsのマニュアル
- esc2bm.c
- esc2bmのソース
- esc2bm.man
- esc2bmのマニュアル
- esc2ps.c
- esc2psのソース
- esc2ps.man
- esc2psのマニュアル
- makefile
- FreeBSD用メイクファイル
- makefile.lsi
- MS-DOS/LSI C-86 Ver 3.30c 試食版用メイクファイル
- makefile.tcc
- MS-DOS/Turbo C++ 1.0 2nd Ed.用メイクファイル
- printcap
- /etc/printcap設定例
- lpf-escp
- ESC/P用のプリンタフィルタの例
- lpf-through
- PostScript用のプリンタフィルタの例
が含まれています。サフィックス ".lzh" からわかるように、このアーカイブ
ファイルはLHa (のUNIX版、lha(1)) で作成されています。 アーカイブ内の日
本語コードはシフトJIS、改行コードは CR + LF になっていますので、UNIXで
解凍する場合は、't' あるいは 'et' modifierをつけてください。
操作例
FreeBSDで利用している日本語コードが SJISの場合
% lha xt bsdprn00.lzh
FreeBSDで利用している日本語コードが EUCの場合
% lha xet bsdprn00.lzh
DOSで解凍する場合は、普通に解凍してください。また、DOSで解凍したファイ
ルをUNIXに転送する場合は、日本語コードや改行コードに注意してください。
アーカイブ中の最後の3つのファイル、printcap, lpf-escp, lpf-throughは
付録です。 FreeBSDでまだプリンタのセットアップが終っていない場合は、こ
れらのファイルのコメント文を参考にして、プリンタを使えるようにしてくだ
さい。
まず、適当なディレクトリでアーカイブファイル bsdprn00.lzh を解凍しま
す。つぎに、使用環境にあわせて makefileを編集し、make(1)でコンパイルし
てください。ここではアーカイブファイルが /tmp にあり、/tmp/bsdprn でコ
ンパイルする例を示します。
操作例
% cd /tmp
% mkdir bsdprn
% cd bsdprn
% lha xet /tmp/bsdprn00.lzh
% vi makefile
% make
コンパイルできたら、make install でバイナリをインストールしてください。
また、jgroff(1) などの日本語が通る roffが使えるなら、make install.man
でマニュアルもインストールしてください。
操作例
% su
# make install
# make install.man
# exit
% rehash
FreeBSDでのコンパイルと同様に、適当な作業ディレクトリでアーカイブを
解凍してください。ここでは、C:\TMPにアーカイブファイルがあり、C:\WORK
で作業する例を示します。
まず、lhaでアーカイブを解凍してください。
操作例
C:\>cd \work
C:\WORK>lha x \tmp\bsdprn00.lzh
次に、makeでコンパイルしてください。
操作例 (Turbo-C++の場合)
C:\WORK>make -fmakefile.tcc
操作例 (LSI-C86試食版の場合)
C:\WORK>make -f makefile.lsi
コンパイルが終ったら、copyコマンドなどでパスの通ったディレクトリに実行
形式をコピーしてください。
まず、LX側の準備を行います。 プログラムマネージャからSetupを起動し、
Printer {F3} を押してプリンタ設定画面を呼び出します。ここで、Baud Rate
を9600にしてください。Interfaceは COM1: (F1015Aなどで接続) か Infrared
(赤外線ポート) のどちらかをFreeBSDとの接続形態にあわせて選んでください。
Printerの項目は、本プログラムがESC/Pを想定しているので EPSON FX-80とし
てください。これらの設定が終れば、最後にOK{F10}を押してください。
つぎに、FreeBSDマシンの空いている (getty(8) などが占有していない) シ
リアルポートにLXをつなぎます。有線の場合はF1015Aなどのクロスケーブル接
続してください。 赤外線ポートを用いるときは、FreeBSDマシンとLXを適切に
配置してください。
接続あるいは配置できたら、そのシリアルポートを引数にして、capsを起動
してください。
操作例
% caps /dev/ttyd0 > /tmp/hardcopy.lx
そのあと、LX側でPIMから印刷操作をしてください。ハードコピーなら Fn + 0
を押します。すると、LXは印刷状態になり、20秒くらい画面右上の時計表示が
ストップします。LXの時計が動き出して5秒くらいたつと capsは終了し、LXか
ら送られてきた印刷データがESC/Pファイルとして /tmp/hardcopy.lxに保存さ
れます。
印刷データの取り込みが終了したら、そのデータをプリンタに送ります。ps
という名前でPostScriptプリンタが接続されている場合は、
% esc2ps < /tmp/hardcopy.lx | lpr -Pps
のようにしてください。 また、lpという名前のESC/Pプリンタに出力する場合
は、
% lpr -Plp /tmp/hardcopy.lx
のようにしてください。プリンタの設定によっては、これ以外のオプションが
必要になるかもしれません。付録としてアーカイブに収録したprintcapとプ
リンタ用フィルタを使ってESC/Pプリンタの設定をした場合は、
% lpr -v /tmp/hardcopy.lx
とします。
もちろん、印刷データの取り込みと印刷をパイプラインを使ってひとまとめ
にすることも可能です。その場合は、
% caps | esc2ps | lpr -Pps
や
% caps | lpr -v
のようにFreeBSD側で操作してから、LXで印刷を開始してください。
LXからの印刷データをビットマップファイルに変換するには、esc2bmを使い
ます。PIMの画面を他のアプリケーションに貼り付けたい場合に便利です。
% esc2bm -x /tmp/hardcopy.lx > lx-hardcopy.xbm
とすれば、X-Windowのビットマップファイルに、
% esc2bm -p /tmp/hardcopy.lx > lx-hardcopy.pbm
とすれば、Portable Bitmap (pbmraw) 形式に変換することができます。
このパッケージに含まれるプログラムには、以下の制限事項があります。
- シリアルの速度設定によっては、データをとりこぼしたり、文字化けす
る可能性があります。(caps)
- PIMのハードコピー操作でHP 200LXが出力するESC/P形式のデータ以外は、
うまく変換できないかもしれません。(esc2ps, esc2bm)
- 変換したpsファイルを、TeX などの他のソフトに取り込むことはできま
せん。 これは、変換後のファイルにBoundingBoxなどの情報が含まれて
いないからです。(esc2ps)
- 巨大なファイル、一行の長さがとても長いファイルを入力すると、動作
は保証されません。(esc2ps, esc2bm)
- 1バイトカタカナ (いわゆる半角カナ) には対応していません。(esc2ps)
他にもあるかもしれません (^^;。
このプログラムは (狭義の) フリーソフトウェアです。パブリックドメイン
ソフトウェア (PDS)、シェアウェアではありません。このプログラムの著作権
は、作者である いしじま☆だいが所有しています。
このプログラムの運用によって生じた結果については一切責任を負いかねま
すのでご了承ください。
このプログラムの全部、または一部をそのまま利用して商用目的のプログラ
ムを作成することはご遠慮ください。
フリーソフトウェアの作成や個人的な範囲での利用が目的の場合は、このプ
ログラムの全部、または一部をそのまま利用してもかまいません。他機種への
移植や他のオペレーティングシステムへの移植およびフリーソフトウェアとし
ての公開は大歓迎です。その場合、作者への連絡は不要です。 (でも、報告し
てくれたり、ドキュメントに一筆書いてくれたり、さらには、そのソフトのソ
ースを公開してもらえると非常にうれしいです。)
このプログラムを再配布する場合は、アーカイブファイル bsdprn00.lzh に
含まれるすべてのファイルを変更せずにそのまま配布してください。再配布す
る場合は電子メイルなどでご連絡いただけるとありがたいです。
- Evi Nemeth, Garth Snyder, Scott Seebas 共著, 井上 尚司 監訳:
UNIXシステム管理入門 (ソフトバンク, 1992), pp.131-142.
- The FreeBSD FAQ Team, FAQ@FreeBSD.ORG:
"FreeBSD Frequently Asked Questions for FreeBSD 2.X",
(2.1Rの /usr/share/doc/FAQ/{freebsd-faq.ascii,*.html}).
www.jp.freebsd.orgのFAQページへ
- The FreeBSD Documentation Project:
"FreeBSD Handbook",
(2.1Rの /usr/share/doc/handboo/{handbook.ascii,*.html}).
www.jp.freebsd.orgの日本語版ハンドブックへ
- いしじま☆だい: UNIXをFilerサーバに v0.3,
NIFTY-Serve FHPPC LIB(8) #601.