(57)【要約】【課題】クライアントとの間で論理パケットを送受信する印刷装置において、印刷処理に用いられるマイクロプロセッサが高負荷状態となることを抑制することが可能な技術を提供する。【解決手段】印刷装置は、クライアントから複数種類の論理パケットを受信する受信部と、論理パケットをハードウェアで処理するハードウェアパケット処理部と、マイクロプロセッサを有しており論理パケットをソフトウェアで処理するソフトウェアパケット処理部と、複数種類の論理パケットを、ハードウェアパケット処理部で処理すべき論理パケットと、ソフトウェアパケット処理部で処理すべき論理パケットと、に仕分ける仕分け部と、を備える。【選択図】図１
2008073887.tif 000002
【特許請求の範囲】
【請求項１】
クライアントに接続された印刷装置であって、
前記クライアントから複数種類の論理パケットを受信する受信部と、
前記論理パケットをハードウェアで処理するハードウェアパケット処理部と、
マイクロプロセッサを含み、前記論理パケットをソフトウェアで処理するソフトウェアパケット処理部と、
前記複数種類の論理パケットを、前記ハードウェアパケット処理部で処理すべき論理パケットと、前記ソフトウェアパケット処理部で処理すべき論理パケットと、に仕分ける仕分け部と、
を備えることを特徴とする印刷装置。
【請求項２】
請求項１に記載の印刷装置であって、
前記印刷装置は、前記論理パケットの処理モードとして、特定種類の論理パケットを前記ハードウェアパケット処理部で処理する第１の処理モードと、前記特定種類の論理パケットを前記ソフトウェアパケット処理部で処理する第２の処理モードと、を有しており、
前記印刷装置は、さらに、前記印刷装置の動作状態に応じて、前記処理モードを前記第１の処理モード又は前記第２の処理モードに切り替える処理モード切替部を備える、
印刷装置。
【請求項３】
請求項２に記載の印刷装置において、
前記処理モード切替部は、前記印刷装置の動作状態がエラー状態である場合に、前記処理モードを前記第２の処理モードに切り替え、前記印刷装置の動作状態が通常状態である場合に、前記処理モードを前記第１の処理モードに切り替える、
印刷装置。
【請求項４】
請求項１ないし請求項３のいずれかに記載の印刷装置において、
前記仕分け部は、前記複数種類の論理パケットを仕分ける際に、前記クライアントに対して応答を返すべき内容を含む要応答論理パケットを、前記ハードウェアパケット処理部で処理すべき論理パケットとして仕分ける、
印刷装置。
【請求項５】
請求項４に記載の印刷装置において、
前記要応答論理パケットは、前記クライアントと前記印刷装置との間におけるフロー制御用のクレジットを要求するクレジット要求パケットである、
印刷装置。
【請求項６】
請求項１ないし請求項３のいずれかに記載の印刷装置であって、
印刷モードとして、少なくとも高画質印刷モードと低画質印刷モードとを有し、
前記仕分け部は、前記印刷モードとして前記高画質印刷モードが設定されると、印刷データを送信するためのクレジット要求パケットを、前記ハードウェアパケット処理部で処理すべき論理パケットとして仕分け、前記印刷モードとして前記低画質印刷モードが設定されると、印刷データを送信するためのクレジット要求パケットを、前記ソフトウェアパケット処理部で処理すべき論理パケットとして仕分ける、
印刷装置。
【請求項７】
請求項１ないし請求項６のいずれかに記載の印刷装置において、
前記論理パケットは、ヘッダ部とボディ部とを有し、
前記論理パケットの種類は、前記ヘッダ部に含まれる識別子、又は、前記ヘッダ部に含まれる識別子と前記ボディ部に含まれる識別子の組み合わせによって識別される、
印刷装置。
【請求項８】
クライアントに接続された印刷装置において、前記クライアントから受信した複数種類の論理パケットを処理するための論理パケット処理方法であって、
前記印刷装置は、前記論理パケットをハードウェアで処理するハードウェアパケット処理部と、マイクロプロセッサを含み前記論理パケットをソフトウェアで処理するソフトウェアパケット処理部と、を有し、
前記複数種類の論理パケットを、前記ハードウェアパケット処理部で処理すべき論理パケットと、前記ソフトウェアパケット処理部で処理すべき論理パケットと、に仕分ける工程を備えることを特徴とする論理パケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置において、印刷処理に用いられるマイクロプロセッサが高負荷状態となることを抑制する技術に関する。
【背景技術】
【０００２】
従来からクライアント（パーソナルコンピュータ等）と印刷装置とが接続された印刷システムにおいて、クライアントと印刷装置との間のデータ通信が論理パケットの送受信によって行われる場合があった。例えば、クライアントとプリンタとがＵＳＢ（Universal Serial Bus）で接続された印刷システムにおいて、印刷データや制御コマンド等がＤ４プロトコルで規定された論理的なパケット（以下、「Ｄ４パケット」と呼ぶ。）でやりとりされる場合があった。なお、Ｄ４プロトコルとは、ＩＥＥＥ  １２８４．４で規定された通信プロトコルである。このように、印刷データや制御コマンド等がＤ４パケットでやりとりされるシステムとして、下記特許文献１に記載されたネットワークシステムが挙げられる。
【０００３】
【特許文献１】特開２００６−１３９５８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般に、印刷装置はマイクロプロセッサを備えており、このマイクロプロセッサが所定のソフトウェア（ファームウェア）を実行することで、印刷を行う機構（プリンタエンジン）を駆動して印刷処理が行われる。ここで、論理パケットの送受信によってクライアントとの間でデータ通信を行う印刷装置では、前述のマイクロプロセッサが、印刷処理と併せて、論理パケットを解釈して所定の処理を実行する構成であることが多い。このような構成では、クライアントから頻繁に論理パケットを受信する等によって論理パケットの処理負荷が大きくなると、マイクロプロセッサが高負荷状態となって印刷処理が滞り、印刷に長時間を要するといった問題が発生し得る。
【０００５】
本発明は、クライアントとの間で論理パケットを送受信する印刷装置において、印刷処理に用いられるマイクロプロセッサが高負荷状態となることを抑制することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、クライアントに接続された印刷装置であって、前記クライアントから複数種類の論理パケットを受信する受信部と、前記論理パケットをハードウェアで処理するハードウェアパケット処理部と、マイクロプロセッサを含み、前記論理パケットをソフトウェアで処理するソフトウェアパケット処理部と、前記複数種類の論理パケットを、前記ハードウェアパケット処理部で処理すべき論理パケットと、前記ソフトウェアパケット処理部で処理すべき論理パケットと、に仕分ける仕分け部と、を備えることを要旨とする。
【０００７】
このように本発明の印刷装置では、複数種類の論理パケットが、ソフトウェアパケット処理部で処理すべき論理パケットと、ハードウェアパケット処理部で処理すべき論理パケットと、に仕分けられて処理されるので、全ての論理パケットをソフトウェアパケット処理部で処理する構成に比べて、ソフトウェアパケット処理部における負荷を軽減することができ、ソフトウェアパケット処理部が有するマイクロプロセッサが高負荷状態になることを抑制することができる。
【０００８】
上記印刷装置は、前記印刷装置は、前記論理パケットの処理モードとして、特定種類の論理パケットを前記ハードウェアパケット処理部で処理する第１の処理モードと、前記特定種類の論理パケットを前記ソフトウェアパケット処理部で処理する第２の処理モードと、を有しており、前記印刷装置は、さらに、前記印刷装置の動作状態に応じて、前記処理モードを前記第１の処理モード又は前記第２の処理モードに切り替える処理モード切替部を備えるようにしてもよい。
【０００９】
このような構成とすることで、印刷装置の動作状態が、マイクロプロセッサの処理負荷が高くなるような動作状態の場合には、第１の処理モードに切り替えてマイクロプロセッサの処理負荷を軽減し、マイクロプロセッサの処理負荷があまり高くならないような動作状態の場合には、第２の処理モードに切り替えて論理パケットを処理するといったことが可能となる。
【００１０】
上記印刷装置において、処理モード切替部は、前記印刷装置の動作状態がエラー状態である場合に、前記処理モードを前記第２の処理モードに切り替え、前記印刷装置の動作状態が通常状態である場合に、前記処理モードを前記第１の処理モードに切り替えるようにしてもよい。
【００１１】
このような構成とすることで、印刷装置がエラー状態である場合には、クライアントから受信した特定種類の論理パケットはソフトウェアで処理されるので、エラーの回復状況に応じて処理内容を変更するといったような柔軟な処理を行うことが可能となる。従って、エラー状態にも関わらず論理パケットがハードウェアで画一的に処理されてしまい、例えば、印刷処理ができないのにも関わらず通常状態（エラーの無い状態）と同じクレジット数をクライアントに通知してしまうといったことを抑制することができる。
【００１２】
上記印刷装置において、前記仕分け部は、前記複数種類の論理パケットを仕分ける際に、前記クライアントに対して応答を返すべき内容を含む要応答論理パケットを、前記ハードウェアパケット処理部で処理すべき論理パケットとして仕分けるようにしてもよい。
【００１３】
このような構成とすることで、クライアントに対して応答を返すという、高い処理負荷がかかる論理パケットがハードウェアパケット処理部で処理されるので、マイクロプロセッサの処理負荷を軽減することができる。
【００１４】
上記印刷装置において、前記要応答論理パケットは、前記クライアントと前記印刷装置との間におけるフロー制御用のクレジットを要求するクレジット要求パケットであってもよい。
【００１５】
このような構成とすることで、フロー制御のために比較的高い頻度でやりとりされるクレジット要求パケットがハードウェアパケット処理部で処理されるので、マイクロプロセッサの処理負荷を大幅に軽減することができる。
【００１６】
上記印刷装置は、印刷モードとして、少なくとも高画質印刷モードと低画質印刷モードとを有し、前記仕分け部は、前記印刷モードとして前記高画質印刷モードが設定されると、印刷データを送信するためのクレジット要求パケットを、前記ハードウェアパケット処理部で処理すべき論理パケットとして仕分け、前記印刷モードとして前記低画質印刷モードが設定されると、印刷データを送信するためのクレジット要求パケットを、前記ソフトウェアパケット処理部で処理すべき論理パケットとして仕分けるようにしてもよい。
【００１７】
このような構成とすることで、高画質印刷モードで印刷を行う場合には、マイクロプロセッサは、大量の印刷データを処理するために処理負荷が高くなるが、かかる印刷に用いる印刷データの送信用のクレジット要求パケットをハードウェアで処理することができるので、マイクロプロセッサが非常に高い負荷状態になることを抑制することができる。
【００１８】
上記印刷装置において、前記論理パケットは、ヘッダ部とボディ部とを有し、前記論理パケットの種類は、前記ヘッダ部に含まれる識別子、又は、前記ヘッダ部に含まれる識別子と前記ボディ部に含まれる識別子の組み合わせによって識別されてもよい。
【００１９】
このような構成とすることで、ヘッダ部に含まれる識別子及びボディ部に含まれる識別子によって、クライアントから受信する論理パケットがいずれの種類の論理パケットであるかを識別することができる。従って、仕分け部は、これらの識別子によって論理パケットの種類を識別して仕分けることが可能となる。
【００２０】
なお、本発明は、種々の形態で実現することが可能であり、例えば、論理パケット処理方法や、論理パケット処理方法または印刷装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明を実施するための最良の形態を実施例に基づいて以下の順序で説明する。
Ａ．第１の実施例：
Ｂ．第２の実施例：
Ｃ．第３の実施例：
Ｄ．変形例：
【００２２】
Ａ．第１の実施例：
Ａ１．印刷装置の概略構成：
図１は、本発明の一実施例としてのプリンタ１００の概略構成を示すブロック図である。このプリンタ１００は、ＵＳＢ制御モジュール１１０と、Ｄ４管理モジュール１２０と、ＲＡＭ管理モジュール１３０と、ＲＡＭ１４０と、マイクロプロセッサ１５０と、プリンタエンジン１６０と、を備えている。ＵＳＢ制御モジュール１１０は、プリンタ１００とパーソナルコンピュータ１０とがＵＳＢ接続するための物理的なインタフェースを有すると共に、ＵＳＢプロトコルを解釈してプリンタ１００をＵＳＢデバイスとして機能させる。Ｄ４管理モジュール１２０は、パーソナルコンピュータ１０から送信されるＤ４パケットを仕分けすると共に、特定の種類のＤ４パケット（後述するクレジット要求パケット）については、Ｄ４プロトコルに従った所定の処理を実行する。ＲＡＭ管理モジュール１３０は、ＲＡＭ１４０にデータを書き込んだり、ＲＡＭ１４０からデータを読み出したり、ＲＡＭ１４０における書き込みアドレス／読み出しアドレスを管理する。
【００２３】
Ｄ４管理モジュール１２０は、ヘッダ／コマンド解析部１２１と、データバッファ１２２と、応答生成部１２３と、を備えている。ヘッダ／コマンド解析部１２１は、Ｄ４パケットのヘッダを解析し、また、特定のヘッダを有するパケットに関しては、そのコマンドの一部も解析する。データバッファ１２２は、特定のＤ４パケット（クレジット要求パケットと後述するプリントデータパケットとを除くＤ４パケット）を格納する。応答生成部１２３は、クレジット要求応答のためのＤ４パケットを生成する。
【００２４】
ＲＡＭ管理モジュール１３０は、ストアモジュール１３１と、ストアアドレス管理部１３２と、ロードアドレス管理部１３３と、ＲＡＭ空き容量算出部１３４と、ロードモジュール１３５と、を備えている。ストアモジュール１３１は、ヘッダ／コマンド解析部１２１から送信されるデータをＲＡＭ１４０に書き込む。ストアアドレス管理部１３２は、ＲＡＭ１４０におけるデータ書き込みアドレスを管理する。ロードアドレス管理部１３３は、ＲＡＭ１４０におけるデータ読み出しアドレスを管理する。空き容量算出部１３４は、ストアアドレス管理部１３２及びロードアドレス管理部１３３から、それぞれが管理しているアドレスを定期的に取得して、これらアドレスに基づいてＲＡＭ１４０における空き容量を算出して、応答生成部１２３に定期的に通知する。
【００２５】
なお、以上説明したＵＳＢ制御モジュール１１０と、Ｄ４管理モジュール１２０と、ＲＡＭ管理モジュール１３０と、ＲＡＭ１４０と、はいずれもハードウェアで構成されている。
【００２６】
マイクロプロセッサ１５０は、ＲＡＭ１４０に記憶されている所定のソフトウェア（ファームウェア）を実行することによって、Ｄ４プロトコル処理部１５１として機能し、また、印刷処理部１５２及びプリンタ管理部１５３として機能する。Ｄ４プロトコル処理部１５１は、Ｄ４プロトコルを解釈して所定の処理を実行する。印刷処理部１５２は、パーソナルコンピュータ１０から送信される印刷データ（ページ記述言語で記載されたデータ等）に基づいてプリンタエンジン１６０を駆動して印刷処理を行う。プリンタ管理部１５３は、インク残量やエラーの有無等（ステータス）を管理する。なお、図１において、太い実線の矢印はクレジット要求／応答パケットの流れを示し、太い破線の矢印はプリントデータの流れを示す。
【００２７】
なお、前述のＵＳＢ制御モジュール１１０は請求項における受信部に相当し、また、応答生成部１２３が請求項におけるハードウェアパケット処理部に、Ｄ４プロトコル処理部１５１が請求項におけるソフトウェアパケット処理部に、ヘッダ／コマンド解析部１２１が請求項における仕分け部に、それぞれ相当する。
【００２８】
図２は、パーソナルコンピュータ１０とプリンタ１００との間におけるＤ４パケットの送受信に関する機能の階層構造を示す説明図である。プリンタ１００では、ＵＳＢ制御モジュール１１０が最下位層となり、その上に、Ｄ４管理モジュール１２０及びＤ４プロトコル処理部１５１とがある。ＵＳＢ制御モジュール１１０は、物理的なインタフェースを提供するＵＳＢデバイスインタフェース１１１と、ＵＳＢ論理デバイス１１２と、プリンタインタフェース１１３と、を備えている。ＵＳＢ論理デバイス１１２は、コントロールエンドポイント１１２ｅを備え、プリンタインタフェース１１３は、バルクアウトエンドポイント１１３ｅと、バルクインエンドポイント１１３ｆと、を備えている。
【００２９】
ここで、「エンドポイント」とは、ホストと通信を行う論理的なリソースである。コントロールエンドポイント１１２ｅは、標準デバイスリクエストの送受信を行うためのエンドポイントである。「標準デバイスリクエスト」とは、すべてのＵＳＢでサポートする必要がある基本的なリクエストである。バルクアウトエンドポイント１１３ｅ及びバルクインエンドポイント１１３ｆは、印刷を行うためのメッセージ送受信用エンドポイントである。
【００３０】
パーソナルコンピュータ１０は、最下位層から順番に、ＵＳＢホストインタフェース（ハードウェア）１１と、ＵＳＢシステムソフトウェア１２と、ＵＳＢプリンタクラスドライバ１３と、Ｄ４プロトコル処理部１４と、を備えている。そして、ＵＳＢシステムソフトウェア１２とコントロールエンドポイント１１２ｅとの間には、コントロールパイプが設けられている。このコントロールパイプは、ＵＳＢ通信における各種設定制御を行うための専用の論理チャネルである。また、ＵＳＢプリンタクラスドライバ１３とバルクアウトエンドポイント１１３ｅとの間には、バルクアウトパイプが設けられ、ＵＳＢプリンタクラスドライバとバルクインエンドポイント１１３ｆとの間には、バルクインパイプが設けられている。これらのバルクアウトパイプ及びバルクインパイプは、印刷を行うためのメッセージを送受信するための専用の論理チャネルである。
【００３１】
上述した各種論理チャネルの他に、パーソナルコンピュータ１０とプリンタ１００との間には、Ｄ４パケットを送受信するための３種類の論理チャネル（プリントデータチャネル、Ｄ４コントロールチャネル、プリントコントロールチャネル）が設定されている。なお、これらの３種類の論理チャネルは、プリンタ１００においてＤ４管理モジュール１２０又はＤ４プロトコル処理部１５１で終端されている。プリントデータチャネルは、印刷データ（プリントデータ）を含むＤ４パケットを送受信するための論理チャネルである。Ｄ４コントロールチャネルは、Ｄ４パケットの送受信を制御するためのＤ４パケットを送受信するための論理チャネルである。プリントコントロールチャネルは、印刷を制御するためのＤ４パケットを送受信するための論理チャネルである。
【００３２】
図３（ａ）は、パーソナルコンピュータ１０とプリンタ１００との間で送受信されるＤ４パケットの構成を示す。Ｄ４パケットは、６バイトのヘッダ部（Ｄ４ヘッダ）及びボディ部から成る。ヘッダ部は、プライマリソケットＩＤ（ＰＳＩＤ）フィールドと、セカンダリソケットＩＤ（ＳＳＩＤ）フィールドと、パケット長フィールドと、制御情報フィールドと、を含む。ＰＳＩＤ及びＳＳＩＤは、前述の３種類の論理チャネル（プリントデータチャネル、Ｄ４コントロールチャネル、プリントコントロールチャネル）を識別する論理チャネルＩＤとして用いられる。また、プリントデータチャネルとして複数の論理チャネルを設定することが可能であるので、論理チャネルＩＤは、これら複数のプリントデータチャネルを識別するＩＤとしても用いられる。制御情報フィールドには、Ｄ４プロトコルにおけるデータの伝送制御を行うための情報が格納される。ボディ部には、Ｄ４コマンドとそのパラメータや、Ｄ４コマンドに対するリプライや、プリントデータなどが格納される。
【００３３】
Ｄ４プロトコルでは、Ｄ４パケットの送受信においてフロー制御が行われる。具体的には、データの送信側が受信側に対して、受信可能なデータパケット数（クレジット数と呼ばれる）の通知を要求し、受信側が送信側にクレジット数を通知する。そして、送信側は、通知されたクレジット数までの任意の数のデータパケットを受信側に送信する。
【００３４】
図３（ｂ）は、クレジット要求で使用されるＤ４パケットのボディ部の構成を示す。クレジット要求パケットのボディ部は、コマンドフィールドと、ＰＳＩＤフィールドと、ＳＳＩＤフィールドと、要求クレジット数フィールドと、最大必要クレジット数フィールドと、から成る。コマンドフィールドには、クレジット要求コマンドが格納される。ＰＳＩＤ及びＳＳＩＤフィールドには、クレジットを使ってＤ４パケットを送信しようとする論理チャネルのＩＤが格納される。要求クレジット数及び最大必要クレジット数フィールドには、送信すべきデータの大きさや送信バッファの大きさ等に応じてその値が適宜設定して格納される。
【００３５】
図３（ｃ）は、クレジット要求に対する応答で使用されるＤ４パケットのボディ部の構成を示す。このクレジット要求応答パケットのボディ部は、コマンドフィールドと、リザルトフィールドと、ＰＳＩＤフィールドと、ＳＳＩＤフィールドと、提供クレジット数フィールドと、から成る。コマンドフィールドには、クレジット要求応答コマンドが格納される。リザルトフィールドには、クレジット要求の結果（成功／失敗）を示す情報が格納される。ＰＳＩＤ及びＳＳＩＤフィールドには、クレジットを要求された論理チャネルのＩＤが格納される。提供クレジット数フィールドには、受信側が通知するクレジット数が格納される。なお、クレジット要求パケット及びクレジット要求応答パケットでは、ヘッダ部の論理チャネルＩＤとして、クレジット要求／応答パケットを送受信するための論理チャネル（Ｄ４コントロールチャネル）のＩＤが格納される。
【００３６】
Ａ２．印刷データ送信シーケンス
図４は、パーソナルコンピュータ１０からプリンタ１００に印刷データ（プリントデータ）を送信する動作の一例を示すシーケンス図である。ステップ［１］では、パーソナルコンピュータ１０は、オープンチャネル要求パケットをプリンタ１００に送信し、ステップ［２］では、プリンタ１００は、オープンチャネル要求に対する応答パケットをパーソナルコンピュータ１０に送信する。オープンチャネル要求パケットは、これから送ろうとするプリントデータの送信用プリントデータチャネルをオープンするために送信される。なお、図４の例では、プリンタ１００は、要求されたプリントデータチャネルをオープンした旨（Ａｃｃｅｐｔ）をオープンチャネル要求応答パケットとして返信している。これらオープンチャネル要求／応答の各パケットは、Ｄ４コントロールチャネル上で送信される。
【００３７】
ステップ［３］では、パーソナルコンピュータ１０がクレジット要求パケットをプリンタ１００に送信する。ステップ［４］では、プリンタ１００は、クレジット要求応答パケットをパーソナルコンピュータ１０に送信する。クレジット要求及び応答のパケットは、Ｄ４コントロールチャネル上で送信される。なお、図４の例では、クレジット数として「４」が通知されている。
【００３８】
ステップ［５］では、パーソナルコンピュータ１０は、プリントデータパケットを送信する。ここで、パーソナルコンピュータ１０は、ステップ［４］でクレジット数として「４」を受信しているので、プリントデータパケットを４つ連続して送信している。このプリントデータパケットの送信は、オープンされているプリントデータチャネル上で送信される。
【００３９】
クレジット数分だけプリントデータを送信し終わると、ステップ［６］では、パーソナルコンピュータ１０は、再びクレジット要求パケットをプリンタ１００に送信し、ステップ［７］として、プリンタ１００は、クレジット要求応答パケットをパーソナルコンピュータ１０に送信する。図４の例では、パーソナルコンピュータ１０は、ステップ［７］においてクレジット数「２」を受信している。したがって、ステップ［８］では、パーソナルコンピュータ１０は、２つのプリントデータパケットを連続してプリンタ１００に送信する。このようにして、プリンタ１００からクレジット数が提供されるたびに、そのクレジット数だけプリントデータパケットを連続して送信することを繰り返す。そして、全てのプリントデータの送信が完了すると、パーソナルコンピュータ１０は、ステップ［９］として、クローズチャネル要求パケットをプリンタ１００に送信する。ステップ［１０］では、プリンタ１００は、クローズチャネル要求に対する応答パケットをパーソナルコンピュータ１０に送信する。クローズチャネル要求パケットは、プリントデータ送信に用いたプリントデータチャネルをクローズするために送信される。クローズチャネル要求及び応答パケットは、Ｄ４コントロールチャネル上で送信される。なお、図示は省略しているが、パーソナルコンピュータ１０とプリンタ１００との間では、プリンタコントロールチャネルを使って、プリンタ１００のステータス（インク残量やエラーの有無など）をパーソナルコンピュータ１０に定期的に通知するようにしている。
【００４０】
このように、パーソナルコンピュータ１０とプリンタ１００との間では、３種類の論理チャネル（プリントデータチャネル、Ｄ４コントロールチャネル、プリントコントロールチャネル）上で様々な種類（コマンド）のＤ４パケットが送受信されている。そして、図４に示すように、プリントデータの送受信においては、クレジットの要求／応答パケット及びプリントデータパケットが頻繁にパーソナルコンピュータ１０とプリンタ１００との間で送受信される。そこで、本実施例のプリンタ１００は、後述するパケット受信処理において、これら頻繁に送受信されるクレジット要求／応答パケット及びプリントデータパケットをハードウェアで処理することにより、マイクロプロセッサ１５０が高負荷状態となることを抑制するように構成されている。
【００４１】
なお、クレジット要求パケットが請求項における要応答論理パケットに相当する。また、３種類の論理チャネル（プリントデータチャネル、Ｄ４コントロールチャネル、プリントコントロールチャネル）上でそれぞれ転送される３種類のＤ４パケット（プリントデータ用のＤ４パケット、Ｄ４コントロール用のＤ４パケット、プリントコントロール用のＤ４パケット）が、請求項における「複数種類の論理パケット」に相当し、また、各論理チャネル上で転送される様々な種類（コマンド）のＤ４パケット（クレジット要求パケットやプリントデータパケットなど）も、請求項における「複数種類の論理パケット」に相当する。すなわち、Ｄ４パケットに含まれる所定の識別子によって分類される複数種類のパケットが、請求項における「複数種類の論理パケット」に相当する。
【００４２】
Ａ３．プリンタ１００におけるパケット受信処理：
図５は、第１の実施例におけるパケット受信処理の手順を示すフローチャートである。プリンタ１００では、電源がオンすると、種々のＤ４パケットを受信するため、パケット受信処理が開始される。
【００４３】
図５に示すパケット受信処理が開始されると、ヘッダ／コマンド解析部１２１（図１）は、ＵＳＢ制御モジュール１１０を介してＤ４パケットを受信するまで待機する（ステップＳ３０５）。そして、Ｄ４パケットを受信すると、ヘッダ／コマンド解析部１２１は、受信したＤ４パケットのＤ４ヘッダ及びボディ部のコマンドを解析する（ステップＳ３１０）。次に、ヘッダ／コマンド解析部１２１は、受信したＤ４パケットがクレジット要求パケットであるか否かを判定する（ステップＳ３１５）。具体的には、ヘッダ／コマンド解析部１２１は、受信したＤ４パケットのヘッダ部の論理チャネルＩＤにより「Ｄ４コントロールチャネル」であるか否かを判定し、Ｄ４コントロールチャネルである場合には、さらに、ボディ部のコマンドフィールドに「クレジット要求」を示す値が格納されているか否かを判定する。
【００４４】
受信したＤ４パケットがクレジット要求パケットである場合には、ヘッダ／コマンド解析部１２１は、受信したＤ４パケットのボディ部を応答生成部１２３に渡す。そして、応答生成部１２３は、ＲＡＭ空き容量算出部１３４から通知されるＲＡＭ１４０の空き容量に基づいてクレジット数を算出する（ステップＳ３２０）。上述したようにＲＡＭ空き容量算出部１３４からは定期的にＲＡＭ１４０の空き容量が通知されているので、応答生成部１２３は、最新の空き容量をＤ４パケットサイズで割ってクレジット数を算出する。次に、応答生成部１２３は、算出したクレジット数を通知するためのクレジット要求応答パケットを生成して、ＵＳＢ制御モジュール１１０を介してパーソナルコンピュータ１０に送信する（ステップＳ３２５）。なお、上述したステップＳ３０５〜Ｓ３２５は、図１の太い実線の矢印に示すように、マイクロプロセッサ１５０を介さずに全てハードウェアで処理される。
【００４５】
一方、受信したＤ４パケットがクレジット要求パケットでない場合には、ヘッダ／コマンド解析部１２１は、受信したＤ４パケットがプリントデータパケットであるか否かを判定する（ステップＳ３４５）。この判定は、受信したＤ４パケットの論理チャネルＩＤが、プリントデータチャネル用のＩＤであるか否かを判定することによって実行可能である。
【００４６】
受信したＤ４パケットがプリントデータである場合には、ヘッダ／コマンド解析部１２１は、受信したＤ４パケットのボディ部（プリントデータ）をストアモジュール１３１に渡す。そして、ストアモジュール１３１は、ストアアドレス管理部１３２から指示されたＲＡＭ１４０のアドレスにプリントデータを書き込む（ステップＳ３５０）。次に、ロードモジュール１３５は、ロードアドレス管理部１３３から指定されたＲＡＭ１４０のアドレスからプリントデータを読み出してマイクロプロセッサ１５０に渡す（ステップＳ３５５）。マイクロプロセッサ１５０において、印刷処理部１５２は、ロードモジュール１３５から渡されたプリントデータに基づき、プリンタエンジン１６０を駆動して印刷を実行する（ステップＳ３６０）。なお、ステップＳ３４５〜Ｓ３５５は、図１の太い破線の矢印に示すように、マイクロプロセッサ１５０を介さずに全てハードウェアで処理される。
【００４７】
前述のステップＳ３４５において、受信したＤ４パケットがプリントデータでないと判定すると、ヘッダ／コマンド解析部１２１は、受信したＤ４パケットをデータバッファ１２２に書き込み（ステップＳ３７５）、マイクロプロセッサ１５０に割り込み信号を送信する（ステップＳ３８０）。この割り込み信号は、データバッファ１２２にＤ４パケットを書き込んだ旨を通知する信号である。マイクロプロセッサ１５０においてＤ４プロトコル処理部１５１は、割り込み信号を受信すると、データバッファ１２２からＤ４パケットを読み出して（ステップＳ３８５）、Ｄ４パケットを解釈して所定のＤ４プロトコルを実行する（ステップＳ３９０）。なお、ステップＳ３８５，Ｓ３９０はソフトウェアで処理される。
【００４８】
具体的には、例えば、受信したＤ４パケットが、前述のオープンチャネル要求パケット（図４、ステップ［１］）である場合には、クレジット要求パケット及びプリントデータパケットでないので、このパケットは、データバッファ１２２を介してＤ４プロトコル処理部１５１に渡されて処理される。そして、Ｄ４プロトコル処理部１５１は、要求されたプリントデータチャネルがオープン可能であれば、オープンチャネル要求応答パケットを、ＵＳＢ制御モジュール１１０を介してパーソナルコンピュータ１０に送信する（図４、ステップ［２］）。
【００４９】
以上説明したように、プリンタ１００では、パーソナルコンピュータ１０から受信するＤ４パケットを、ヘッダ部の論理チャネルＩＤ及びボディ部のコマンドフィールドの値によって仕分けする。そして、クレジット要求パケット及びプリントデータパケットについてはハードウェアで処理を行い、その他パケットについては、ソフトウェアによって処理を行う。クレジット要求パケット及びプリントデータパケットはパーソナルコンピュータ１０から頻繁に受信するパケットであり、また、クレジット要求パケットは、応答を要するパケットであることから、これらのパケットの処理には処理を実行するモジュールに高い負荷がかかる。プリンタ１００では、これらのパケットの処理をハードウェアで実行しているので、マイクロプロセッサ１５０が高負荷状態となることを抑制することができる。
【００５０】
Ｂ．第２の実施例：
図６は、第２の実施例におけるプリンタの概略構成を示すブロック図である。このプリンタ１０１は、Ｄ４管理モジュール内にモード指定値レジスタ１２４を備えている点において図１に示すプリンタ１００と異なるものであり、他の構成については、プリンタ１００と同じである。第１の実施例のプリンタ１００では、パーソナルコンピュータ１０から受信したＤ４パケットを、ハードウェアで処理すべきパケット（クレジット要求パケット及びプリントデータパケット）と、ソフトウェアで処理すべきパケット（その他のパケット）と、に仕分けして処理していた。これに対して第２の実施例のプリンタ１０１では、このように仕分けしてＤ４パケットを処理する処理モード（仕分け処理モード）と、全てのＤ４パケットをソフトウェアで処理する処理モード（ソフトウェア処理モード）と、が処理モードとして設定されており、これら処理モードを切り替えてＤ４パケットを処理するように構成されている。なお、仕分け処理モードが請求項における第１の処理モードに相当し、ソフトウェア処理モードが請求項における第２の処理モードに相当する。また、プリンタ管理部１５３が請求項における処理モード切替部に相当する。
【００５１】
この処理モードの切り替えは、プリンタ管理部１５３によって制御される。具体的には、プリンタ管理部１５３は、インク残量や紙詰まりなどのアラート情報等をプリンタエンジン１６０などから取得して、プリンタ１００の状態を管理している。そして、プリンタ管理部１５３は、インク残量が僅かになったり紙詰まりが発生してプリンタ１００の動作状態がエラー状態となった場合には、処理モードを仕分け処理モードからソフトウェア処理モードに切り替えるように制御する。このように制御するのは、以下の理由による。仕分け処理モードの場合、第１の実施例で述べたように、ハードウェア処理によってクレジット数をパーソナルコンピュータ１０に通知してしまう。したがって、プリンタ１００の動作状態がエラー状態で印刷ができないのにも関わらず、パーソナルコンピュータ１０から次々とプリントデータを受信してしまうこととなる。そこで、動作状態がエラー状態となった場合には、処理モードをソフトウェア処理モードに切り替えて、ＲＡＭ１４０の空き容量と共にプリンタ１００の動作状態も考慮したクレジット数を通知するように制御する。
【００５２】
ここで、前述のモード指定値レジスタ１２４（図６）は、処理モードを指定する指定値を記憶するために用いられる。具体的には、プリンタ管理部１５３は、プリンタ１００の動作状態がエラー状態となった場合には、モード指定値レジスタ１２４にソフトウェア処理モードを意味する「１」を書き込み、通常状態（エラーの無い状態）の場合には、仕分け処理モードを意味する「０」を書き込む。
【００５３】
図７は、第２の実施例におけるパケット受信処理の手順を示すフローチャートである。第２の実施例の手順は、図５のフローチャートにステップＳ３１２を追加するものであり、他の手順は第１の実施例と同じである。ヘッダ／コマンド解析部１２１は、ステップＳ３１０においてＤ４パケットのヘッダ及びコマンドを解析すると、モード指定値レジスタ１２４の値を読み出して、モード指定値が「０」であるか否かを判定する（ステップＳ３１２）。モード指定値が「０」である場合には、仕分け処理モードが指定されて、プリンタ１００では第１の実施例と同じ処理が実行される。したがって、図７におけるクレジット要求／応答パケットの流れ及びプリントデータパケットの流れは、図１と同じになっている。一方、モード指定値が「１」である場合には、ソフトウェア処理モードが指定されることとなる。この場合、処理モードがソフトウェア処理モードに切り替わって、前述のステップＳ３７５〜Ｓ３９０が実行される。
【００５４】
図８は、ソフトウェア処理モードにおけるプリンタ１０１内でのデータの流れを示す説明図である。ソフトウェア処理モードの場合には、ステップＳ３７５〜Ｓ３９０（図７）が実行されることから、全てのＤ４パケットが、データバッファ１２２を介してＤ４プロトコル処理部１５１に渡されて処理される。したがって、クレジット要求／応答パケット及びプリントデータパケットも、Ｄ４プロトコル処理部１５１で処理されることとなる（太い実線の矢印及び破線の矢印）。図８の例では、プリンタエンジン１６０において紙詰まりが発生しており、モード指定値レジスタ１２４にモード指定値「１」が書き込まれている。したがって、クレジット要求パケットがＤ４プロトコル処理部に渡されるので、Ｄ４プロトコル処理部１５１は、プリンタ１００の動作状態に応じたクレジット数をパーソナルコンピュータ１０に通知することが可能となる。例えば、紙詰まりでエラー状態である場合にはクレジット数「０」を送信して、パーソナルコンピュータ１０からプリントデータを受信しないようにすることもできる。また、紙詰まりが解消されて通常状態に戻った直後の所定期間内は、クレジット数「１」を送信し、所定期間経過後には、モード指定値レジスタ１２４に「０」を書込んで処理モードを仕分け処理モードに切り替える構成とすることもできる。
【００５５】
Ｃ．第３の実施例：
図９は、第３の実施例におけるプリンタの概略構成を示すブロック図である。このプリンタ１０２は、Ｄ４管理モジュール内にクレジット数取得方法指定値レジスタ１２５を備えている点において図１に示すプリンタ１００と異なるものであり、他の構成については、プリンタ１００と同じである。第２の実施例では、プリンタ１０１の処理モードを仕分け処理モード又はソフトウェア処理モードに切り替えることで、プリンタ１０１の動作状態に応じたクレジット数をパーソナルコンピュータ１０に通知していた。これに対して、第３の実施例では、処理モードを仕分け処理モードに固定しながらも、プリンタ１０２の動作状態に応じたクレジット数をパーソナルコンピュータ１０に通知するように構成されている。
【００５６】
プリンタ１０２では、応答生成部１２３がクレジット数を得る方法として、第１の実施例のように、ＲＡＭ空き容量算出部１３４から通知されるＲＡＭ１４０の空き容量に基づいてクレジット数を算出して得る方法と、プリンタ管理部１５３の通知（指定）によってクレジット数を得る方法と、が設定されている。そして、プリンタ１０２の動作状態がエラー状態の場合には、応答生成部１２３は、プリンタ管理部１５３からの通知によってクレジット数を取得し、通常状態の場合には、第１の実施例と同様にしてクレジット数を算出して取得するように構成されている。
【００５７】
このようなクレジット数の取得方法の切り替えは、プリンタ管理部１５３によって制御される。具体的には、プリンタ管理部１５３は、プリンタ１０２の動作状態がエラー状態となると、クレジット数取得方法指定値レジスタ１２５にクレジット数取得方法指定値として「０」を書き込む。この指定値「０」は、プリンタ管理部１５３の通知によってクレジット数を取得する方法を指定する値であると共に、クレジット数「０」を指定する値である一方、プリンタ管理部１５３は、プリンタ１０２の動作状態が通常状態になると、クレジット数取得方法指定値レジスタ１２５に「１」を書き込む。この指定値「１」は、ＲＡＭ空き容量算出部１３４から通知される空き容量に基づいてクレジット数を算出する方法を指定する値である。
【００５８】
図１０は、第３の実施例におけるパケット受信処理の手順を示すフローチャートである。第３の実施例の手順は、図５に示すフローチャートにステップＳ３１８及びＳ４０５を追加するものであり、他の手順は第１の実施例と同じである。ステップＳ３１５において受信したＤ４パケットがクレジット要求パケットであると判定されると、応答生成部１２３は、クレジット数取得方法指定値レジスタ１２５からクレジット数取得方法指定値を読み出して、クレジット数取得方法指定値が０であるか否かを判定する（ステップＳ３１８）。指定値が「０」でない場合、すなわち、指定値が「１」である場合には、応答生成部１２３は、前述のステップＳ３２０，Ｓ３２５を実行して、ＲＡＭ１４０の空き容量に基づいてクレジット数を算出してパーソナルコンピュータ１０に通知する。一方、クレジット数取得方法指定値が「０」である場合には、応答生成部１２３は、クレジット数「０」をパーソナルコンピュータ１０に通知する（ステップＳ４０５）。
【００５９】
以上のような構成とすることで、クレジット要求パケットをハードウェアで処理すると共に、プリンタ１００の動作状態がエラー状態となった場合には、クレジット数「０」を送信して、パーソナルコンピュータ１０からプリントデータを受信しないようにすることができる。
【００６０】
Ｄ．変形例：
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００６１】
Ｄ１．変形例１：
上述した各実施例では、ハードウェアで処理されるＤ４パケットとしては、クレジット要求／応答パケット及びプリントデータパケットであったが、本発明はこれらに限定されるものではなく、任意の特定の種類のＤ４パケットをハードウェアで処理するようにしてもよい。具体的には、例えば、ステータス要求パケット及びステータス要求応答パケットをハードウェアで処理するようにしてもよい。ステータス要求パケットとは、上述したように、パーソナルコンピュータ１０がプリンタ１００〜１０２のステータス（インク残量等）を要求するパケットであり、ステータス要求応答パケットとは、パーソナルコンピュータ１０が、プリンタ１００〜１０２のステータスを通知するためのパケットである。ステータス要求応答パケットには、インク残量やプリンタ１００〜１０２の動作状態等がパラメータとして記述される。ここで、インク残量等のステータス取得はソフトウェアで処理される。具体的には、プリンタ管理部１５３がプリンタエンジン１６０等からステータスを取得する。そこで、ステータス要求応答パケットの送信をハードウェアで処理するために、プリンタ管理部１５３は、マイクロプロセッサ１５０の処理負荷が比較的低いときに、ステータスを取得して、ステータスを記録するステータス記録レジスタ（図示省略）にインク残量等を記録するようにする。そして、ステータス要求パケットを受信すると、応答生成部１２３は、ステータス記録レジスタの値を読み出して、かかる値を記述したステータス要求応答パケットを生成して送信するように構成することもできる。なお、ステータス要求パケットは、プリンタコントロールチャネル上において定期的に送受信されるので、処理を実行する頻度は比較的高く、また、応答を必要とする要応答論理パケットである。従って、このステータス要求パケットをハードウェアで処理することにより、マイクロプロセッサ１５０の処理負荷を大幅に軽減することができる。
【００６２】
Ｄ２．変形例２：
上述した第２の実施例では、プリンタ１０１の動作状態がエラー状態であるか否かによって処理モードを切り替えていたが、本発明はこれに限定されるものではなく、任意の動作状態で処理モードを切り替えるような構成とすることもできる。例えば、プリンタ１０１が起動直後のウォーミングアップ中においては仕分け処理モードとして、ウォーミングアップが終了した場合には、ソフトウェア処理モードに切り替えるといった構成とすることもできる。または、マイクロプロセッサ１５０の処理負荷の度合いに応じて処理モードを切り替えることも可能である。具体的には、マイクロプロセッサ１５０の使用率が８０％以上の場合に仕分けモードに切り替え、使用率が８０％よりも低い場合にはソフトウェア処理モードに切り替えるといった構成とすることもできる。
【００６３】
Ｄ３．変形例３：
上述した第２の実施例では、プリンタ１０１の動作状態に応じて処理モードを切り替えていたが、本発明はこれに限定されるものではなく、パーソナルコンピュータ１０によって指定される所定のパラメータに応じて処理モードを切り替えるように構成することもできる。例えば、プリンタ１０１が、印刷モードとして、高画質の印刷が可能な高画質印刷モードと低画質であるが高速に印刷を行う高速印刷モードとを有している場合に、パーソナルコンピュータ１０によって指定された印刷モードによって処理モードを切り替えるようにすることもできる。具体的には、パーソナルコンピュータ１０から高画質印刷モードを指定してプリントデータを受信した場合には仕分け処理モードに切り替え、高速印刷モードを指定してプリントデータを受信した場合にはソフトウェア処理モードに切り替えるようにする。このように印刷モードに応じて処理モードを切り替えるのは、以下の理由による。すなわち、高画質印刷モードの場合には、パーソナルコンピュータ１０からプリンタ１０１に大量のプリントデータが送信されるので、マイクロプロセッサ１５０は、大量のプリントデータを処理するために高負荷状態になり易い。そこで、この場合、処理モードを仕分けモードに切り替えることによって、一部のＤ４パケットの処理をハードウェアで実行させて、マイクロプロセッサ１５０が高負荷状態になることを抑制するためである。なお、印刷モードの指定は、パーソナルコンピュータ１０から送信されるプリントデータの先頭において記述されており、プリンタ１０１では、かかるプリントデータを解析することで指定された印刷モードを識別することができる。
【００６４】
また、一般にプリンタでは、印刷ジョブのキャンセルを、制御情報フィールドに特別な値を格納したプリントデータパケットを受信することで指定される場合がある。そこで、かかるプリントデータパケットを受信した場合に、仕分け処理モードからソフトウェア処理モードに切り替えるように構成することもできる。
【００６５】
Ｄ４．変形例４：
上述した第２の実施例では、ソフトウェア処理モードでは、全てのＤ４パケットについてソフトウェアによる処理（Ｄ４プロトコル処理部１５１による処理）が実行されていたが、本発明はこれに限定されるものではなく、一部のＤ４パケットのみハードウェアによる処理からソフトウェアによる処理に切り替えて実行するような構成とすることもできる。例えば、ソフトウェア処理モードでは、クレジット要求パケットについてのみハードウェアによる処理からソフトウェアによる処理に切り替えて、プリントデータパケットについては、処理モードに関わらず常にハードウェアによって処理を行う構成とすることもできる。このような構成であっても、プリンタの動作状態に応じたクレジット数をパーソナルコンピュータ１０に通知することができる。
【００６６】
Ｄ５．変形例５：
上述した第２の実施例及び第３の実施例では、プリンタ１０１，１０２の動作状態に応じてパーソナルコンピュータ１０に送信するクレジット数を変えていたが、本発明はこれに限定されるものではなく、クレジット数を変えるのに代えて、クレジット数を送信する間隔を変える構成とすることもできる。具体的には、プリンタの動作状態がエラー状態である場合には、クレジット要求パケットを受信してからクレジット要求応答パケットを返信するまでの間隔を、通常状態に比べて長くするようにする。このようにすることで、エラー状態である場合には、パーソナルコンピュータ１０におけるプリントデータ送信間隔を長くすることができるので、印刷処理を行うことができない状態で大量のプリントデータを連続して受信することを避けることができる。
【００６７】
Ｄ６．変形例６：
上述した各実施例では、パケット受信処理で処理される論理パケットはＤ４パケットであったが、本発明はＤ４パケットに限定するものではなく、パーソナルコンピュータとプリンタとの間でやりとりされる複数種類の論理パケットであれば、任意の論理パケットについて上述したパケット受信処理を実行することができる。
【図面の簡単な説明】
【００６８】
【図１】本発明の一実施例としてのプリンタ１００の概略構成を示すブロック図。
【図２】パーソナルコンピュータ１０とプリンタ１００との間におけるデータ送受信に関する機能の階層構造を示す説明図。
【図３】Ｄ４パケット（クレジット要求／応答パケット）の構成を示す説明図。
【図４】パーソナルコンピュータ１０からプリンタ１００に印刷データ（プリントデータ）を送信する動作の一例を示すシーケンス図。
【図５】第１の実施例におけるパケット受信処理の手順を示すフローチャート。
【図６】第２の実施例におけるプリンタの概略構成を示すブロック図。
【図７】第２の実施例におけるパケット受信処理の手順を示すフローチャート。
【図８】ソフトウェア処理モードにおけるプリンタ１０１内でのデータの流れを示す説明図。
【図９】第３の実施例におけるプリンタの概略構成を示すブロック図。
【図１０】第３の実施例におけるパケット受信処理の手順を示すフローチャート。
【符号の説明】
【００６９】
１０…パーソナルコンピュータ
１００，１０１，１０２…プリンタ
１１２ｅ…コントロールエンドポイント
１１３…プリンタインタフェース
１１３ｅ…バルクアウトエンドポイント
１１３ｆ…バルクインエンドポイント
１１３ｆ…バルクアウトエンドポイント
１２２…データバッファ
１２３…応答生成部
１２４…モード指定値レジスタ
１２５…クレジット取得方法指定値レジスタ
１３１…ストアモジュール
１３２…ストアアドレス管理部
１３３…ロードアドレス管理部
１３４…容量算出部
１３５…ロードモジュール
１５０…マイクロプロセッサ
１５２…印刷処理部
１５３…プリンタ管理部
１６０…プリンタエンジン
１２１…ヘッダ／コマンド解析部
【図１】
2008073887.tif 000003
【図２】
2008073887.tif 000004
【図３】
2008073887.tif 000005
【図４】
2008073887.tif 000006
【図５】
2008073887.tif 000007
【図６】
2008073887.tif 000008
【図７】
2008073887.tif 000009
【図８】
2008073887.tif 000010
【図９】
2008073887.tif 000011
【図１０】
2008073887.tif 000012