JP4576021B2 - Printing apparatus and printing method - Google Patents
Printing apparatus and printing method Download PDFInfo
- Publication number
- JP4576021B2 JP4576021B2 JP2000136574A JP2000136574A JP4576021B2 JP 4576021 B2 JP4576021 B2 JP 4576021B2 JP 2000136574 A JP2000136574 A JP 2000136574A JP 2000136574 A JP2000136574 A JP 2000136574A JP 4576021 B2 JP4576021 B2 JP 4576021B2
- Authority
- JP
- Japan
- Prior art keywords
- divided
- data
- buffer
- dots
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electronic Switches (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、印刷装置および印刷方法に関し、特に、印刷ヘッドを構成する複数の発熱体をオンドット数に応じていくつかのグループに分割し、グループ毎に電流を流すことにより、印字品質を上げるようにした印刷装置および印刷方法に関する。
【0002】
【従来の技術】
従来、印刷装置としてのサーマルプリンタにおいては、印刷を行うサーマルヘッドは複数の発熱体から構成され、各発熱体に電流を流すことにより、発熱体に接した感熱紙に複数のドットからなる文字や図形等の印刷イメージを印刷することができるようになされている。従って、印刷イメージに応じて、黒のドットに対応する発熱体には電流を流し、黒でないドットに対応する発熱体には電流を流さないようにすることにより、複数のドットからなる上記印刷イメージを印刷することができる。
【0003】
また、バッテリ駆動する小型の携帯プリンタの場合、サーマルヘッドに流すことができる電流の大きさには限界があるため、電流を流すべき発熱体に対応するドット、即ち、オンドットの数(オンドット数)を求め、それを複数のグループに分割し、各グループ毎に順番に、各グループに属するドットに対応する発熱体に電流を流すようにしている。これにより、分割印字が可能となっている。
【0004】
分割印字するときに必要となるオンドット数に応じた分割数は、所定のメモリ上のテーブルに予め記憶しておき、オンドット数に応じてテーブルから分割数を参照し、分割処理を行っていた。
【0005】
【発明が解決しようとする課題】
しかしながら、従来の方法では、分割数を導き出す処理に必要な処理時間は短くて済むが、オンドット数に応じた細かな分割処理を行うような制御ができない課題があった。また、細かな制御を行うために、メモリ上のテーブル構成を細かくしてオンドット数に応じた分割数を示す細かなデータを設定すると、メモリ容量が多く必要となり、コスト高となる課題があった。
【0006】
本発明はこのような状況に鑑みてなされたものであり、バッテリの電圧、サーマルヘッド抵抗、オンドット数等の値から、サーマルヘッドの1ライン分を印刷するときに、オンドットを分割する分割数を計算によって算出し、分割したオンドットに対応するサーマルヘッドの発熱体に流す電流を細かく制御することができるようにするものである。
【0007】
【課題を解決するための手段】
請求項1に記載の印刷装置は、複数の発熱体からなる印刷ヘッドに電流を供給して印刷を行う印刷装置であって、印刷すべき印刷データを記憶する印刷データ記憶手段と、印刷データ記憶手段によって記憶された印刷データを複数の分割データに分割するときの分割数を、少なくとも印刷ヘッドに掛かる電圧、印刷ヘッドの抵抗値、印刷すべき印刷データのオンドット数、並びに、印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算手段と、印刷データのオンドット数に基づいて、印刷データ記憶手段によって記憶された印刷データを、演算手段によって演算された分割数分の複数の分割データに分割するとともに、分割データの各々のオンドット数がほぼ等しくなるように、印刷データを分割する分割手段と、分割手段によって分割された各分割データを記憶する分割データ記憶手段と、分割データ記憶手段によって記憶された各分割データを順に印刷ヘッドに転送する転送手段と、転送手段によって転送された分割データのオンドット数に基づいて、発熱体に供給する電流を制御する制御手段とを備えることを特徴とする。
また、分割データ記憶手段は、複数個設けられるとともに、分割データを交互に記憶するようにできる。
請求項3に記載の印刷方法は、複数の発熱体からなる印刷ヘッドに電流を供給して印刷を行う印刷方法であって、印刷すべき印刷データを記憶する印刷データ記憶ステップと、印刷データ記憶ステップにおいて記憶された印刷データを複数の分割データに分割するときの分割数を、少なくとも印刷ヘッドに掛かる電圧、印刷ヘッドの抵抗値、印刷すべき印刷データのオンドット数、並びに、印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算ステップと、印刷データのオンドット数に基づいて、印刷データ記憶ステップにおいて記憶された印刷データを、演算ステップにおいて演算された分割数分の複数の分割データに分割するとともに、分割データの各々のオンドット数がほぼ等しくなるように、印刷データを分割する分割ステップと、分割ステップにおいて分割された各分割データを記憶する分割データ記憶ステップと、分割データ記憶ステップにおいて記憶された各分割データを順に印刷ヘッドに転送する転送ステップと、転送ステップにおいて転送された分割データのオンドット数に基づいて、発熱体に供給する電流を制御する制御ステップとを備えることを特徴とする。
【0008】
【発明の実施の形態】
図1は、本発明が適用される携帯型のラベルプリンタの一実施の形態の構成例を示している。同図に示すように、ラベルプリンタは、各部を制御する制御部10と、ラベル1に印刷を行う印刷ヘッド5と、制御部10の制御により駆動されるステッピングモータ(以下では、適宜単にモータと記載する)7と、ベルト8を介して伝達されるモータ7の回転力によって回転し、後述する供給軸4にセットされたラベル連続体3を構成する台紙2及び台紙2に剥離可能に貼付されたラベル1を搬送するとともに、ラベル1を印刷ヘッド5に押圧するプラテンローラ6と、ラベル連続体3を回転自在に支持する供給軸4と、所定の光を出射する発光部と、発光部から出射された光を受光し、受光した光の強度(単位時間当たりの受光量)に対応する電気信号を出力する受光部とからなり、台紙2及びラベル1を挟むように発光部と受光部を配し、ラベル1とギャップ(隣接する2つのラベル1の間の台紙2のみの部分)を受光部の受光量に基づいて検出する位置検出センサ(以下では、適宜単にセンサという)9とを備えている。
【0009】
図2は、図1の実施の形態の電気的な構成例を示すブロック図である。同図に示すように、制御部10は、所定の制御プログラムを記憶するROM(readonly memory)12と、ROM12に記憶されている制御プログラムに従って動作し、各部を制御するCPU(central processing unit)11と、CPU11が動作する上で必要となる各種データを記憶するRAM(random access memory)13と、ステッピングモータ7にパルス信号を供給し、ステッピングモータ7を回転させるモータ制御部14と、CPU11から供給される印刷すべき文字、図形、及びバーコードなどの印刷データに対応する制御信号を生成し、印刷ヘッド5に供給し、印刷動作を行わせる印刷制御部15と、CPU11の制御下、センサ9の発光部を制御し、光を出射させるとともに、受光部から出力される電気信号を受け取り、ディジタルのデータに変換してCPU11に供給するセンサ制御部16と、外部インタフェース17と、インタフェース20とを備えている。そして、各種データを入力するための入力部18と、入力部18からの入力データや、各種情報を表示するためのモニタ19とがインタフェース20を介して接続されている。入力部18より入力された入力データは、インタフェース20を介してCPU11に供給され、モニタ19に表示される各種情報に対応する表示データは、インタフェース20を介してCPU11より供給されるようになされている。また、外部インタフェース17を介して、外部に接続された機器との間で各種データの送受信を行うことができるようになされている。
【0010】
印刷ヘッド5は、図3に示すように、複数の発熱体51から構成されており、各発熱体51は、印刷された印刷イメージを構成する各ドットにそれぞれ対応している。そして、発熱体51に電流が供給されると、その発熱体51により黒のドットが印刷される。電流が供給された発熱体51に対応するドットをオンドットと定義し、その数をオンドット数と定義する。
【0011】
印刷制御部15は、図7、図8を参照して後述するように、印刷すべき印刷データを記憶する描画バッファ131と、描画バッファ131に記憶された印刷データが後述する方法で分割されたものを記憶する分割バッファ132,133とから構成されている。分割バッファ132は、図9(A)に示すように、例えば、最大で108バイトの印刷データを記憶する複数のバッファ(この例では、1分割目のバッファ乃至15分割目のバッファ)から構成されており、分割バッファ133も同様に、図9(B)に示すように、例えば、最大で108バイトの印刷データを記憶する複数のバッファ(この例では、1分割目のバッファ乃至15分割目のバッファ)から構成されている。
【0012】
バッテリ駆動の携帯型のラベルプリンタのように、バッテリの能力の限界が比較的低いような場合、図3に示した印刷ヘッド5を構成する発熱体51のうち、オンドットに対応する全ての発熱体51に同時に電流を供給することができない場合がある。そこで、オンドットを複数のグループに分割し、グループ毎に順番に、グループに属するオンドットに対応する発熱体51にだけ電流を供給するようにする。例えば、グループA,B,Cに分割すると、最初、グループAに属するオンドットに対応する発熱体51にだけ電流を供給し、次に、グループBに属するオンドットに対応する発熱体51にだけ電流を供給し、次に、グループCに属するオンドットに対応する発熱体51にだけ電流を供給し、オンドットに対応する印刷イメージを印刷する。
【0013】
次に、図4のフローチャートを参照して、図3に示した印刷ヘッド5を構成する発熱体51のうち、印刷イメージに応じて電流が供給される発熱体51に対応するドット、即ちオンドットを分割する方法について説明する。この分割処理は、図2に示したCPU11によって行われる。
【0014】
まず最初に、ステップS1において、印刷ヘッド5に掛かっている電圧(ヘッド電圧(バッテリ電圧))を、図示せぬA/Dコンバータ(アナログ−デジタル変換器)を介して読み込む。次に、ステップS2において、ROM12等に記憶されている、例えば2ビットで構成され、4通りのステータスの指定が可能なヘッドステータスを読み込む。この例の場合、ヘッドステータスは例えば印刷ヘッド5のヘッド抵抗値等を表している。
【0015】
次に、ステップS3に進み、ステップS2で読み込んだヘッドステータスに基づいて、ヘッド抵抗値を設定する。次に、ステップS4において、1ドット当たりの電流値を算出する。1ドット当たりの電流値は、次式(1)により算出することができる。
【0016】
1ドット当たりの電流値=ヘッド電圧/ヘッド抵抗値・・・(式1)
【0017】
例えば、ヘッド電圧を14.8ボルト(V)、ヘッド抵抗値を450オーム(Ω)とすると、
となる。
【0018】
ステップS5においては、オンドット数が読み込まれる。オンドット数は、図3に示したように、電流が供給される発熱体51に対応するドットの数である。
これは、後述するように、描画バッファ131(図7、図8)に展開された印刷データから算出することができる。いま、印刷ヘッド5の幅(ヘッド幅)を108ミリメートル(mm)、オンドット数を130ドット、バッテリ上限電流値を2500mAとする。
【0019】
次に、ステップS6において、次式(2)より、総電流値が算出される。
【0020】
総電流値=オンドット数×1ドット当たりの電流値・・・(式2)
【0021】
いまの場合、オンドット数は130ドット、1ドット当たりの電流値は32.8mAであるので、
となる。
【0022】
次に、次式(3)より、分割数と余りを算出する。
【0023】
分割数=総電流値/バッテリ上限電流値・・・(式3)
ただし、余りがあるときは、分割数=分割数+1とする。
【0024】
即ち、ステップS7において、いまの場合、総電流値は4264mA、バッテリ上限電流値は2500mAであるので、式(3)より、
となる。
【0025】
次に、ステップS8において、余りがあるか否かが判定される。余りが0である、即ち、余りがないと判定された場合、ステップS10に進む。一方、余りがあると判定された場合、ステップ9において、ステップS7で算出した分割数に1だけ加算する。いまの場合、余り(1764)があるので、
となる。
【0026】
次に、ステップS10に進み、次式(4)より、1回のオンドット数が算出される。
【0027】
1回のオンドット数=オンドット数/分割数・・・(式4)
【0028】
いまの場合、オンドット数が130ドット、分割数が2であるので、
となる。
【0029】
次に、図5のフローチャートを参照して、ストローブ時間、即ち、印刷ヘッド5を構成する発熱体51に電流を流す時間を算出する方法について説明する。最初に、ステップS21において、印刷ヘッド5に掛かっている電圧(ヘッド電圧(バッテリ電圧))を、図示せぬA/Dコンバータ(アナログ−デジタル変換器)を介して読み込む。次に、ステップS22において、ROM12等に記憶されている、例えば2ビットで構成され、4通りのステータスの指定が可能なヘッドステータスを読み込む。この例の場合、ヘッドステータスは例えば印刷ヘッド5のヘッド抵抗値等を表している。
【0030】
次に、ステップS23に進み、ステップS22で読み込んだヘッドステータスに基づいて、ヘッド抵抗値を設定する。
【0031】
次に、ステップS24において、次式(5)によりヘッド印加電力が算出される。
【0032】
ヘッド印加電力=(ヘッド電圧−VL)2/(ヘッド抵抗値+PL)・・・(式5)
ここで、VLは、ヘッドの電圧降下(発熱体に電圧が掛かるまでの消失分)を表し、PLは、パワーのロス分を表している。VLの値、及びPLの値は、ヘッドメーカやヘッドの種類により異なる。
【0033】
ここでは説明を簡略化するため、VL=0、PL=0とする。いまの場合、ヘッド電圧は14.8V、ヘッド抵抗値は450Ωであるので、
となる。
【0034】
ステップS25においては、ROM12等に予め用紙の種類別に記憶されている、必要な印加エネルギーが読み込まれる。この印加エネルギーは、印刷を行う用紙の種類によって異なり、用紙の種類毎に所定の値が定まっている。プリンタの使用者は、使用前に入力部18から印刷を行う用紙の種類を指定する。指定された用紙の種類は、RAM13に記憶される。そして、指定された用紙の種類に対応する印加エネルギーが、ROM12から読み込まれる。
【0035】
次に、ステップS26において、次式(6)により、ストローブ時間が算出される。
【0036】
ストローブ時間=必要な印加エネルギー/印加電力・・・(式6)
【0037】
いまの場合、必要な印加エネルギーが0.3ミリジュール(mJ)、印加電力が0.5mWであるので、
となる。その後、処理を終了する。
【0038】
このようにして、オンドット数に応じた分割数及びストローブ時間が算出されると、図7、図8に示した描画バッファ131にセットされた印刷データのオンドットに対応する印刷データが分割数分のグループの印刷データ(分割データ)に分割される。分割された分割データは、後述するバッファ切り替えフラグ(chg_flg)の値に応じて、図7、図8に示した分割バッファ132,133のいずれかにセットされる。この分割バッファ132,133は、それぞれ、図10に示すように、ヘッド幅分のバイト数のデータを記憶可能なバッファを最大分割数分nだけ有している。
【0039】
ここでは、図9に示すように、108バイトのヘッド幅分のデータを記憶可能な1分割目のバッファ乃至15番目のバッファより構成されるものとする。以下では、1分割目のバッファをバッファ#1と記載し、2分割目のバッファをバッファ#2と記載し、以下同様にして、15番目のバッファをバッファ#15と記載することにする。また、以下では、バッファ#1乃至バッファ#15を特に区別する必要がない場合、適宜単にバッファと記載することにする。
【0040】
次に、図6のフローチャートを参照して、最大分割数分のバッファを2つ用意しておき、分割数算出後、描画バッファにセットされた1ライン分の印刷データが分割バッファ132,133の各バッファに転送される手順について説明する。最初、バッファ切り替えフラグchg_flgの値が0にセットされており、分割バッファ132に印刷データが転送されるものとする。
【0041】
まず、ステップS31において、描画バッファ131の印刷データが格納されている先頭のアドレスが読み出しアドレスとしてセットされる。次に、ステップS32において、上述した手順で求めた分割数が所定のカウンタにセットされる。次に、ステップS33において、分割バッファ132の先頭のアドレスが、分割バッファのアドレスとしてセットされる。
【0042】
ステップS34においては、描画バッファ131の上記アドレスから、1バイト分の印刷データ(以下、適宜単にデータと記載する)が読み出される。そして、ステップS35において、描画バッファ131の読み出しアドレスの値に1だけ加算される。次に、ステップS36に進み、描画バッファ131から読み出された1バイト分のデータが、分割バッファ132のn番目(最初、nの値は1にセットされている)のバッファ(図9)に書き込まれる。
【0043】
次に、ステップS37において、分割バッファ132のアドレスの値に1だけ加算される。次に、ステップS38において、描画バッファ131から読み出された1バイトのデータのオンドット数(ビットの値が1の数)が後述するテーブルを参照することによって算出される。次に、オンドット数のトータルの値が格納される変数であるトータルワーク(最初は0にセットされている)に、いま算出されたオンドット数が加算される。
【0044】
次に、ステップS40に進み、n番目のバッファに書き込まれたデータのオンドット数の総計、即ち、トータルワークの値と、図4を参照して上述した方法により算出される1分割当たりのオンドット数とが比較される。次に、ステップS41において、ステップS40における比較の結果、トータルワークの値の方が、1分割当たりのオンドット数より小さいとき、ステップS34に戻り、ステップS34以降の処理が繰り返し実行される。
【0045】
一方、ステップS41において、ステップS40における比較の結果、トータルワークの値の方が、1分割当たりのオンドット数より大きいか又は等しいとき、ステップS42に進む。
【0046】
ステップS42においては、分割バッファ132において、データを書き込むバッファを次のバッファに切り替える。いまの場合、n番目のバッファに書き込みを行っていたので、nの値に1を加算し、次のバッファに書き込みが行われるようにする。例えば、nの値が1である場合、nの値に1を加算し、次のバッファ、即ち2番目のバッファに書き込みが行われるようにする。
【0047】
次に、ステップS43に進み、上記処理が分割数分だけ行われたか否かが判定され、まだ分割数分だけ行われていないと判定された場合、ステップS34に戻り、ステップS34以降の処理を繰り返し実行する。一方、ステップS34乃至ステップS42の処理が、分割数分だけ行われたと判定された場合、ステップS44に進み、分割バッファ132,133の切り替えを指示するための変数であるバッファ切り替えフラグchg_flgの値に1を加算し、バッファ切り替えフラグchg_flgの値と1の論理積を演算し、演算結果をバッファ切り替えフラグchg_flgにセットする。
【0048】
バッファ切り替えフラグchg_flgは、例えば8ビットで表される変数であるとすると、バッファ切り替えフラグchg_flgの値が0、即ち、00000000の場合、バッファ切り替えフラグchg_flgの値に1を加算すると1、即ち00000001となるので、00000001と00000001の論理積を演算すると、演算結果は1となる。また、バッファ切り替えフラグchg_flgの値が1、即ち、00000001の場合、バッファ切り替えフラグchg_flgの値に1を加算すると2、即ち00000010となるので、00000010と00000001の論理積を演算すると、演算結果は0となる。
【0049】
このように、バッファ切り替えフラグchg_flgの値は、0と1とが交互に切り替わる。バッファ切り替えフラグchg_flgの値が0のとき、分割バッファ132にデータの書き込みが行われるようにし、バッファ切り替えフラグchg_flgの値が1のとき、分割バッファ133にデータの書き込みが行われるようにすると、ステップS44において、分割バッファ132及び分割バッファ133の切り替えが行われることになる。
【0050】
ステップS44の処理が終了すると、処理を終了する。この後、次のラインの印刷データについて、上述した場合と同様の処理が行われ、ステップS44において切り替えられた分割バッファ、いまの場合、バッファ切り替えフラグchg_flgの値1に対応する分割バッファ133への書き込みが行われる。
【0051】
例えば、図11に示すように、オンドット数が252となる印刷データが描画バッファ131に格納されているものとする。そして、上述した方法で算出された分割数が3となった場合、オンドット数を分割数で除算すると、84(=252÷3)となるので、描画バッファ131に格納されている印刷データが1バイトずつ順次読み出され、分割バッファ132又は分割バッファ133を構成するバッファに転送されるとともに、読み出された1バイトのデータの中に含まれるオンドット数が順次加算されていき、加算されたオンドット数が84を越えた時点で、次のバッファに切り替えて、同様の処理が行われる。
【0052】
このようにして、図12(A)、図12(B)、図12(C)に示したように、分割バッファ132又は分割バッファ133を構成するバッファ#1乃至バッファ#3に、それぞれオンドット数がほぼ84となる印刷データ(分割データ)がセットされる。
【0053】
例えば、図11において、データ00、01、02、03、...、1F、20、21のビットが1の数(オンドット数)を加算すると、83となる。
【0054】
即ち、「00」は16進数での表記であり、「00」を2進数で表すと「00000000」であり、ビットが1の数は0である。「01」を2進数で表すと「00000001」となり、ビットが1の数は1である。即ち、0乃至15(16進数で表すとF)を2進数で表したとき、ビットが1の数は次のようになる。
【0055】
0(=0000)のビットが1の数は0
1(=0001)のビットが1の数は1
2(=0010)のビットが1の数は1
3(=0011)のビットが1の数は2
4(=0100)のビットが1の数は1
5(=0101)のビットが1の数は2
6(=0110)のビットが1の数は2
7(=0111)のビットが1の数は3
8(=1000)のビットが1の数は1
9(=1001)のビットが1の数は2
A(=1010)のビットが1の数は2
B(=1011)のビットが1の数は3
C(=1100)のビットが1の数は2
D(=1101)のビットが1の数は3
E(=1110)のビットが1の数は3
F(=1111)のビットが1の数は4
【0056】
例えば、データ「1A」のビットが1の数は3(=1+2)となり、データ「21」のビットが1の数は、2(=1+1)となる。このようにして、各バイトのオンドット数を算出し、順次加算していくと、トータルのオンドット数が求まる。
【0057】
従って、データ「00」、「01」、「02」、「03」、...、「20」、「21」の各々のビットが1の数(オンドット数)を加算すると83となり、次のデータ「22」のビットが1の数(=2)を加算すると85となるので、データ「22」以降のデータはバッファ#2に転送される。そして、データ「22」、「23」、...、「3A」の各々のビットが1の数(オンドット数)を加算すると81となり、次のデータ「3B」のビットが1の数である5(=2+3)を加算すると86となるので、データ「3B」以降のデータはバッファ#3に転送される。
【0058】
このようにして、図12(A)、図12(B)、図12(C)に示すように、バッファ#1乃至バッファ#3にデータ(分割データ)が転送される。そして、バッファ#1に転送されたデータのビットが1の数は83、バッファ#2に転送されたデータのビットが1の数は81、バッファ#3に転送されたデータのビットが1の数は85となる。このように、バッファ#1乃至#3のそれぞれにおいて、データのビットが1の数(オンドット数)は、それぞれ84前後の数となる。バッファ#1乃至バッファ#3にセットされたデータは、順次印刷ヘッド5に転送され、各バッファにセットされたデータに対応する発熱体51に順に電流が供給され、印刷が行われる。
【0059】
バッファ#1乃至バッファ#3に転送されたデータのビットが1の数が、上述したように、各バッファ毎にほぼ一定となるため、各バッファに転送された分割データのオンドットに対応する発熱体51に流す電流値をほぼ一定にすることができ、印字濃度のばらつきを解消することができる。また、バッテリへの負荷が一定となるため、バッテリの劣化を抑制することができる。
【0060】
次に、図13のフローチャートを参照して、分割バッファ132,133に分割データを交互にセットし、分割バッファ132,133にセットされた分割データを、印刷ヘッド5に転送するサブルーチンの処理手順について説明する。図13のフローチャートに従って処理を実行するサブルーチンは、1ライン分の印刷が行われる度に、分割数分だけ呼び出される。また、フローチャートの中で使用される変数Put_cntと、分割バッファ132及び分割バッファ133のいずれを転送先にするかを指定するためのバッファ切り替えフラグchg_flgと、ヘッド転送回数を表す所定の変数は、それぞれ最初は初期設定されている(値0がセットされている)ものとする。
【0061】
まず最初に、ステップS51において、転送回数を表す変数Put_cntの値が2より小さいか否かが判定される。変数Put_cntの値が2より大きいか又は等しいと判定された場合、ステップS57に進む。一方、変数Put_cntの値が2より小さいと判定された場合、ステップS52に進み、図4のフローチャートを参照して上述した手順で分割数が算出される。次に、ステップS53において、図5のフローチャートを参照して上述した手順でストローブ時間が算出される。
【0062】
次に、ステップS54において、図6のフローチャートを参照して上述した手順で分割データが、分割バッファ132及び分割バッファ133のうちのバッファ切り替えフラグchg_flgで指定されるものの各バッファ#1乃至#nにセットされる。その後、ステップS55に進み、変数Put_cntの値に1が加算される。
【0063】
そして、ステップS56において、分割バッファ132と分割バッファ133のいずれかを指定するためのバッファ切り替えフラグchg_flgの値が反転される。即ち、バッファ切り替えフラグchg_flgの値が0と1とで交互に変化するような処理が実行される。
【0064】
具体的には、図6を参照して上述したように、バッファ切り替えフラグchg_flgの値に1を加算したものと1との間で論理積演算を行うことにより、バッファ切り替えフラグchg_flgの値が0,1,0,1,0,1、...というように交互に変化し、分割バッファ132と分割バッファ133が分割データの転送先として交互に指定されるようにする。例えば、バッファ切り替えフラグchg_flgの値が0のときは、分割バッファ132に分割データが転送され、バッファ切り替えフラグchg_flgの値が1のときは、分割バッファ133に分割データが転送される。
【0065】
次に、ステップS57において、変数Put_cntの値が0より大きいか否かが判定される。変数Put_cntの値が0のとき、リターンする。一方、分割バッファ132への分割データのセットが行われると、変数Put_cntの値はステップS55における処理により0より大きくなるので、ステップS58に進み、分割バッファ132にセットされた分割データの印刷ヘッド5への転送が行われ、ヘッド転送回数を表す所定の変数の値に1が加算される。
【0066】
次に、ステップS59において、分割数とヘッド転送回数とが一致するか否かが判定される。分割数とヘッド転送回数とが一致しないと判定された場合、1ライン分の印刷がまだ終了していないと判断され、リターンする。一方、分割数とヘッド転送回数とが一致すると判定された場合、1ライン分の印刷が終了したものと判断され、ステップS60に進み、変数Put_cntの値から1だけ減算され、リターンする。その後、再度このサブルーチンが呼び出され、次のラインの処理が行われる。
【0067】
次に、具体例について説明する。最初、変数Put_cntの値は0であるので、ステップS51において変数Put _cntの値は2より小さいと判定され、ステップS52に進み、分割数が算出される。この場合、分割数は3とする。次に、ステップS53においてストローブ時間が算出され、ステップS54において、分割データが分割バッファ132の各バッファにセットされる。
【0068】
いまの場合、分割数は3であるので、描画バッファ131に図11に示すような印刷データが格納されているとすると、分割バッファ132のバッファ#1には、図12(A)に示すような分割データがセットされる。そして、分割バッファ132のバッファ#2には、図12(B)に示すような分割データがセットされる。また、分割バッファ132のバッファ#3には、図12(C)に示すような分割データがセットされる。
【0069】
次に、ステップS55において、変数Put_cntの値に1が加算される。
いまの場合、1とされる。そして、バッファ切り替えフラグchg_flgの値が反転される。いまの場合、0から1に反転される。
【0070】
次に、ステップS57において、変数Put_cntの値が0より大きいか否かが判定される。いまの場合、変数Put_cntの値は1であるので、0より大きいと判定され、ステップS58に進む。ステップS58においては、分割バッファ132のバッファ#1にセットされた分割データが印刷ヘッド5に転送されるとともに、ヘッド転送回数の値に1が加算される。最初、ヘッド転送回数は0であるので、いまの場合1となる。印刷ヘッド5は、転送されてきた分割データに従って印刷を実行する。
【0071】
次に、ステップS59において、分割数(いまの場合3)とヘッド転送回数とが等しいか否かが判定される。いまの場合、分割数である3と、ヘッド転送回数である1とは等しくないので、そのままリターンする。
【0072】
そして、このサブルーチンが再度呼び出され、ステップS51以降の処理が繰り返し実行される。いま、変数Put_cntの値は1であるので、ステップS52乃至ステップS54の処理が実行され、次のラインの分割数とストローブ時間が計算される。そして、いま、バッファ切り替えフラグchg_flgの値は1であるので、分割バッファ133の各バッファ(この場合、バッファ#1乃至バッファ#3)に分割データがセットされる。
【0073】
次に、ステップS55において変数Put_cntの値に1が加算されて2とされた後、ステップS56においてバッファ切り替えフラグchg_flgの値が反転されて0とされる。
【0074】
次に、ステップS57において、変数Put_cntの値が0より大きいと判定され、ステップS58に進み、既に分割バッファ132にセットされているバッファ#2の分割データが印刷ヘッド5に転送され、ヘッド転送回数の値に1が加算され、いまの場合2とされる。印刷ヘッド5は、転送されてきた分割データに従って印刷を実行する。
【0075】
ステップS59においては、分割数とヘッド転送回数が等しいか否かが判定される。いまの場合、分割数が3、ヘッド転送回数が2であるので、等しくないと判定され、リターンする。
【0076】
そして、このサブルーチンが再度呼び出され、ステップS51以降の処理が繰り返し実行される。いま、変数Put_cntの値は2であるので、ステップS52乃至ステップS56の処理は実行されず、ステップS57に進む。
【0077】
ステップS57においては、変数Put_cntの値(いまの場合2)が0より大きいと判定され、ステップS58に進み、既に分割バッファ132にセットされているバッファ#3の分割データが印刷ヘッド5に転送され、ヘッド転送回数の値に1が加算され、いまの場合3とされる。印刷ヘッド5は、転送されてきた分割データに従って印刷を実行する。これにより、最初の1ライン分の印刷が終了する。
【0078】
ステップS59においては、分割数とヘッド転送回数が等しいか否かが判定される。いまの場合、分割数が3、ヘッド転送回数が3であるので、等しいと判定され、ステップS60に進み、Put_cntの値から1が減算される。いまの場合、1(=2−1)とされる。その後、リターンする。以降、上述した場合と同様に、このサブルーチンが呼び出され、次のラインの印刷が行われる。
【0079】
図14乃至図17は、分割バッファ132及び分割バッファ133の各バッファにセットされた印刷データを印刷ヘッド5に転送するタイミングと、印刷ヘッド5に転送された各バッファの印刷データがストローブ時間で印刷されるタイミングを表している。
【0080】
図14は、一括印刷を行う場合のデータ転送と印刷のタイミングの例を示しており、図15は印刷データを2分割して印刷する場合のデータ転送と印刷のタイミングの例を示している。また、図16は、印刷データを3分割して印刷する場合のデータ転送と印刷のタイミングの例を示しており、図17は印刷データを4分割して印刷する場合のデータ転送と印刷のタイミングの例を示している。
【0081】
図14に示した一括印刷を行う場合は、印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行される。図15に示した2分割印刷を行う場合は、2分割され、分割バッファ132又は分割バッファ133のバッファ#1にセットされた印刷データ(分割データ)が印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行され、次に、バッファ#2にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行される。
【0082】
また、図16に示した3分割印刷を行う場合は、印刷データが3分割され、分割バッファ132又は分割バッファ133のバッファ#1にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行され、次に、バッファ#2にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行される。さらに、バッファ#3にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行される。
【0083】
また、図17に示した4分割印刷を行う場合は、印刷データが4分割され、分割バッファ132又は分割バッファ133のバッファ#1にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行され、次に、バッファ#2にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行される。そして、バッファ#3にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行される。さらに、バッファ#4にセットされた印刷データが印刷ヘッド5に転送された後、計算されたストローブ時間で印刷が実行される。
【0084】
図13に示したフローチャートでは、分割バッファ132,133に分割データをセットする処理と、印刷ヘッド5に分割データを転送する処理とを順番に行うようにしたが、これらの処理を並行して行うようにすることも可能である。その場合、分割バッファ132に分割データをセットしている間に、分割バッファ133にすでにセットされた分割データを印刷ヘッド5に転送し、分割バッファ133に分割データをセットしている間に、分割バッファ132にすでにセットされた分割データを印刷ヘッド5に転送するようにする。
【0085】
このように、分割バッファ132,133に分割データをセットする処理と、印刷ヘッド5に分割データを転送する処理とを並行して行うようにすると、印刷処理を停止することなく連続して行うことができるので、高速印刷が可能になる。
【0086】
以上説明したように、本実施の形態により、次のような効果を得ることができる。即ち、分割数を計算により求めるようにしたので、従来のように、オンドット数に応じた分割数をメモリ上のテーブルに予め記憶しておく必要がなくなるため、メモリを削減してコストを下げるとともに、従来よりも細かな制御を行うことが可能となる。
【0087】
なお、上記実施の形態において用いた具体的な値は例であってこれに限定されるものではない。
【0088】
また、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更することができる。
【0089】
【発明の効果】
以上の如く、本発明に係る印刷装置および印刷方法によれば、印刷すべき印刷データを記憶し、記憶された印刷データを複数の分割データに分割するときの分割数を演算し、印刷データのオンドット数に基づいて、記憶された印刷データを、演算された分割数分の複数の分割データに分割し、分割された各分割データを記憶し、記憶された各分割データを順に印刷ヘッドに転送し、転送された分割データのオンドット数に基づいて、発熱体に供給する電流を制御するようにしたので、メモリを削減してコストを下げることが可能となる。また、印刷ヘッドに供給する電流値を従来よりも細かく制御することが可能となり、印刷の品質を上げることができる。
【図面の簡単な説明】
【図1】本発明が適用されるラベルプリンタの一実施の形態の構成例を示すブロック図である。
【図2】図1の制御部の詳細な構成例を示すブロック図である。
【図3】印刷ヘッドの構成例を示す図である。
【図4】分割数の算出方法を説明するためのフローチャートである。
【図5】ストローブ時間の算出方法を説明するためのフローチャートである。
【図6】印刷データの分割方法を説明するためのフローチャートである。
【図7】描画バッファと分割バッファの構成例を示すブロック図である。
【図8】描画バッファと分割バッファの構成例を示すブロック図である。
【図9】分割バッファの構成例を示す図である。
【図10】分割バッファの構成例を示す図である。
【図11】印刷データの例を示す図である。
【図12】分割データの例を示す図である。
【図13】分割データのセットとヘッド転送の手順を説明するためのフローチャートである。
【図14】一括印刷のタイムチャートである。
【図15】二分割印刷のタイムチャートである。
【図16】三分割印刷のタイムチャートである。
【図17】四分割印刷のタイムチャートである。
【符号の説明】
1 ラベル
2 台紙
3 ラベル連続体
4 供給軸
5 印刷ヘッド
6 プラテンローラ
7 ステッピングモータ
8 ベルト
9 位置検出センサ
10 制御部
11 CPU
12 ROM
13 RAM
14 モータ制御部
15 印刷制御部
16 センサ制御部
17 外部インタフェース
18 入力部
19 モニタ
20 インタフェース
131 描画バッファ
132,133 分割バッファ[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a printing apparatus and a printing method, and in particular, a plurality of heating elements constituting a print head are divided into several groups according to the number of on-dots, and current is supplied to each group to improve print quality. The present invention relates to a printing apparatus and a printing method.
[0002]
[Prior art]
2. Description of the Related Art Conventionally, in a thermal printer as a printing apparatus, a thermal head that performs printing is composed of a plurality of heating elements, and by passing a current through each heating element, characters or dots consisting of a plurality of dots on a thermal paper in contact with the heating element. A printed image such as a figure can be printed. Therefore, according to the print image, current is supplied to the heating element corresponding to the black dots, and current is not supplied to the heating element corresponding to the non-black dots, so that the print image composed of a plurality of dots is provided. Can be printed.
[0003]
In addition, in the case of a small battery-driven portable printer, there is a limit to the amount of current that can be passed to the thermal head, so the number of dots corresponding to the heating element to which current should flow, that is, the number of on dots (on dots The number is divided into a plurality of groups, and a current is passed through the heating elements corresponding to the dots belonging to each group in turn for each group. Thereby, division printing is possible.
[0004]
The number of divisions corresponding to the number of on dots required for division printing is stored in advance in a table on a predetermined memory, and division processing is performed by referring to the number of divisions from the table according to the number of on dots. It was.
[0005]
[Problems to be solved by the invention]
However, with the conventional method, the processing time required for the process of deriving the number of divisions can be shortened, but there is a problem that it is not possible to perform control that performs fine division processing according to the number of on dots. In addition, if fine data indicating the number of divisions corresponding to the number of on-dots is set in order to finely control the table configuration in the memory for fine control, a large memory capacity is required, which increases the cost. It was.
[0006]
The present invention has been made in view of such a situation, and a division for dividing an on dot when printing one line of a thermal head from values such as a battery voltage, a thermal head resistance, and the number of on dots. The number is calculated by calculation so that the current flowing through the heating element of the thermal head corresponding to the divided on dots can be finely controlled.
[0007]
[Means for Solving the Problems]
The printing apparatus according to
Also,A plurality of divided data storage means are provided, and the divided data can be alternately stored.
ContractClaim3The printing method described in 1 is a printing method in which current is supplied to a print head composed of a plurality of heating elements, and printing is performed. The printing data storage step stores printing data to be printed, and the printing data storage step stores the printing data. The number of divisions when dividing the printed data into multiple division dataBased on at least the voltage applied to the print head, the resistance value of the print head, the number of on-dots of print data to be printed, and the maximum current value that can be supplied to the print headBased on the calculation step to be calculated and the number of on dots of the print data, the print data stored in the print data storage step is divided into a plurality of divided data corresponding to the number of divisions calculated in the calculation step.At the same time, the print data is divided so that the number of on dots of each of the divided data is substantially equal.A division step, a division data storage step for storing each division data divided in the division step, a transfer step for sequentially transferring each division data stored in the division data storage step to the print head, and a transfer step. And a control step for controlling the current supplied to the heating element based on the number of ON dots in the divided data..
[0008]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 shows a configuration example of an embodiment of a portable label printer to which the present invention is applied. As shown in the figure, the label printer includes a
[0009]
FIG. 2 is a block diagram showing an example of the electrical configuration of the embodiment of FIG. As shown in the figure, a
[0010]
As shown in FIG. 3, the
[0011]
As will be described later with reference to FIGS. 7 and 8, the
[0012]
When the limit of the battery capacity is relatively low, such as a battery-driven portable label printer, all the heat generation corresponding to the on-dot among the
[0013]
Next, referring to the flowchart of FIG. 4, dots corresponding to the
[0014]
First, in step S1, a voltage (head voltage (battery voltage)) applied to the
[0015]
Next, the process proceeds to step S3, where the head resistance value is set based on the head status read in step S2. Next, in step S4, a current value per dot is calculated. The current value per dot can be calculated by the following equation (1).
[0016]
Current value per dot = head voltage / head resistance value (Formula 1)
[0017]
For example, if the head voltage is 14.8 volts (V) and the head resistance value is 450 ohms (Ω),
It becomes.
[0018]
In step S5, the number of on dots is read. The number of on dots is the number of dots corresponding to the
This can be calculated from the print data developed in the drawing buffer 131 (FIGS. 7 and 8), as will be described later. Now, it is assumed that the width (head width) of the
[0019]
Next, in step S6, the total current value is calculated from the following equation (2).
[0020]
Total current value = number of ON dots × current value per dot (Formula 2)
[0021]
In this case, the number of on dots is 130 dots, and the current value per dot is 32.8 mA.
It becomes.
[0022]
Next, the number of divisions and the remainder are calculated from the following equation (3).
[0023]
Number of divisions = total current value / battery upper limit current value (Equation 3)
However, if there is a remainder, the number of divisions = the number of divisions + 1.
[0024]
That is, in step S7, in this case, the total current value is 4264 mA and the battery upper limit current value is 2500 mA.
It becomes.
[0025]
Next, in step S8, it is determined whether there is a remainder. If the remainder is 0, that is, it is determined that there is no remainder, the process proceeds to step S10. On the other hand, if it is determined that there is a remainder, in
It becomes.
[0026]
Next, proceeding to step S10, the number of on-dots at one time is calculated from the following equation (4).
[0027]
Number of on dots at one time = number of on dots / number of divisions (Formula 4)
[0028]
In this case, the number of on dots is 130 dots and the number of divisions is 2.
It becomes.
[0029]
Next, a method for calculating the strobe time, that is, the time for supplying a current to the
[0030]
Next, the process proceeds to step S23, where the head resistance value is set based on the head status read in step S22.
[0031]
Next, in step S24, the head applied power is calculated by the following equation (5).
[0032]
Head applied power = (Head voltage−VL)2/ (Head resistance value + PL) ... (Formula 5)
Where VLRepresents the voltage drop of the head (the amount of loss until the voltage is applied to the heating element), PLRepresents the power loss. VLValue and PLThe value of varies depending on the head manufacturer and the type of head.
[0033]
Here, to simplify the explanation, VL= 0, PL= 0. In this case, the head voltage is 14.8V and the head resistance value is 450Ω.
It becomes.
[0034]
In step S25, necessary applied energy stored in advance in the
[0035]
Next, in step S26, the strobe time is calculated by the following equation (6).
[0036]
Strobe time = required applied energy / applied power (Expression 6)
[0037]
In this case, the required applied energy is 0.3 millijoule (mJ) and the applied power is 0.5 mW.
It becomes. Thereafter, the process ends.
[0038]
When the division number and the strobe time corresponding to the number of on dots are calculated in this way, the print data corresponding to the on dot of the print data set in the
[0039]
Here, as shown in FIG. 9, it is assumed to be composed of the first divided buffer through the 15th buffer capable of storing data for a head width of 108 bytes. Hereinafter, the buffer in the first division is referred to as
[0040]
Next, referring to the flowchart of FIG. 6, two buffers corresponding to the maximum number of divisions are prepared, and after calculating the number of divisions, one line of print data set in the drawing buffer is stored in the division buffers 132 and 133. A procedure for transfer to each buffer will be described. Initially, it is assumed that the value of the buffer switching flag chg_flg is set to 0, and the print data is transferred to the division buffer 132.
[0041]
First, in step S31, the head address where the print data of the
[0042]
In step S34, one byte of print data (hereinafter simply referred to as data) is read from the address of the
[0043]
Next, in step S37, 1 is added to the value of the address of the division buffer 132. Next, in step S38, the number of on-dots (number of bits having a value of 1) of 1-byte data read from the drawing
[0044]
Next, the process proceeds to step S40, where the total number of on dots of data written to the nth buffer, that is, the value of the total work and the number of on dots per division calculated by the method described above with reference to FIG. The number of dots is compared. Next, in step S41, when the total work value is smaller than the number of on dots per division as a result of the comparison in step S40, the process returns to step S34, and the processes in and after step S34 are repeatedly executed.
[0045]
On the other hand, in step S41, if the result of the comparison in step S40 is that the total work value is greater than or equal to the number of on dots per division, the process proceeds to step S42.
[0046]
In step S42, the division buffer 132 switches the buffer for writing data to the next buffer. In this case, since writing is performed in the nth buffer, 1 is added to the value of n so that writing is performed in the next buffer. For example, when the value of n is 1, 1 is added to the value of n so that writing is performed in the next buffer, that is, the second buffer.
[0047]
Next, the process proceeds to step S43, where it is determined whether or not the above process has been performed for the number of divisions. If it is determined that the process has not been performed for the number of divisions yet, the process returns to step S34 and the processes after step S34 are performed. Run repeatedly. On the other hand, if it is determined that the processing from step S34 to step S42 has been performed for the number of divisions, the process proceeds to step S44, and the value of the buffer switching flag chg_flg, which is a variable for instructing switching of the divided
[0048]
If the buffer switching flag chg_flg is a variable represented by, for example, 8 bits, when the value of the buffer switching flag chg_flg is 0, that is, 00000000, adding 1 to the value of the buffer switching flag chg_flg is 1, that is, 00000001. Therefore, when the logical product of 00000001 and 00000001 is calculated, the calculation result is 1. Further, when the value of the buffer switching flag chg_flg is 1, that is, 00000001, if 1 is added to the value of the buffer switching flag chg_flg, the result is 2, that is, 00000010. It becomes.
[0049]
Thus, the value of the buffer switching flag chg_flg is switched between 0 and 1 alternately. When the value of the buffer switching flag chg_flg is 0, data is written to the divided buffer 132, and when the value of the buffer switching flag chg_flg is 1, data is written to the divided
[0050]
When the process of step S44 ends, the process ends. Thereafter, the same processing as described above is performed for the print data of the next line, and the divided buffer switched in step S44, in this case, the divided
[0051]
For example, as illustrated in FIG. 11, it is assumed that print data with an on-dot number of 252 is stored in the
[0052]
In this way, as shown in FIG. 12A, FIG. 12B, and FIG. 12C, each of the
[0053]
For example, in FIG. 11,
[0054]
That is, “00” is expressed in hexadecimal, “00” is expressed as “00000000” when expressed in binary, and the number having 1 bit is 0. When “01” is expressed in binary, it becomes “00000001”, and the number having 1 bit is 1. That is, when 0 to 15 (F in hexadecimal notation) is expressed in binary, the number with 1 bit is as follows.
[0055]
The number of 0 (= 0000) bit is 1 is 0
The number of 1 (= 0001) bits is 1
Number of 2 (= 0010) bits is 1
The number of 3 (= 0011) bits being 1 is 2
The number of 4 (= 0100) bits being 1 is 1
The number of 5 (= 0101) bits being 1 is 2
The number of 6 (= 0110) bits being 1 is 2
The number of 7 (= 0111) bits being 1 is 3
The number of 1s with 8 (= 1000) bits is 1
The number of 9 (= 1001) 1 bits is 2
The number of 1's in A (= 1010) is 2
The number of B's (= 1011) with 1 is 3
The number of 1's in C (= 1100) is 2
The number of bits with 1 in D (= 1101) is 3
The number of 1's in E (= 1110) is 3
The number of F (= 1111) bits being 1 is 4
[0056]
For example, the number of 1 bits of data “1A” is 3 (= 1 + 2), and the number of 1 bits of data “21” is 2 (= 1 + 1). In this way, when the number of on dots of each byte is calculated and sequentially added, the total number of on dots is obtained.
[0057]
Therefore, the data “00”, “01”, “02”, “03”,. . . , “20” and “21” each add 1 number (number of on dots) to 83, and the next data “22” bit adds 1 number (= 2) to 85. The data after data “22” is transferred to
[0058]
In this way, as shown in FIGS. 12A, 12B, and 12C, data (divided data) is transferred to the
[0059]
As described above, since the number of 1 bits of data transferred to the
[0060]
Next, referring to the flowchart of FIG. 13, a processing procedure of a subroutine for alternately setting the divided data in the divided
[0061]
First, in step S51, it is determined whether or not the value of the variable Put_cnt representing the number of transfers is smaller than 2. When it is determined that the value of the variable Put_cnt is greater than or equal to 2, the process proceeds to step S57. On the other hand, when it is determined that the value of the variable Put_cnt is smaller than 2, the process proceeds to step S52, and the division number is calculated by the procedure described above with reference to the flowchart of FIG. Next, in step S53, the strobe time is calculated according to the procedure described above with reference to the flowchart of FIG.
[0062]
Next, in step S54, the divided data is stored in the
[0063]
In step S56, the value of the buffer switching flag chg_flg for designating either the division buffer 132 or the
[0064]
Specifically, as described above with reference to FIG. 6, the value of the buffer switching flag chg_flg is set to 0 by performing an AND operation between the value obtained by adding 1 to the value of the buffer switching flag chg_flg and 1. , 1, 0, 1, 0, 1,. . . Thus, the divided buffer 132 and the divided
[0065]
Next, in step S57, it is determined whether or not the value of the variable Put_cnt is greater than zero. When the value of the variable Put_cnt is 0, the process returns. On the other hand, when the divided data is set in the divided buffer 132, the value of the variable Put_cnt becomes larger than 0 by the process in step S55, so that the process proceeds to step S58 and the
[0066]
Next, in step S59, it is determined whether or not the number of divisions matches the number of head transfers. If it is determined that the number of divisions does not match the number of head transfers, it is determined that printing for one line has not yet been completed, and the process returns. On the other hand, if it is determined that the number of divisions matches the number of head transfers, it is determined that printing for one line has been completed, the process proceeds to step S60, 1 is subtracted from the value of the variable Put_cnt, and the process returns. Thereafter, this subroutine is called again, and the next line is processed.
[0067]
Next, a specific example will be described. Initially, since the value of the variable Put_cnt is 0, it is determined in step S51 that the value of the variable Put_cnt is smaller than 2, and the process proceeds to step S52 where the number of divisions is calculated. In this case, the number of divisions is 3. Next, the strobe time is calculated in step S53, and the divided data is set in each buffer of the divided buffer 132 in step S54.
[0068]
In this case, since the number of divisions is 3, assuming that print data as shown in FIG. 11 is stored in the
[0069]
Next, in step S55, 1 is added to the value of the variable Put_cnt.
In this case, it is 1. Then, the value of the buffer switching flag chg_flg is inverted. In this case, it is inverted from 0 to 1.
[0070]
Next, in step S57, it is determined whether or not the value of the variable Put_cnt is greater than zero. In this case, since the value of the variable Put_cnt is 1, it is determined that the value is larger than 0, and the process proceeds to step S58. In step S58, the divided data set in the
[0071]
Next, in step S59, it is determined whether or not the number of divisions (currently 3) is equal to the number of head transfers. In this case, since the
[0072]
Then, this subroutine is called again, and the processes after step S51 are repeatedly executed. Now, since the value of the variable Put_cnt is 1, the processing from step S52 to step S54 is executed, and the division number and strobe time of the next line are calculated. Since the value of the buffer switching flag chg_flg is now 1, the divided data is set in each buffer of the divided buffer 133 (in this case,
[0073]
Next, in step S55, 1 is added to the value of the variable Put_cnt to set it to 2, and in step S56, the value of the buffer switching flag chg_flg is inverted to 0.
[0074]
Next, in step S57, it is determined that the value of the variable Put_cnt is greater than 0, and the process proceeds to step S58, where the divided data in the
[0075]
In step S59, it is determined whether the number of divisions is equal to the number of head transfers. In this case, since the number of divisions is 3 and the number of head transfers is 2, it is determined that they are not equal and the process returns.
[0076]
Then, this subroutine is called again, and the processes after step S51 are repeatedly executed. Now, since the value of the variable Put_cnt is 2, the process from step S52 to step S56 is not executed, and the process proceeds to step S57.
[0077]
In step S57, it is determined that the value of the variable Put_cnt (2 in this case) is greater than 0, and the process proceeds to step S58, where the divided data of
[0078]
In step S59, it is determined whether the number of divisions is equal to the number of head transfers. In this case, since the number of divisions is 3 and the number of head transfers is 3, it is determined that they are equal, and the process proceeds to step S60, where 1 is subtracted from the value of Put_cnt. In this case, 1 (= 2-1) is set. Then return. Thereafter, as in the case described above, this subroutine is called to print the next line.
[0079]
14 to 17 show the timing at which the print data set in each buffer of the division buffer 132 and the
[0080]
FIG. 14 shows an example of data transfer and printing timing when performing batch printing, and FIG. 15 shows an example of data transfer and printing timing when printing data is divided into two. FIG. 16 shows an example of data transfer and printing timing when printing data is divided into three, and FIG. 17 is a timing of data transfer and printing when printing data is divided into four. An example is shown.
[0081]
When batch printing shown in FIG. 14 is performed, printing is executed in the calculated strobe time after print data is transferred to the
[0082]
In the case of performing the three-division printing shown in FIG. 16, the print data is divided into three, the print data set in the
[0083]
In the case of performing the four-division printing shown in FIG. 17, the print data is divided into four, and after the print data set in the
[0084]
In the flowchart shown in FIG. 13, the process of setting the divided data in the division buffers 132 and 133 and the process of transferring the divided data to the
[0085]
As described above, when the process of setting the divided data in the divided
[0086]
As described above, according to the present embodiment, the following effects can be obtained. That is, since the number of divisions is obtained by calculation, there is no need to previously store the number of divisions corresponding to the number of on-dots in a table on the memory as in the prior art, thus reducing the memory and reducing the cost. At the same time, finer control than before can be performed.
[0087]
In addition, the specific value used in the said embodiment is an example, and is not limited to this.
[0088]
The configuration and operation of the above-described embodiment are examples, and can be appropriately changed without departing from the gist of the present invention.
[0089]
【The invention's effect】
As described above, according to the printing apparatus and the printing method of the present invention, the print data to be printed is stored, the number of divisions when dividing the stored print data into a plurality of divided data is calculated, and the print data Based on the number of on dots, the stored print data is divided into a plurality of divided data for the calculated number of divisions, each divided data is stored, and each stored divided data is sequentially applied to the print head. Since the current supplied to the heating element is controlled based on the number of ON dots of the transferred divided data, the memory can be reduced and the cost can be reduced. In addition, the current value supplied to the print head can be controlled more finely than before, and the printing quality can be improved.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating a configuration example of an embodiment of a label printer to which the present invention is applied.
FIG. 2 is a block diagram illustrating a detailed configuration example of a control unit in FIG. 1;
FIG. 3 is a diagram illustrating a configuration example of a print head.
FIG. 4 is a flowchart for explaining a division number calculation method;
FIG. 5 is a flowchart for explaining a method of calculating a strobe time.
FIG. 6 is a flowchart for explaining a print data dividing method;
FIG. 7 is a block diagram illustrating a configuration example of a drawing buffer and a division buffer.
FIG. 8 is a block diagram illustrating a configuration example of a drawing buffer and a division buffer.
FIG. 9 is a diagram illustrating a configuration example of a division buffer.
FIG. 10 is a diagram illustrating a configuration example of a division buffer.
FIG. 11 is a diagram illustrating an example of print data.
FIG. 12 is a diagram illustrating an example of divided data.
FIG. 13 is a flowchart for explaining a procedure of setting divided data and head transfer.
FIG. 14 is a time chart for batch printing.
FIG. 15 is a time chart of two-division printing.
FIG. 16 is a time chart of three-division printing.
FIG. 17 is a time chart of quadrant printing.
[Explanation of symbols]
1 label
2 Mount
3 Label continuum
4 Supply shaft
5 Print head
6 Platen roller
7 Stepping motor
8 belt
9 Position detection sensor
10 Control unit
11 CPU
12 ROM
13 RAM
14 Motor controller
15 Print control unit
16 Sensor controller
17 External interface
18 Input section
19 Monitor
20 interfaces
131 Drawing buffer
132,133 split buffer
Claims (3)
印刷すべき印刷データを記憶する印刷データ記憶手段と、
前記印刷データ記憶手段によって記憶された前記印刷データを複数の分割データに分割するときの分割数を、少なくとも前記印刷ヘッドに掛かる電圧、前記印刷ヘッドの抵抗値、印刷すべき前記印刷データのオンドット数、並びに、前記印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算手段と、
前記印刷データのオンドット数に基づいて、前記印刷データ記憶手段によって記憶された前記印刷データを、前記演算手段によって演算された前記分割数分の複数の前記分割データに分割するとともに、前記分割データの各々のオンドット数がほぼ等しくなるように、前記印刷データを分割する分割手段と、
前記分割手段によって分割された各分割データを記憶する分割データ記憶手段と、
前記分割データ記憶手段によって記憶された各分割データを順に前記印刷ヘッドに転送する転送手段と、
前記転送手段によって転送された前記分割データのオンドット数に基づいて、前記発熱体に供給する電流を制御する制御手段と
を備えることを特徴とする印刷装置。A printing apparatus that performs printing by supplying current to a print head including a plurality of heating elements,
Print data storage means for storing print data to be printed;
The number of divisions when dividing the print data stored by the print data storage means into a plurality of divided data includes at least the voltage applied to the print head, the resistance value of the print head, and the on-dots of the print data to be printed A computing means for computing based on the number and the maximum current value that can be supplied to the print head ;
Based on the number of on-dots of the print data, the print data stored by the print data storage unit is divided into a plurality of the divided data corresponding to the division number calculated by the calculation unit , and the divided data Dividing means for dividing the print data so that the number of on-dots of each is substantially equal ;
Divided data storage means for storing each divided data divided by the dividing means;
Transfer means for sequentially transferring each divided data stored by the divided data storage means to the print head;
And a control unit that controls a current supplied to the heating element based on the number of ON dots of the divided data transferred by the transfer unit.
印刷すべき印刷データを記憶する印刷データ記憶ステップと、
前記印刷データ記憶ステップにおいて記憶された前記印刷データを複数の分割データに分割するときの分割数を、少なくとも前記印刷ヘッドに掛かる電圧、前記印刷ヘッドの抵抗値、印刷すべき前記印刷データのオンドット数、並びに、前記印刷ヘッドに供給可能な最大の電流値に基づいて演算する演算ステップと、
前記印刷データのオンドット数に基づいて、前記印刷データ記憶ステップにおいて記憶された前記印刷データを、前記演算ステップにおいて演算された前記分割数分の複数の前記分割データに分割するとともに、前記分割データの各々のオンドット数がほぼ等しくなるように、前記印刷データを分割する分割ステップと、
前記分割ステップにおいて分割された各分割データを記憶する分割データ記憶ステップと、
前記分割データ記憶ステップにおいて記憶された各分割データを順に前記印刷ヘッドに転送する転送ステップと、
前記転送ステップにおいて転送された前記分割データのオンドット数に基づいて、前記発熱体に供給する電流を制御する制御ステップとを備えることを特徴とする印刷方法。A printing method for performing printing by supplying current to a print head composed of a plurality of heating elements,
A print data storage step for storing print data to be printed;
The number of divisions when dividing the print data stored in the print data storage step into a plurality of divided data includes at least a voltage applied to the print head, a resistance value of the print head, and an on-dot of the print data to be printed A calculation step of calculating based on the number and the maximum current value that can be supplied to the print head ;
Based on the number of on-dots of the print data, the print data stored in the print data storage step is divided into a plurality of pieces of the divided data calculated in the calculation step, and the divided data A dividing step of dividing the print data so that the number of on-dots of each is substantially equal ;
A divided data storage step for storing each divided data divided in the dividing step;
A transfer step of sequentially transferring each divided data stored in the divided data storage step to the print head;
And a control step of controlling a current supplied to the heating element based on the number of ON dots of the divided data transferred in the transfer step.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000136574A JP4576021B2 (en) | 2000-05-10 | 2000-05-10 | Printing apparatus and printing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000136574A JP4576021B2 (en) | 2000-05-10 | 2000-05-10 | Printing apparatus and printing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001315372A JP2001315372A (en) | 2001-11-13 |
JP4576021B2 true JP4576021B2 (en) | 2010-11-04 |
Family
ID=18644497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000136574A Expired - Fee Related JP4576021B2 (en) | 2000-05-10 | 2000-05-10 | Printing apparatus and printing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4576021B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008200873A (en) * | 2007-02-16 | 2008-09-04 | Ricoh Printing Systems Ltd | Dot line printer and its print controlling method |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016026922A (en) * | 2014-07-07 | 2016-02-18 | セイコーエプソン株式会社 | Printer, printer control method, and storage medium |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07329336A (en) * | 1994-06-08 | 1995-12-19 | Matsushita Electric Ind Co Ltd | Thermal printer |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01152075A (en) * | 1987-12-10 | 1989-06-14 | Casio Comput Co Ltd | Line printer |
-
2000
- 2000-05-10 JP JP2000136574A patent/JP4576021B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07329336A (en) * | 1994-06-08 | 1995-12-19 | Matsushita Electric Ind Co Ltd | Thermal printer |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008200873A (en) * | 2007-02-16 | 2008-09-04 | Ricoh Printing Systems Ltd | Dot line printer and its print controlling method |
Also Published As
Publication number | Publication date |
---|---|
JP2001315372A (en) | 2001-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100302335A1 (en) | Thermal Printer | |
KR900014137A (en) | Thermal Transfer Printers for Portable Data Terminals | |
US5543828A (en) | Recording apparatus having a print head drive apparatus with an IC drive circuit employing shift registers for handling drive data in sequential fashion and a method for driving the print head | |
JPH0789115A (en) | Thermal printer | |
JP4576021B2 (en) | Printing apparatus and printing method | |
US5548319A (en) | Gradation data method processing including repeated reading and recording of high density data | |
JP3327418B2 (en) | Printhead modulator | |
JPS62256574A (en) | Imaging device | |
JP6302880B2 (en) | Thermal printer | |
JPH08258313A (en) | Thermal printer | |
JP7165503B2 (en) | Thermal printer and print control method | |
JP4046816B2 (en) | Thermal head drive device | |
JPH0752433A (en) | Thermal line printer and recording method used for printer | |
JP2021008059A (en) | Printer | |
JP2506623B2 (en) | Gradation control device in printer | |
JP2001180030A (en) | Thermal head and thermal printer | |
KR0134344B1 (en) | The counting apparatus for the numbers of simultaneous heating dots | |
JP3586324B2 (en) | Thermal line printer and driving method of thermal line printer | |
JP3278271B2 (en) | Printing device | |
JPH02158356A (en) | Printer | |
JPH0550643A (en) | Printer device | |
JPH0624944U (en) | Thermal head controller | |
JPH01184163A (en) | Thermal recording apparatus | |
JPH06262793A (en) | Multi-gradation thermal recorder | |
JPH0248969A (en) | Density correcting circuit of gradation printing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070507 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100208 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100402 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100726 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100823 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130827 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130827 Year of fee payment: 3 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130827 Year of fee payment: 3 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130827 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130827 Year of fee payment: 3 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130827 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |