(57)【特許請求の範囲】
【請求項１】
複数の印字密度を選択して印刷し得るプリンタにおいて、未印刷分のデータをビットイメージ形式で蓄えておくためのイメージバッファと、
受信した印刷命令を解釈して、プリンタにおいて選択されている印字密度に応じた密度で、前記イメージバッファに対してビットイメージ展開を行う印刷命令変換部とを有し、
該印刷命令変換部は、プリンタにおいて選択されている印字密度以外の密度で移動量が表現された印字位置指定情報を受信した場合に、前記移動量を選択されている印字密度に変換して、前記イメージバッファ上に表現をし、
前記印字密度の変換に起因して、前記印字位置指定情報が表現する移動量と、前記イメージバッファに展開されたビットイメージデータ上に表される移動量との間に誤差が生じた場合に、該誤差が発生した時点で補正処理を行うことを特徴とするプリンタ。
【請求項２】
請求項１記載のプリンタにおいて、更に、受信した印刷命令を１行分の印字走査に係る情報毎に分割して保持するためのラインバッファを備え、前記印刷命令変換部は、前記ラインバッファに保持された１行分の印字走査に係る情報中に、プリンタにおいて選択されている印字密度で表現された印字情報と、選択された以外の密度で移動量が表現された印字位置指定情報とが混在している場合に、前記印字密度の変換を行うことを特徴とするプリンタ。
【請求項３】
請求項１又は２記載のプリンタにおいて、前記誤差を補正する手段は、ドットピッチの値を分母とし、ドット数を分子として表現された変換元の移動量に、プリンタにおいて選択されている印字密度のドットピッチの値を乗算する演算を行ない、演算結果が整数とならない場合に誤差の発生を認め、演算結果の分数において、分子を分母で除算して求められる整数値と余りの値に応じて、前記整数値を変換先の移動量を表すドット数として出力し、前記余りの値を誤差量として誤差が発生した時点で出力することを特徴とするプリンタ。
【請求項４】
請求項３記載のプリンタにおいて、更に、前記整数値を表すドット数の出力と前記余りの値に対応する誤差量の出力に従い、前記イメージバッファ上に前記整数値ドット数分の空白ビット群と、前記誤差量に応じた誤差補正情報を展開するビットイメージデータ生成手段と、前記誤差補正情報を読み取って、該補正情報に基づきプリントエンジンの駆動制御を行うエンジン制御手段とを有することを特徴とするプリンタ。
【請求項５】
請求項４記載のプリンタにおいて、前記イメージバッファに展開されるビットイメージデータ上には、印字情報が存在しない領域が設けられており、前記ビットイメージデータ生成手段は、前記誤差補正情報を、前記印字情報が存在しない領域に記憶することを特徴とするプリンタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタ、とりわけシリアルプリンタにおいて高い印字速度が要求される場合の印字制御技術に関する。
【０００２】
【従来の技術】
プリンタには、求められる印刷速度に応じて印字品質を複数段階に切り替えて使用することができるものがある。例えば、プリンタを標準画質モードに設定しているときには、２４０ｄｐｉで、高速モードに設定しているときには１２０ｄｐｉで、超高速モードに設定しているときは９０ｄｐｉでそれぞれ印字を行なう。
【０００３】
従来のシリアルプリンタにおいても、印刷のスループット向上のためイメージバッファを設けたものがある。イメージバッファは実際の印字ヘッドの各ピンと対応させる必要があるため、ヘッドのピン周期に応じた展開密度で構成されていなければならない。すなわち、標準画質モードのときには、２４０ｄｐｉで、高速モードに設定しているときには１２０ｄｐｉで、超高速モードに設定しているときは９０ｄｐｉでイメージを展開しておく。
【０００４】
ところで、プリンタに対して印字命令を送るホストの側では、プリンタの設定を意識せずにデータを送るため、イメージバッファに展開した状態の１行分のデータの中に、異なる印字密度のデータが混在する場合がある。プリンタがこのようなデータを受けたときには、以下のいずれかの方法により、この事態を回避している。
【０００５】
第１の方法は、印字密度が異なるデータが送られてきたと判断された時点で、それまでの展開されたイメージを印刷し、それ以降のイメージは新たに展開する。
【０００６】
第２の方法は、１行中に混在することとなる異なる密度の最小公倍数を求め、その密度で展開する。例えば、９０ｄｐｉと１２０ｄｐｉのデータの混在が認められたのであれば、イメージは３６０ｄｐｉで展開される。
【０００７】
このように、第１及び第２のいずれの方法にしても、印刷速度は遅くならざるを得なかった。
【０００８】
ところで、イメージバッファ上では、スペースや位置指定コマンドによる移動部分等の文字あるいはイメージが存在しない領域は、ヌルのイメージパターン（非印字データ）として展開されているが、上述した混在部分がこのような領域に存在する場合でも、第１及び第２のいずれかの方法によっていた。
【０００９】
【発明が解決しようとする課題】
印字密度の異なる部分に文字パターンあるいはグラフィックイメージパターンが存在する場合は、イメージバッファ上で異なる印字密度に展開することは不可能である。従って、上述の回避策を執ることはやむを得ない。しかし、印字位置のセットに関する情報が、現在、プリンタ側で設定されている印字密度とは異なる密度で指定されているに過ぎないというような場合は、必ずしもヘッドのピン周期に対応した一律の印字密度が求められるとはいいきれない。以下に例を示して説明する。
【００１０】
図４は、ホストから送られてきた印字データの例４０を表す。図では、ＡＮＫ文字セットを１６進値コードを用いて表現した場合の文字「Ａ」と文字「Ｂ」を（シリアルプリンタにおいて最も利用される標準的プリンタ制御コード体系であるＥＳＣ／Ｐによって表された）所定量のスペースを開けて印字する場合が示されている。文字「Ａ」と文字「Ｂ」の間隔は、「３６／１２０」インチが指定されている。この命令を受けたとき、もしプリンタ側の設定が、先の例で示した超高速モード（９０ｄｐｉ）であったとすると、
３６／１２０
＝２７／９０
であるので、イメージバッファ上に２７ドット分のスペースを設けてやることができたとするならば、ホストから指定されたと同様の位置制御を行なうことができる。
【００１１】
図５は、文字間隔のみが図４における例とは異なる印字データ例を表す。文字「Ａ」と文字「Ｂ」の間隔は、「３１／１２０」インチが指定されている。この場合、「３１／１２０」の分母を「９０」に変換しようとしたとき、
３１／１２０
＝９３／３６０
＝２３／９０で余り１
が生じてしまう。もし、上記データが例えばグラフィックデータだったとすれば、「１／３６０」すなわち「０．２５／９０」ドット分の印字を行なうことは不可能である。しかし、スペースの幅はヘッドを移動させるキャリッジモータの駆動量に関することであるので、必ずしもヘッドのピン周期に依存させて制御する必要はない。
【００１２】
上記観点に立脚すれば、プリンタが、自己の印字品質として設定されている解像度よりも高い解像度の位置指定データを含む印刷命令を受けた場合でも、低い解像度で高速に印字を行なうための方途が開けるが、従来のシリアルプリンタでは、このような着想はなかった。そこで本発明は、上記観点に立つことにより、ホストから送られてくる１行分のデータの中に、印字密度の異なるようなデータが含まれるような場合でも、高速に印字を続行させることができるプリンタを提供することを目的とする。
【００１３】
【課題を解決するための手段】
上記課題を解決するためのプリンタは、複数の印字密度をユーザが選択し得るプリンタにあって、以下のような構成を有する。
【００１４】
すなわち、請求項１記載のプリンタは、未印刷分のデータをビットイメージ形式で蓄えておくためのイメージバッファと、受信した印刷命令を解釈して、現在プリンタにおいて選択されている印字密度に応じた密度で、前記イメージバッファに対してビットイメージ展開を行なう印刷命令変換部とを有する。すなわち印字密度９０ｄｐｉにプリンタが設定されているときには、、基本的には９０ｄｐｉでビットイメージ展開を行なう。そして印刷命令変換部は、プリンタにおいて選択されている印字密度以外の密度で移動量が表現された印字位置指定情報を受信した場合に、例外的に、前記移動量を現在選択されている印字密度に変換して、前記イメージバッファ上に表現することを特徴とする。
【００１５】
更に、前記印字密度の変換に起因して、前記印字位置指定情報が表現する移動量と、前記イメージバッファに展開されたビットイメージデータ上に表される移動量との間に誤差が生じた場合に、該誤差が発生した時点で補正処理を行うことを特徴とする。
【００１６】
また、請求項２記載のプリンタは、上記構成に加えて、受信した印刷命令を１行分の印字走査に係る情報毎に分割して保持するためのラインバッファをも備えている。そして、前記印刷命令変換部は、前記ラインバッファに保持された１行分の印字走査に係る情報中に、プリンタにおいて選択されている印字密度で表現された印字情報と、選択された以外の密度で移動量が表現された印字位置指定情報とが混在している場合に、前記印字密度の変換を行うことを特徴とする。
【００１７】
誤差補正のための具体的手段は、以下のように構成すればよい。例えば、請求項３記載のプリンタでは、以下のような演算を行って誤差情報を作成する。すなわち、ドットピッチの値を分母とし、ドット数を分子として表現された変換元の移動量に、現在、プリンタにおいて選択されている印字密度のドットピッチの値を乗算する。その演算の結果が整数とならない場合には誤差が発生していることが認められる。その場合、演算結果の分数において、分子を分母で除算して求められる整数値部分を、変換先の移動量を表すドット数として出力すると共に、分子を分母で除算して求められる余りの値を誤差量として出力する。
【００１８】
請求項４記載のプリンタでは、この整数値を表すドット数の出力と余りの値に対応する誤差量の出力を受け、前記イメージバッファ上に前記整数値ドット分の空白ビット群と、前記誤差量に応じた誤差補正情報とを展開する。そして、エンジン制御手段では、ビットイメージ上の誤差補正情報を読み取って、その補正情報に基づきプリントエンジンの駆動制御、特に印字ヘッドに対する駆動制御を行う。
【００１９】
この場合、誤差補正情報は、印字データと誤認されて、実際の用紙上に印刷されてしまっては不都合である。これを避けるために、請求項５記載のプリンタにおいては、前記イメージバッファに展開されるビットイメージデータ上には、印字情報が存在し得ない領域が設けられており、前記誤差補正情報を、前記印字情報が存在し得ない領域に記憶する。
【００２０】
【発明の実施の形態】
以下、本発明の１実施形態について図面を参照して説明する。
【００２１】
本実施形態は、以下の説明から明らかなように、プリンタの主走査方向において印字密度の異なるデータを混在させたまま所定の印字速度で印刷を行うものである。尚、説明の便宜上、プリンタ１は、９ピンのヘッド構成からなるドットマトリクス方式のプリンタであり、印字密度は９０ｄｐｉに設定されており、既に従来技術の説明において述べたと同様、文字「Ａ」及び「Ｂ」を「３１／１２０インチ」の間隔をもって印字する場合の実施例を中心に説明を行なうものとする。
【００２２】
図１は、本実施形態のプリンタ１のハードウェア構成を表わすブロック図である。実施形態においてプリンタ１は、用紙をプリンタ装置内に供給する給紙フィーダ３、印字を行なうプリントエンジン２０、及び用紙をプリンタ機外に排出する排紙フィーダ４により動力機構部が構成されている。これらプリンタの機構部を制御するのは、ＣＰＵ５、ＲＯＭ６、及びＲＡＭ７とからなるコンピュータ構成のプリンタ制御部である。このプリンタ制御部は、ホスト２とインタフェース装置９を介して接続され、ホスト２から送られてくるプリンタ制御言語に従い、各機構部を制御して実際に印字動作を行なわせる。コントロールパネル８からは、ユーザが望む印字速度に応じた品質を選択して、印字密度の設定を行なうことができるようになっている。実施形態のプリンタ１においては、標準画質モードに設定しているときには、２４０ｄｐｉで、高速モードに設定しているときには１２０ｄｐｉで、超高速モードに設定しているときは９０ｄｐｉでそれぞれ印字を行なうようにしている。なお、印字密度の設定及び変更は、ホスト２側からプリンタドライバのユーティリティー機能によってこれを行ない、プリンタ１側で設定を記憶しておくようにしてもよい。
【００２３】
図２は、ＲＯＭ６に格納されるアプリケーションプログラムをＣＰＵ５が実行することにより実現されるプリンタ制御部の機能ブロック図である。実施形態におけるプリンタコントローラ１０が従来と異なる特徴的な点は、コマンド解釈部１３とビットイメージデータ生成部１４とで、ホスト２によって指定された印字密度で送られてくる印字命令を、プリンタにおいて設定されている印字密度に変換する機能を有することと、エンジン制御部１５が、変換された密度及び補正情報に従って、プリントエンジン２０内の印字ヘッド２１を駆動制御する機能を有することである。
【００２４】
コマンド解釈部１３のラインバッファデータ生成部１３１は、一旦受信バッファ１２に蓄えられたデータを、１行分の印字走査に係る情報毎に分割して、ＲＡＭ７上の所定のアドレスに割り当てられたデータ保持機能であるラインバッファ１３２に保持させる。補正データ演算部１３３では、ラインバッファ１３２に保持された１行分の印字走査に係る情報中に、現在プリンタにおいて選択されている印字密度で表現された印字情報と、選択されている以外の密度で移動量が表現された印字位置指定情報とが混在している場合に、後述する手順（図７参照）に従って、前記印字密度の変換及び誤差補正情報の生成を行なう。
【００２５】
ビットイメージデータ生成部１４では、変換後の密度で表現された印字ヘッド（及びヘッドを搭載するキャリッジ）の移動情報をビットイメージ上に空白ビットとして表すとともに、誤差補正情報を同ビットイメージ上の所定の位置に表す。
【００２６】
エンジン制御部１５では、補正データ認識部１５１において、イメージバッファに展開されたビットイメージデータから、前記の誤差補正情報を読み取り、駆動制御部１５２において、ヘッドに補正分の移動を行なわせるようキャリッジモータ２２を駆動する。
【００２７】
図３は、上記の誤差補正情報をも含んでビットイメージ展開された印字イメージのようす等を表す。図３（ａ）は、その上段において、印字密度変換時における対応関係を表している。図３（ａ）下段のビットイメージ展開された印字イメージは、９ピンのヘッドからなるドットマトリックスプリンタに対応して、９０ｄｐｉで展開されたイメージを表す。９ピンのヘッドに対応するために、垂直方向に２バイト分の領域が確保されている。ＡＮＫ文字は垂直７×水平５ドットで表現されているが、アンダーラインや二重指定等の文字属性に応じて、垂直９ドット目まではイメージとして使用される可能性がある。しかし、７ドット行は、常に用いられることのない領域として確保されている。すなわち、印字情報が存在し得ない領域である。図３（ｂ）は、図３（ａ）中の一点鎖線で囲まれた部分４２の拡大図である。
【００２８】
図６は、印刷命令（図５に示す命令５０に文字属性情報を加えたもの）を本実施形態のプリンタ１が受信した場合の、ラインバッファ１３２に保持されるデータの内容を表す。
【００２９】
以下、印刷命令を受信してから、実際に印字が完了するまでの流れを、図７及び図８に表すフローチャートをも参照して説明する。
【００３０】
ホスト２から送られたデータは、インタフェース部１１を介して受信バッファ１２に蓄積される。ラインバッファデータ生成部１３１では、蓄積された印刷命令から１行分の印字走査に係る情報毎に分割して、ラインバッファ１３２に整列させていく。
【００３１】
図６において、ラインバッファ上に整列されたデータのうち、最初の３つのデータ６１乃至６３は、文字「Ａ」及びその文字属性、すなわち拡大指定、縮小指定、二重指定、縦倍角指定等を表している。従って、この区間はプリンタ側の設定である９０ｄｐｉでイメージバッファに対する展開を行なうことに問題はない。データ６４は、文字「Ａ」からのスペース移動量を表し、データ６５はスペース認識ビットを表す。このとき、ホスト２からはプリンタにおける印字密度の設定（９０ｄｐｉ）に関係なくデータが送られてきているため、印字密度１２０ｄｐｉを前提として移動量が設定されている。データ６６は、文字「Ｂ」を表し、以降データが続いて改行となる。
【００３２】
補正データ演算部１３３は、データ６４において、１２０ｄｐｉで表された移動量を、９０ｄｐｉに変換して表すための演算を行なうとともに、それに起因して発生する誤差をも求める。その手順を示したフローチャートが図７である。
【００３３】
まず、ラインバッファ１３２に置かれた移動量６４「３１／１２０インチ」を取り出す（Ｓ１０１）。それに、現在プリンタ１において設定されている印字密度の値「９０」を乗算する（Ｓ１０２）。
【００３４】
（３１／１２０）×９０
＝９３／４
＝２３余り１
となるため（Ｓ１０３においてＹＥＳ）、誤差の発生が認められる。
【００３５】
図３（ａ）上段及び、その部分拡大図である図３（ｂ）は、この関係を表している。１２０ｄｐｉにおける３１ドット分の長さは、９０ｄｐｉにおける２３ドット分の長さより、若干長い。すなわち、図３（ｂ）における誤差４３の分だけ、余分にヘッドを移動させることが必要となってくる。その誤差を補正するための情報が補正データ演算部１３３からビットイメージデータ生成部１４に伝えられ、これに従って、誤差補正情報ビット４４がビットイメージ展開されたイメージ４１上の最下段に書き込まれる（Ｓ１０４）。既に述べたように、この最下段は、通常のイメージデータが展開されることのない領域である。
【００３６】
なお、ここでの余り「１」に応ずる誤差補正情報１ビット分は、「０．２５／９０インチ」すなわち「１／３６０インチ」に相当する。もし仮に、図５に示す移動量が「ＥＳＣ￥３２／１２０」であったとするならば、
（３２／１２０）×９０＝２４余りなし
となり（Ｓ１０３でＮＯ）、誤差の補正は必要ない。同様に、移動量が「ＥＳＣ￥３３／１２０」であったとするならば、
（３３／１２０）×９０＝２４余り３
となる。この場合誤差補正情報３ビットを加える。このときの追加移動量は「１／１２０インチ」に相当する。
【００３７】
同様に、移動量が「ＥＳＣ￥３４／１２０」であったとするならば、
（３４／１２０）×９０＝２５余り２
となる。この場合誤差補正情報２ビットを加える。このときの追加移動量は「１／１８０インチ」に相当する。
【００３８】
以上のように、本実施形態における「余り」は、０から３までのいずれかの値を採る。「余り」の値に応じて付加される誤差補正情報ビットが、１つ追加される毎に「１／３６０インチ」の追加移動量が後述する手順で加えられる（図８参照）。
【００３９】
次に、補正データ演算部１３３で求めた整数値「２３」ドット分の空白領域がビットイメージイメージ４１上に展開される（Ｓ１０５）。因みに展開される空白領域は「ＥＳＣ￥３２／１２０」及び「ＥＳＣ￥３３／１２０」の場合、いずれも「２４」ドット、「ＥＳＣ￥３４／１２０」の場合「２５」ドットである。
【００４０】
エンジン制御部１５では、ビットイメージデータ４１に基づき、実際の印字を行なわせる。このときの制御手順を表すのが図８に示すフローチャートである。補正データ認識部１５１では、ビットイメージデータを読み取って、誤差補正情報が存在するか否か、即ち、余りの印があるか否かを判断する（Ｓ２０１及びＳ２０２）。駆動制御部１５２は、印字ヘッドの駆動をヘッドへの通電周期（Ｐｉ）により制御している。そこで、通電周期（Ｐｉ）をＰｉ0とｆ（ｘ）の和によって求める（Ｓ２０３）。ここに、Ｐｉ0は、余りが無い場合の通電周期を表す。また、ｆ（ｘ）は、余りがある場合に、余りの数に応じて変化する分である。尚、通常の定速印字中は、Ｐｉ0は固定値であり、ｆ（ｘ）の分だけ変化する。これに対して、加減速印字中は、通電周期を変化させる、即ち、Ｐｉ0が変化するので、このＰｉ0の変化を考慮した演算を行って補正量を求める必要がある。
【００４１】
尚、以上から、誤差の補正が行なわれない場合（本実施形態においては「ＥＳＣ￥３２／１２０」の実施例の場合）には、通電周期（Ｐｉ）は、そのままＰｉ0の値が出力される（Ｓ２０４）。
【００４２】
上記演算により求められた通電周期（Ｐｉ）の値がタイマーにセットされ（Ｓ２０５）、セットされた時間だけ印字ヘッド２１を駆動させることができる。
【００４３】
【発明の効果】
以上の説明から明らかなように、本発明のプリンタでは、プリンタ側において設定されている印字密度と異なる印字密度のデータがホストから送られてきた場合であって、もし、そのデータが印字位置のセットに関するデータであったときには、ビットイメージ展開をし直すこともなく、また印字密度をそろえるために両密度の最小公倍数となる高い印字密度にすることもなく、高速のまま、印字を続行させることができる。これにより、文字情報と位置情報のみからなるテキストデータなどにおいては、非常に高速に印刷を行なうことができるようになった。
【図面の簡単な説明】
【図１】本発明の実施形態におけるプリンタのハードウエア構成を表す図である。
【図２】プリンタ制御部の機能ブロック図である。
【図３】イメージバッファ上に展開されたビットイメージデータを表す図であって、（ａ）は、データの配置と、異なる印字密度における対応関係を表す図、（ｂ）は、（ａ）において一点鎖線で囲まれた部分４２の拡大図である。
【図４】文字「Ａ」と文字「Ｂ」を所定量のスペースを開けて印字する場合の印字命令を表す図である。
【図５】図４におけるとは異なる量のスペースを開けて印字する場合の印字命令を表す図である。
【図６】ラインバッファに整列された印刷命令の内容を表す図である。
【図７】補正データ演算部における処理手順を表す図である。
【図８】エンジン制御部部における処理手順を表す図である。
【符号の説明】
１  プリンタ
２  ホスト
５  ＣＰＵ
６  ＲＯＭ
７  ＲＡＭ
８  コントロールパネル
１０  プリンタコントローラ
１３  コマンド解釈部
１３１  ラインバッファデータ生成部
１３２  ラインバッファ
１３３  補正データ演算部
１４  ビットイメージデータ生成部
１５  エンジン制御部
１５１  補正データ認識部
１５２  駆動制御部
２０  プリントエンジン
２１  印字ヘッド
２２  キャリッジモータ
４０，５０，６０  印刷命令
４１  ビットイメージ
４３  誤差
４４  誤差補正情報ビット
６１〜６６  印字データ
【図１】
0003757621.tif 000002
【図２】
0003757621.tif 000003
【図３】
0003757621.tif 000004
【図４】
0003757621.tif 000005
【図５】
0003757621.tif 000006
【図６】
0003757621.tif 000007
【図７】
0003757621.tif 000008
【図８】
0003757621.tif 000009