印刷装置を考える(2
制御コード編

 同じプリンタを制御するにも、メーカによってそれぞれ
実装されている処理系が異なり、また後発の製品に実装さ
れている物は、以前の物に+αされているケースが多く、
その機能を制御出来るように新しいドライバソフトを必要とする。
また制御処理系に機能追加が無くても、ドライバのプログラムが
改善されているケースもある。

 とりあえずこの文書ではドットマトリックスプリンタ
に的を絞る。(ってほとんどやん、それ。

制御コードはメーカ別で大きく違い、またテクノロジー別
(インパクト、インクジェット、レーザー)でまた
それぞれ最適化されている。


基本的に全てにおいて共通な制御

 改行コード。CR(Carriage Return:0x0D)と
 LF(Line Feed:0x0A)。これらはどのプリンタでも
 同じ動きをする基本コード。キャラクタコード
 としての名称もまんまですね。プリンタの左右に移動する
 ヘッド部分の機構を「キャリッジ」と言います。
 CRはそのキャリッジを左端(ホームポジション)
 に戻すコードです。文字通り戻す(return)んです。
 LFは現在位置より一行改行します。基本的にこのコード
 だけではCR動作は行われません。UNIX系で作成
 された文書には通常CRが含まれていない為、直接
 プリンタに送信すると以下のようになります。

   sample
         sample
               sample

 これをうまく処理する為に、プリンタ側でLFコード
 の挙動を設定出来ます。CR動作を付け足すのです。
 また、インパクトプリンタの中にはCRを受信する迄
 その一行を印刷開始しない物があります。

 改ページコード。FF(Form Feed:0x0C)を受信すると
 プリンタは1ページを強制排出する。インクジェット
 プリンタではコレを受信しないとそのページを印刷
 しない物があります。レーザーでは特に必要です。
 ちなみに画面消去のコードと同じですね。

 TABコード。TAB(0x08)コードは機能的には
 水平タブとして有効ですが、あらかじめタブ位置
 設定が必要になります。設定されていないと無効
 となり、無視されます。

 垂直タブ。VT(Virtical TAB:0x06)を受信すると
 プリンタは垂直方向にタブを取ります。デフォルト
 では6行分改行されます。VFC(Virtical Function
 Control)と呼ばれる設定ワークに設定情報を流し
 込めば帳票フォームなどの位置調整が比較的楽に
 出来ます。

 ベル。BELL(0x07)を受信すると、プリンタでスピーカ
 (ブザー)内蔵の物はけなげにも「ぴっ」って鳴ります。


我等がSHARP。

 インパクトプリンタにはCZ系プリンタ独特の
 制御コードが実装されています。そのほとんどは
 エスケープシーケンスとして実装されています。

 後のは見た事無い(^^;)


Canon。

 Canonのインパクトは見た事無いのでパス。

 インクジェット。言わずと知れたバブルジェット
 シリーズですね。コレにはBJシリーズのファインモード
 をよりよく機能させる為にBJ系コードとして
 拡張された物が実装されています。これもやはり、
 エスケープシーケンスと言う形での実装。で、
 PC−PRユーザーがBJシリーズへの移行が
 スムーズになるようにPC−PRモードも実装
 されています。

 レーザー。Canonのレーザーは一時期最強でしたね。
 CanonのLBPシリーズ、Laser Shotという
 製品ブランドはイケています。実装されている処理系は
 LIPS。現在ではLIPS3まで拡張されています。
 嬉しいのは、ほとんどの機種でPC−PRエミュレータ
 が標準実装なんですね。オプションでHP-GL(プロッタ
 エミュレータ)が実装出来るのも良いです。


Epson

 インパクトプリンタ。ESC/P。かなりいろんなバー 
 ジョンが有る為、プリンタのマニュアルに対応表が
 書かれている。これもPC−PR互換モードな
 ESC/Pスーパーという機能が実装されている事が
 多い。ただ、今現在ではESC/Pの方がインパクト
 プリンタはワールドワイドで標準的になってしまって
 いる為、互換機能が未実装である物がある。

 インクジェット。ESC/P。上記インパクトと同様。
 操作板が電源スイッチと排紙ボタンくらいしか付いて
 いないモデルはソフト的に設定シーケンスを流す事で
 細かな設定を行う。これは初心者にとって扱い易くなる
 だけでなく、DIPスイッチによる設定変更の限界の
 打開、レーザーのようにメニュー設定用LCD実装に
 よる価格上昇を避けられるという大きなメリット
 が有る反面、メーカーサポートの無い機種での制御が
 困難。ただ、ちゃんとお金を出せばリファレンスは
 有るようだ。

 レーザー。ESC/Page。Epsonがレーザー
 (ページプリンタ)様に拡張した制御コード。なのだが
 エスケープシーケンスではなくてGSシーケンス、
 GSコードに続く3文字でオペレーションを示し、
 それにパラメータが付随するという方式になっている。
 これはこれで実に高機能なのだが、ESC/Pと
 比較すると実に面倒くさい。ESC/Pで実行出来る
 機能と同等の事を実現しようとすると、沢山の
 ステップを踏まなきゃ出来ん。その変わりESC/P
 では単純に表現しにくいスプライン等が実装されて
 いたりもする。上述のインクジェットと同様に
 オンライン設定制御が出来るようだ。

 オンライン設定。EJL(Epson Job Language)。
 エスケープシーケンスの一種で構成される。特徴として
 全てのEJLは@EJLというストリングから始まり
 用紙サイズだとか、印刷向きだとか、動作モードを
 プリンタ固有のシーケンスではなくてEJL対応
 プリンタならなりの動作をすると言う高い互換性が
 保たれる。この機能が実装されていれば極論すると
 設定操作を行う為のLCDとボタンは不要である。


沖電気

 Microlineシリーズのインパクトとレーザー。
 未調査につき不明(ぉ


Apple

 Appleプリンタと言えば PostScriptですね。
 コレはいわゆる画像をプログラムのように標記し、
 プリンタ側に実装されているRIP(リップ
 Raster Image Processor)と称される変換エンジンで
 ドットイメージに変換される。その品質は実に高いが
 処理が重くまたプリンタ側で実装すべきメモリ量が
 馬鹿にならない。実際、HDDを実装している物も有る。
 また、PSは3種類のレベルが存在し、現在
 最も多いのはLevel 2。そのうちLevel3に全て変わるだろう。


Hewlett Packard

 インパクトはESC/P。以上。

 インクジェットはESC/P。時々PCL対応物を見る。

 レーザー。PCL(Page Control Language)。
 HPがレーザー様に開発した制御コード。LIPS
 同様にいくつか種類が在り、最新はPCL5・・・と思ったら。
 既に PCL5e/PCL6なんて出てるし(笑

 オンライン設定。PJL(Printer Job Language)。
 上述のEJLと同様に@PJLで始まる。恐らくは
 EとPが(文字が)違うだけでほぼ同等品ではないかと
 推測される。PJLはHP社が開発しプリンタ印刷
 コントロール制御の標準規格として提唱している。
 PJLとEJL、どちらが先かは未調査の為不明。

さて。これだけいろいろ書いたものの、Windows
で使用するぶんにはそれぞれの特色はPostScriptを
除いて発揮されてない気もする。何故なら、文字コード
印刷(プリンタが実装している書体で印刷)をして
いないから。レーザーはその限りではないと思うが
インクジェットやインパクトプリンタへ印刷すると
すぐにわかる。プリンタ側で持っている倍角文字や
縮小文字など全然使われない。TrueTypeフォントで
印刷される。これすなわち、ドライバ側でラスタライズ
(ビットマップ化)され画像イメージとして印刷されて
いるに他ならない。そういう目で見るとESC/P
もPC−PRも3個ぐらいのイメージ出力の
エスケープシーケンスを実装させてラスタライザ
さえ作っちゃえば出来あがったも同然である(きっと)
おもしろいのはインクジェットになっても
イメージ出力は24pin/48pinモード
だったりする。物によっては100ノズル以上有る
インクジェットのプリントヘッドでも。

Windowsだけ使ってると気にならないし、
わからない世界になりがちですが、貴方のプリンタは
実装されている機能の半分も使わずに毎日を
過ごしているかも知れません。


Go back.

If you have any question, please contact to me.
e-Mail to SHIMSOFT.