初版: 2004-08-08
最終更新日:
2014-10-12
日本橋で、シチズンのPD-04という赤外線プリンタを買いました。
いや、まだSL-Zaurusから使えてないですよ。
上のデジカメ画像は、あくまでも合成画像です(笑)。
ハメコミ合成でないのは コチラに用意しました:-) (2004-09-09)。
関連情報: 河村商店さま の 「シチズン携帯プリンタを使った『ハンディ検針ツール』」 (2006-03-14 → 2014-10-12リンク先更新)。
/etc/irda.confに
[PD-04] BaudRate=9600,DataSize=256,BOFS=32,WindowSize=1,DiscTime=1とか書いて、さらに
mknod /dev/irlpt0 c 161 16 ln -s /dev/irlpt0 /dev/irlpt chmod 666 /dev/ir* sh /etc/rc.d/init.d/irda start echo 1 > /proc/sys/net/irda/discovery_slotsとかしてから、
echo foo > /dev/irlpt0ってやると、なんか印刷しました:-)
…上のどの設定が効いてるのか、 あるはもうちょっといぢるべきパラメータがあるのか、 実のところよくわかってないんですけど、 とりあえずデータを送ることはできた、ちうことで(笑)。
…ときどきうまくいかないこともあるんで、 さらに調査が必要です(汗)。
ghostscriptが動く別のマシンで
gs -sDEVICE=epson -r180x180 -sOutputFile=/tmp/foo -q - < tiger.psとしてから、gsの出力(foo)をコピーして、
cat foo > /dev/irlpt0すると、意味不明の文字列がずらずらと印刷されました(苦笑)。
ま、とりあえずデータを送ることはできた、ちうことで(笑)。
2004-09-03
00000000 1b 40 1b 50 1b 51 50 1b 6c 05 1b 78 30 1c 78 31 |.@.P.QP.l..x0.x1| 00000010 1b 4d 1c 53 03 03 1b 44 08 10 18 20 28 30 38 40 |.M.S...D... (08@| 00000020 48 50 08 1c 26 46 7c 4b 5c 38 6c 24 4f 30 75 3a |HP..&F|K\8l$O0u:| 00000030 7e 24 47 24 2d 24 6b 1c 2e 3f 0a 0c 1b 40 |~$G$-$k..?...@| 0000003eというデータにし、 これを「cat > /dev/irlpt0」でプリンタに送ってやると ちゃんと日本語が印刷されました。
テキストデータをESC/Pフォーマットに変換する方法については、 「ESC/Pプリンタを使う」 をご覧ください。
なお、ESC/Pの縦書きシーケンス (FS J) を送ると縦書きにもなります。
プリンタ制御(エスケープシーケンス)に関する 参考文献[4,5]はこちら。
2004-09-09
# sh irlpt-init.shとしてデバイスファイルを作成し、その後、
% cat hogehoge.txt | sh text2escp.sh > /dev/irlptとして、ファイルをESC/P形式に変換してプリンタに送信します。
たとえば、
% nkf -We /home/zaurus/Applications/Network/modules/LAN.conf | sh text2escp.sh > /dev/irlptとすれば、LAN設定ファイルを印刷することができます。
2004-09-14
このときに次のようにすると、画面キャプチャデータを印刷できます。
% bm2escp /mnt/card/Screen_Files/scrn001.bmp > /dev/irlpt0なお、画面キャプチャはカラー画像ですが、 印刷時には、 誤差拡散(Floyd-Steinberg法[6])で 白黒二値化します。 それ以外の動作はソースを読んでください(汗)。
もっと凝った処理をしたい方は、Netpbmパッケージなどをインストールして、 pbm形式のデータを生成して、それをbm2escpに食わせてください。 たとえば、
% cat /mnt/card/Screen_Files/scrn001.bmp \ bmptoppm | ppmtopgm | pgmtopbm | bm2escp > /dev/irlpt0…これは凝った処理ではないか(^^;
ちなみに、 手元の「pbmtoepson(PBMをエプソンプリンタ向けデータに変換するツール)」 (Netpbm-10.14のpbmtoepson) では、 PD-04の理解できるデータは生成できませんでした。 (…pbmtoepsonの吐く「ESC * 5 n1 n2」って、 ESC/P 24-J8x プリンタは理解できないのかも)
プリンタ制御(エスケープシーケンス)に関する 参考文献[4,5]はこちら。
2004-09-16
無手順であれば、「echo foo > /dev/ttyS1」 とでもすれば、プリンタは印字するハズです。 しかし、さすがにそんな単純なことはありませんでした。
sh /etc/rc.d/init.d/irda start echo foo > /dev/ircommとすればいいそうです。 わたし自身はIrCOMM対応なプリンタは持ってないので 詳細はわかりませんが。
…で、PD-04もこれでいけるのか試してみましたが、 反応ありませんでした。 (これは/etc/irda.confなどを調整する前の話なので、 ひょっとしたらこれでいけるのかもしれません。)
…で、結局、 プリンタのマニュアルを手にいれて、 セルフテストをしたり、設定を印刷させてみました。 どうやら、このあたりは問題ないようです。
番号 | SW1 OFF | SW1 ON |
1 | 拡張スイッチ | |
2 | A4→A6縮小 | エラー解除 |
3 | 手動給紙 | 16進ダンプモード |
4 | 用紙逆送り | 設定モード |
SW-1をオンにして、FEEDボタンを押しながら電源を入れると セルフテスト印字を行います。 このときに、紙押さえレバーがしめられていれば、漢字を印刷します。 紙押さえレバーがしめられていない状態で、 FEEDボタンを押しながら電源を入れ、 次に紙押さえレバーをしめると、英数カナを印刷します。
SW-1と4をオンにして電源を入れると、プリンタ設定モードになります。 このモードでは、以下の項目を設定できます。
設定項目 | 選択肢 |
DIPスイッチ | [有効]/無効 |
縮小印刷 | 有効/[無効] |
用紙逆送りSW | 有効/[無効] |
手動給紙 | 有効/[無効] |
マーカー機能 | 有効/[無効] |
用紙選択 | [普通紙]/複写紙 |
印字濃度 | -2/-1/[0]/+1/+2 |
インタフェース | [赤外線]/有線RS232C |
赤外線モード | [自動]/IrDA/ASK/ASK192 |
ボーレート | 2400/4800/[9600]/19200/38400 |
以下略 |
mknod /dev/irlpt0 c 161 16 chmod 666 /dev/ir* sh /etc/rc.d/init.d/irda startとしてから、「echo foo > /dev/irlpt0」としてみました。 ここで、Zaurusから送信される生データをダンプしてみると、 たしかにIrLMPのDeviceinfoのService Hintsが、 0x8424 (Ext|Computer|OBEX|Comm) から 0x8c24 (Ext|Printer|Computer|OBEX|Comm) になりました。
というわけで、デバイスファイルさえ用意すれば、 SL-ZaurusはIrLPTを喋るようです。