(57)【要約】【課題】通信データを消失させることなく、且つ、受信パフォーマンスの低下を防止することができる通信フロー制御を実現する。【解決手段】通信機能を有する印刷装置１００は、ＣＰＵ１０２と、外部装置から送られてくる全データを記憶するデータ受信メモリ２０４と、全データのうちの印刷データを記憶する印刷データ受信メモリ２１１とを備える。ＣＰＵ１０２は、メモリ２０４，２１１に空きがあるか否かを判断し、メモリ２０４に空きがない場合には外部装置から受信可能なデータサイズにゼロを設定し、メモリ２０４に空きがある場合において、メモリ２１１に空きがないときには受信可能なデータサイズに第１のデータサイズを設定し、メモリ２１１に空きがあるときには受信可能なデータサイズに第１のデータサイズよりも大きい第２のデータサイズを設定し、設定したデータサイズを外部装置へ送信する。【選択図】図２
2015106796.tif 000002
【特許請求の範囲】
【請求項１】
外部装置から送られてくるデータを受信する受信手段と、
前記受信手段が受信した全データを記憶する第１の記憶手段と、
前記外部装置から送られてくるデータのうちの特定のデータを記憶する第２の記憶手段と、
前記第１の記憶手段および前記第２の記憶手段のそれぞれに空きがあるか否かを判断する空き判断手段と、
前記第１の記憶手段に空きがないと判断されたときに前記外部装置から受信可能なデータのデータサイズにゼロを設定し、前記第１の記憶手段に空きがあると判断された場合において、前記第２の記憶手段に空きがないと判断されたときには前記受信手段が受信可能なデータのデータサイズに第１のデータサイズを設定し、前記第２の記憶手段に空きがあると判断されたときには前記受信手段が受信可能なデータのデータサイズに前記第１のデータサイズよりも大きい第２のデータサイズを設定する設定手段と、
前記受信手段が受信したデータに対する応答データとして前記設定手段が設定したデータサイズを前記外部装置へ送信する送信手段とを備えることを特徴とする通信装置。
【請求項２】
前記外部装置から前記特定のデータを受信した後に、前記第２の記憶手段に空きがない場合に、前記外部装置からのデータの受信を拒否する応答を前記外部装置へ送信する制御手段をさらに備えることを特徴とする請求項１記載の通信装置。
【請求項３】
前記特定のデータを処理する処理手段と、
前記第１の記憶手段および前記第２の記憶手段に空きがある場合に、前記処理手段による処理が可能か否かを判断する処理判断手段とをさらに備え、
前記設定手段は、前記処理手段による処理が可能であると判断された場合には前記第２のデータサイズを受信可能なデータサイズとして設定し、前記処理手段による処理が可能ではないと判断された場合には前記第１のデータサイズを受信可能なデータサイズとして設定することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記特定のデータは印刷データであり、前記処理手段は印刷手段であることを特徴とする請求項３記載の通信装置。
【請求項５】
前記設定手段は、前記外部装置からのデータ送信速度に応じて、前記受信手段が受信可能なデータのデータサイズを設定することを特徴とする請求項１乃至４のいずれか１項二期債の通信装置。
【請求項６】
外部装置から送られてくるデータを受信する受信手段と、前記受信手段が受信した全データを記憶する第１の記憶手段と、前記外部装置から送られてくるデータのうちの特定のデータを記憶する第２の記憶手段とを備える通信装置の通信制御方法であって、
前記第１の記憶手段および前記第２の記憶手段のそれぞれに空きがあるか否かを判断する判断ステップと、
前記第１の記憶手段に空きがないと判断された場合に前記外部装置から受信可能なデータのデータサイズにゼロを設定し、前記第１の記憶手段に空きがあり且つ前記第２の記憶手段に空きがないと判断されたときに前記受信手段が受信可能なデータのデータサイズに第１のデータサイズを設定し、前記第１の記憶手段に空きがあり且つ前記第２の記憶手段に空きがあると判断されたときに前記受信手段が受信可能なデータのデータサイズに前記第１のデータサイズよりも大きい第２のデータサイズを設定する設定ステップと、
前記受信手段が受信したデータに対する応答データとして前記設定ステップが設定したデータサイズを前記外部装置へ送信する送信ステップと有することを特徴とする通信装置の通信制御方法。
【請求項７】
外部装置から送られてくるデータを受信する受信手段と、前記受信手段が受信した全データを記憶する第１の記憶手段と、前記外部装置から送られてくるデータのうちの特定のデータを記憶する第２の記憶手段とを備える通信装置の通信制御方法を該通信装置のコンピュータに実行させるためのプログラムであって、
前記通信制御方法は、
前記第１の記憶手段および前記第２の記憶手段のそれぞれに空きがあるか否かを判断する判断ステップと、
前記第１の記憶手段に空きがないと判断された場合に前記外部装置から受信可能なデータのデータサイズにゼロを設定し、前記第１の記憶手段に空きがあり且つ前記第２の記憶手段に空きがないと判断されたときに前記受信手段が受信可能なデータのデータサイズに第１のデータサイズを設定し、前記第１の記憶手段に空きがあり且つ前記第２の記憶手段に空きがあると判断されたときに前記受信手段が受信可能なデータのデータサイズに前記第１のデータサイズよりも大きい第２のデータサイズを設定する設定ステップと、
前記受信手段が受信したデータに対する応答データとして前記設定ステップが設定したデータサイズを前記外部装置へ送信する送信ステップと有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信制御方法及びプログラムに関し、特に、通信速度を切り替える処理の制御方法に関する。
【背景技術】
【０００２】
ウィンドウサイズを用いてフロー制御を行う通信方法が知られている（例えば、特許文献１参照）。この通信方法では、送信側（例えば、ホストコンピュータ（クライアントコンピュータ））は、受信側（例えば、印刷装置）からの確認応答パケットがなくとも、受信側が示すウィンドウサイズ分のデータを転送することができるため、確認応答の回数が少なくなる。よって、ウィンドウサイズを大きくすることにより、通信効率を高めることができる。
【０００３】
しかし、例えば、ＴＣＰを使用したコネクション型の通信方法の中には、送信側が、受信側との間でコネクションが確立されるとその直後に印刷データの送信を開始し、印刷データの送信が終了し次第、処理が正常終了するものがある。この場合、仮に、受信側が印刷データを受信することができない状態になっていると、受信側では、受信したデータが受信バッファに入っているデータを破棄する。その結果、ユーザにとっては、印刷データの送信処理が成功しているにもかかわらず、受信側からは印刷データが印刷されたシートが排紙されないため、印刷データが消失したように見える。
【０００４】
一例として、図６（ａ）に、印刷データの消失が生じ得る場合の通信フローの例を示す。ここでは、受信側である印刷装置のウィンドウサイズは８Ｋバイトであり、送信側であるホストコンピュータが５Ｋバイトのサイズの印刷データを印刷装置へ送信するものとする。このようにウィンドウサイズが印刷データサイズ以上である場合、ホストコンピュータは、印刷装置からの確認応答を待たずに、全印刷データを送信する。そのため、印刷装置が印刷不能状態になっていると、印刷データの消失が発生する。なお、図６（ａ）中、「ＳＹＮ」は同期（接続要求）を、「ＡＣＫ」は受信確認を、「ＦＩＮ」は送信終了を示す。
【０００５】
この問題に対処するために、受信側が応答する初期ウィンドウサイズを一律に小さくすることによって、送信側が一度に全ての印刷データを送ることができないようにして、印刷データの消失の発生を防止する技術が提案されている（例えば、特許文献２参照）。図６（ｂ）に、受信側の初期ウィンドウサイズが小さく設定されている場合の通信フローの例を示す。ここでは、受信側である印刷装置の初期ウィンドウサイズが１Ｋバイトに設定されている場合に、送信側のホストコンピュータが合計で５Ｋバイトのサイズの印刷データを印刷装置へ送信するものとする。
【０００６】
この場合、印刷装置が印刷不能状態にあると、ホストコンピュータは最初の１Ｋバイト以降の印刷データを印刷装置へ送信することができないため、印刷装置からの応答待ち状態となる。ホストコンピュータが印刷装置から受信拒否応答を受信すると、印刷送信エラーとなるため、ユーザは送信エラーが発生したことを確認することができる。なお、図６（ｂ）中、「ＳＹＮ」及び「ＡＣＫ」は、図６（ａ）の場合と同じであり、図６（ｂ）中、「ＲＳＴ」はリセットを示すが、ここでは、受信拒否応答と同義となる。
【０００７】
また、通信パフォーマンスを向上させるために、受信ウィンドウの自動チューニング機能を搭載するプロトコルスタックが提案されている（例えば、特許文献３参照）。図７（ａ）に、受信ウィンドウの自動チューニングを行う通信フローの例を示す。受信ウィンドウの自動チューニング機能とは、受信側の印刷装置が、送信側のホストコンピュータの送信応答速度に応じてウィンドウサイズを動的に変更する機能である。そのため、ホストコンピュータが遅延なくデータを送信してくることに応じて受信側は徐々にウィンドウサイズを大きくし、これにより高速な通信を実現することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４―０６４６６５号公報
【特許文献２】特許第４３２４０４８号公報
【特許文献３】特開平５−２３２０５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、受信ウィンドウの自動チューニング機能を採用している印刷装置において前述のデータ消失防止機能を実現すると、印刷データの受信パフォーマンスが低下してしまう場合がある。図７（ｂ）に、受信パフォーマンスが低下してしまう場合の通信フローの例を示す。
【００１０】
例えば、ネットワークトラフィックが多い環境や、送信側と受信側とが物理的に離れているネットワーク環境では、受信側から見ると送信側のデータ送信速度が遅く見える。そのため、受信側は「これ以上ウィンドウサイズを大きくする必要はない」と判断して、初期ウィンドウサイズからサイズを大きくせずにデータ受信を継続してしまう。つまり、送信側が合計で１００Ｋバイトの印刷データを送信したい場合に、初期ウィンドウサイズが１Ｋバイトでウィンドウサイズが変化しない場合、合計１００回の送受信を行う必要があり、時間がかかってしまうことになる。これに対して、例えば、受信ウィンドウの自動チューニング機能が働き、２回目のウィンドウサイズは５０Ｋバイト、３回目のウィンドウサイズは５００Ｋバイトに変更されれば、合計３回の送受信で印刷データの送信は完了することになる。
【００１１】
このように、従来の通信フローでは、データ消失問題を解消しようとすると受信パフォーマンスの低下が顕著化する場合があり、一方、受信パフォーマンスを高めるために初期ウィンドウサイズを大きくするとデータ消失問題が顕著化してしまうという問題がある。
【００１２】
本発明は、通信データを消失させることなく、且つ、受信パフォーマンスの低下を防止することができる通信フロー制御を実現するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係る通信装置は、外部装置から送られてくるデータを受信する受信手段と、前記受信手段が受信した全データを記憶する第１の記憶手段と、前記外部装置から送られてくるデータのうちの特定のデータを記憶する第２の記憶手段と、前記第１の記憶手段および前記第２の記憶手段のそれぞれに空きがあるか否かを判断する空き判断手段と、前記第１の記憶手段に空きがないと判断されたときに前記外部装置から受信可能なデータのデータサイズにゼロを設定し、前記第１の記憶手段に空きがあると判断された場合において、前記第２の記憶手段に空きがないと判断されたときには前記受信手段が受信可能なデータのデータサイズに第１のデータサイズを設定し、前記第２の記憶手段に空きがあると判断されたときには前記受信手段が受信可能なデータのデータサイズに前記第１のデータサイズよりも大きい第２のデータサイズを設定する設定手段と、前記受信手段が受信したデータに対する応答データとして前記設定手段が設定したデータサイズを前記外部装置へ送信する送信手段とを備えることを特徴とする。
【発明の効果】
【００１４】
本発明では、データを受信する通信装置は、受信したデータを記憶する第１の記憶手段と、受信したデータのうちの特定のデータを記憶する第２の記憶手段の２つの記憶手段の空きを参照し、応答するウィンドウサイズを判断し、適切なウィンドウサイズを設定する。これにより、特定のデータを消失させることなく、且つ、受信パフォーマンスの低下を防止した通信フロー制御を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る印刷装置のハードウェア構成の概略を示すブロック図である。
【図２】図１の印刷装置のソフトウェア構成を示す図である。
【図３】図１の印刷装置におけるデータ受信時におけるウィンドウサイズの制御処理のフローチャートである。
【図４】図３のステップＳ３０６で実行される印刷データ受信処理のフローチャートである。
【図５】図１の印刷装置において印刷不可のエラーが発生している場合の印刷データ受信処理のフローチャートである。
【図６】従来技術において、印刷データの消失が生じ得る場合の通信フローの例と、受信側の初期ウィンドウサイズが小さく設定されている場合の通信フローの例を示す図である。
【図７】従来技術において、受信ウィンドウの自動チューニングを行う通信フローの例と、受信ウィンドウの自動チューニングを行う通信フローにおいて受信パフォーマンスが低下する通信フローの例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、添付図面を参照して詳細に説明する。ここでは、本発明に係る通信装置として、印刷データを受信し、シートへの印刷を行う印刷装置（プリンタ）を取り上げることとする。但し、本発明に係る通信装置は印刷装置に限定されるものではなく、また、通信データも印刷データに限定されるものでなく、ネットワークや電話回線を介して各種のデータを受信する通信装置に適用することができる。
【００１７】
図１は、本発明の実施形態に係る印刷装置１００のハードウェア構成の概略を示すブロック図である。印刷装置１００は、制御部１０１、プリンタ部１０７、スキャナ部１０９及び操作パネル部１１１を備える。また、制御部１０１は、システムバス１１４に接続された、ＣＰＵ１０２、ＲＡＭ１０３、ＲＯＭ１０４、ＨＤＤ１０５、プリンタＩ／Ｆ１０６、スキャナＩ／Ｆ１０８、操作パネルＩ／Ｆ１１０、無線ＬＡＮ＿Ｉ／Ｆ１１２及び有線ＬＡＮ＿Ｉ／Ｆ１１３を備える。
【００１８】
制御部１０１は、印刷装置１００の全体動作を制御する。ＣＰＵ１０２は、ＲＯＭ１０４に記憶された制御プログラムやＨＤＤ１０５に記憶された各種のプログラム等を読み出して通信制御等の各種制御を行う。ＲＡＭ１０３は、ＣＰＵ１０２の主メモリ、ワークエリア等の一時領域として用いられる。ＨＤＤ１０５は、データや各種のプログラム、各種の情報テーブル等を記憶（格納）する。
【００１９】
プリンタＩ／Ｆ１０６は、プリンタ部（プリンタエンジン）１０７と制御部１０１とを接続する。プリンタ部１０７は、プリンタＩ／Ｆ１０６を介して入力された印刷データに基づき、不図示の給紙カセットから給紙された用紙（シート）等の媒体に印刷処理を実行する。スキャナＩ／Ｆ１０８は、スキャナ部１０９と制御部１０１とを接続する。スキャナ部１０９は、載置された原稿を読み取り、画像データを生成する。スキャナ部１０９が生成した画像データは、プリンタ部１０７で印刷され、ＨＤＤ１０５に記憶され、或いは、無線ＬＡＮ＿Ｉ／Ｆ１１２又は有線ＬＡＮ＿Ｉ／Ｆ１１３を介して外部装置に送信される。操作パネルＩ／Ｆ１１０は、操作パネル部１１１と制御部１０１とを接続し、操作パネル部１１１が備える各種の不図示のボタン（キー）やタッチパネルからの入力指示を制御部１０１へ伝える。
【００２０】
無線ＬＡＮ＿Ｉ／Ｆ１１２は、無線ＬＡＮにより接続された外部装置との間で無線通信を実行可能とするためのインタフェースである。有線ＬＡＮ＿Ｉ／Ｆ１１３には、ＬＡＮケーブル（イーサネット(登録商標)ケーブル）が接続される。有線ＬＡＮ＿Ｉ／Ｆ１１３は、ＬＡＮケーブルを介して外部装置との間での通信を可能とするためのインタフェースである。印刷装置１００は、無線ＬＡＮ＿Ｉ／Ｆ１１２を介した無線通信及び／又は有線ＬＡＮ＿Ｉ／Ｆ１１３を介した有線通信により、外部装置から印刷データを受信し、受信した印刷データに基づいてプリンタ部１０７で印刷処理を実行する。また、印刷装置１００は、スキャナ部１０９が生成した画像データを、無線ＬＡＮ＿Ｉ／Ｆ１１２及び／又は有線ＬＡＮ＿Ｉ／Ｆ１１３を介して外部装置に送信することもできる。
【００２１】
なお、本実施形態では、印刷装置１００は、１つのＣＰＵ１０２が１つのメモリ（ＲＡＭ１０３）を用いて、後述するフローチャートに従う各処理を実行するものとする。但し、このような構成に限定されず、例えば、複数のＣＰＵや複数のメモリが協働して、後述するフローチャートに従う各処理を実行する構成であってもよい。
【００２２】
図２は、印刷装置１００のソフトウェア構成を示す図である。図２に示す各機能部は、印刷装置１００のＣＰＵ１０２が、所定の制御プログラムを実行することにより実現される。印刷装置１００は、ソフトウェアとして、ネットワーク通信ドライバ部２０１、ネットワークプロトコルスタック部２０２及びネットワークアプリケーション部２０６を備える。
【００２３】
ネットワーク通信ドライバ部２０１は、無線ＬＡＮ＿Ｉ／Ｆ１１２及び有線ＬＡＮ＿Ｉ／Ｆ１１３を制御し、ネットワークに接続された外部装置との間での信号の転送を制御する。
【００２４】
ネットワークプロトコルスタック部２０２は、データ送受信制御部２０３、データ受信メモリ２０４及びウィンドウサイズ制御部２０５を含む。データ送受信制御部２０３は、ネットワーク通信ドライバ部２０１を介して受信したデータのネットワークアプリケーション部２０６への転送制御や、ネットワークアプリケーション部２０６からの送信データのネットワーク通信ドライバ部２０１への転送制御を行う。データ受信メモリ２０４は、ネットワークプロトコルスタック部２０２が受信した全データを一時的に格納するバッファメモリ（第１の記憶手段）であり、ネットワークアプリケーション部２０６からの読み出し要求があるまで受信データを格納する。そして、データ受信メモリ２０４は、ネットワークアプリケーション部２０６へのデータ転送が完了すると、格納した受信データを消去する。ウィンドウサイズ制御部２０５は、データ受信メモリ２０４のメモリ空き状況や、外部装置からの送信速度応答を判別し、ネットワークプロトコルスタック部２０２が応答すべきウィンドウサイズを決定する。ウィンドウサイズ制御部２０５は、データ受信メモリ２０４の空きが少なくなるとウィンドウサイズを小さくし、メモリの空きが大きく、且つ、外部装置からの送信速度応答が速いときにはウィンドウサイズを大きくしていく。
【００２５】
ネットワークアプリケーション部２０６は、ネットワーク通信を利用する様々なアプリケーションから構成されており、ここでは、印刷アプリケーション部２０７と、メールアプリケーション部２０８を含むものとする。印刷アプリケーション部２０７は更に、印刷データ送受信制御部２０９、印刷データ受信可能判断部２１０及び印刷データ受信メモリ２１１を含む。
【００２６】
印刷データ送受信制御部２０９は、ネットワークプロトコルスタック部２０２から印刷データを受信し、プリンタ部１０７へ画像データを転送する。印刷データ受信メモリ２１１は、受信した印刷データ（ネットワークプロトコルスタック部２０２が受信した全受信データのうちの特定のデータ）を一時的に格納するバッファメモリ（第２の記憶手段）である。プリンタ部１０７へ画像データを転送し終わると、印刷データは印刷データ受信メモリ２１１から消去される。印刷データ受信可能判断部２１０は、印刷データ受信メモリ２１１のメモリ空き状況やプリンタ部１０７でのエラー発生状況を判別し、印刷可能か否かを判断する。
【００２７】
図３は、印刷装置１００におけるデータ受信時におけるウィンドウサイズの制御処理のフローチャートである。図３に示す各処理は、ＣＰＵ１０２が、ＲＯＭ１０４又はＨＤＤ１０５に格納されている所定のプログラムをＲＡＭ１０３のワークエリアに展開、実行することにより実現される。
【００２８】
ステップＳ３０１において、ＣＰＵ１０２は、ネットワーク通信ドライバ部２０１により、外部装置からコネクション確立要求のデータを受信したか否かを判断し、コネクション確立要求のデータを受信するまで待機する（Ｓ３０１でＮＯ）。コネクション確立要求のデータを受信すると（Ｓ３０１でＹＥＳ）、ＣＰＵ１０２は、ネットワーク通信ドライバ部２０１により、受信データをデータ送受信制御部２０３へ転送する。そして、ステップＳ３０２において、ＣＰＵ１０２は、ウィンドウサイズ制御部２０５により、その時点でデータ受信メモリ２０４に空きバッファメモリ領域があるか否かを判断する。
【００２９】
空きバッファメモリ領域がない場合（Ｓ３０２でＮＯ）、ＣＰＵ１０２は、処理をステップＳ３０８へ進める。ステップＳ３０８において、ＣＰＵ１０２は、ウィンドウサイズ制御部２０５により、応答データのウィンドウサイズに「０」を設定する。その後、ステップＳ３０９において、ＣＰＵ１０２は、データ送受信制御部２０３により、ネットワーク通信ドライバ部２０１を介して、応答データを外部装置へ送信する。その後、ＣＰＵ１０２は、ウィンドウサイズ制御部２０５により、データ受信メモリ２０４に空きバッファメモリ領域ができるまで監視するため、処理をステップＳ３０２へ戻す。
【００３０】
空きバッファメモリ領域がある場合（Ｓ３０２でＹＥＳ）、ＣＰＵ１０２は、処理をステップＳ３０３へ進める。ステップＳ３０３において、ＣＰＵ１０２は、ウィンドウサイズ制御部２０５により、印刷データ受信メモリ２１１に空きバッファメモリ領域があるか否かを判断する。なお、ステップＳ３０３の判断には、ウィンドウサイズ制御部２０５が、直接、印刷データ受信メモリ２１１を参照して空き状況を確認する方法を用いられる。一方、ステップＳ３０３の判断には、ウィンドウサイズ制御部２０５が、印刷データ受信可能判断部２１０に問い合わせて、印刷データ受信可能判断部２１０が印刷データ受信メモリ２１１を参照して空き状況を確認する方法を用いてもよい。
【００３１】
印刷データ受信メモリ２１１に空きバッファメモリ領域がない場合（Ｓ３０３でＹＥＳ）、ＣＰＵ１０２は、処理をステップＳ３０７へ進める。ステップＳ３０７において、ＣＰＵ１０２は、ウィンドウサイズ制御部２０５により、応答データの初期ウィンドウサイズに小さい値（以下「第１のデータサイズ」という）を設定する。設定された初期ウィンドウサイズはＨＤＤ１０５又はＲＡＭ１０３に記憶される。この第１のデータサイズは、外部装置が印刷装置１００へ送信する印刷データサイズより小さい値である必要がある。第１のデータサイズは、ユーザが任意の値に設定変更することができるように、操作パネル部１１１の操作により変更可能としてもよい。例えば、第１のデータサイズには、１Ｋバイトが設定される。
【００３２】
印刷データ受信メモリ２１１に空きバッファメモリ領域がある場合（Ｓ３０３でＮＯ）、ＣＰＵ１０２は、処理をステップＳ３０４へ進める。ステップＳ３０４において、ＣＰＵ１０２は、ウィンドウサイズ制御部２０５により、応答データの初期ウィンドウサイズに、第１のデータサイズよりも十分に大きい値（以下「第２のデータサイズ」という）を設定する。この第２のデータサイズは、印刷装置１００のネットワークプロトコルスタック部２０２の初期設定値でもよいし、ユーザによる操作パネル部１１１の操作により任意の設定と変更ができるようになっていてもよい。例えば、第２のデータサイズには、１０Ｋバイトが設定される。設定された初期ウィンドウサイズはＨＤＤ１０５又はＲＡＭ１０３に記憶される。
【００３３】
ステップＳ３０４，Ｓ３０７の後、ＣＰＵ１０２は、処理をステップＳ３０５へ進める。ステップＳ３０５では、ＣＰＵ１０２は、データ送受信制御部２０３により、ネットワーク通信ドライバ部２０１を介してステップＳ３０４，Ｓ３０７で設定した初期ウィンドウサイズを含む応答データを外部装置へ送信する。続くステップ３０６において、ＣＰＵ１０２は、ネットワーク通信ドライバ部２０１を介して、印刷データの受信処理を行う。ステップＳ３０６の終了後、ＣＰＵ１０２は、処理をステップＳ３０１へ戻す。
【００３４】
なお、上述のステップＳ３０３では、印刷データ受信メモリ２１１に空きバッファメモリ領域があるか否かは、受信した印刷データのジョブ数或いは合計サイズによって判断する。例えば、印刷装置１００は最大で１００ジョブまで印刷処理が可能である場合、１０１ジョブ目を受信すると、印刷データ受信メモリ２１１には空きバッファメモリ領域がないと判断する。また、例えば、印刷データ受信メモリ２１１が最大で１Ｇバイトまでの受信印刷データのバッファメモリとして確保されている場合、１Ｇバイトを超えて印刷データを受信したときに、印刷データ受信メモリ２１１には空きバッファメモリ領域がないと判断する。
【００３５】
図４は、ステップＳ３０６で実行される印刷データ受信処理のフローチャートである。印刷装置１００のＣＰＵ１０２がネットワーク通信ドライバ部２０１を介して初期ウィンドウサイズを外部装置へ通知すると、この通知を受信した外部装置からは、通知された初期ウィンドウサイズ分の印刷データ（以下「最初の印刷データ」という）だけが送信されてくる。外部装置は、最初の印刷データを送信し終えると、後続の印刷データを送信してくることなく、送信を停止する。
【００３６】
そこで、ステップＳ４０１において、ＣＰＵ１０２は、先ず、ネットワーク通信ドライバ部２０１を介して最初の印刷データを受信したか否かを判断し、最初の印刷データを受信するまで待機する（Ｓ４０１でＮＯ）。なお、ネットワーク通信ドライバ部２０１が受信した最初の印刷データは、データ送受信制御部２０３、印刷データ送受信制御部２０９へと逐次転送され、印刷データ送受信制御部２０９が最初の印刷データを受信したか否かが、最初のデータを受信したか否かの判断基準となる。
【００３７】
最初の印刷データを受信すると（Ｓ４０１でＹＥＳ）、ＣＰＵ１０２は、処理をステップＳ４０２へ進める。ステップＳ４０２において、ＣＰＵ１０２は、印刷データ受信可能判断部２１０により、その時点で印刷データ受信メモリ２１１に空きバッファメモリ領域があるか否かを判断する。空きバッファメモリ領域がない場合（Ｓ４０２でＹＥＳ）、ＣＰＵ１０２は、処理をステップＳ４０６へ進める。
【００３８】
ステップＳ４０６では、印刷データを受信することができないため、ＣＰＵ１０２は、印刷データ送受信制御部２０９により、ネットワーク通信ドライバ部２０１を介して外部装置へ印刷要求に対する拒否応答を送信する。例えば、初期ウィンドウサイズが１Ｋバイトである場合には、印刷データが１Ｋバイトより大きい場合に限り、外部装置はこの拒否応答を受信することができるため、ジョブ消失の問題は発生しない。これにより、外部装置は印刷データの送信が途中で異常終了したと判断することができ、必要であればユーザに通知を行うことができる。なお、小さい値のウィンドウサイズを設定した場合の通信フローは、従来技術として説明した図６（ｂ）に準ずる。ステップＳ４０６の実行後、本処理は終了となる。
【００３９】
ステップＳ４０２において空きバッファメモリ領域がある場合（Ｓ４０２でＮＯ）、ＣＰＵ１０２は、処理をステップＳ４０３へ進める。ステップＳ４０３において、ＣＰＵ１０２は、印刷データ送受信制御部２０９により、後続の印刷データがあるか否かを判断する。ここで、後続の印刷データがあるか否かは、データ送受信制御部２０３が外部装置からＴＣＰのＦＩＮデータ（ＦＩＮパケット）を受信したか否かで判断することができる。後続のデータがない場合（Ｓ４０３でＮＯ）、ＣＰＵ１０２は、印刷データ送受信制御部２０９により、印刷データの受信処理を終了させ、これにより本処理は終了となる。後続のデータがある場合（Ｓ４０３でＹＥＳ）、ＣＰＵ１０２は、処理をステップＳ４０４へ進める。
【００４０】
ステップＳ４０４において、ＣＰＵ１０２は、データ送受信制御部２０３により、次の応答データに含めるウィンドウサイズを決定する。例えば、データ受信メモリ２０４に十分な空きバッファメモリ領域があり、且つ、外部装置からのデータ送信速度が速い場合には、データ送受信制御部２０３は、より大きいウィンドウサイズを決定する。このように状況に応じてウィンドウサイズを大きく設定することで、より高速な通信速度を実現することができる。なお、大きい値のウィンドウサイズを設定した場合の通信フローは、図７（ａ）に準ずる。
【００４１】
これに対して、データ受信メモリ２０４に十分な空きバッファメモリ領域がなく、データ送受信制御部２０３が、これ以上の印刷データを受け取ることができない場面が想定される。この場合には、外部装置が印刷データを送信してこないように、ステップＳ４０４においてウィンドウサイズを「ゼロ（０）」に決定する。また、外部装置からのデータ送信速度が遅い場合、ＣＰＵ１０２は、データ送受信制御部２０３により、ウィンドウサイズを大きくする必要はないと判断して、その時点でのウィンドウサイズと同じ値に決定する。
【００４２】
続くステップＳ４０５において、ＣＰＵ１０２は、データ送受信制御部２０３により、ステップＳ４０４で決定したウィンドウサイズを含む応答データを、ネットワーク通信ドライバ部２０１を介して外部装置へ送信する。その後、ＣＰＵ１０２は、処理をステップＳ４０１へ戻し、ステップＳ４０１〜Ｓ４０６のデータ受信処理を終了まで繰り返す。なお、ステップＳ４０５からステップＳ４０１へ戻ったときのステップＳ４０１で判断される「印刷データ」は、後続の印刷データとなる。
【００４３】
上記実施形態によれば、印刷装置１００は、データ受信メモリ２０４と印刷データ受信メモリ２１１の状態を確認して応答するウィンドウサイズを切り替える。そのため、印刷データが消失するという問題と、印刷データ受信速度が遅いという問題の両方を解決することができ、常に最適で高速な通信速度を実現することができる。
【００４４】
さて、上記実施形態では、ＣＰＵ１０２は、ウィンドウサイズ制御部２０５により、データ受信メモリ２０４と印刷データ受信メモリ２１１を参照して、応答するウィンドウサイズを決定することで、印刷データの消失を防止している。しかし、印刷装置１００の構成によって、他にも印刷データを受信できない場合がある。例えば、メモリ不足以外の要因で、印刷データを受信できない場合として、プリンタ部１０７のハードウェアが故障していてエラーが発生している場合や、内部システムの不具合で何らかのエラーが発生している場合が挙げられる。
【００４５】
このような場合も上記実施形態と同様に、応答するウィンドウサイズの値を小さくして印刷データの消失を防止する必要があり、この問題に対処するための印刷データ受信処理について、図５のフローチャートを参照して説明する。図５は、印刷装置１００において印刷不可のエラーが発生している場合の印刷データ受信処理のフローチャートである。図５に示す各処理は、ＣＰＵ１０２が、ＲＯＭ１０４又はＨＤＤ１０５に格納されている所定のプログラムをＲＡＭ１０３のワークエリアに展開、実行することにより実現される。
【００４６】
ステップＳ５０１〜Ｓ５０３，Ｓ５０９，Ｓ５１０の処理はそれぞれ、図３のステップＳ３０１〜Ｓ３０３，Ｓ３０８，Ｓ３０９の処理と同じであるため、ここでの説明を省略する。ステップＳ５０３において、印刷データ受信メモリ２１１に空きバッファメモリ領域がない場合（Ｓ５０３でＹＥＳ）、ＣＰＵ１０２は、処理をステップＳ５０８へ進める。一方、印刷データ受信メモリ２１１に空きバッファメモリ領域がある場合（Ｓ５０３でＮＯ）、ＣＰＵ１０２は、処理をステップＳ５０４へ進める。
【００４７】
ステップＳ５０４において、ＣＰＵ１０２は、印刷データ送受信制御部２０９を通じて、印刷データ受信可能判断部２１０に印刷データの受信可能状態であるか否かを問い合わせる。この問い合わせを受けて、ＣＰＵ１０２は、印刷データ受信可能判断部２１０により、印刷装置１００に印刷不可のエラーが発生しているか否かを判断する。
【００４８】
エラーが発生している場合（Ｓ５０４でＹＥＳ）、印刷データ受信可能判断部２１０は、印刷不可のエラーが発生していて印刷データ受信は不可能であると印刷データ送受信制御部２０９に応答し、その結果、ＣＰＵ１０２は処理をステップＳ５０８へ進める。一方、エラーが発生していない場合（Ｓ５０４でＮＯ）、印刷データ受信可能判断部２１０は、印刷不可のエラーは発生しておらず、印刷データ受信が可能であると印刷データ送受信制御部２０９に応答し、その結果、ＣＰＵ１０２は処理をステップＳ５０５へ進める。
【００４９】
ステップＳ５０８の処理は、図３のステップＳ３０７の処理と同じであり、また、ステップＳ５０５の処理は、図３のステップＳ３０４の処理と同じであるので、ここでの説明を省略する。ステップＳ５０５，Ｓ５０８の後、ＣＰＵ１０２は、処理をステップＳ５０６へ進める。ステップＳ５０６，Ｓ５０７の処理はそれぞれ、図３のステップＳ３０５，Ｓ３０６の処理と同じであるため、ここでの説明を省略する。
【００５０】
図５のフローチャートの処理によれば、印刷装置１００は、データ受信メモリ２０４と印刷装置１００の印刷可否状態を確認して応答するウィンドウサイズを切り替えることができる。そのため、印刷装置１００が印刷不可能な状態でも、印刷データが消失するという問題を解決することができる。
【００５１】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【００５２】
本発明は以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００５３】
１００    印刷装置
１０１    制御部
１０２    ＣＰＵ
１０４    ＲＯＭ
１０５    ＨＤＤ
１０７    プリンタ部
２０１    ネットワーク通信ドライバ部
２０２    ネットワークプロトコルスタック部
２０３    データ送受信制御部
２０４    データ受信メモリ（第１の記憶手段）
２０５    ウィンドウサイズ制御部
２０６    ネットワークアプリケーション部
２０７    印刷アプリケーション部
２０９    印刷データ送受信制御部
２１０    印刷データ受信可能判断部
２１１    印刷データ受信メモリ（第２の記憶手段）
【図１】
2015106796.tif 000003
【図２】
2015106796.tif 000004
【図３】
2015106796.tif 000005
【図４】
2015106796.tif 000006
【図５】
2015106796.tif 000007
【図６】
2015106796.tif 000008
【図７】
2015106796.tif 000009