印刷装置を考える(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.