(57)【特許請求の範囲】
【請求項１】
複数の発熱体からなる印刷ヘッドに電流を供給して印刷を行う印刷装置であって、
印刷すべき印刷データを記憶する印刷データ記憶手段と、
前記印刷データ記憶手段によって記憶された前記印刷データを複数の分割データに分割するときの分割数を、少なくとも前記印刷ヘッドに掛かる電圧、前記印刷ヘッドの抵抗値、印刷すべき前記印刷データのオンドット数、並びに、前記印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算手段と、
前記印刷データのオンドット数に基づいて、前記印刷データ記憶手段によって記憶された前記印刷データを、前記演算手段によって演算された前記分割数分の複数の前記分割データに分割するとともに、前記分割データの各々のオンドット数がほぼ等しくなるように、前記印刷データを分割する分割手段と、
前記分割手段によって分割された各分割データを記憶する分割データ記憶手段と、
前記分割データ記憶手段によって記憶された各分割データを順に前記印刷ヘッドに転送する転送手段と、
前記転送手段によって転送された前記分割データのオンドット数に基づいて、前記発熱体に供給する電流を制御する制御手段と
を備えることを特徴とする印刷装置。
【請求項２】
前記分割データ記憶手段は、複数個設けられるとともに、前記分割データを交互に記憶することを特徴とする請求項１に記載の印字装置。
【請求項３】
複数の発熱体からなる印刷ヘッドに電流を供給して印刷を行う印刷方法であって、
印刷すべき印刷データを記憶する印刷データ記憶ステップと、
前記印刷データ記憶ステップにおいて記憶された前記印刷データを複数の分割データに分割するときの分割数を、少なくとも前記印刷ヘッドに掛かる電圧、前記印刷ヘッドの抵抗値、印刷すべき前記印刷データのオンドット数、並びに、前記印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算ステップと、
前記印刷データのオンドット数に基づいて、前記印刷データ記憶ステップにおいて記憶された前記印刷データを、前記演算ステップにおいて演算された前記分割数分の複数の前記分割データに分割するとともに、前記分割データの各々のオンドット数がほぼ等しくなるように、前記印刷データを分割する分割ステップと、
前記分割ステップにおいて分割された各分割データを記憶する分割データ記憶ステップと、
前記分割データ記憶ステップにおいて記憶された各分割データを順に前記印刷ヘッドに転送する転送ステップと、
前記転送ステップにおいて転送された前記分割データのオンドット数に基づいて、前記発熱体に供給する電流を制御する制御ステップとを備えることを特徴とする印刷方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、印刷装置および印刷方法に関し、特に、印刷ヘッドを構成する複数の発熱体をオンドット数に応じていくつかのグループに分割し、グループ毎に電流を流すことにより、印字品質を上げるようにした印刷装置および印刷方法に関する。
【０００２】
【従来の技術】
従来、印刷装置としてのサーマルプリンタにおいては、印刷を行うサーマルヘッドは複数の発熱体から構成され、各発熱体に電流を流すことにより、発熱体に接した感熱紙に複数のドットからなる文字や図形等の印刷イメージを印刷することができるようになされている。従って、印刷イメージに応じて、黒のドットに対応する発熱体には電流を流し、黒でないドットに対応する発熱体には電流を流さないようにすることにより、複数のドットからなる上記印刷イメージを印刷することができる。
【０００３】
また、バッテリ駆動する小型の携帯プリンタの場合、サーマルヘッドに流すことができる電流の大きさには限界があるため、電流を流すべき発熱体に対応するドット、即ち、オンドットの数（オンドット数）を求め、それを複数のグループに分割し、各グループ毎に順番に、各グループに属するドットに対応する発熱体に電流を流すようにしている。これにより、分割印字が可能となっている。
【０００４】
分割印字するときに必要となるオンドット数に応じた分割数は、所定のメモリ上のテーブルに予め記憶しておき、オンドット数に応じてテーブルから分割数を参照し、分割処理を行っていた。
【０００５】
【発明が解決しようとする課題】
しかしながら、従来の方法では、分割数を導き出す処理に必要な処理時間は短くて済むが、オンドット数に応じた細かな分割処理を行うような制御ができない課題があった。また、細かな制御を行うために、メモリ上のテーブル構成を細かくしてオンドット数に応じた分割数を示す細かなデータを設定すると、メモリ容量が多く必要となり、コスト高となる課題があった。
【０００６】
本発明はこのような状況に鑑みてなされたものであり、バッテリの電圧、サーマルヘッド抵抗、オンドット数等の値から、サーマルヘッドの１ライン分を印刷するときに、オンドットを分割する分割数を計算によって算出し、分割したオンドットに対応するサーマルヘッドの発熱体に流す電流を細かく制御することができるようにするものである。
【０００７】
【課題を解決するための手段】
請求項１に記載の印刷装置は、複数の発熱体からなる印刷ヘッドに電流を供給して印刷を行う印刷装置であって、印刷すべき印刷データを記憶する印刷データ記憶手段と、印刷データ記憶手段によって記憶された印刷データを複数の分割データに分割するときの分割数を、少なくとも印刷ヘッドに掛かる電圧、印刷ヘッドの抵抗値、印刷すべき印刷データのオンドット数、並びに、印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算手段と、印刷データのオンドット数に基づいて、印刷データ記憶手段によって記憶された印刷データを、演算手段によって演算された分割数分の複数の分割データに分割するとともに、分割データの各々のオンドット数がほぼ等しくなるように、印刷データを分割する分割手段と、分割手段によって分割された各分割データを記憶する分割データ記憶手段と、分割データ記憶手段によって記憶された各分割データを順に印刷ヘッドに転送する転送手段と、転送手段によって転送された分割データのオンドット数に基づいて、発熱体に供給する電流を制御する制御手段とを備えることを特徴とする。
また、分割データ記憶手段は、複数個設けられるとともに、分割データを交互に記憶するようにできる。
請求項３に記載の印刷方法は、複数の発熱体からなる印刷ヘッドに電流を供給して印刷を行う印刷方法であって、印刷すべき印刷データを記憶する印刷データ記憶ステップと、印刷データ記憶ステップにおいて記憶された印刷データを複数の分割データに分割するときの分割数を、少なくとも印刷ヘッドに掛かる電圧、印刷ヘッドの抵抗値、印刷すべき印刷データのオンドット数、並びに、印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算ステップと、印刷データのオンドット数に基づいて、印刷データ記憶ステップにおいて記憶された印刷データを、演算ステップにおいて演算された分割数分の複数の分割データに分割するとともに、分割データの各々のオンドット数がほぼ等しくなるように、印刷データを分割する分割ステップと、分割ステップにおいて分割された各分割データを記憶する分割データ記憶ステップと、分割データ記憶ステップにおいて記憶された各分割データを順に印刷ヘッドに転送する転送ステップと、転送ステップにおいて転送された分割データのオンドット数に基づいて、発熱体に供給する電流を制御する制御ステップとを備えることを特徴とする。
【０００８】
【発明の実施の形態】
図１は、本発明が適用される携帯型のラベルプリンタの一実施の形態の構成例を示している。同図に示すように、ラベルプリンタは、各部を制御する制御部１０と、ラベル１に印刷を行う印刷ヘッド５と、制御部１０の制御により駆動されるステッピングモータ（以下では、適宜単にモータと記載する）７と、ベルト８を介して伝達されるモータ７の回転力によって回転し、後述する供給軸４にセットされたラベル連続体３を構成する台紙２及び台紙２に剥離可能に貼付されたラベル１を搬送するとともに、ラベル１を印刷ヘッド５に押圧するプラテンローラ６と、ラベル連続体３を回転自在に支持する供給軸４と、所定の光を出射する発光部と、発光部から出射された光を受光し、受光した光の強度（単位時間当たりの受光量）に対応する電気信号を出力する受光部とからなり、台紙２及びラベル１を挟むように発光部と受光部を配し、ラベル１とギャップ（隣接する２つのラベル１の間の台紙２のみの部分）を受光部の受光量に基づいて検出する位置検出センサ（以下では、適宜単にセンサという）９とを備えている。
【０００９】
図２は、図１の実施の形態の電気的な構成例を示すブロック図である。同図に示すように、制御部１０は、所定の制御プログラムを記憶するＲＯＭ（ｒｅａｄｏｎｌｙ  ｍｅｍｏｒｙ）１２と、ＲＯＭ１２に記憶されている制御プログラムに従って動作し、各部を制御するＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）１１と、ＣＰＵ１１が動作する上で必要となる各種データを記憶するＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１３と、ステッピングモータ７にパルス信号を供給し、ステッピングモータ７を回転させるモータ制御部１４と、ＣＰＵ１１から供給される印刷すべき文字、図形、及びバーコードなどの印刷データに対応する制御信号を生成し、印刷ヘッド５に供給し、印刷動作を行わせる印刷制御部１５と、ＣＰＵ１１の制御下、センサ９の発光部を制御し、光を出射させるとともに、受光部から出力される電気信号を受け取り、ディジタルのデータに変換してＣＰＵ１１に供給するセンサ制御部１６と、外部インタフェース１７と、インタフェース２０とを備えている。そして、各種データを入力するための入力部１８と、入力部１８からの入力データや、各種情報を表示するためのモニタ１９とがインタフェース２０を介して接続されている。入力部１８より入力された入力データは、インタフェース２０を介してＣＰＵ１１に供給され、モニタ１９に表示される各種情報に対応する表示データは、インタフェース２０を介してＣＰＵ１１より供給されるようになされている。また、外部インタフェース１７を介して、外部に接続された機器との間で各種データの送受信を行うことができるようになされている。
【００１０】
印刷ヘッド５は、図３に示すように、複数の発熱体５１から構成されており、各発熱体５１は、印刷された印刷イメージを構成する各ドットにそれぞれ対応している。そして、発熱体５１に電流が供給されると、その発熱体５１により黒のドットが印刷される。電流が供給された発熱体５１に対応するドットをオンドットと定義し、その数をオンドット数と定義する。
【００１１】
印刷制御部１５は、図７、図８を参照して後述するように、印刷すべき印刷データを記憶する描画バッファ１３１と、描画バッファ１３１に記憶された印刷データが後述する方法で分割されたものを記憶する分割バッファ１３２，１３３とから構成されている。分割バッファ１３２は、図９（Ａ）に示すように、例えば、最大で１０８バイトの印刷データを記憶する複数のバッファ（この例では、１分割目のバッファ乃至１５分割目のバッファ）から構成されており、分割バッファ１３３も同様に、図９（Ｂ）に示すように、例えば、最大で１０８バイトの印刷データを記憶する複数のバッファ（この例では、１分割目のバッファ乃至１５分割目のバッファ）から構成されている。
【００１２】
バッテリ駆動の携帯型のラベルプリンタのように、バッテリの能力の限界が比較的低いような場合、図３に示した印刷ヘッド５を構成する発熱体５１のうち、オンドットに対応する全ての発熱体５１に同時に電流を供給することができない場合がある。そこで、オンドットを複数のグループに分割し、グループ毎に順番に、グループに属するオンドットに対応する発熱体５１にだけ電流を供給するようにする。例えば、グループＡ，Ｂ，Ｃに分割すると、最初、グループＡに属するオンドットに対応する発熱体５１にだけ電流を供給し、次に、グループＢに属するオンドットに対応する発熱体５１にだけ電流を供給し、次に、グループＣに属するオンドットに対応する発熱体５１にだけ電流を供給し、オンドットに対応する印刷イメージを印刷する。
【００１３】
次に、図４のフローチャートを参照して、図３に示した印刷ヘッド５を構成する発熱体５１のうち、印刷イメージに応じて電流が供給される発熱体５１に対応するドット、即ちオンドットを分割する方法について説明する。この分割処理は、図２に示したＣＰＵ１１によって行われる。
【００１４】
まず最初に、ステップＳ１において、印刷ヘッド５に掛かっている電圧（ヘッド電圧（バッテリ電圧））を、図示せぬＡ／Ｄコンバータ（アナログ−デジタル変換器）を介して読み込む。次に、ステップＳ２において、ＲＯＭ１２等に記憶されている、例えば２ビットで構成され、４通りのステータスの指定が可能なヘッドステータスを読み込む。この例の場合、ヘッドステータスは例えば印刷ヘッド５のヘッド抵抗値等を表している。
【００１５】
次に、ステップＳ３に進み、ステップＳ２で読み込んだヘッドステータスに基づいて、ヘッド抵抗値を設定する。次に、ステップＳ４において、１ドット当たりの電流値を算出する。１ドット当たりの電流値は、次式（１）により算出することができる。
【００１６】
１ドット当たりの電流値＝ヘッド電圧／ヘッド抵抗値・・・（式１）
【００１７】
例えば、ヘッド電圧を１４．８ボルト（Ｖ）、ヘッド抵抗値を４５０オーム（Ω）とすると、
0004576021.tif 000002
となる。
【００１８】
ステップＳ５においては、オンドット数が読み込まれる。オンドット数は、図３に示したように、電流が供給される発熱体５１に対応するドットの数である。
これは、後述するように、描画バッファ１３１（図７、図８）に展開された印刷データから算出することができる。いま、印刷ヘッド５の幅（ヘッド幅）を１０８ミリメートル（ｍｍ）、オンドット数を１３０ドット、バッテリ上限電流値を２５００ｍＡとする。
【００１９】
次に、ステップＳ６において、次式（２）より、総電流値が算出される。
【００２０】
総電流値＝オンドット数×１ドット当たりの電流値・・・（式２）
【００２１】
いまの場合、オンドット数は１３０ドット、１ドット当たりの電流値は３２．８ｍＡであるので、
0004576021.tif 000003
となる。
【００２２】
次に、次式（３）より、分割数と余りを算出する。
【００２３】
分割数＝総電流値／バッテリ上限電流値・・・（式３）
ただし、余りがあるときは、分割数＝分割数＋１とする。
【００２４】
即ち、ステップＳ７において、いまの場合、総電流値は４２６４ｍＡ、バッテリ上限電流値は２５００ｍＡであるので、式（３）より、
0004576021.tif 000004
となる。
【００２５】
次に、ステップＳ８において、余りがあるか否かが判定される。余りが０である、即ち、余りがないと判定された場合、ステップＳ１０に進む。一方、余りがあると判定された場合、ステップ９において、ステップＳ７で算出した分割数に１だけ加算する。いまの場合、余り（１７６４）があるので、
0004576021.tif 000005
となる。
【００２６】
次に、ステップＳ１０に進み、次式（４）より、１回のオンドット数が算出される。
【００２７】
１回のオンドット数＝オンドット数／分割数・・・（式４）
【００２８】
いまの場合、オンドット数が１３０ドット、分割数が２であるので、
0004576021.tif 000006
となる。
【００２９】
次に、図５のフローチャートを参照して、ストローブ時間、即ち、印刷ヘッド５を構成する発熱体５１に電流を流す時間を算出する方法について説明する。最初に、ステップＳ２１において、印刷ヘッド５に掛かっている電圧（ヘッド電圧（バッテリ電圧））を、図示せぬＡ／Ｄコンバータ（アナログ−デジタル変換器）を介して読み込む。次に、ステップＳ２２において、ＲＯＭ１２等に記憶されている、例えば２ビットで構成され、４通りのステータスの指定が可能なヘッドステータスを読み込む。この例の場合、ヘッドステータスは例えば印刷ヘッド５のヘッド抵抗値等を表している。
【００３０】
次に、ステップＳ２３に進み、ステップＳ２２で読み込んだヘッドステータスに基づいて、ヘッド抵抗値を設定する。
【００３１】
次に、ステップＳ２４において、次式（５）によりヘッド印加電力が算出される。
【００３２】
ヘッド印加電力＝（ヘッド電圧−ＶL）2／（ヘッド抵抗値＋ＰL）・・・（式５）
ここで、ＶLは、ヘッドの電圧降下（発熱体に電圧が掛かるまでの消失分）を表し、ＰLは、パワーのロス分を表している。ＶLの値、及びＰLの値は、ヘッドメーカやヘッドの種類により異なる。
【００３３】
ここでは説明を簡略化するため、ＶL＝０、ＰL＝０とする。いまの場合、ヘッド電圧は１４．８Ｖ、ヘッド抵抗値は４５０Ωであるので、
0004576021.tif 000007
となる。
【００３４】
ステップＳ２５においては、ＲＯＭ１２等に予め用紙の種類別に記憶されている、必要な印加エネルギーが読み込まれる。この印加エネルギーは、印刷を行う用紙の種類によって異なり、用紙の種類毎に所定の値が定まっている。プリンタの使用者は、使用前に入力部１８から印刷を行う用紙の種類を指定する。指定された用紙の種類は、ＲＡＭ１３に記憶される。そして、指定された用紙の種類に対応する印加エネルギーが、ＲＯＭ１２から読み込まれる。
【００３５】
次に、ステップＳ２６において、次式（６）により、ストローブ時間が算出される。
【００３６】
ストローブ時間＝必要な印加エネルギー／印加電力・・・（式６）
【００３７】
いまの場合、必要な印加エネルギーが０．３ミリジュール（ｍＪ）、印加電力が０．５ｍＷであるので、
0004576021.tif 000008
となる。その後、処理を終了する。
【００３８】
このようにして、オンドット数に応じた分割数及びストローブ時間が算出されると、図７、図８に示した描画バッファ１３１にセットされた印刷データのオンドットに対応する印刷データが分割数分のグループの印刷データ（分割データ）に分割される。分割された分割データは、後述するバッファ切り替えフラグ（ｃｈｇ＿ｆｌｇ）の値に応じて、図７、図８に示した分割バッファ１３２，１３３のいずれかにセットされる。この分割バッファ１３２，１３３は、それぞれ、図１０に示すように、ヘッド幅分のバイト数のデータを記憶可能なバッファを最大分割数分ｎだけ有している。
【００３９】
ここでは、図９に示すように、１０８バイトのヘッド幅分のデータを記憶可能な１分割目のバッファ乃至１５番目のバッファより構成されるものとする。以下では、１分割目のバッファをバッファ＃１と記載し、２分割目のバッファをバッファ＃２と記載し、以下同様にして、１５番目のバッファをバッファ＃１５と記載することにする。また、以下では、バッファ＃１乃至バッファ＃１５を特に区別する必要がない場合、適宜単にバッファと記載することにする。
【００４０】
次に、図６のフローチャートを参照して、最大分割数分のバッファを２つ用意しておき、分割数算出後、描画バッファにセットされた１ライン分の印刷データが分割バッファ１３２，１３３の各バッファに転送される手順について説明する。最初、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が０にセットされており、分割バッファ１３２に印刷データが転送されるものとする。
【００４１】
まず、ステップＳ３１において、描画バッファ１３１の印刷データが格納されている先頭のアドレスが読み出しアドレスとしてセットされる。次に、ステップＳ３２において、上述した手順で求めた分割数が所定のカウンタにセットされる。次に、ステップＳ３３において、分割バッファ１３２の先頭のアドレスが、分割バッファのアドレスとしてセットされる。
【００４２】
ステップＳ３４においては、描画バッファ１３１の上記アドレスから、１バイト分の印刷データ（以下、適宜単にデータと記載する）が読み出される。そして、ステップＳ３５において、描画バッファ１３１の読み出しアドレスの値に１だけ加算される。次に、ステップＳ３６に進み、描画バッファ１３１から読み出された１バイト分のデータが、分割バッファ１３２のｎ番目（最初、ｎの値は１にセットされている）のバッファ（図９）に書き込まれる。
【００４３】
次に、ステップＳ３７において、分割バッファ１３２のアドレスの値に１だけ加算される。次に、ステップＳ３８において、描画バッファ１３１から読み出された１バイトのデータのオンドット数（ビットの値が１の数）が後述するテーブルを参照することによって算出される。次に、オンドット数のトータルの値が格納される変数であるトータルワーク（最初は０にセットされている）に、いま算出されたオンドット数が加算される。
【００４４】
次に、ステップＳ４０に進み、ｎ番目のバッファに書き込まれたデータのオンドット数の総計、即ち、トータルワークの値と、図４を参照して上述した方法により算出される１分割当たりのオンドット数とが比較される。次に、ステップＳ４１において、ステップＳ４０における比較の結果、トータルワークの値の方が、１分割当たりのオンドット数より小さいとき、ステップＳ３４に戻り、ステップＳ３４以降の処理が繰り返し実行される。
【００４５】
一方、ステップＳ４１において、ステップＳ４０における比較の結果、トータルワークの値の方が、１分割当たりのオンドット数より大きいか又は等しいとき、ステップＳ４２に進む。
【００４６】
ステップＳ４２においては、分割バッファ１３２において、データを書き込むバッファを次のバッファに切り替える。いまの場合、ｎ番目のバッファに書き込みを行っていたので、ｎの値に１を加算し、次のバッファに書き込みが行われるようにする。例えば、ｎの値が１である場合、ｎの値に１を加算し、次のバッファ、即ち２番目のバッファに書き込みが行われるようにする。
【００４７】
次に、ステップＳ４３に進み、上記処理が分割数分だけ行われたか否かが判定され、まだ分割数分だけ行われていないと判定された場合、ステップＳ３４に戻り、ステップＳ３４以降の処理を繰り返し実行する。一方、ステップＳ３４乃至ステップＳ４２の処理が、分割数分だけ行われたと判定された場合、ステップＳ４４に進み、分割バッファ１３２，１３３の切り替えを指示するための変数であるバッファ切り替えフラグｃｈｇ＿ｆｌｇの値に１を加算し、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値と１の論理積を演算し、演算結果をバッファ切り替えフラグｃｈｇ＿ｆｌｇにセットする。
【００４８】
バッファ切り替えフラグｃｈｇ＿ｆｌｇは、例えば８ビットで表される変数であるとすると、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が０、即ち、００００００００の場合、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値に１を加算すると１、即ち０００００００１となるので、０００００００１と０００００００１の論理積を演算すると、演算結果は１となる。また、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が１、即ち、０００００００１の場合、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値に１を加算すると２、即ち００００００１０となるので、００００００１０と０００００００１の論理積を演算すると、演算結果は０となる。
【００４９】
このように、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値は、０と１とが交互に切り替わる。バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が０のとき、分割バッファ１３２にデータの書き込みが行われるようにし、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が１のとき、分割バッファ１３３にデータの書き込みが行われるようにすると、ステップＳ４４において、分割バッファ１３２及び分割バッファ１３３の切り替えが行われることになる。
【００５０】
ステップＳ４４の処理が終了すると、処理を終了する。この後、次のラインの印刷データについて、上述した場合と同様の処理が行われ、ステップＳ４４において切り替えられた分割バッファ、いまの場合、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値１に対応する分割バッファ１３３への書き込みが行われる。
【００５１】
例えば、図１１に示すように、オンドット数が２５２となる印刷データが描画バッファ１３１に格納されているものとする。そして、上述した方法で算出された分割数が３となった場合、オンドット数を分割数で除算すると、８４（＝２５２÷３）となるので、描画バッファ１３１に格納されている印刷データが１バイトずつ順次読み出され、分割バッファ１３２又は分割バッファ１３３を構成するバッファに転送されるとともに、読み出された１バイトのデータの中に含まれるオンドット数が順次加算されていき、加算されたオンドット数が８４を越えた時点で、次のバッファに切り替えて、同様の処理が行われる。
【００５２】
このようにして、図１２（Ａ）、図１２（Ｂ）、図１２（Ｃ）に示したように、分割バッファ１３２又は分割バッファ１３３を構成するバッファ＃１乃至バッファ＃３に、それぞれオンドット数がほぼ８４となる印刷データ（分割データ）がセットされる。
【００５３】
例えば、図１１において、データ００、０１、０２、０３、．．．、１Ｆ、２０、２１のビットが１の数（オンドット数）を加算すると、８３となる。
【００５４】
即ち、「００」は１６進数での表記であり、「００」を２進数で表すと「００００００００」であり、ビットが１の数は０である。「０１」を２進数で表すと「０００００００１」となり、ビットが１の数は１である。即ち、０乃至１５（１６進数で表すとＦ）を２進数で表したとき、ビットが１の数は次のようになる。
【００５５】
０（＝００００）のビットが１の数は０
１（＝０００１）のビットが１の数は１
２（＝００１０）のビットが１の数は１
３（＝００１１）のビットが１の数は２
４（＝０１００）のビットが１の数は１
５（＝０１０１）のビットが１の数は２
６（＝０１１０）のビットが１の数は２
７（＝０１１１）のビットが１の数は３
８（＝１０００）のビットが１の数は１
９（＝１００１）のビットが１の数は２
Ａ（＝１０１０）のビットが１の数は２
Ｂ（＝１０１１）のビットが１の数は３
Ｃ（＝１１００）のビットが１の数は２
Ｄ（＝１１０１）のビットが１の数は３
Ｅ（＝１１１０）のビットが１の数は３
Ｆ（＝１１１１）のビットが１の数は４
【００５６】
例えば、データ「１Ａ」のビットが１の数は３（＝１＋２）となり、データ「２１」のビットが１の数は、２（＝１＋１）となる。このようにして、各バイトのオンドット数を算出し、順次加算していくと、トータルのオンドット数が求まる。
【００５７】
従って、データ「００」、「０１」、「０２」、「０３」、．．．、「２０」、「２１」の各々のビットが１の数（オンドット数）を加算すると８３となり、次のデータ「２２」のビットが１の数（＝２）を加算すると８５となるので、データ「２２」以降のデータはバッファ＃２に転送される。そして、データ「２２」、「２３」、．．．、「３Ａ」の各々のビットが１の数（オンドット数）を加算すると８１となり、次のデータ「３Ｂ」のビットが１の数である５（＝２＋３）を加算すると８６となるので、データ「３Ｂ」以降のデータはバッファ＃３に転送される。
【００５８】
このようにして、図１２（Ａ）、図１２（Ｂ）、図１２（Ｃ）に示すように、バッファ＃１乃至バッファ＃３にデータ（分割データ）が転送される。そして、バッファ＃１に転送されたデータのビットが１の数は８３、バッファ＃２に転送されたデータのビットが１の数は８１、バッファ＃３に転送されたデータのビットが１の数は８５となる。このように、バッファ＃１乃至＃３のそれぞれにおいて、データのビットが１の数（オンドット数）は、それぞれ８４前後の数となる。バッファ＃１乃至バッファ＃３にセットされたデータは、順次印刷ヘッド５に転送され、各バッファにセットされたデータに対応する発熱体５１に順に電流が供給され、印刷が行われる。
【００５９】
バッファ＃１乃至バッファ＃３に転送されたデータのビットが１の数が、上述したように、各バッファ毎にほぼ一定となるため、各バッファに転送された分割データのオンドットに対応する発熱体５１に流す電流値をほぼ一定にすることができ、印字濃度のばらつきを解消することができる。また、バッテリへの負荷が一定となるため、バッテリの劣化を抑制することができる。
【００６０】
次に、図１３のフローチャートを参照して、分割バッファ１３２，１３３に分割データを交互にセットし、分割バッファ１３２，１３３にセットされた分割データを、印刷ヘッド５に転送するサブルーチンの処理手順について説明する。図１３のフローチャートに従って処理を実行するサブルーチンは、１ライン分の印刷が行われる度に、分割数分だけ呼び出される。また、フローチャートの中で使用される変数Ｐｕｔ＿ｃｎｔと、分割バッファ１３２及び分割バッファ１３３のいずれを転送先にするかを指定するためのバッファ切り替えフラグｃｈｇ＿ｆｌｇと、ヘッド転送回数を表す所定の変数は、それぞれ最初は初期設定されている（値０がセットされている）ものとする。
【００６１】
まず最初に、ステップＳ５１において、転送回数を表す変数Ｐｕｔ＿ｃｎｔの値が２より小さいか否かが判定される。変数Ｐｕｔ＿ｃｎｔの値が２より大きいか又は等しいと判定された場合、ステップＳ５７に進む。一方、変数Ｐｕｔ＿ｃｎｔの値が２より小さいと判定された場合、ステップＳ５２に進み、図４のフローチャートを参照して上述した手順で分割数が算出される。次に、ステップＳ５３において、図５のフローチャートを参照して上述した手順でストローブ時間が算出される。
【００６２】
次に、ステップＳ５４において、図６のフローチャートを参照して上述した手順で分割データが、分割バッファ１３２及び分割バッファ１３３のうちのバッファ切り替えフラグｃｈｇ＿ｆｌｇで指定されるものの各バッファ＃１乃至＃ｎにセットされる。その後、ステップＳ５５に進み、変数Ｐｕｔ＿ｃｎｔの値に１が加算される。
【００６３】
そして、ステップＳ５６において、分割バッファ１３２と分割バッファ１３３のいずれかを指定するためのバッファ切り替えフラグｃｈｇ＿ｆｌｇの値が反転される。即ち、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が０と１とで交互に変化するような処理が実行される。
【００６４】
具体的には、図６を参照して上述したように、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値に１を加算したものと１との間で論理積演算を行うことにより、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が０，１，０，１，０，１、．．．というように交互に変化し、分割バッファ１３２と分割バッファ１３３が分割データの転送先として交互に指定されるようにする。例えば、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が０のときは、分割バッファ１３２に分割データが転送され、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が１のときは、分割バッファ１３３に分割データが転送される。
【００６５】
次に、ステップＳ５７において、変数Ｐｕｔ＿ｃｎｔの値が０より大きいか否かが判定される。変数Ｐｕｔ＿ｃｎｔの値が０のとき、リターンする。一方、分割バッファ１３２への分割データのセットが行われると、変数Ｐｕｔ＿ｃｎｔの値はステップＳ５５における処理により０より大きくなるので、ステップＳ５８に進み、分割バッファ１３２にセットされた分割データの印刷ヘッド５への転送が行われ、ヘッド転送回数を表す所定の変数の値に１が加算される。
【００６６】
次に、ステップＳ５９において、分割数とヘッド転送回数とが一致するか否かが判定される。分割数とヘッド転送回数とが一致しないと判定された場合、１ライン分の印刷がまだ終了していないと判断され、リターンする。一方、分割数とヘッド転送回数とが一致すると判定された場合、１ライン分の印刷が終了したものと判断され、ステップＳ６０に進み、変数Ｐｕｔ＿ｃｎｔの値から１だけ減算され、リターンする。その後、再度このサブルーチンが呼び出され、次のラインの処理が行われる。
【００６７】
次に、具体例について説明する。最初、変数Ｐｕｔ＿ｃｎｔの値は０であるので、ステップＳ５１において変数Ｐｕｔ  ＿ｃｎｔの値は２より小さいと判定され、ステップＳ５２に進み、分割数が算出される。この場合、分割数は３とする。次に、ステップＳ５３においてストローブ時間が算出され、ステップＳ５４において、分割データが分割バッファ１３２の各バッファにセットされる。
【００６８】
いまの場合、分割数は３であるので、描画バッファ１３１に図１１に示すような印刷データが格納されているとすると、分割バッファ１３２のバッファ＃１には、図１２（Ａ）に示すような分割データがセットされる。そして、分割バッファ１３２のバッファ＃２には、図１２（Ｂ）に示すような分割データがセットされる。また、分割バッファ１３２のバッファ＃３には、図１２（Ｃ）に示すような分割データがセットされる。
【００６９】
次に、ステップＳ５５において、変数Ｐｕｔ＿ｃｎｔの値に１が加算される。
いまの場合、１とされる。そして、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値が反転される。いまの場合、０から１に反転される。
【００７０】
次に、ステップＳ５７において、変数Ｐｕｔ＿ｃｎｔの値が０より大きいか否かが判定される。いまの場合、変数Ｐｕｔ＿ｃｎｔの値は１であるので、０より大きいと判定され、ステップＳ５８に進む。ステップＳ５８においては、分割バッファ１３２のバッファ＃１にセットされた分割データが印刷ヘッド５に転送されるとともに、ヘッド転送回数の値に１が加算される。最初、ヘッド転送回数は０であるので、いまの場合１となる。印刷ヘッド５は、転送されてきた分割データに従って印刷を実行する。
【００７１】
次に、ステップＳ５９において、分割数（いまの場合３）とヘッド転送回数とが等しいか否かが判定される。いまの場合、分割数である３と、ヘッド転送回数である１とは等しくないので、そのままリターンする。
【００７２】
そして、このサブルーチンが再度呼び出され、ステップＳ５１以降の処理が繰り返し実行される。いま、変数Ｐｕｔ＿ｃｎｔの値は１であるので、ステップＳ５２乃至ステップＳ５４の処理が実行され、次のラインの分割数とストローブ時間が計算される。そして、いま、バッファ切り替えフラグｃｈｇ＿ｆｌｇの値は１であるので、分割バッファ１３３の各バッファ（この場合、バッファ＃１乃至バッファ＃３）に分割データがセットされる。
【００７３】
次に、ステップＳ５５において変数Ｐｕｔ＿ｃｎｔの値に１が加算されて２とされた後、ステップＳ５６においてバッファ切り替えフラグｃｈｇ＿ｆｌｇの値が反転されて０とされる。
【００７４】
次に、ステップＳ５７において、変数Ｐｕｔ＿ｃｎｔの値が０より大きいと判定され、ステップＳ５８に進み、既に分割バッファ１３２にセットされているバッファ＃２の分割データが印刷ヘッド５に転送され、ヘッド転送回数の値に１が加算され、いまの場合２とされる。印刷ヘッド５は、転送されてきた分割データに従って印刷を実行する。
【００７５】
ステップＳ５９においては、分割数とヘッド転送回数が等しいか否かが判定される。いまの場合、分割数が３、ヘッド転送回数が２であるので、等しくないと判定され、リターンする。
【００７６】
そして、このサブルーチンが再度呼び出され、ステップＳ５１以降の処理が繰り返し実行される。いま、変数Ｐｕｔ＿ｃｎｔの値は２であるので、ステップＳ５２乃至ステップＳ５６の処理は実行されず、ステップＳ５７に進む。
【００７７】
ステップＳ５７においては、変数Ｐｕｔ＿ｃｎｔの値（いまの場合２）が０より大きいと判定され、ステップＳ５８に進み、既に分割バッファ１３２にセットされているバッファ＃３の分割データが印刷ヘッド５に転送され、ヘッド転送回数の値に１が加算され、いまの場合３とされる。印刷ヘッド５は、転送されてきた分割データに従って印刷を実行する。これにより、最初の１ライン分の印刷が終了する。
【００７８】
ステップＳ５９においては、分割数とヘッド転送回数が等しいか否かが判定される。いまの場合、分割数が３、ヘッド転送回数が３であるので、等しいと判定され、ステップＳ６０に進み、Ｐｕｔ＿ｃｎｔの値から１が減算される。いまの場合、１（＝２−１）とされる。その後、リターンする。以降、上述した場合と同様に、このサブルーチンが呼び出され、次のラインの印刷が行われる。
【００７９】
図１４乃至図１７は、分割バッファ１３２及び分割バッファ１３３の各バッファにセットされた印刷データを印刷ヘッド５に転送するタイミングと、印刷ヘッド５に転送された各バッファの印刷データがストローブ時間で印刷されるタイミングを表している。
【００８０】
図１４は、一括印刷を行う場合のデータ転送と印刷のタイミングの例を示しており、図１５は印刷データを２分割して印刷する場合のデータ転送と印刷のタイミングの例を示している。また、図１６は、印刷データを３分割して印刷する場合のデータ転送と印刷のタイミングの例を示しており、図１７は印刷データを４分割して印刷する場合のデータ転送と印刷のタイミングの例を示している。
【００８１】
図１４に示した一括印刷を行う場合は、印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行される。図１５に示した２分割印刷を行う場合は、２分割され、分割バッファ１３２又は分割バッファ１３３のバッファ＃１にセットされた印刷データ（分割データ）が印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行され、次に、バッファ＃２にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行される。
【００８２】
また、図１６に示した３分割印刷を行う場合は、印刷データが３分割され、分割バッファ１３２又は分割バッファ１３３のバッファ＃１にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行され、次に、バッファ＃２にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行される。さらに、バッファ＃３にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行される。
【００８３】
また、図１７に示した４分割印刷を行う場合は、印刷データが４分割され、分割バッファ１３２又は分割バッファ１３３のバッファ＃１にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行され、次に、バッファ＃２にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行される。そして、バッファ＃３にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行される。さらに、バッファ＃４にセットされた印刷データが印刷ヘッド５に転送された後、計算されたストローブ時間で印刷が実行される。
【００８４】
図１３に示したフローチャートでは、分割バッファ１３２，１３３に分割データをセットする処理と、印刷ヘッド５に分割データを転送する処理とを順番に行うようにしたが、これらの処理を並行して行うようにすることも可能である。その場合、分割バッファ１３２に分割データをセットしている間に、分割バッファ１３３にすでにセットされた分割データを印刷ヘッド５に転送し、分割バッファ１３３に分割データをセットしている間に、分割バッファ１３２にすでにセットされた分割データを印刷ヘッド５に転送するようにする。
【００８５】
このように、分割バッファ１３２，１３３に分割データをセットする処理と、印刷ヘッド５に分割データを転送する処理とを並行して行うようにすると、印刷処理を停止することなく連続して行うことができるので、高速印刷が可能になる。
【００８６】
以上説明したように、本実施の形態により、次のような効果を得ることができる。即ち、分割数を計算により求めるようにしたので、従来のように、オンドット数に応じた分割数をメモリ上のテーブルに予め記憶しておく必要がなくなるため、メモリを削減してコストを下げるとともに、従来よりも細かな制御を行うことが可能となる。
【００８７】
なお、上記実施の形態において用いた具体的な値は例であってこれに限定されるものではない。
【００８８】
また、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更することができる。
【００８９】
【発明の効果】
以上の如く、本発明に係る印刷装置および印刷方法によれば、印刷すべき印刷データを記憶し、記憶された印刷データを複数の分割データに分割するときの分割数を演算し、印刷データのオンドット数に基づいて、記憶された印刷データを、演算された分割数分の複数の分割データに分割し、分割された各分割データを記憶し、記憶された各分割データを順に印刷ヘッドに転送し、転送された分割データのオンドット数に基づいて、発熱体に供給する電流を制御するようにしたので、メモリを削減してコストを下げることが可能となる。また、印刷ヘッドに供給する電流値を従来よりも細かく制御することが可能となり、印刷の品質を上げることができる。
【図面の簡単な説明】
【図１】本発明が適用されるラベルプリンタの一実施の形態の構成例を示すブロック図である。
【図２】図１の制御部の詳細な構成例を示すブロック図である。
【図３】印刷ヘッドの構成例を示す図である。
【図４】分割数の算出方法を説明するためのフローチャートである。
【図５】ストローブ時間の算出方法を説明するためのフローチャートである。
【図６】印刷データの分割方法を説明するためのフローチャートである。
【図７】描画バッファと分割バッファの構成例を示すブロック図である。
【図８】描画バッファと分割バッファの構成例を示すブロック図である。
【図９】分割バッファの構成例を示す図である。
【図１０】分割バッファの構成例を示す図である。
【図１１】印刷データの例を示す図である。
【図１２】分割データの例を示す図である。
【図１３】分割データのセットとヘッド転送の手順を説明するためのフローチャートである。
【図１４】一括印刷のタイムチャートである。
【図１５】二分割印刷のタイムチャートである。
【図１６】三分割印刷のタイムチャートである。
【図１７】四分割印刷のタイムチャートである。
【符号の説明】
１  ラベル
２  台紙
３  ラベル連続体
４  供給軸
５  印刷ヘッド
６  プラテンローラ
７  ステッピングモータ
８  ベルト
９  位置検出センサ
１０  制御部
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  モータ制御部
１５  印刷制御部
１６  センサ制御部
１７  外部インタフェース
１８  入力部
１９  モニタ
２０  インタフェース
１３１  描画バッファ
１３２，１３３  分割バッファ
【図１】
0004576021.tif 000009
【図２】
0004576021.tif 000010
【図３】
0004576021.tif 000011
【図４】
0004576021.tif 000012
【図５】
0004576021.tif 000013
【図６】
0004576021.tif 000014
【図７】
0004576021.tif 000015
【図８】
0004576021.tif 000016
【図９】
0004576021.tif 000017
【図１０】
0004576021.tif 000018
【図１１】
0004576021.tif 000019
【図１２】
0004576021.tif 000020
【図１３】
0004576021.tif 000021
【図１４】
0004576021.tif 000022
【図１５】
0004576021.tif 000023
【図１６】
0004576021.tif 000024
【図１７】
0004576021.tif 000025