(57)【要約】【課題】従来のパケットサイズは、Ｄ４通信の初期化の際決定されるパケットサイズに固定され、印刷データの種類によっては、オーバヘッドが増大し、印刷効率を低下させていた。【解決手段】ホストコンピュータから印刷データを受信して印刷するプリンタにおいて、印刷開始時に前記ホストコンピュータからの第１の要求に応答して、前記印刷データの送信パケットサイズを返信し、送信パケット数を要求する前記ホストコンピュータからの第２の要求に応答して、受信可能な送信パケット数を返信し、当該返信した送信パケット数の印刷データを前記ホストコンピュータから受信するインタフェースタスクと、前記ホストから送信された印刷データを一時的に蓄積するバッファと、前記バッファに蓄積された印刷データを処理して印刷エンジンに印刷を指令する印刷タスクとを有し、前記インタフェースタスクは、前記第１の要求に応答して返信する送信パケットサイズを、現在処理中の印刷ジョブに対する前記バッファの空き速度に応じたサイズに可変制御することを特徴とするプリンタ。【選択図】図５
2004098313.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータから印刷データを受信して印刷するプリンタにおいて、
印刷開始時に前記ホストコンピュータからの第１の要求に応答して、前記印刷データの送信パケットサイズを返信し、送信パケット数を要求する前記ホストコンピュータからの第２の要求に応答して、受信可能な送信パケット数を返信し、当該返信した送信パケット数の印刷データを前記ホストコンピュータから受信するインタフェースタスクと、
前記ホストから送信された印刷データを一時的に蓄積するバッファと、
前記バッファに蓄積された印刷データを処理して印刷エンジンに印刷を指令する印刷タスクとを有し、
前記インタフェースタスクは、前記第１の要求に応答して返信する送信パケットサイズを、現在処理中の印刷ジョブに対する前記バッファの空き速度に応じたサイズに可変制御することを特徴とするプリンタ。
【請求項２】
請求項１において、
前記インタフェースタスクは、前記バッファの空き速度が第１の速度の時に、前記送信パケットサイズを第１のサイズに制御し、前記バッファの空き速度が前記第１の速度よりも速い第２の速度の時に、前記送信パケットサイズを前記第１のサイズよりも大きい第２のサイズに制御することを特徴とするプリンタ。
【請求項３】
請求項２において、
前記インタフェースタスクは、前記印刷ジョブに対する前記バッファの空き速度を監視し、前記送信パケットサイズを、改ページ毎に設定することを特徴とするプリンタ。
【請求項４】
請求項１において、
前記インタフェースタスクは、前記印刷タスクよりも高い優先度で実行されることを特徴とするプリンタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、印刷データの転送効率を高めたプリンタに関する。
【０００２】
【従来の技術】
プリンタは、ホストコンピュータから送信される印刷データを受信後、それを一時的にバッファと呼ばれる記憶装置に格納し、紙などの媒体やファイルに出力する。また、プリンタは、印刷進行状況、紙詰まり、またはインク切れなどの情報を印刷ステータスとしてホストコンピュータへ送信する。
【０００３】
そのために、プリンタは、ＩＥＥＥ１２８４．４という通信規格を用いて、ホストコンピュータとデータの送受信を行う。この通信（以降Ｄ４通信と呼ぶ）では、印刷ステータスや印刷データ等、扱うデータによりチャネルを分けて通信が行われる。
【０００４】
ホストコンピュータとプリンタは、印刷データを、パケットサイズを単位とするパケットに分割し、Ｄ４通信を行う。従来においては、印刷データを扱うチャネルを初期化する際に、ホストコンピュータにインストールされたプリンタドライバが指定するパケットサイズが、そのままパケットサイズとして固定的に設定されていた。つまり、チャネル初期化の際に設定されたパケットサイズが、どの印刷ジョブに対しても適用されていた。
【０００５】
チャネル初期化後、印刷データを転送するために、次の通信処理が行われる。即ち、最初にホストコンピュータが、プリンタドライバを介して、プリンタで一度に受信可能なパケット数を要求する（クレジット要求）。これに応答して、プリンタのインタフェースタスクは、受信バッファ内の空き領域に応じて、受信可能なパケット数を返信する。
【０００６】
受信バッファ内に空き領域が存在しない場合は、プリンタのインタフェースタスクは、ゼロクレジット（パケット数ゼロ）を返信し、それに応答して、プリンタドライバは、所定時間経過後に再度クレジット要求を送信する。プリンタから受信可能なパケット数が返信されると、ホストコンピュータは、プリンタドライバを介して、印刷データを、パケット数分だけ一度に送信する。
【０００７】
この印刷データの転送処理では、パケット数分の印刷データが連続して送信され、パケット毎に受信確認を行うことはない。ホストコンピュータは、１ページ分の印刷データを転送し終えたら、チャネルを閉じる処理を行う。そして、次ページの印刷データ転送処理として、チャネルの初期化を開始し、１ページ毎に上記の通信処理を繰り返す。
【０００８】
【発明が解決しようとする課題】
しかしながら、従来は、どの印刷ジョブに対しても、チャネル初期化の際に決定されたパケットサイズが固定的に適用される。テキストデータまたは画像データなど印刷ジョブのデータ種類に応じて、プリンタの印刷処理速度が異なるため、受信バッファ空き速度にも違いが生じる。
【０００９】
受信バッファ空き速度の遅い印刷ジョブに対して、設定されたパケットサイズが大きすぎると、１つのパケットを処理する前に、ホストコンピュータがクレジット要求し、プリンタがゼロクレジットを返信する確率が高い。ゼロクレジットが発生するとオーバヘッドが増大し、印刷効率は低下する。
【００１０】
また、受信バッファ空き速度の速い印刷ジョブに対して、設定されたパケットサイズが小さすぎると、クレジット要求とその応答回数が頻繁に発生し、オーバヘッドの増大を招き、同様に印刷効率は低下する。
【００１１】
したがって、固定されたパケットサイズが、ある印刷ジョブの印刷データに対しては最適であっても、別の印刷ジョブの印刷データに対しては、最適ではなく、このため印刷効率を高めることができないでいた。そこで、本発明の目的は、印刷ジョブ毎に最適なパケットサイズを設定することにより、印刷効率の高いプリンタを提供することにある。
【００１２】
【課題を解決するための手段】
上記目的は、本発明第１の発明によれば、ホストコンピュータから印刷データを受信して印刷するプリンタにおいて、印刷開始時に前記ホストコンピュータからの第１の要求に応答して、前記印刷データの送信パケットサイズを返信し、送信パケット数を要求する前記ホストコンピュータからの第２の要求に応答して、受信可能な送信パケット数を返信し、当該返信した送信パケット数の印刷データを前記ホストコンピュータから受信するインタフェースタスクと、前記ホストから送信された印刷データを一時的に蓄積するバッファと、前記バッファに蓄積された印刷データを処理して印刷エンジンに印刷を指令する印刷タスクとを有し、前記インタフェースタスクは、前記第１の要求に応答して返信する送信パケットサイズを、現在処理中の印刷ジョブに対する前記バッファの空き速度に応じたサイズに可変制御することを特徴とするプリンタを提供することで達成される。
【００１３】
第１の発明により、印刷ジョブ毎にパケットサイズを変更可能で、最適化されたパケットサイズを設定することにより、ホストコンピュータとプリンタ間で行われる印刷データ送信におけるオーバヘッドを減少させ、印刷効率を高めることが可能となる。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態について図面に従って説明する。しかしながら、本発明の技術的範囲はかかる実施の形態によって限定されるものではなく、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００１５】
図１は、本発明の実施の一形態における構成例を示す図である。ホストコンピュータ１０とプリンタ２０は、印刷データおよび印刷ステータスなどのデータを送受信するために、Ｄ４通信を行う。Ｄ４通信では、扱うデータ毎にチャネルを分けて通信が行われ、チャネルの初期化の際に、ホストコンピュータ１０とプリンタ２０は、以降の通信に使用するパケットサイズを決定する。
【００１６】
そして、ホストコンピュータ１０は、印刷データ等を、決定されたパケットサイズ毎に複数のパケットに分割し、プリンタ２０に送信する。送信されたパケットは、外部との通信を制御するインタフェースタスク２２で受信される。インタフェースタスク２２は、受信したパケットを受信バッファ２３に格納する。
【００１７】
印刷タスク２４は、受信バッファ２３に格納されたパケットから、分割前のデータを再構築する。印刷タスク２４は、再構築された印刷データを、印刷エンジン２５で印刷するために、受信した印刷データを印字可能データに変換すると同時に、印刷エンジン２５に供給する。
【００１８】
印字可能データへの変換とは、例えば、印刷エンジンのインクヘッドに備えられた各色のノズルの駆動に対応するデータに展開することである。印字可能データに変換した後印刷タスク２４は、印刷エンジン２５に、変換されたデータと印刷エンジンの制御コマンドを送信する。
【００１９】
印刷エンジン２５は、例えば、インクヘッドおよび給排紙機構などを有し、印刷タスク２４からの制御コマンドに従って紙などの媒体に印刷を行う。印刷タスク２４の処理によって、受信バッファ２３からデータが読み出されるので、受信バッファ２３には空き領域が生じる。ホストコンピュータ１０は、受信バッファ２３に空き領域があれば、残りの印刷データを転送し終えるまで、順次データ転送処理を行う。
【００２０】
なお、インタフェースタスク２２および印刷タスク２４は、メモリ２６に格納されるアプリケーションプログラムをＣＰＵ２１が実行することで機能的に実現されるが、ハードウエアとして実現することも可能である。
【００２１】
図２は、受信バッファ２３の内部を模式的に表した一例を示す図である。受信バッファをパケットサイズ毎に区切ったときの１つのブロックをクレジット２７と呼ぶ。
【００２２】
１クレジットの大きさは、パケットサイズに等しく、クレジット数とパケット数は１対１に対応する。すなわち、空きクレジット数に等しいパケット数を受信可能である。図２では、１２８キロバイトの受信バッファに対し、パケットサイズが１６キロバイトの８クレジットが含まれる。
【００２３】
図３および図４は、本発明におけるデータ転送処理を説明する図である。ページ毎に、図５で後述するパケットサイズ決定処理を実施することにより、ページ毎にパケットサイズを変更することができる例である。
【００２４】
図３ではまず、ホストコンピュータ１０は、オープンリクエストコマンドを送信し、ページデータ転送に使用するチャネルの初期化を行う（Ｓ３０１）。コマンドの引数として、ホストコンピュータ１０は、パケットサイズを６５，５３５バイトと指定する。これは、図７にて説明するパケットサイズフィールドで表現できる最大数である。
【００２５】
プリンタ２０は、後述するパケットサイズ決定処理を行い、パケットサイズを決定する（Ｓ３０２）。図３では、１６キロバイトに決定されるとする。そして、プリンタ２０は、ステップＳ３０１で送信されたオープンチャネルリクエストコマンドへの応答として、オープンチャネルリプライコマンドをホストコンピュータ１０に送信する（Ｓ３０３）。
【００２６】
図３では、ステップＳ３０２で決定された１６キロバイトが、ホストコンピュータ１０に応答される。ステップＳ３０１、Ｓ３０２、Ｓ３０３により、以降のページデータ転送処理で使用されるパケットサイズが１６キロバイトと決定される。
【００２７】
次に、ホストコンピュータ１０は、印刷データを転送するために、受信バッファの受信可能パケット数を要求する（Ｓ３０４）。プリンタ２０では、受信バッファ２３の空きクレジット数を受信可能パケット数として応答する（Ｓ３０５）。ここでは、６クレジットの空きが通知される。
【００２８】
ホストコンピュータ１０は、ステップＳ３０５で応答されたクレジット数に合わせてデータを送信する（Ｓ３０６）。ホストコンピュータ１０は、６パケットをプリンタ２０に送信する。
【００２９】
ホストコンピュータ１０は、ページデータの送信を完了し、クローズチャネルリクエストコマンドを送信し、チャネルの使用を終了する（Ｓ３０７）。プリンタ２０は、クローズチャネルリクエストへの応答として、クローズチャネルリプライコマンドをホストコンピュータ１０に送信する（Ｓ３０８）。この時点で、ページデータ転送処理は一旦終了する。
【００３０】
続いて、さらにページデータがあれば、次ページのデータ転送処理を開始する。
ホストコンピュータ１０は、オープンリクエストコマンドを送信し、ページデータ転送に使用するチャネルの初期化を行う（Ｓ３０９）。コマンドの引数として、ホストコンピュータ１０は、パケットサイズを６５，５３５バイトと指定する。
【００３１】
プリンタ２０は、後述するパケットサイズ決定処理を行い、パケットサイズを決定する（Ｓ３１０）。図３では、２０キロバイトに決定されるとする。そして、プリンタ２０は、ステップＳ３０９で送信されたオープンチャネルリクエストコマンドへの応答として、オープンチャネルリプライコマンドをホストコンピュータ１０に送信する（Ｓ３１１）。
【００３２】
図３では、ステップＳ３１０で決定された２０キロバイトが、ホストコンピュータ１０に応答される。ステップＳ３０９、Ｓ３１０、Ｓ３１１により、以降のページデータ転送処理で使用されるパケットサイズが２０キロバイトと決定される。次に、ホストコンピュータ１０は、印刷データを転送するために、受信バッファの受信可能パケット数を要求する（Ｓ３１２）。
【００３３】
図４に移り、プリンタ２０では、受信バッファ２３の空きクレジット数を受信可能パケット数として応答する（Ｓ３１３）。図４では、４クレジットの空きが通知される。ホストコンピュータ１０は、ステップＳ３１３で応答されたクレジット数に合わせてデータを送信する（Ｓ３１４）。ホストコンピュータ１０は、４パケットをプリンタ２０に送信する。
【００３４】
以降は、ページデータを転送し終えるまで、ステップＳ３１２からＳ３１４を繰り返し、ページデータを転送し終えたら、ステップＳ３０７、Ｓ３０８同様、クローズチャネルリクエスト、クローズチャネルリプライコマンドにより、チャネルの使用を停止する。
【００３５】
図３および図４のデータ転送処理によって、ページ毎に、パケットサイズを変更することが可能となり、最適なパケットサイズを設定することで、オーバヘッドを減少させ、印刷効率を高めることができる。ページ毎にパケットサイズを変更するので、印刷ジョブ毎にパケットサイズを変更することにもなる。続いて、どのようにして最適なパケットサイズを決定するかを説明する。
【００３６】
図５は、パケットサイズ決定処理を説明するフローチャートである。受信バッファ空き速度は、印刷ジョブの印刷データの種類に応じて異なる。受信バッファ空き速度の速い印刷ジョブに対して、パケットサイズを現在の設定より大きくすれば、クレジット要求とその応答回数が減少し、印刷効率を改善することができる。また、受信バッファ空き速度が遅い印刷ジョブに対して、パケットサイズを現在の設定よりも小さくすれば、ゼロクレジットによるオーバヘッドが減少し、印刷効率を改善することが可能である。
【００３７】
従って、本パケットサイズ決定処理では、パケットサイズに応じて設定された基準値を基に、印刷ジョブのページデータを印刷する際の受信バッファ空き速度を判定し、基準値よりも速い場合は、パケットサイズを大きく設定する。また、基準値よりも遅い場合は、パケットサイズを小さく設定し、印刷ジョブ毎にパケットサイズを最適に設定する。
【００３８】
まず、プリンタ２０は、印刷するページが１ページ目かどうか判定し（Ｓ５０１）、印刷ジョブの１ページ目を印刷するのであれば、パケットサイズをデフォルト値に設定する（Ｓ５０２）。デフォルト値とは、あらかじめ設定された初期値のことで、例えば、１６キロバイトである。
【００３９】
プリンタ２０は、印刷ジョブの２ページ目以降を印刷するのであれば、前ページを印刷した際のバッファ空き速度を求める（Ｓ５０３）。バッファの空き速度は、ページデータの受信から１ページ分のデータが受信バッファから読み出されるまでの時間と、ページデータサイズから印刷タスク２４によって算出される。また、印刷タスク２４が、ページデータ受信から印刷終了までの時間と、ページデータサイズからバッファの空き速度を求めることも可能である。
【００４０】
プリンタ２０は、後述するタイムテーブルを参照し、現在のパケットサイズに対応するバッファ空き速度基準値を求める（Ｓ５０４）。タイムテーブルには、パケットサイズに対応するバッファ空き速度基準値が記述されている。タイムテーブルは、図示省略されたＲＯＭ（ＲｅａｄＯｎｌｙＭｅｍｏｒｙ）に出荷時に記録され、プリンタ２０の電源投入時にメモリ２６にロードされる。
【００４１】
続いて、プリンタ２０は、ステップＳ５０３で測定されたバッファ空き速度が、ステップＳ５０４のバッファ空き速度基準値よりも速いか判定する（Ｓ５０５）。これは、ＣＰＵ２１が、メモリ２６にロードされたバッファ空き速度基準値と、印刷タスク２４の持つ、測定されたバッファ空き速度を比較することで行う。
【００４２】
ステップＳ５０５で速いと判定された場合、現在のパケットサイズよりも大きなパケットサイズを設定する（Ｓ５０６）。ステップＳ５０５で遅いと判定された場合、現在のパケットサイズよりも小さなパケットサイズを設定する（Ｓ５０７）。
【００４３】
ステップＳ５０６またはＳ５０７にて起こるパケットサイズの増減量は、タイムテーブルにパケットサイズ増減量として、記録されており、例えば、４キロバイトである。そして、ステップＳ５０２またはＳ５０６またはＳ５０７で決定されたパケットサイズを基にページデータを印刷する（Ｓ５０８）。
【００４４】
上記ステップＳ５０１からＳ５０８に従って所定の回数パケットサイズを変更後（Ｓ５０９）、その印刷ジョブにて使用するパケットサイズを最終的に決定する（Ｓ５１０）。例えば、最後に設定されたパケットサイズを選択し、その印刷ジョブの残りのページデータに対するパケットサイズとして固定する。
【００４５】
ステップＳ５０９で、所定の回数に満たなければ、ステップＳ５０１からＳ５０８を行い、新たなページデータに対するパケットサイズを決定する。なお、図５では、所定の回数パケットサイズを変更後、最終的なパケットサイズを固定し、印刷ジョブの残りのページに対して、同じパケットサイズを使用するが、パケットサイズを固定せず、ページ毎に変更することも可能である。
【００４６】
図５のパケットサイズ決定処理によって、受信バッファ空き速度が速い印刷ジョブの場合、パケットサイズを現在の数値より大きく設定することで、クレジット要求とその応答回数によるオーバヘッドを減少でき、印刷効率の改善が可能である。また、受信バッファ空き速度が遅い印刷ジョブの場合、パケットサイズを現在の数値より小さく設定することで、ゼロクレジットによるオーバヘッドを減少でき、印刷効率の改善が可能である。
【００４７】
図６は、タイムテーブルの一例を示す図である。パケットサイズ６０１（単位キロバイト）ごとに、バッファ空き速度基準値６０２（単位キロバイト毎秒）とパケットサイズ変動量６０３（単位キロバイト）の対応が記録される。パケットサイズ６０１が大きくなれば、バッファ空き速度基準値も大きくなる関係にある。
【００４８】
例えば、パケットサイズ６０１がＹ１キロバイトの時、バッファ空き速度基準値６０２がＹ２キロバイト毎秒で、計測されたバッファ空き速度がＹ２キロバイト以上であれば、パケットサイズを現在よりＸ１キロバイト増加させる。逆に下回れば、Ｘ１キロバイト減少させる。
【００４９】
図７は、パケットサイズフィールドを説明する図である。図７には、Ｄ４通信にて使用されるパケット７１が描かれている。パケット７１は、ある用途に使用される複数のフィールドに区切られる。その中に、パケットサイズを決定するパケットサイズフィールド７２が２バイト確保される。このパケットサイズフィールド７２に、指定できる値は、０〜６５，５３５バイトである。図７に示されているのは、パケットサイズを１６キロバイトに設定する例である。
【００５０】
なお、本発明において、また、インタフェースタスク２２は、データ通信を安定化させるために、プリンタ内において、データ変換処理などを行う印刷タスク２４などに比較してより高い優先度でＣＰＵなどのリソースを占有する。これは、もしインタフェースタスク２２の優先度が印刷タスク２４などよりも低いと、ホストコンピュータ１０とインタフェースタスク２２がデータ通信中であっても、優先度の高い他のタスクによる割り込み処理がおき、データ通信が中断される。すると、データ通信を最初からやり直すことになり、ホストコンピュータ１０、プリンタ２０で更にリソースを消費し、印刷効率を悪くするためである。
【００５１】
従って、この優先度の高いインタフェースタスク２２による印刷データの転送効率を上げることで、データ変換処理を行う印刷タスク２４の処理時間も長くなり、さらに印刷処理効率を高めることができる。
【図面の簡単な説明】
【図１】実施の一形態における構成例を示す図
【図２】受信バッファの内部を模式的に表した一例を示す図
【図３】本発明におけるデータ転送処理を説明する図
【図４】本発明におけるデータ転送処理を説明する図
【図５】パケットサイズ決定処理を説明するフローチャート
【図６】タイムテーブルの一例を示す図
【図７】パケットサイズフィールドを説明する図
【符号の説明】
１０　ホストコンピュータ、　２０　プリンタ、　２１　ＣＰＵ、
２２　インタフェースタスク、　２３　バッファ、　２４　印刷タスク、
２５　印刷エンジン、　２６　メモリ、　２７　クレジット
【図１】
2004098313.tif 000003
【図２】
2004098313.tif 000004
【図３】
2004098313.tif 000005
【図４】
2004098313.tif 000006
【図５】
2004098313.tif 000007
【図６】
2004098313.tif 000008
【図７】
2004098313.tif 000009