(57)【特許請求の範囲】
【請求項１】
画像データを印刷手段に転送する印刷タスクを実行する印刷タスク実行手段と、前記画像データに基づいて記憶媒体に印刷を行い、前記印刷した記憶媒体を排出する印刷手段とを備えたプリンタ装置であって、
前記印刷手段は、記憶媒体が排出されたことを検知する排出検知手段と、排出が検知されるごとにｊカウント（ｊ≠０）を加算する第１のカウンタとを備え、
前記印刷タスク実行手段は、第１のカウンタの値に基づいて更新される第２のカウンタと、印刷開始に対応してｉカウント（ｉ≠０）が加算される第３のカウンタと、印刷開始に対応してｉカウントが加算される第４のカウンタとを備えるとともに、第２のカウンタ及び第３カウンタを制御する第１カウンタタスクと、第３のカウンタ及び第４カウンタを制御する第２カウンタタスクとを実行可能に構成されており、
前記第１カウンタタスクは、第１のカウンタからカウンタ値を定期的に取得し、前記取得したカウンタ値と第２のカウンタの値が異なる場合に第２のカウンタに前記取得したカウンタ値を代入するとともに第３のカウンタにｉカウントを減算し、
前記第２カウンタタスクは、転送が終了した画像データについて第３のカウンタの値と第４のカウンタの値が異なる場合に第４のカウンタにｉカウントを減算し、前記減算するタイミングに基づいて転送が終了した画像データについて記憶領域を解放することを特徴とするプリンタ装置。
【請求項２】
前記印刷タスク実行手段は、複数の印刷タスクについて並列実行可能に構成されており、前記印刷タスク実行手段は、前記減算するタイミングに基づいて転送が終了した画像データのうち１つについて記憶領域を解放することを特徴とする請求項１記載のプリンタ装置。
【請求項３】
画像データを印刷手段に転送する印刷タスクを実行する印刷タスク実行手段と、前記画像データに基づいて記憶媒体の両面に印刷を行い、前記両面に印刷した記憶媒体を排出する印刷手段とを備えたプリンタ装置であって、
前記印刷手段は、記憶媒体の一の面の印刷が終了したことを検知する面印刷検知手段と、印刷終了が検知されるごとにｊカウント（ｊ≠０）を加算する第１のカウンタとを備え、
前記印刷タスク実行手段は、第１のカウンタの値に基づいて更新される第２のカウンタと、印刷開始に対応してｉカウント（ｉ≠０）が加算される第３のカウンタと、印刷開始に対応してｉカウントが加算される第４のカウンタと、少なくとも２値をとる印刷面状態変数を記憶する領域を備えるとともに、第２のカウンタ及び第３カウンタを制御する第１カウンタタスクと、第３のカウンタ及び第４カウンタを制御する第２カウンタタスクとを実行可能に構成されており、
前記第１カウンタタスクは、第１のカウンタからカウンタ値を定期的に取得し、前記取得したカウンタ値と第２のカウンタの値が異なる場合に、第２のカウンタに対する前記取得した値の代入、第３のカウンタに対する２ｉカウント減算、及び印刷終了した面の表裏に応じた前記印刷面状態変数の更新を実行し、
前記第２カウンタタスクは、前記印刷面状態変数が所定の値をとり、かつ転送が終了した画像データについて第３のカウンタの値と第４のカウンタの値が異なる場合に、第４のカウンタに２ｉカウントを減算し、前記減算するタイミングに基づいて、転送が終了した画像データのうち２つについて記憶領域を解放することを特徴とするプリンタ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを生成して記憶し、これを記憶媒体に印刷するプリンタ装置に関する。
【背景技術】
【０００２】
従来のプリンタ装置は、プリンタ制御言語で記述された印刷データをホストコンピュータから受信し、前記印刷データについて言語解析を行うことにより中間コードを介して画像データへ展開し、前記画像データを印刷エンジンに出力するコントローラと、コントローラから画像データを受け取り、前記画像データに基づいて記録紙等に画像を印刷（転写、定着）する印刷エンジンとから構成されている。
【０００３】
コントローラは、ホストコンピユータ等から送られた印刷データを一旦RAM等のメモリに記憶し、記憶した印刷データの言語解析を行い、画像データに展開して印刷エンジンに印刷開始指令を送出する。
【０００４】
印刷エンジンは、コントローラからの印刷開始指令を受けると、定着器の温度を上げる等の印刷を可能にするための準備を行ない、印刷が可能になると記録紙の給紙を開始する。この給紙された記録紙の先端をセンサ等で検知すると、コントローラに対し、所定のタイミングで副走査方向の同期信号を送出する。
【０００５】
コントローラは、この副走査方向の同期信号に同期して１頁分の画像データを印刷エンジンに送出する。この後、コントローラは、印刷エンジンが副走査方向の同期信号を送出してから正常に印刷を終了し、記録紙を機外に排出し終るまでの最大時間（以降、リカバリタイムと呼ぶ）が経過するまで、メモリに記憶した画像データを保持する。これにより、印刷エンジンに不具合、例えば記録紙のジヤム等の発生により、正常に印刷が終了しなかつた場合には、そのメモリに記憶されている画像データを読出して再度画像を印刷することができる。すなわち、印刷エンジンにおいて不具合が発生した場合であっても、ホストコンピユータ等から印刷データを再度受取ることなく、同じ画像データを印刷することができるように構成されていた。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら上記従来例では、記録紙サイズによらず常にリカバリタイムを一定にするか、或は記録紙サイズが解らない場合は、そのリカバリタイムを最大記録紙サイズに合わせて設定する必要があった。そのため、短いサイズの記録紙が使用された場合でも、このリカバリタイムが最大記録紙サイズに合せて設定されている場合、印刷が終了した記録紙が機外に排出された後もリカバリタイムが経過するまで、メモリに記憶されている画像データを消去することができないという問題があった。
【０００７】
一方、リカバリタイムに依らずに効率よく画像データを消去する方法として、印刷エンジンに記録紙が排出されたことを検知して排出信号として出力する手段を設け、コントローラにおいて印刷エンジンから出力される排出信号を受信し、前記排出信号に基づいて画像データの記憶領域を解放する方法が考えられる。しかし、かかる方法では、例えば印刷エンジンに供給される記録紙のサイズが、画像データが要求する記録紙のサイズよりも小さい場合、当該画像データの転送中に記録紙の排出が終了し、排出信号が送信されてしまうことになる。従って、転送終了後に記憶領域を解放しようとしても、当該画像データについての排出信号を受け取ることができないため、排出信号に基づいて記憶領域を解放することができないという問題が生じる。
【０００８】
また、印刷エンジンにおいて印刷エンジン内に保持している記録紙の枚数を算出しておき、記録紙の供給や排出ごとに前記枚数を更新してコントローラに送信することも考えられる。しかし、印刷エンジンに備えられるＣＰＵは、コントローラに備えられるものに比べ低機能なＣＰＵであるため、かかる低機能なＣＰＵに前記枚数の算出や更新といった処理負担をかけることは、プリンタ装置全体の効率を考えると望ましくない。
【０００９】
本発明は上記問題点に鑑みてなされたもので、印刷エンジンに処理負担をかけることなく、コントローラにおけるメモリの使用効率を向上させることのできるプリンタ装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のプリンタ装置は、画像データを印刷手段に転送する印刷タスクを実行する印刷タスク実行手段と、前記画像データに基づいて記憶媒体に印刷を行い、前記印刷した記憶媒体を排出する印刷手段とを備えたプリンタ装置であって、前記印刷手段は、記憶媒体が排出されたことを検知して排出情報として前記印刷タスク実行手段に出力する排出検知手段を備え、前記印刷タスク実行手段は、画像データの転送終了に対応してｉカウント（ｉ≠０）が加算され、前記排出情報を受信するとｉカウント減算されるカウンタを備えており、前記カウンタに基づいて、転送が終了した画像データについて記憶領域を解放することを特徴とする。
【００１１】
好適には、前記印刷タスク実行手段は、ｉが正値の場合は前記カウンタが非正値をとる場合に（ｉが負値の場合は前記カウンタが非負値をとる場合に）、転送が終了した画像データについて記憶領域を解放する。
【００１２】
また、前記印刷タスク実行手段は、複数の印刷タスクについて並列実行可能に構成されている場合は、前記印刷タスク実行手段は、ｉが正値の場合は前記カウンタが非正値をとる場合に（ｉが負値の場合は前記カウンタが非負値をとる場合に）、転送が終了した画像データのうち１つについて記憶領域を解放する。
【００１３】
前記印刷タスクが、前記カウンタに対するｉカウント加算処理、及び前記カウンタに基づく記憶領域の解放処理を行うように構成することができる。また、前記印刷タスク実行手段に関し、カウンタを管理するカウンタタスクを実行可能に構成することで、前記カウンタタスクが、前記カウンタに対するｉカウント加算処理、及び前記カウンタに基づく記憶領域の解放処理を行うように構成することができる。
【００１４】
本発明のプリンタ装置は、画像データを印刷手段に転送する印刷タスクを実行する印刷タスク実行手段と、前記画像データに基づいて記憶媒体の両面に印刷を行い、前記両面に印刷した記憶媒体を排出する印刷手段とを備えたプリンタ装置であって、前記印刷手段は、記憶媒体が排出されたことを検知して排出情報として前記印刷タスク実行手段に出力する排出検知手段を備え、前記印刷タスク実行手段は、画像データの転送終了に対応してｉカウント（ｉ≠０）加算され、前記排出情報を受信すると２ｉカウント減算されるカウンタを備えるとともに、複数の印刷タスクについて並列実行可能に構成されており、ｉが正値の場合は前記カウンタが非正値をとる場合に（ｉが負値の場合は前記カウンタが非負値をとる場合に）、転送が終了した画像データのうち２つについて記憶領域を解放することを特徴とする。
【００１５】
本発明のプリンタ装置は、画像データを印刷手段に転送する印刷タスクを実行する印刷タスク実行手段と、前記画像データに基づいて記憶媒体に印刷を行い、前記印刷した記憶媒体を排出する印刷手段とを備えたプリンタ装置であって、  前記印刷手段は、記憶媒体が排出されたことを検知する排出検知手段と、排出が検知されるごとにｊカウント（ｊ≠０）を加算する第１のカウンタとを備え、前記印刷タスク実行手段は、第１のカウンタの値に基づいて更新される第２のカウンタと、印刷開始に対応してｉカウント（ｉ≠０）が加算される第３のカウンタと、印刷開始に対応してｉカウントが加算される第４のカウンタとを備えるとともに、第２のカウンタ及び第３カウンタを制御する第１カウンタタスクと、第３のカウンタ及び第４カウンタを制御する第２カウンタタスクとを実行可能に構成されており、前記第１カウンタタスクは、第１のカウンタからカウンタ値を定期的に取得し、前記取得したカウンタ値と第２のカウンタの値が異なる場合に、第２のカウンタに前記取得したカウンタ値を代入するとともに第３のカウンタにｉカウントを減算し、前記第２カウンタタスクは、第３のカウンタの値と第４のカウンタの値が異なる場合に第４のカウンタにｉカウントを減算し、前記減算するタイミングに基づいて転送が終了した画像データについて記憶領域を解放することを特徴とする。
【００１６】
好適には、前記印刷タスク実行手段は、複数の印刷タスクについて並列実行可能に構成されており、前記印刷タスク実行手段は、前記減算するタイミングに基づいて転送が終了した画像データのうち１つについて記憶領域を解放する。
【００１７】
本発明のプリンタ装置は、画像データを印刷手段に転送する印刷タスクを実行する印刷タスク実行手段と、前記画像データに基づいて記憶媒体の両面に印刷を行い、前記両面に印刷した記憶媒体を排出する印刷手段とを備えたプリンタ装置であって、前記印刷手段は、記憶媒体の一の面の印刷が終了したことを検知する面印刷検知手段と、印刷終了が検知されるごとにｊカウント（ｊ≠０）を加算する第１のカウンタとを備え、前記印刷タスク実行手段は、第１のカウンタの値に基づいて更新される第２のカウンタと、印刷開始に対応してｉカウント（ｉ≠０）が加算される第３のカウンタと、印刷開始に対応してｉカウントが加算される第４のカウンタと、少なくとも２値をとる印刷面状態変数を記憶する領域を備えるとともに、第２のカウンタ及び第３カウンタを制御する第１カウンタタスクと、第３のカウンタ及び第４カウンタを制御する第２カウンタタスクとを実行可能に構成されており、前記第１カウンタタスクは、第１のカウンタからカウンタ値を定期的に取得し、前記取得したカウンタ値と第２のカウンタの値が異なる場合に、第２のカウンタに対する前記取得したカウンタ値の代入、第３のカウンタに対する２ｉカウント減算、及び印刷終了した面の表裏に応じて前記印刷面状態変数の更新を実行し、前記第２カウンタタスクは、前記印刷面状態変数が所定の値をとり、かつ第３のカウンタの値と第４のカウンタの値が異なる場合に、第４のカウンタに２ｉカウントを減算し、前記減算するタイミングに基づいて、転送が終了した画像データのうち２つについて記憶領域を解放することを特徴とする。
【発明の効果】
【００１８】
本発明のプリンタ装置によれば、印刷手段において記録紙の排出を検知し、排出情報を出力する構成、もしくは排出により単純に増加していく第１カウンタを備える構成であるため、印刷手段内の記録紙枚数の算出といった演算を必要とせず、印刷手段における処理負担を軽減することができる。
【００１９】
また、印刷タスク実行手段において制御テーブル、カウンタを設けたことにより、複数の印刷タスクについて、コントローラにおけるメモリの使用効率を向上させることができる。
【発明を実施するための最良の形態】
【００２０】
（第１の実施形態）
（プリンタ装置の構成）
図１を参照して本発明の第１の実施形態を説明する。本発明の第１の実施形態であるプリンタ装置１は、印刷タスク実行手段２、印刷手段３を備えて構成される。印刷タスク実行手段２は、制御テーブル２１、カウンタ２２を備えており、印刷手段３は印刷実行手段３１と排出検知手段３２を備えている。なお、プリンタ装置１は、印刷タスク実行手段２、印刷手段３以外に、通常のプリンタ装置が備える構成（例えば、ホストコンピュータから印刷データを受け取り、これを画像データに展開して所定の記憶領域に記憶する画像データ生成手段等）を備えている。
【００２１】
印刷タスク実行手段２は、印刷タスクを印刷データごとに生成し、実行する。ここで、印刷タスクは、所定の記憶領域に記憶されている画像データを印刷手段３に送信する処理を行うタスクである。
【００２２】
印刷タスク実行手段２は、物理的にはプリンタ制御やデータ処理に専用化したシステム、あるいは汎用の情報処理装置のいずれによって実現してもよい。例えば、演算手段と記憶手段とを備えた一般的な構成の情報処理装置において、印刷タスクの動作を規定したソフトウェアを起動することにより、印刷タスクをコンピュータ上に生成することができる。印刷タスク実行手段２は複数の印刷タスクを並列に実行することができるように構成されている。
【００２３】
制御テーブル２１は、複数の印刷タスクについて画像データが記憶される記憶領域の解放を効率よく行うための情報を格納するテーブルである。図２に制御テーブル２１の例を示す。制御テーブル２１は、最大並列実行可能な印刷タスク数に相当するレコードを備え、各レコードには印刷タスクＩＤと、セマフォフラグ変数を記憶する領域が設けられている。印刷タスクＩＤは印刷タスクを特定するための番号等である。セマフォフラグは複数の印刷タスクについて排他制御を行うために用いる変数である。セマフォフラグは、例えば１もしくは０を取り、各レコードのセマフォフラグのうち常に一つのセマフォフラグのみが１を取るように制御することで、排他制御に用いることができる。
【００２４】
カウンタ２２は、初期値として０が与えられており、印刷手段３より排出信号３００を受け取ることによりカウンタ値が−１され、画像データの転送が終了することによりカウンタ値が＋１される。なお、カウンタの動作に関し、正負を逆とする構成も考えられ、その場合、後述するカウンタに基づく条件判断も不等号の向きが逆になる。また、カウンタに対する加算減算の値は±１以外であってもよい。
【００２５】
印刷実行手段３１は、受信した画像データに基づいて画像を印刷する。複数の画像データを受信した場合は、受信した順番に画像を印刷することになる。印刷実行手段３１は、給紙トレイ、給紙機構、感光体、静電潜像形成手段、現像・定着手段、排紙口といった、従来のレーザプリンタが有する各手段（図示せず）を備えている。
【００２６】
排出検知手段３２は、印刷実行手段３１の排紙口近傍に設けられており、印刷実行手段３１から記録紙が排出された場合に検知し、排出信号として印刷タスク実行手段２中のカウンタ２２に送信する。
（印刷タスク実行手段における処理の流れ）
（第１実施形態の第１実施例）
本実施形態の第１実施例の処理の流れについて説明する。図３は、印刷タスクによる処理の流れを示したフローチャートである。初期状態として、カウンタ値は０、制御テーブルのトップのレコードのみセマフォフラグが１、それ以外のレコードのセマフォフラグには０が設定されているとする。また、カウンタ２２は、印刷手段３から受け取る排出信号に基づいて−１カウント（＋１カウント減算）される。
【００２７】
ステップＳ１０１において、印刷タスクは印刷開始命令を印刷手段２に出力するとともに、制御テーブル中の空きレコード（タスクＩＤが書き込まれていないレコード）に自己のタスクＩＤを書き込む。
【００２８】
ここで、制御テーブルには最大並列実行可能タスク数分のレコードが用意されており、図において上から下に向かう順番にタスクＩＤが書き込まれていくものとする。そして、一番下までレコードが書き込まれると、再びトップのレコードに戻って書き込まれるものとする。
【００２９】
ステップＳ１０２において、印刷タスクは印刷手段３より印刷準備完了信号を受け取った後、画像データを印刷手段３に転送する。画像データの転送が終了した後、ステップＳ１０３に進む。
【００３０】
ステップＳ１０３において、印刷タスクは、タスクＩＤを書き込んだレコードが有するセマフォフラグをチェックする。セマフォフラグの値が０の場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ１０３に戻る。セマフォフラグの値が１の場合、ステップＳ１０４に進む。
【００３１】
ステップＳ１０４において、印刷タスクは、カウンタ２２を＋１カウントする。
【００３２】
ステップＳ１０５において、カウンタ２２の値が正値の場合、、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ１０５に戻る。そうでない場合（すなわち非正値の場合）、ステップＳ１０６に進む。  ここで、カウンタ値は排出情報を受信することにより−１されるため、カウンタ２２の値が非正値となっている場合は、当該印刷タスクの画像データについて印刷が終了し記録紙が排出されていることを意味する。従って、印刷タスクは、カウンタ２２に基づいて、自己の画像データに関し印刷が終了し記録紙が排出されたかどうかを判断することができる。
【００３３】
ステップＳ１０６において、印刷タスクは、タスクＩＤを書き込んだレコードが有するセマフォフラグを０に変更し、次のレコード（図２において下にあるレコード）が有するセマフォフラグを１に変更する。そして、制御テーブルより自己のタスクＩＤを消去するとともに、画像データを展開した記憶領域を解放して、終了する。
【００３４】
印刷タスク実行手段２で実行される印刷タスクをこのように構成することにより、印刷手段３においては何ら計算等を行わずに排出情報を送信するのみで、記憶領域の解放を効率よく行うことができる。また、排出情報はカウンタ２２に静的に記憶されるため、排出情報の受信が画像データの転送終了前であったとしてもカウンタ値に基づいて記録紙が排出されたことを判断することができ、単に信号を受信して利用する場合に比べ信号の取りこぼしを無くすことができる。更に、制御テーブル２１のセマフォフラグを用いて複数の印刷タスクについて排他制御を行うことにより、レコードの順番に従って、カウンタ２２へのアクセス及び記憶領域の解放を順次実行することができるため、誤ってまだ記録紙が排出されていない画像データについて記憶領域を解放してしまうことはない。
（第１実施形態の第２実施例）
本実施形態の第２実施例の処理の流れについて説明する。本実施例では、印刷タスクとは独立に印刷タスク実行手段２においてカウンタタスクが生成される点、および、制御テーブルの各レコードに、セマフォフラグ変数を記憶する領域に代えて、転送終了フラグ変数を記憶する領域が設けられている点で、第１実施例と異なる。カウンタタスクはカウンタ２２を参照・変更するタスクであり、内部に制御テーブル中の一のレコードを指すことのできるポインタを備えている。
【００３５】
図４は、第２実施例における印刷タスクの処理の流れを、図５は、第２実施例におけるカウンタタスクの処理の流れを示したフローチャートである。
【００３６】
初期状態として、カウンタ２２のカウンタ値は０、制御テーブルの転送終了フラグは全てのレコードについて０、カウンタタスクのポインタには制御テーブルのトップのレコードが設定されているとする。また、カウンタ２２は、印刷手段３から受け取る排出信号に基づいて−１カウントされる。
【００３７】
最初に印刷タスクの処理の流れについて説明する。
【００３８】
ステップＳ２０１において、印刷タスクは印刷開始命令を印刷手段３に出力するとともに、制御テーブル中の空きレコード（タスクＩＤが書き込まれていないレコード）に自己のタスクＩＤを書き込む。
【００３９】
ここで、制御テーブルには最大並列実行可能タスク数分のレコードが用意されており、図において上から下に向かう順番にタスクＩＤが書き込まれていくものとする。そして、一番下までレコードが書き込まれると、再びトップのレコードに戻って書き込まれるものとする。
【００４０】
ステップＳ２０２において、印刷タスクは印刷手段３より印刷準備完了信号を受け取った後、画像データを印刷手段３に転送する。
【００４１】
ステップＳ２０３において、画像データの転送が終了した後、タスクＩＤを書き込んだレコードが有する転送終了フラグを１に変更し、終了する。
【００４２】
次に、カウンタタスクの処理の流れを説明する。
【００４３】
ステップＳ３０１において、カウンタタスクは、ポインタが指すレコードについて、転送終了フラグをチェックする。転送終了フラグの値が０の場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ３０１に戻る。転送終了フラグの値が１の場合、ステップＳ３０２に進む。
【００４４】
ステップＳ３０２において、カウンタタスクは、カウンタ２２の値を＋１カウントする。
【００４５】
ステップＳ３０３において、カウンタ２２の値が正値の場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、、ステップＳ３０３に戻る。そうでない場合（非正値の場合）、ステップＳ３０４に進む。
【００４６】
ステップＳ３０４において、カウンタタスクは、ポインタが指すレコードについてタスクＩＤを消去し、転送終了フラグを０に変更するとともに、当該タスクＩＤを有する印刷タスクについて、画像データを展開した記憶領域を解放する。そして、ポインタの値を次のレコード（図２において下にあるレコード）に変更して、ステップＳ３０１に戻る。なお、ポインタが最も下のレコードを指している場合はトップのレコードに変更する。
【００４７】
以上の処理において、カウンタ２２が＋１されるのは各印刷タスクにつき１回のみである。このことは、カウンタ２２は印刷タスクの生成に対応して＋１されることを意味している。
【００４８】
印刷タスク実行手段２で実行される印刷タスク、カウンタタスクをこのように構成することにより、印刷手段３においては何ら計算等を行わずに排出情報を送信するのみで、記憶領域の解放を効率よく行うことができる。また、排出情報はカウンタ２２に静的に記憶されるため、印刷タスク実行手段２における排出情報の受信に関し画像データの転送の前後を問わずに利用することができ、単に信号を受信して利用する場合に比べ信号の取りこぼしを無くすことができる。更に、カウンタタスクのポインタを用いて複数の印刷タスクについて排他制御を行うことにより、レコードの順に従って、記憶領域の解放を順次実行することができるため、誤ってまだ記録紙が排出されていない画像データについて解放してしまうことはない。
【００４９】
更に、各印刷タスクは画像データの転送が終了した時点で、タスクを終了することができるため、同時に実行される印刷タスク数を削減し、処理効率を向上させることができる。
（第１実施形態の第３実施例）
本実施形態の第３実施例の処理の流れについて説明する。本実施例は、カウンタタスクが生成される点、制御テーブル２１に転送終了フラグが設けられている点、カウンタタスクがポインタを備えている点では第２実施例と同様である。
【００５０】
ただし、制御テーブル２１には更にレコードごとに表裏フラグが設けられており、カウンタ２２の動作及びカウンタタスクの処理の流れが、印刷手段３において両面印刷が実行される場合に対応している点で、第２実施例と異なる。ここで、両面印刷とは、１枚の記録紙の裏表に、２つの印刷タスクから転送される画像データが印刷されることをいう。本実施例では裏面、表面の順番で印刷が行われるとする。
【００５１】
なお、表裏フラグは、印刷タスクが転送する画像データが表裏のどちらの面に対応する画像データなのかを示すフラグであり、本実施例では表に対応する場合に０、裏に対応する場合に１を取るものとする。
【００５２】
第３実施例においては、カウンタ２２は、印刷手段３から受け取る排出信号に基づいて−２カウント（＋２カウント減算）される。
【００５３】
図６は、第３実施例におけるカウンタタスクの処理の流れを示したフローチャートである。なお、第３実施例における印刷タスクの処理の流れは図４に示される第２実施例におけるフローとほぼ同様である。ただし、各印刷タスクは、タスクＩＤ書込み時等に、転送する画像データの表裏に応じて表裏フラグに対しても値を書き込む。
【００５４】
ステップＳ４０１において、カウンタタスクは、ポインタが指すレコードについて、転送終了フラグをチェックする。転送終了フラグの値が０の場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ４０１に戻る。転送終了フラグの値が１の場合、ステップＳ４０２に進む。
【００５５】
ステップＳ４０２において、カウンタタスクは、カウンタ２２の値を＋１カウントする。
【００５６】
ステップＳ４０３において、表裏フラグの値が１の場合にステップＳ４０６に進み、０の場合にステップＳ４０４に進む。なお、本ステップは、両面の印刷が終了した場合にステップＳ４０４に進むように構成されていればよく、表面、裏面の順番で印刷が行われる場合は、逆の動作（０の場合にステップＳ４０６に進み、１の場合にステップＳ４０４に進む）となる。
【００５７】
ステップＳ４０４において、カウンタ２３のカウンタ値が正値の場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ４０４に戻る。そうでない場合、ステップＳ４０５に進む。
【００５８】
ステップＳ４０５において、カウンタタスクは、ポインタが指すレコード及びポインタが指すレコードの前のレコード（図２において上にあるレコード）について、書き込まれたタスクＩＤを有する印刷タスクの画像データを展開した記憶領域を解放する。そして、ポインタが指すレコード及びポインタが指すレコードの前のレコード（上にあるレコード）について、タスクＩＤを消去し、転送終了フラグを０に変更する。
【００５９】
ステップＳ４０６において、カウンタタスクは、ポインタの値を次のレコード（下にあるレコード）に変更して、ステップＳ４０１に戻る。なお、ポインタが最も下のレコードを指している場合はトップのレコードに変更する。
【００６０】
印刷タスク実行手段２で実行されるカウンタタスクをこのように構成することにより、第２実施例のおける効果に加え、印刷手段３における両面印刷に対応することができる。すなわち、記憶領域の解放は表裏フラグが１の場合にのみ実行されるように構成したため、記録紙の裏面の印刷が終わった段階では、記録紙の裏面に印刷された画像データの記憶領域が解放されることはなく、記録紙の表面の印刷が終わり記録紙が排出された段階で、表裏に印刷された２つの画像データの記憶領域が解放されることになる。
（第２の実施形態）
（プリンタ装置の構成）
図７を参照して本発明の第２の実施形態を説明する。本発明の第２の実施形態であるプリンタ装置１は、印刷タスク実行手段２、印刷手段３を備えて構成される。印刷タスク実行手段２は、制御テーブル２１、第２カウンタ２３、第３カウンタ２４、第４カウンタ２５を備えており、印刷手段３は印刷実行手段３１、面印刷検知手段３３、第１カウンタ３４を備えている。なお、プリンタ装置１は、印刷タスク実行手段２、印刷手段３以外に、通常のプリンタ装置が備える構成（例えば、ホストコンピュータから印刷データを受け取り、これを画像データに展開して所定の記憶領域に記憶する画像データ生成手段等）を備えている。
【００６１】
印刷タスク実行手段２は、印刷タスクを印刷データごとに生成し、実行する。また、印刷タスクとは独立に第１カウンタタスク及び第２カウンタタスクを実行する。ここで、印刷タスクは、所定の記憶領域に記憶されている画像データを印刷手段３に送信する処理を行うタスクである。また、第１カウンタタスクは第２カウンタ及び第３カウンタを参照・変更するタスクである。また、第２カウンタタスクは第３カウンタ及び第４カウンタを参照・変更するタスクであり、内部に制御テーブル中の一のレコードを指すことのできるポインタを備えている。
【００６２】
印刷タスク実行手段２は、物理的にはプリンタ制御やデータ処理に専用化したシステム、あるいは汎用の情報処理装置のいずれによって実現してもよい。例えば、演算手段と記憶手段とを備えた一般的な構成の情報処理装置において、印刷タスクの動作を規定したソフトウェアを起動することにより、印刷タスクをコンピュータ上に生成することができる。印刷タスク実行手段２は複数の印刷タスクを並列に実行することができるように構成されている。
【００６３】
制御テーブル２１は、複数の印刷タスクについて画像データが記憶される記憶領域の解放を効率よく行うための情報を格納するテーブルである。制御テーブル２１は、最大並列実行可能な印刷タスク数に相当するレコードを備え、各レコードには印刷タスクＩＤと、転送終了フラグ変数を記憶する領域が設けられている。印刷タスクＩＤは印刷タスクを特定するための番号等である。転送終了フラグ変数は、例えば、対応する印刷タスクについて転送が未終了の場合に０、終了した場合に１をとる変数である。
【００６４】
第２カウンタ２３は、初期値として０が与えられており、印刷手段３内の第１カウンタの値に基づいて所定の周期で更新される。第３カウンタ２４は、初期値として０が与えられており、印刷タスクの生成に対応して＋１カウントが加算され、第２のカウンタの更新に伴い−１カウントされる。第４カウンタ２５は、初期値として０が与えられており、印刷タスクの生成に対応して＋１カウントが加算され、所定の条件が満たされた場合に−１カウントされる。なお、各カウンタの動作に関し、正負を逆とする構成も考えられる。また、カウンタに対する加算減算の値は±１以外であってもよい。
【００６５】
印刷実行手段３１は、受信した画像データに基づいて画像を印刷する。複数の画像データを受信した場合は、受信した順番に画像を印刷することになる。印刷実行手段３１は、給紙トレイ、給紙機構、感光体、静電潜像形成手段、現像・定着手段、排紙口といった、従来のレーザプリンタが有する各手段（図示せず）を備えている。
【００６６】
面印刷検知手段３３は、印刷実行手段３１の排紙機構近傍に設けられており、印刷実行手段３１において単面の印刷が終了した場合に検知し、第１カウンタ３４（初期値０）に対して＋1カウントを加算する。なお、第１カウンタ３４は例えば４ビットで構成され、カウンタ値が１５まで進むと０に戻るように構成される。
（印刷タスク実行手段における処理の流れ）
（第２実施形態の第１実施例）
本実施形態の第１実施例の処理の流れについて説明する。図８は本実施形態における印刷タスクの処理の流れを、図９は本実施形態における第１カウンタタスクの処理の流れを、図１０は本実施形態における第２カウンタタスクの処理の流れを示したフローチャートである。
【００６７】
初期状態として、第２カウンタ２３〜第４カウンタ２５のカウンタ値は０、制御テーブル２１の転送終了フラグは全てのレコードについて０、第２カウンタタスクのポインタには制御テーブル２１のトップのレコードが設定されているとする。
【００６８】
最初に印刷タスクの処理の流れについて説明する。
【００６９】
ステップＳ５０１において、印刷タスクは印刷開始命令を印刷手段３に出力するとともに、制御テーブル２１中の空きレコード（タスクＩＤが書き込まれていないレコード）に自己のタスクＩＤを書き込む。
【００７０】
ここで、制御テーブル２１には最大並列実行可能タスク数分のレコードが用意されており、図において上から下に向かう順番にタスクＩＤが書き込まれていくものとする。そして、一番下までレコードが書き込まれると、再びトップのレコードに戻って書き込まれるものとする。
【００７１】
ステップＳ５０２において、印刷タスクは第３カウンタ及び第４カウンタに対し＋１を加算する。このことは、第３カウンタ及び第４カウンタは印刷タスクの生成に対応して＋１されることを意味している。
【００７２】
ステップＳ５０３において、印刷タスクは印刷手段３より印刷準備完了信号を受け取った後、画像データを印刷手段３に転送する。
【００７３】
ステップＳ５０４において、画像データの転送が終了した後、タスクＩＤを書き込んだレコードが有する転送終了フラグを１に変更し、終了する。
【００７４】
なお、ステップＳ５０１、ステップＳ５０２、ステップＳ５０３の実行順序はこの順番に限られず、任意の順番で実行可能である。
【００７５】
次に、第１カウンタタスクの処理の流れを説明する。
【００７６】
ステップＳ６０１において、第１カウンタタスクは、印刷手段３に対して第１カウンタ値の要求命令を出力し、印刷手段３より第１カウンタ値を取得する。
【００７７】
ステップＳ６０２において、第１カウンタタスクは、第１カウンタ値と第２カウンタ値を比較する。両者が一致しない場合、ステップＳ６０３に進む。両者が一致する場合、ステップＳ６０４に進む。
【００７８】
ステップＳ６０３において、第１カウンタタスクは、第２カウンタに第１カウンタの値を代入するとともに、第３カウンタに対して−１カウント（＋１を減算）する。
【００７９】
ステップＳ６０４において、第１カウンタタスクは、一定周期でステップＳ６０１〜Ｓ６０３までの処理が実行されるように、例えば１００ｍｓｅｃＤｅｌａｙを実行する。その後、ステップＳ６０１に戻る。
【００８０】
次に、第２カウンタタスクの処理の流れを説明する。
【００８１】
ステップＳ７０１において、第２カウンタタスクは、ポインタが指すレコードについて、転送終了フラグをチェックする。転送終了フラグの値が０の場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ７０１に戻る。転送終了フラグの値が１の場合、ステップＳ７０２に進む。
【００８２】
ステップＳ７０２において、第２カウンタタスクは、第３カウンタ値と第４カウンタ値を比較する。両者が一致しない場合、ステップＳ７０３に進む。両者が一致する場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ７０２に戻る。
【００８３】
ステップＳ７０３において、第２カウンタタスクは、第４カウンタに対して−１カウント（＋１を減算）する。
【００８４】
ステップＳ７０４において、第２カウンタタスクは、ポインタが指すレコードについてタスクＩＤを消去し、転送終了フラグを０に変更するとともに、当該タスクＩＤを有する印刷タスクについて、画像データを展開した記憶領域を解放する。そして、ポインタの値を次のレコード（図２において下にあるレコード）に変更して、ステップＳ７０１に戻る。なお、ポインタが最も下のレコードを指している場合はトップのレコードに変更する。
【００８５】
印刷タスク実行手段２で実行される印刷タスク、第１カウンタタスク、第２カウンタタスクをこのように構成することにより、印刷手段３においては単に単面印刷の終了により加算のみ行われる第１カウンタを備えるだけで、記憶領域の解放を効率よく行うことができる。また、印刷手段３内の面数情報は第３カウンタに静的に記憶されるため、単に信号を受信して利用する場合に比べ信号の取りこぼしを無くすことができる。更に、第２カウンタタスクのポインタを用いて複数の印刷タスクについて排他制御を行うことにより、レコードの順番に従って、記憶領域の解放を順次実行することができるため、誤ってまだ記録紙が排出されていない画像データについて解放してしまうことはない。
【００８６】
更に、各印刷タスクは画像データの転送が終了した時点で、タスクを終了することができるため、同時に実行される印刷タスク数を削減し、処理効率を向上させることができる。
（第２実施形態の第２実施例）
本実施形態の第２実施例の処理の流れについて説明する。本実施例は、各カウンタの動作及び各カウンタタスクの処理の流れが、印刷手段３において両面印刷が実行される場合に対応している点で、第１実施例と異なる。また、印刷タスク実行手段２が、第１カウンタタスクにより変更され、第２カウンタタスクにより参照される印刷面状態変数を記憶する領域を備えている点で第１実施例と異なる。印刷面状態変数は、印刷手段３において最近に印刷が終了した面が表面か裏面かを特定するために用いられる変数である。
【００８７】
図１１は本実施例における第１カウンタタスクの処理の流れを、図１２は本実施例における第２カウンタタスクの処理の流れを示したフローチャートである。なお、本実施例における印刷タスクの処理の流れは図８に示される第１実施例におけるフローと同様であるため説明を省略する。
【００８８】
初期状態として、第２カウンタ〜第４カウンタのカウンタ値は０、印刷面状態変数は１、制御テーブルの転送終了フラグは全てのレコードについて０、第２カウンタタスクのポインタには制御テーブルのトップのレコードが設定されているとする。
【００８９】
最初に、第１カウンタタスクの処理の流れを説明する。
【００９０】
ステップＳ８０１において、第１カウンタタスクは、印刷手段３に対して第１カウンタ値の要求命令を出力し、印刷手段３より第１カウンタ値を取得する。
【００９１】
ステップＳ８０２において、第１カウンタタスクは、第１カウンタ値と第２カウンタ値を比較する。両者が一致しない場合、ステップＳ８０３に進む。両者が一致する場合、ステップＳ８０４に進む。
【００９２】
ステップＳ８０３において、第１カウンタタスクは、第２カウンタに対して第１カウンタの値を代入するとともに、第３カウンタに対して−２カウント（＋２を減算）する。また、印刷面状態変数に−１を乗算する。
【００９３】
ステップＳ８０４において、第１カウンタタスクは、一定周期でステップＳ８０１〜Ｓ８０３までの処理が実行されるように、例えば１００ｍｓｅｃＤｅｌａｙを実行する。その後、ステップＳ８０１に戻る。
【００９４】
次に、第２カウンタタスクの処理の流れを説明する。
【００９５】
ステップＳ９０１において、第２カウンタタスクは、ポインタが指すレコードについて、転送終了フラグをチェックする。転送終了フラグの値が０の場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ９０１に戻る。転送終了フラグの値が１の場合、ステップＳ９０２に進む。
【００９６】
ステップＳ９０２において、第２カウンタタスクは、印刷面状態変数が−１の場合にステップＳ９０６に進み、１の場合にステップＳ９０３に進む。
【００９７】
ステップＳ９０３において、第２カウンタタスクは、第３カウンタ値と第４カウンタ値を比較する。両者が一致しない場合、ステップＳ９０４に進む。両者が一致する場合、例えば１００ｍｓｅｃＤｅｌａｙを実行し、ステップＳ９０３に戻る。
【００９８】
ステップＳ９０４において、第２カウンタタスクは、第４カウンタに対して−２カウント（＋２を減算）する。
【００９９】
ステップＳ９０５において、カウンタタスクは、ポインタが指すレコード及びポインタが指すレコードの前のレコードについて、書き込まれたタスクＩＤを有する印刷タスクの画像データを展開した記憶領域を解放する。そして、ポインタが指すレコード及びポインタが指すレコードの前のレコードについて、タスクＩＤを消去し、転送終了フラグを０に変更する。
【０１００】
ステップＳ９０６において、カウンタタスクは、ポインタの値を次のレコードに変更して、ステップＳ９０１に戻る。なお、ポインタが最も下のレコードを指している場合はトップのレコードに変更する。
【０１０１】
印刷タスク実行手段２で実行されるカウンタタスクをこのように構成することにより、第１実施例のおける効果に加え、印刷手段３における両面印刷に対応することができる。すなわち、記憶領域の解放は印刷面状態変数が１の場合にのみ実行されるように構成したため、記録紙の裏面の印刷が終わった段階では、記録紙の裏面に印刷された画像データの記憶領域が解放されることはなく、記録紙の表面の印刷が終わり記録紙が排出された段階で、表裏に印刷された２つの画像データの記憶領域が解放されることになる。
（変形例）
なお、本発明は上記各実施の形態に限定されることなく、種々に変形して適用することが可能である。例えば、両面印刷が実行される場合、印刷実行手段３１は、１枚目の記録紙の裏面、２枚目の記録紙の裏面、１枚目の記録紙の表面、２枚目の記録紙の表面、といった順番で印刷を行うように構成してもよい。かかる構成は、例えば、レコードへの書込み順が、１枚目の記録紙の裏面に対応する印刷タスク、２枚目の記録紙の裏面に対応する印刷タスク、１枚目の記録紙の表面に対応する印刷タスク、２枚目の記録紙の表面に対応する印刷タスクの順番となるように制御することにより実現できる。または、印刷面状態変数を単面印刷の終了に応じて１、２、３、４、１、２、・・・の順番に値が更新されるように構成し、図１２のステップＳ９０２において値が１の場合にステップＳ９０４に進む代わりに、値が３もしくは４の場合にステップＳ９０４に進むように構成すればよい。このような順番で印刷することにより、１枚目の記録紙について裏面印刷後に表裏をひっくり返すための紙送り動作を行っている間に、２枚目の記録紙の裏面の印刷動作を行うことができるため、印刷効率を高めることができる。
【図面の簡単な説明】
【０１０２】
【図１】第１実施形態のプリンタ装置の構成を示すブロック図である。
【図２】制御テーブルの例を示す図である。
【図３】第１実施形態の第１実施例における印刷タスクの処理の流れを示すフローチャートである。
【図４】第１実施形態の第２実施例における印刷タスクの処理の流れを示すフローチャートである。
【図５】第１実施形態の第２実施例におけるカウンタタスクの処理の流れを示すフローチャートである。
【図６】第１実施形態の第３実施例におけるカウンタタスクの処理の流れを示すフローチャートである。
【図７】第２実施形態のプリンタ装置の構成を示すブロック図である。
【図８】第２実施形態の第１実施例における印刷タスクの処理の流れを示すフローチャートである。
【図９】第２実施形態の第１実施例における第１カウンタタスクの処理の流れを示すフローチャートである。
【図１０】第２実施形態の第１実施例における第２カウンタタスクの処理の流れを示すフローチャートである。
【図１１】第２実施形態の第２実施例における第１カウンタタスクの処理の流れを示すフローチャートである。
【図１２】第２実施形態の第２実施例における第２カウンタタスクの処理の流れを示すフローチャートである。
【符号の説明】
【０１０３】
１  プリンタ装置、２  印刷タスク実行手段、２１  制御テーブル、２２  カウンタ、２３  第２カウンタ、２４  第３カウンタ、２５  第４カウンタ、３  印刷手段、３１  印刷実行手段、３２  排出検知手段、３３  面印刷検知手段、３４  第１カウンタ
【図１】
0004622002.tif 000002
【図２】
0004622002.tif 000003
【図３】
0004622002.tif 000004
【図４】
0004622002.tif 000005
【図５】
0004622002.tif 000006
【図６】
0004622002.tif 000007
【図７】
0004622002.tif 000008
【図８】
0004622002.tif 000009
【図９】
0004622002.tif 000010
【図１０】
0004622002.tif 000011
【図１１】
0004622002.tif 000012
【図１２】
0004622002.tif 000013