JP4144169B2 - プリンタ - Google Patents

プリンタ Download PDF

Info

Publication number
JP4144169B2
JP4144169B2 JP2000245590A JP2000245590A JP4144169B2 JP 4144169 B2 JP4144169 B2 JP 4144169B2 JP 2000245590 A JP2000245590 A JP 2000245590A JP 2000245590 A JP2000245590 A JP 2000245590A JP 4144169 B2 JP4144169 B2 JP 4144169B2
Authority
JP
Japan
Prior art keywords
intermediate code
print
data
bands
band
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
Application number
JP2000245590A
Other languages
English (en)
Other versions
JP2002052762A (ja
Inventor
野 徳 重 角
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2000245590A priority Critical patent/JP4144169B2/ja
Publication of JP2002052762A publication Critical patent/JP2002052762A/ja
Application granted granted Critical
Publication of JP4144169B2 publication Critical patent/JP4144169B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、プリンタ、プリンタの制御方法、及び、そのためのプログラムを記録した記録媒体に関し、特に、実際に印刷エンジンを駆動した印刷を行う前に、アンダーランエラーが発生するか否かを検証するプリンタ、プリンタの制御方法、及び、そのためのプログラムを記録した記録媒体に関する。
【0002】
【従来の技術】
一般に、プリンタは、パーソナルコンピュータ等のホストコンピュータから受信した印刷データ(Printer Description Language)を、例えば、複数のバンドに区分して、1バンド毎に中間コードデータに変換し圧縮した上で、一旦、中間コードバッファに格納する。そして、この中間コードバッファから1バンド毎に中間コードデータを読み出して、バンドバッファにビットマップデータとして展開した上で、印刷エンジンに転送することにより印刷を行う。
【0003】
すなわち、プリンタの備えるメモリを効率的に使用するために印刷データを、1バンド毎に中間コードデータに変換した上で中間コードバッファに格納し、印刷を開始したのに応じて、バンド毎にバンドバッファにビットマップデータとして展開した上で、印刷エンジンに転送する。
【0004】
このような方式のプリンタのうち、レーザプリンタのような電子写真プロセスを用いたプリンタでは、通常、光書き込み系や感光体(ドラム)等から構成される印刷エンジンの印刷スピードは一定である。したがって、印刷を開始した後に、中間コードデータからビットマップデータへの展開が遅れてしまうと、印刷エンジン側のスピードに間に合わなくなる。このような状態をアンダーランエラー(オーバランエラーともいう)という。アンダーランエラーが生じると正常な印刷結果が得られなくなる。
【0005】
ここで、中間コードデータは、例えば、テキストデータの場合、各文字のビットマップデータとページ内の位置情報により、図形データの場合、その図形を規定したパスデータにより、イメージデータの場合、そのビットマップデータとページ内の位置情報により、構成される。このため、展開処理に長い時間が必要となる複雑な中間コードデータについては、中間コードの形式で印刷用のデータを保持するのではなく、事前にビットマップデータに展開してビットマップデータとして保持しておくことにより、上述のアンダーランエラーが発生しないようにしている。このような処理を事前展開処理という。
【0006】
【発明が解決しようとする課題】
しかしながら、中間コードデータがどの程度の複雑度を有する場合に、事前展開処理をすればよいのかを、正確に判断することは困難であり、そのしきい値を適切に設定することは難しかった。
【0007】
このため、ある程度の大きさのしきい値を設定し、実際に印刷を行い、アンダーランエラーが発生した場合には、複雑度のしきい値の設定を下げることにより、事前展開する中間コードデータの量を増やして、再度印刷を試みるしかなかった。このようにトライ・アンド・エラーにより印刷するため、複雑な印刷を行う場合には、同じ印刷を何度も繰り返さなければならず、正常な印刷結果を得るのに時間がかかってしまうという問題があった。
【0008】
そこで本発明は、前記課題に鑑みてなされたものであり、印刷エンジンを駆動した印刷を開始する前に、アンダーランエラーが発生するか否かを推定し、アンダーランエラーが発生しない条件に変更した上で、印刷を開始するようにしたプリンタを提供することを目的とする。
【0009】
【課題を解決するための手段】
上記課題を解決するため、本発明に係るプリンタは、受信した印刷データを中間コード生成手段により中間コードデータに変換し、1ページ画像を複数の画像バンドに分割した構成を有する中間コード格納手段の対応するバンドに前記中間コードデータを格納していき、1ページ分の前記中間コードデータが前記中間コード格納手段の各バンドに格納された後に、印刷実行手段が、前記中間コードデータを順次ビットマップデータに展開して、ビットマップデータ格納手段に格納し、前記ビットマップデータを印刷信号に変換した上で印刷エンジンに転送して、前記印刷エンジンを駆動した印刷を行う、プリンタであって、各ページ毎に、前記印刷信号を前記印刷エンジンに転送する処理時間が、前記中間コードデータを順次ビットマップデータに展開してビットマップデータ格納手段に格納する処理時間を下回って、アンダーランエラーが生じるか否かを、前記印刷エンジンを駆動した印刷を開始する前に検証する、検証手段を備え、
前記検証手段は、1ページ分の前記中間コード格納手段のバンド本数をNとし、iバンドの推測展開時間をTR(i)とし、ビットマップデータ格納手段のバンド本数をNUMとし、印刷実行手段における1バンド分の前記印刷信号の印刷エンジンへの転送時間をTDMAとした場合に、
【数2】
Figure 0004144169
の関係を満たす場合にアンダーランエラーが発生しないと推定し、この関係を満たさない場合にアンダーランエラーが発生すると推定するとともに、
前記印刷エンジンを駆動した印刷を開始する前に、所定数のバンド数分だけ前記中間コードデータを前記ビットマップデータに展開して、前記ビットマップデータ格納手段に格納しておく、初期展開手段をさらに備え、
前記検証手段が事前に検証した結果、アンダーランエラーが発生すると推定した場合には、前記初期展開手段で展開しておくバンド数を増やす、ことを特徴とする。
これにより、印刷エンジンを駆動した印刷を開始する前に、印刷するための各種の設定を、検証手段の検証結果に基づいて、変更することができ、アンダーランエラーが発生する可能性を可及的に低くすることができる。また、このように定量化してアンダーランエラーが発生するか否かを判断することにより、的確な推定判断をすることができる。さらに、初期展開手段で初期展開をすることにより、印刷信号を印刷エンジンに転送する処理時間が、中間コードデータを順次ビットマップデータに展開してビットマップデータ格納手段に格納する処理時間を下回りにくくなり、アンダーランエラーを発生しにくくできる。また、検証手段が事前に検証した結果、アンダーランエラーが発生すると推定した場合には、初期展開手段で展開しておくバンド数を増やすことにより、より一層、アンダーランエラーを発生しにくくできる。
【0011】
さらに、前記推測展開時間TR(i)は、中間コードデータの種類毎に展開時間を推測した値をテーブルとして保持する、ルックアップテーブルを検索することにより、定められるようにしてもよい。これにより、推測展開時間TR(i)を、容易に定めることができる。
【0012】
また、前記ビットマップデータ格納手段のバンドの高さは、前記1画像バンドのバンドの高さと同じであり、前記ビットマップデータ格納手段のバンド数は、前記中間コード格納手段のバンド数よりも、少ない数であり、前記ビットマップデータ格納手段の各バンドを順番に使い回して、前記ビットマップデータを順次格納していくようにしてもよい。これによりビットマップデータ格納手段の容量をできるだけ小さくすることができる。
【0015】
また、前記初期展開手段が初期展開するバンド数は、各ページ毎にその都度確保される数であるようにしてもよい。これにより、各ページ毎に初期展開するバンド数を変えることができる。
【0016】
一方、前記印刷エンジンを駆動した印刷を開始する前に、前記検証手段が事前に検証した結果に基づいて、所定数のバンド数分だけ前記中間コードデータを前記ビットマップデータに展開して、前記中間コード格納手段に格納しておく、事前展開手段をさらに備えるようにしてもよい。これにより、実際に印刷エンジンを駆動した印刷を開始した後の中間コードデータからビットマップデータに展開する時間をほとんどなくすことができ、アンダーランエラーを発生しにくくできる。
【0017】
また、前記事前展開手段は、前記検証手段が事前に検証した結果、アンダーランエラーが発生すると推定したタイミングにあるバンドの中間コードデータを、事前に展開しておくようにしてもよい。これにより、極めて効果的に事前展開するバンドを選択することができる。
【0018】
なお、本発明は上述した内容を実現するためのプリンタの制御方法としてとらえることもでき、また、そのためのプログラムを記録した記録媒体としてとらえることもできる。
【0019】
【発明の実施の形態】
〔第1実施形態〕
本発明の第1実施形態に係るプリンタは、実際に印刷エンジンを駆動した印刷を開始する前に、予めアンダーランエラーが生じないと推定できるだけのバンドバッファのバンド本数を算出し、この算出された本数分のバンドをバンドバッファとして確保した後に印刷エンジンを駆動した印刷を開始することにより、アンダーランエラーが発生する可能性を可及的に少なくしたものである。より詳しくを以下に説明する。
【0020】
図1は、本実施形態に係るプリンタ10の内部構成を示すブロック図である。この図1に示すように、プリンタ10には、ホストコンピュータ15から印刷データが送信され、この印刷データに基づいた印刷が行われる。
【0021】
プリンタ10は、主として、CPU(Central Processing Unit)20と、ROM(Read Only Memory)30と、RAM(Random Access memory)40と、印刷エンジン50とを備えて構成されている。
【0022】
詳しくは後述するが、ROM30には、受信処理プログラム31と、中間コード生成処理プログラム32と、印刷処理プログラム33と、中間コード展開処理プログラム34と、ルックアップテーブル35とが、不揮発的に格納されている。RAM40には、受信バッファ41と、中間コードバッファ42と、展開時間格納テーブル43と、印刷ステータスフラグ格納領域44と、バンドバッファ45と、印刷キュー46と、印刷情報格納領域47と、バンド本数格納領域48とが、揮発的に形成される。これらのROM30及びRAM40については、CPU20が内部バスを介して任意にアクセスすることが可能である。なお、この図1においては、本実施形態の説明に必要なプログラムやテーブル等のみをROM30やRAM40に開示してあるが、ここに示したもの以外のプログラムやテーブル等を備えていてもよい。
【0023】
概略的なプリンタ10の動作としては、ホストコンピュータ15から受信した印刷データは、受信バッファ41に格納される。そして、後述する印刷のための所定の処理がなされた後、バンドバッファ45から印刷エンジン50にビットマップデータがビデオ信号に変換されて送信され、印刷エンジン50にて印刷が行われる。
【0024】
本実施形態に係るプリンタ10は、いわゆるレーザプリンタであり、印刷エンジン50は、所定のエンジンスピードにて動作可能な電子写真式の画像形成プロセスエンジンである。すなわち、印刷エンジン50は、感光体(ドラム)や、上記ビデオ信号に基づいて感光体(ドラム)上に露光する光書き込み系や、ロータリー現像器や、転写ドラムや、定着器や、給紙機構等から構成されている。一様に帯電させた感光体(ドラム)表面に、光書き込み系によって光を照射して静電潜像を形成し、逆極性に帯電させたトナーを付着させ、このトナー像をロータリー現像器及び転写ドラムにより、給紙機構から供給される印刷用紙に電気的な力で転写した後、定着器によって定着させることにより、印刷が行われる。
【0025】
次に、図2に基づいて、本実施形態に係るプリンタ10が備えるタスクについて説明する。この図2に示すように、このプリンタ10は、受信タスクTK31と、中間コード生成タスクTK32と、印刷処理タスクTK33と、中間コード展開タスクTK34とを備えている。
【0026】
受信タスクTK31は、上述したCPU20がROM30から受信処理プログラム31を読み込んで、所定の優先順位で実行することにより実現される。中間コード生成タスクTK32は、上述したCPU20がROM30から中間コード生成処理プログラム32を読み込んで、所定の優先順位で実行することにより実現される。印刷処理タスクTK33は、上述したCPU20がROM30から印刷処理プログラム33を読み込んで、所定の優先順位で実行することにより実現される。中間コード展開タスクTK34は、上述したCPU20がROM30から中間コード展開処理プログラム34を読み込んで、所定の優先順位で実行することにより実現される。なお、この図2においては、本実施形態の説明に必要なタスクのみを開示してあるが、プリンタ10は、ここに示したもの以外のタスクを備えていてもよい。
【0027】
図2に示す各タスクの処理内容を簡単に説明すると、受信タスクTK31は、ホストコンピュータ15から印刷データを受信し、RAM40内に確保された受信バッファ41に、この印刷データを格納する。中間コード生成タスクTK32は、受信バッファ41に格納されている印刷データを読み出して、言語解釈を行って中間コードデータを生成し、これを中間コードバッファ42に格納する。印刷処理タスクTK33は、予めアンダーランエラーが発生しない程度のバンド本数を算出し、この算出したバンド本数を有するバンドバッファ45を用いて、印刷エンジン50へビットマップイメージを転送する。この間、中間コード展開タスクTK34は、バンドバッファ45のうち空いているバンドを見つけて、中間コードデータを展開したビットマップイメージを格納する。したがって、印刷処理タスクTK33と中間コード展開タスクTK34が協調して動作することにより、中間コードバッファ42に格納された中間コードデータが、ビットマップデータに展開されて、印刷エンジン50に送出されることとなる。各タスク間の同期処理及び排他制御等に関しては、リアルタイムマルチタスクオペレーティングシステムの機能(セマフォ)を用いて実現されるが、ここではその詳細な説明は省略する。また、ビットマップイメージの印刷エンジン50への転送自体は、ASIC等のDMA転送機能を用いて行われるので、その間、CPUは他の処理をすることが可能である。
【0028】
次に、上述した受信タスクTK31と、中間コード生成タスクTK32と、印刷処理タスクTK33と、中間コード展開タスクTK34の各処理内容について詳しく説明する。
【0029】
まず、図3に示す受信処理プログラム31の処理内容を示すフローチャートに基づいて、受信タスクTK31の処理内容を説明する。すなわち、受信タスクTK31は、図3に示す受信処理プログラム31を実行することにより実現される。
【0030】
図3に示すように、受信タスクTK31は、まずホストコンピュータ15から印刷データを受信したかどうかを判断する(ステップS10)。印刷データを受信していない場合(ステップS10:No)には、このステップS10の処理を繰り返して待機する。
【0031】
一方、ホストコンピュータ15から印刷データを受信した場合(ステップS10:Yes)には、その受信した印刷データを、受信バッファ41に格納する(ステップS11)。そして、上述したステップS10の処理に戻る。
【0032】
次に、図4に示す中間コード生成処理プログラム32の内容を示すフローチャートに基づいて、中間コード生成タスクTK32の処理内容を説明する。すなわち、中間コード生成タスクTK32は、図4に示す中間コード生成処理プログラム32を実行することにより実現される。
【0033】
図4に示すように、まず中間コード生成タスクTK32は、変数iに0を代入する(ステップS20)。この変数iは、1ページ分の印刷データを複数のバンドに分割して区分した際の、各バンドを指定するための変数である。
【0034】
次に、中間コード生成タスクTK32は、受信バッファ41から印刷データを取得する(ステップS21)。続いて、この取得した印刷データについて言語解釈を行い(ステップS22)、1バンド分の中間コードデータを生成する(ステップS23)。例えば、図5に示すような#0〜#N−1のN本の画像バンドに区分できる印刷データが、ホストコンピュータ15からプリンタ10に送信されてきたとする。また、図5の例では、印刷データの横幅が1200ドットであり、1画像バンド分の高さが64ラスタであるとする。但し、ホストコンピュータ15からの印刷データは、先頭のデータから順番に送られてくるのではなく、その描画等がなされた順番に送られてくる。ホストコンピュータ15は、ホストコンピュータ15からの印刷データを受信バッファ41に受信した順に格納していく。中間コード生成タスクTK32は、受信バッファに格納されている1ページ分の印刷データを格納された順に読み出して、言語解釈を行い、その解釈に基づいて、対応する画像バンドの中間コードデータを生成する。
【0035】
次に、図4に示すように、中間コード生成タスクTK32は、この生成した中間コードデータを、中間コードデータDL(i)として、RAM40の中間コードバッファ42に格納する(ステップS24)。図6は、この中間コードバッファ42の構成と、後述する展開時間格納テーブル43の構成とを、示す図である。上記図5の例に示す印刷データにおいては、この図6に示す中間コードバッファ42の中間コードデータDL(0)に、印刷データなしを示す中間コードデータを格納する。なお、この図6からわかるように、中間コードデータは可変長データであり、各バンドのデータ量に応じて中間コードバッファ42に格納される。中間コードデータには、文字へのポインタや、圧縮イメージへのポインタや、グラフィックオペレーション等が格納されている。
【0036】
次に、図4に示すように、中間コード生成タスクTK32は、1バンド分の展開時間を推測する(ステップS25)。本実施形態においては、図7に示すように、中間コードデータの種類毎に展開時間を格納したルックアップテーブル35を用いて、展開時間の推測をする。すなわち、中間コード生成タスクTK32は、ROM30に格納されているルックアップテーブル35を検索し、ステップS23で生成した中間コードデータの種類に合致する種類の中間コードを見つけだし、対応する展開時間を取得する。図5の印刷データの例では、バンド#0の中間コードデータは何も印刷しないことを示しているので、展開時間は0である。
【0037】
次に、図4に示すように、中間コード生成タスクTK32は、この推測した展開時間を、推測展開時間TR(i)として展開時間格納テーブル43に格納する(ステップS26)。図6に示すように、この展開時間格納テーブル43は、中間コードバッファ42の各バンドに対応して、各バンド毎に格納フィールドが設けられている。図5の印刷データの例では、展開時間格納テーブル43における推測展開時間TR(0)に、0が格納される。
【0038】
次に、図4に示すように、中間コード生成タスクTK32は、1ページ分の中間コードデータを生成し終えたかどうかを判断する(ステップS27)。1ページ分の中間コードデータを生成し終えていない場合(ステップS27:No)には、変数iに1を加える(ステップS28)。そして、上述したステップS21からの処理を繰り返す。
【0039】
これらステップS21〜ステップS28の処理を繰り返すことにより、図5に示すように、印刷データのバンド#1〜バンド#N−1の中間コードデータDL(1)〜DL(N−1)を生成して、中間コードバッファ42に格納し、推測展開時間TR(1)〜TR(N−1)を求めて、展開時間格納テーブル43に格納する。
【0040】
一方、図4に示すステップS27において、1ページ分の中間コードデータを生成し終えた場合(ステップS27:Yes)には、印刷キュー46へのキューイングを行う(ステップS29)。図8は、本実施形態に係る印刷キュー46の構成を示す図である。この図8に示すように、1ページ毎に印刷要求を印刷キュー46に格納することにより、キューイングが行われる。印刷キュー46に格納された各印刷要求は、それぞれ、中間コードバッファ42の中間コードデータDL(0)を指し示すポインタと、展開時間格納テーブル43の推測展開時間TR(0)を指し示すポインタとを、保持している。また、本実施形態においては、印刷用紙のサイズやトレイの指定などの印刷情報は、印刷情報格納領域47に格納されているので、各印刷要求は、その印刷情報を格納した位置を指し示すポインタも保持している。
【0041】
図4に示すステップS29のキューイングが終了することにより、1ページ分の中間コードデータ生成のための処理が完了したことになるので、中間コード生成タスクTK32は上述したステップS20の処理に戻ることとなる。
【0042】
次に、図9及び図10に示す印刷処理プログラム33の処理内容を示すフローチャートに基づいて、印刷処理タスクTK33の処理内容を説明する。すなわち、印刷処理タスクTK33は、図9及び図10に示す印刷処理プログラム33を実行することにより実現される。
【0043】
まず、図9に示すように、印刷処理タスクTK33は、印刷キュー46が空であるかどうかを判断する(ステップS40)。印刷キュー46が空である場合(ステップS40:Yes)には、このステップS40の処理を繰り返して待機する。
【0044】
一方、印刷キュー46が空でない場合(ステップS40:No)には、初期展開するバンドの本数のデフォルト値である3を、変数NUMに代入する(ステップS41)。つまり、この変数NUMは、バンドバッファ45に形成されるバンドの本数を示しており、後述するように、アンダーランエラーが発生すると推定される場合には順次増えていく正の整数である。また、本実施形態においては、このバンド本数NUMは、バンド本数格納領域48に格納される。
【0045】
次に、印刷処理タスクTK33は、1バンド分のビットマップデータを印刷エンジン50へDMA転送するのに要する時間を、固定値として、変数TDMAに代入する(ステップS42)。ここで、DMA転送時間TDMAには、CPUがDMA転送をする際にDMA設定等を行う時間も含まれているが、その時間は微少であるので、本実施形態ではCPUで消費する時間は無視できるものとしている。続いて、変数Sと変数iとに0を代入する(ステップS43)。変数Sは、各バンド#0〜#N−1の中間コードデータDL(0)〜DL(N−1)を、順次、ビットマップデータに展開して印刷エンジン50に送信する場合における、推測展開時間TRとDMA転送時間TDAMとの差分が累積されていく変数である(但し、S≧0)。変数iは、各バンド#0〜#N−1を指定するための変数である。
【0046】
次に、印刷処理タスクTK33は、変数iが1ページ分のバンド数よりも大きいかどうかを判断する(ステップS44)。変数iが1ページ分のバンド数よりも大きくない場合(ステップS44:No)、つまり、変数iが1ページ分のバンド数以下である場合には、S+TR(i)−TDMAを、Sに代入する(ステップS45)。
【0047】
具体的には、印刷処理タスクTK33は、展開時間格納テーブル43を検索して展開時間TR(i)を取得する。また、推測展開時間TR(i)からDMA転送時間TDMAを差し引いた時間というのは、DMA転送されるタイミングに対する、展開処理されている中間コードデータの時間的余裕度を示している。これをステップS45では変数Sとして累積加算していくのである。変数Sが小さい状態というのは、推測展開時間−DMA転送時間の累積が小さく、DMA転送のタイミングよりも展開処理が先行しており、時間的余裕のある状態を示している。変数Sが大きい状態というのは、推測展開時間−DMA転送時間の累積が大きく、DMA転送のタイミングと展開処理とが近接しており、時間的余裕のない状態を示している。
【0048】
次に、印刷処理タスクTK33は、変数Sが0より小さいかどうかを判断する(ステップS46)。変数Sが0より小さくない場合(ステップS46:No)、つまり、変数Sが0以上の場合には、バンド本数NUM>変数S/DMA転送時間TDMAの関係が成立するかどうかを判断する(ステップS47)。
【0049】
ここで、アンダーランエラーが発生しないようにするための条件を検討する。
【0050】
【数3】
Figure 0004144169
の関係が成立する場合には、アンダーランエラーが発生しないことがわかる。この式(1)の左辺は、変数Sに相当するので、
変数S<バンド本数NUM×DMA転送時間TDMA …(2)
の関係が成立する場合には、アンダーランエラーが発生しないことがわかる。式(2)の右辺は、印刷エンジン50を駆動した印刷を開始する前にバンドバッファ45に初期展開しておくバンド本数NUM分だけDMA転送するのに要する時間を示している。この予め設定された余裕時間よりも、「推測展開時間」と「1本のバンドをDMA転送するのに要する時間」との差分の累積である変数Sの方が、小さければ、アンダーランエラーは発生しない状態であると推定判断することができる。この式(2)を変形すると、バンド本数NUM>変数S/DMA転送時間TDMAとなり、このステップS47の条件となる。
【0051】
バンド本数NUM>変数S/DMA転送時間TDMAの関係が成立する場合(ステップS47:Yes)には、アンダーランエラーが発生しないと推定できるので、変数iに1を加えて(ステップS48)、上述したステップS44からの処理を繰り返す。
【0052】
一方、バンド本数NUM>変数S/DMA転送時間TDMAの関係が成立しない場合(ステップS47:No)には、アンダーランエラーが発生するおそれがあると推定判断できるので、初期展開するバンド本数NUMに1を加える(ステップS49)。すなわち、初期展開するバンド本数NUMを増やせば、予め設定された余裕時間であるNUM×TDMAが増えることとなる。このため、アンダーランエラーを発生しない方向に、もっていくことができる。このステップS49の後、上述したようにステップS48で変数iに1を加えて、ステップS44からの処理を繰り返す。
【0053】
これに対して、上述したステップS46において、変数Sが0より小さいと判断した場合(ステップS46:Yes)には、変数Sを0にし(ステップS50)、上述同様に変数iに1を加えて(ステップS48)、ステップS44からの処理を繰り返す。ここで、変数Sが0より小さくならないようにするのは、次のような理由によるものである。例えば、図11に示すように、3本のバンドB1〜B3を有するバンドバッファ45の場合を想定すると、これら3本のバンドB1〜B3のすべてに中間コードデータを展開したビットマップデータが格納され、且つ、これらのビットマップデータがまだ印刷エンジン50に送信されていない状態も生じ得る。このような状態においては、それ以上中間コードデータを展開しても格納するバンドがない。この図11の状態が、変数Sが0の状態であるため、変数Sが0未満になることがあり得ないのである。
【0054】
図9に戻り、上述したステップS44において、変数i>1ページ分のバンド数であると判断した場合(ステップS44:Yes)には、1ページ分のバンドの変数Sの累積加算処理が終了したことになり、初期展開するバンド本数NUMが算出されたことになる。このため、図10に示すように、印刷処理タスクTK33は、NUM本分のバンドを有するバンドバッファ45の領域を、RAM40に確保する(ステップS60)。
【0055】
次に、中間コードバッファ42からNUM本分の中間コードデータを読み出して、ビットマップデータに展開し、バンドバッファ45に格納する(ステップS61)。つまり、初期展開を行う。続いて、NUM本分のバンドに対応する印刷ステータスフラグ格納領域44の印刷ステータスフラグを、展開済みにする(ステップS62)。
【0056】
図12は、バンド本数NUMが3本の場合における、印刷ステータスフラグ格納領域44とバンドバッファ45の構成を示す図である。この図12からわかるように、バンドバッファ45の各バンドB1〜B3に対応して、印刷ステータスフラグ格納領域44の印刷ステータスフラグF1〜F3が設けられている。つまり、印刷ステータスフラグの数は、バンド本数NUMと同じになる。本実施形態においては、例えば、各印刷ステータスフラグF1〜F3が、0の場合には、ビットマップデータが展開済みであることを表しており、1の場合には、後述するように、ビットマップデータが転送済みであることを表している。したがって、ステップS62においては、印刷ステータスフラグF1〜F3を、それぞれ0にする。なお、この図12に示すバンドバッファ45の横幅は1200ドットであり、1バンド分の高さは64ラスタである。つまり、バンドバッファ45の1バンド分の高さ及び横幅は、図5に示した印刷データの1画像バンド分の高さ及び横幅と、同じである。
【0057】
次に、図10に示すように、印刷処理タスクTK33は、印刷エンジン50へのビットマップデータの転送を開始する(ステップS63)。すなわち、図12に示すように、バンドバッファ45の各バンドB1〜B3に展開されたビットマップデータを、輪番に印刷エンジン50にビデオ信号(印刷信号)として送信する。つまり、バンドB1→バンドB2→バンドB3→バンドB1…、というように、順番にサイクリックにビットマップデータを印刷エンジン50に送信する。具体的には、バンドバッファ45からDMA転送により、ビットマップデータをASIC(Application Specific IC)52に送信する。このASIC52においては、ビットマップデータに基づいて、輪郭平滑化や補正などが行われる。続いて、PWM(Pulse Width Modulation)54でパルス幅変調が行われ、ビデオ信号として印刷エンジン50に送信される。そして、このビデオ信号を受信した印刷エンジン50で、実際の印刷用紙への印刷が一定のエンジンスピードで行われる。
【0058】
再び図10に示すように、印刷エンジン50への転送が完了したバンドに対応する印刷ステータスフラグを、転送済みにする(ステップS64)。すなわち、例えば図12において、バンドB1の転送が完了した場合には、印刷ステータスフラグF1を0から1に変更して、転送済みであることを表すようにする。
【0059】
次に、図10に示すように、印刷処理タスクTK33は、1ページ分の中間コードデータについての印刷エンジン50への転送が、終了したかどうかを判断する(ステップS65)。1ページの転送が終了していない場合(ステップS65:No)には、上述したステップS63からを繰り返す。一方、1ページ分の転送が終了した場合(ステップS65:Yes)には、次のページの処理をすべく、ステップS40に戻る。
【0060】
次に、図13に示す中間コード展開処理プログラム34の処理内容を示すフローチャートに基づいて、中間コード展開タスクTK34の処理内容を説明する。すなわち、中間コード展開タスクTK34は、図13に示す中間コード展開処理プログラム34を実行することにより実現される。
【0061】
図13に示すように、中間コード展開タスクTK34は、中間コードバッファ42に、中間コードデータがあるかどうかを判断する(ステップS70)。中間コードバッファ42に中間コードデータがない場合(ステップS70:No)には、このステップS70の処理を繰り返して待機する。
【0062】
中間コードバッファ42に中間コードデータがある場合(ステップS70:Yes)には、図12に示す印刷ステータスフラグ格納領域44の印刷ステータスフラグを検索し、転送済みのステータスのものが存在するかどうかを判断する(ステップS71)。転送済みのステータスのものが存在しない場合には、このステップS71の処理を繰り返して待機する。
【0063】
一方、転送済みのステータスのものが存在する場合には、その転送済みの印刷ステータスフラグに対応するバンドバッファ45のバンドに、中間コードデータをビットマップデータとして展開する(ステップS72)。続いて、その印刷ステータスフラグを0にして、展開済みであることを表すようにする(ステップS43)。そして、上述したステップS70の処理に戻る。
【0064】
以上のように、本実施形態に係るプリンタ10によれば、実際に印刷エンジン50を駆動した印刷を開始する前に、アンダーランエラーが発生するかどうかを事前検証し、アンダーランエラーが発生すると推定判断した場合には、プリンタ10の印刷のための設定をアンダーランエラーが発生しないように変更することとしたので、実際に印刷エンジン50を駆動した印刷が開始された際に、アンダーランエラーが発生する可能性を可及的に低くすることができる。
【0065】
具体的には、実際に印刷エンジン50を駆動した印刷を開始する前に、アンダーランエラーが発生しないと推定できる程度の本数のバンドをバンドバッファ45に確保してから、実際に印刷エンジン50を駆動した印刷を開始することとしたので、印刷エンジン50を駆動した印刷の際にアンダーランエラーが発生する可能性を可及的に少なくすることができる。
【0066】
さらに、アンダーランエラーが発生しないと推定できる程度のバンド本数NUMの算出にあたっては、上述した、
【数4】
Figure 0004144169
の関係が成立する場合にはアンダーランエラーが発生しないと推定し、この関係が成立しない場合には、アンダーランエラーが発生すると推定することとした。この式(1)の関係を用いることにより、的確にアンダーランエラーの発生を予測することができ、適切なバンド本数NUMを算出することができるようになる。
【0067】
また、本実施形態においては、バンド本数NUMを式(1)の条件を満たす最小の整数に設定することとしたので、中間コードデータの展開に要する時間を可及的に短くしつつ、アンダーランエラーが発生しないようにすることができる。すなわち、バンド本数NUMを増やせば増やすほど、アンダーランエラーが発生しにくくなるが、そのバンド本数NUM分の展開が終了してからでないと印刷エンジン50を駆動した印刷を行うことができず、印刷開始までの待ち時間が多くなってしまう。このため、本実施形態では、式(1)の条件を満たすバンド本数NUMのうち最小のものを用いることとしたので、印刷開始までの待ち時間を可能な限り短くしつつ、アンダーランエラーが発生しないようにすることができる。
【0068】
〔第2実施形態〕
上述した第1実施形態においては、印刷前の事前検証によりアンダーランエラーが発生する予測された場合には、初期展開するバンドバッファのバンド本数NUMを増やすことにより、このアンダーランエラーの発生を回避しようとしたが、本発明の第2実施形態においては、印刷前の事前検証によりアンダーランエラーが発生すると予測されるタイミングにある中間コードデータDL(i)を事前展開するこにより、このアンダーランエラーの発生を回避しようとするものである。より詳しくを、以下に説明する。
【0069】
なお、本実施形態においては、上述した第1実施形態と異なる部分のみを説明するものとする。
【0070】
図14は、本実施形態に係る印刷処理プログラム33の処理内容を示すフローチャートの一部である。すなわち、この図14は上述した第1実施形態における図9に示した処理に相当するフローチャートであり、図10に示した処理については、第1実施形態と同様である。
【0071】
図14に示すように、ステップS47において、バンド本数NUM>変数S/DMA転送時間TDMAの関係が成立しないと判断した場合(ステップS47:No)には、アンダーランエラーが発生するおそれがあると推定判断できるので、中間コードデータDL(i)を中間コードバッファ42にビットイメージデータとして事前に展開しておく(ステップS51)。つまり、中間コードデータDL(i)の事前展開を行う。
【0072】
次に、変数Sから推定展開時間TR(i)を差し引いておく(ステップS529)。これは、先のステップS45において、変数Sに推定展開時間TR(i)を累積的に加えているが、ステップS51において中間コードデータDL(i)については事前展開したので、印刷エンジン50を駆動した印刷を開始した後にさらなる展開時間は発生しない。このため、ステップS52において、一度加算した推定展開時間TR(i)を、減算しておくのである。そして、先に説明したステップS48の処理にて変数iに1を加えて、ステップS44に戻る。
【0073】
以上のように、本実施形態に係るプリンタ10によれば、実際に印刷エンジン50を駆動した印刷を開始する前に、アンダーランエラーが発生するかどうかを事前検証し、アンダーランエラーが発生すると推定判断した場合には、プリンタ10の印刷のための設定をアンダーランエラーが発生しないように変更することとしたので、実際に印刷エンジン50を駆動した印刷が開始された際に、アンダーランエラーが発生する可能性を可及的に低くすることができる。
【0074】
具体的には、実際に印刷エンジン50を駆動した印刷を行う前に、アンダーランエラーが発生しないかどうかを事前検証し、アンダーランエラーが発生するおそれがあると推定判断した中間コードデータDL(i)については、印刷エンジン50を駆動を駆動した印刷を開始する前に中間コードバッファ42にビットイメージデータとして事前展開をしておくこととしたので、実際に印刷エンジン50を駆動した印刷を行う際にアンダーランエラーが発生する可能性を可及的に少なくすることができる。
【0075】
これは、アンダーランエラーが発生すると予測されるタイミングの中間コードデータをビットイメージデータに事前展開しておけば、印刷エンジン50を駆動した印刷を行う際に、もはや展開処理をする必要がないためである。
【0076】
さらに、アンダーランエラーが発生するタイミングにある中間コードデータDL(i)であるかどうかを、上述した
【数5】
Figure 0004144169
の関係が成立するかどうかで判断することとした。このため、的確にアンダーランエラーの発生するタイミングを予測することができ、適切な中間コードデータDL(i)を事前展開することができるようになる。
【0077】
なお、本発明は上記実施形態に限定されず種々に変形可能である。例えば、上述した第1実施形態においては、算出されたバンド本数NUMのすべてにビットマップデータの初期展開を行うこととしたが、算出されたバンド本数NUM−1だけのバンドにビットマップデータの初期展開を行うようにしてもよい。算出されたバンド本数NUMのすべてにビットマップデータの初期展開を行う方が、算出されたバンド本数NUM−1だけのバンドにビットマップデータの初期展開を行うよりも、アンダーランエラーが発生する可能性は低くなる。しかし、印刷エンジン50を駆動した印刷を開始するまでの時間は、長くなってしまう。
【0078】
これに対して、算出されたバンド本数NUM−1だけのバンドにビットマップデータの初期展開を行う方が、算出されたバンド本数NUMのすべてにビットマップデータの初期展開を行うよりも、印刷エンジン50を駆動した印刷を開始するまでの待ち時間を短くすることができる。しかし、アンダーランエラーが発生する可能性は高くなってしまう。
【0079】
このことは、上記第2実施形態においても、同様である。すなわち、第2実施形態においては、初期展開するバンド本数を3本に固定しているが、これを2本にしてもよい。
【0080】
なお、バンドバッファのバンド本数NUMが、印刷データのバンド数Nと同じ場合は、すべての中間コードデータを初期展開することを意味する。このような印刷を、特に、ページプロテクト印刷という。
【0081】
また、上述した第1実施形態においては、バンドバッファ45のバンド本数NUMのデフォルト値を3とし、第2実施形態においてもバンドバッファ45のバンド本数を3としたが、この値に限るものではない。
【0082】
さらに、上述した第1及び第2実施形態における式(1)を、次の式(3)のように変形してもよい。
【0083】
【数6】
Figure 0004144169
この式(3)においては、バンドバッファ45のバンド本数NUMについて、よりアンダーランエラーが発生しないようにするために、余裕変数αを加算している。例えば、α=0.5や、α=1.5とすることにより、バンド本数NUMの本数について余裕を持った本数を設定することができる。すなわち、式(3)関係を満たす正の整数であるNUMをバンド本数として用いることにより、よりアンダーランエラーを発生しにくいようにできる。
【0084】
さらに、上述した第2実施形態においては、ステップS51で事前展開をした後に、ステップS61で初期展開することとしたが、この順序は逆でもよく、さらには事前展開と初期展開とを並行して行うようにしてもよい。
【0085】
また、上述の実施形態で説明した各処理については、これら各処理を実行するためのプログラムをフロッピーディスク、CD−ROM(Compact Disc-Read Only Memory)、ROM、メモリカード等の記録媒体に記録して、記録媒体の形で頒布することが可能である。この場合、このプログラムが記録された記録媒体をプリンタ10に読み込ませ、実行させることにより、上述した実施形態を実現することができる。
【0086】
また、プリンタ10は、オペレーティングシステムや別のアプリケーションプログラム等の他のプログラムを備える場合がある。この場合、プリンタ10の備える他のプログラムを活用すべく、記録媒体にはそのプリンタ10が備えるプログラムの中から、本実施形態と同等の処理を実現するプログラムを呼び出すような命令を記録するようにしてもよい。
【0087】
さらに、このようなプログラムは、記録媒体の形ではなく、ネットワークを通じて搬送波として頒布することも可能である。ネットワーク上を搬送波の形で伝送されたプログラムは、最終的にプリンタ10に取り込まれて、このプログラムをプリンタ10が実行することにより上述した実施形態を実現することができる。
【0088】
また、記録媒体にプログラムを記録する際や、ネットワーク上を搬送波として伝送される際に、プログラムの暗号化や圧縮化がなされている場合がある。この場合には、これら記録媒体や搬送波からプログラムを読み込んだプリンタ10は、そのプログラムの復号化や伸張化を行った上で、実行する必要がある。
【0089】
【発明の効果】
以上説明したように、本発明によれば、実際に印刷エンジンを駆動した印刷を開始する前に、検証手段でアンダーランエラーが発生するかどうかを推定判断することとしたので、アンダーランエラーが発生する可能性を可及的に低くすることができる。
【図面の簡単な説明】
【図1】本発明の1つの実施形態に係るプリンタのハードウェア構成の一例を示す図。
【図2】本実施形態に係るプリンタが備えるタスク構成の一例を示す図。
【図3】受信処理タスクの処理内容を説明するフローチャートを示す図。
【図4】中間コード生成タスクの処理内容を説明するフローチャートを示す図。
【図5】印刷データを複数のバンドに区分した場合の1つの実例を示す図。
【図6】本実施形態に係る中間コードバッファと展開時間格納テーブルとの構成の一例を示す図。
【図7】本実施形態に係るルックアップテーブルの構成の一例を示す図。
【図8】本実施形態に係る印刷キューの構成の一例を示す図。
【図9】本実施形態に係る印刷処理タスクの処理内容を説明するフローチャートを示す図(その1)。
【図10】本実施形態に係る印刷処理タスクの処理内容を説明するフローチャートを示す図(その2)。
【図11】バンドバッファのすべてのバンドにビットマップデータが展開され、且つ、印刷エンジンへ転送されていない状態を示す図。
【図12】本実施形態に係る印刷ステータスフラグ格納領域とバンドバッファの構成の一例を示す図。
【図13】中間コード展開タスクの処理内容を説明するフローチャートを示す図。
【図14】本発明の別の変形例における印刷処理タスクの処理内容の一部を説明するフローチャートを示す図。
【符号の説明】
10 プリンタ
15 ホストコンピュータ
20 CPU
30 ROM
31 受信処理プログラム
32 中間コード生成処理プログラム
33 印刷処理プログラム
34 中間コード展開処理プログラム
35 ルックアップテーブル
40 RAM
41 受信バッファ
42 中間コードバッファ
43 展開時間格納テーブル
44 印刷ステータスフラグ格納領域
45 バンドバッファ
46 印刷キュー
47 印刷情報格納領域
48 バンド本数
50 印刷エンジン

Claims (4)

  1. 受信した印刷データを中間コード生成手段により中間コードデータに変換し、1ページ画像を複数の画像バンドに分割した構成を有する中間コード格納手段の対応するバンドに前記中間コードデータを格納していき、
    1ページ分の前記中間コードデータが前記中間コード格納手段の各バンドに格納された後に、印刷実行手段が、前記中間コードデータを順次ビットマップデータに展開して、ビットマップデータ格納手段に格納し、前記ビットマップデータを印刷信号に変換した上で印刷エンジンに転送して、前記印刷エンジンを駆動した印刷を行う、プリンタであって、
    各ページ毎に、前記印刷信号を前記印刷エンジンに転送する処理時間が、前記中間コードデータを順次ビットマップデータに展開してビットマップデータ格納手段に格納する処理時間を下回って、アンダーランエラーが生じるか否かを、前記印刷エンジンを駆動した印刷を開始する前に検証する、検証手段を備え、
    前記検証手段は、1ページ分の前記中間コード格納手段のバンド本数をNとし、iバンドの推測展開時間をTR(i)とし、ビットマップデータ格納手段のバンド本数をNUMとし、印刷実行手段における1バンド分の前記印刷信号の印刷エンジンへの転送時間をTDMAとした場合に、
    Figure 0004144169
    の関係を満たす場合にアンダーランエラーが発生しないと推定し、この関係を満たさない場合にアンダーランエラーが発生すると推定するとともに
    前記印刷エンジンを駆動した印刷を開始する前に、所定数のバンド数分だけ前記中間コードデータを前記ビットマップデータに展開して、前記ビットマップデータ格納手段に格納しておく、初期展開手段をさらに備え、
    前記検証手段が事前に検証した結果、アンダーランエラーが発生すると推定した場合には、前記初期展開手段で展開しておくバンド数を増やす、ことを特徴とするプリンタ。
  2. 前記推測展開時間TR(i)は、中間コードデータの種類毎に展開時間を推測した値をテーブルとして保持する、ルックアップテーブルを検索することにより、定められる、ことを特徴とする請求項1に記載のプリンタ。
  3. 前記ビットマップデータ格納手段のバンドの高さは、前記1画像バンドのバンドの高さと同じであり、
    前記ビットマップデータ格納手段のバンド数は、前記中間コード格納手段のバンド数よりも、少ない数であり、
    前記ビットマップデータ格納手段の各バンドを順番に使い回して、前記ビットマップデータを順次格納していく、
    ことを特徴とする請求項1又は請求項2に記載のプリンタ。
  4. 前記初期展開手段が初期展開するバンド数は、各ページ毎にその都度確保される数である、ことを特徴とする請求項1乃至請求項3のいずれかに記載のプリンタ。
JP2000245590A 2000-08-14 2000-08-14 プリンタ Expired - Fee Related JP4144169B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000245590A JP4144169B2 (ja) 2000-08-14 2000-08-14 プリンタ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000245590A JP4144169B2 (ja) 2000-08-14 2000-08-14 プリンタ

Publications (2)

Publication Number Publication Date
JP2002052762A JP2002052762A (ja) 2002-02-19
JP4144169B2 true JP4144169B2 (ja) 2008-09-03

Family

ID=18736082

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000245590A Expired - Fee Related JP4144169B2 (ja) 2000-08-14 2000-08-14 プリンタ

Country Status (1)

Country Link
JP (1) JP4144169B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5577658B2 (ja) * 2009-09-11 2014-08-27 富士ゼロックス株式会社 印刷制御装置、画像形成装置、及び印刷制御プログラム
CN103182864B (zh) * 2011-12-31 2015-05-20 北大方正集团有限公司 数码喷印同步控制装置及其控制方法

Also Published As

Publication number Publication date
JP2002052762A (ja) 2002-02-19

Similar Documents

Publication Publication Date Title
US5604846A (en) Printer and method for developing print data
JP4455459B2 (ja) 印刷システムと印刷装置及び印刷方法
US6369910B1 (en) Printing apparatus and image processing method
JP4174476B2 (ja) データ処理装置およびデータ処理方法およびプリンタドライバプログラムおよび印刷制御装置および印刷制御方法および印刷システム
JPH10147017A (ja) 印刷装置及びデータ制御方法
JP4144169B2 (ja) プリンタ
JP3417305B2 (ja) プリンタ、プリンタ制御装置および画像入出力装置
JP2008049664A (ja) 画像形成装置のコントローラ及び画像形成装置のドライバ
JPH10129050A (ja) 印刷処理装置
JP4103164B2 (ja) 印刷処理装置
JP3715796B2 (ja) 印刷制御装置および印刷制御装置のデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JP3583879B2 (ja) プリンタ制御装置
JP3671633B2 (ja) 印刷データ処理装置
JP3809284B2 (ja) 画像生成装置及びその制御方法及び印刷装置
JP3700363B2 (ja) 印刷処理装置
JP2001171185A (ja) 画像形成装置及び画像処理方法
JP3715765B2 (ja) バンドメモリサイズ決定方式および記録媒体
JP3827966B2 (ja) 画像形成装置
JP3711609B2 (ja) 印刷方法、印刷システム、及びプリンタ
JP2008262439A (ja) 情報処理装置、印刷文書調整処理プログラム及び記録媒体
JPH10305639A (ja) 印刷処理装置および印刷処理方法
JP2003039747A (ja) 画像形成装置およびその制御方法
JP2598125B2 (ja) 出力制御装置
JP2000148418A (ja) 印刷装置
JPH11198489A (ja) 印刷処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080227

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: 20080527

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: 20080609

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: 20110627

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120627

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130627

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130627

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees