(57)【要約】【課題】エラーから復帰した後に端末装置が印刷データを再送する必要のない画像形成装置を提供することを課題とする。【解決手段】プリンタ１は、印刷データ３０の受信中にエラーが発生した場合、受信したＴＣＰパケット４１に対するＡＣＫパケット４２の送信を停止する。ＰＣ２は、ＡＣＫパケット４２を検出できないため、ＴＣＰパケット４１に代えてキープアライブパケット４５を送信する。プリンタ１は、最初のキープアライブパケット４５を受信した時刻から所定の時間を経過してもエラーが解消しない場合、ＡＣＫパケット４２をＰＣ２に送信する。ＰＣ２は、ＡＣＫパケット４２を受信することにより、次のＴＣＰパケット４１を送信する。プリンタ１は、エラーが解消するまで上述の処理を繰り返すことにより、ＴＣＰパケット４１の受信を制限する。【選択図】図３
2009297905.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して端末装置に接続された画像形成装置であって、
第１のプロトコルに基づく通信コネクションを利用して前記端末装置から送信される印刷データを受信する通信部と、
受信した前記印刷データを用いた印刷処理を実行する印刷部と、
を備え、
前記通信部は、
前記印刷データの受信中に前記印刷部でエラーが発生した場合に前記通信コネクションを維持したまま前記印刷データの受信を停止し、前記エラーが解消した場合に前記通信コネクションを利用して前記印刷データの受信を再開する受信制限部、
を含むことを特徴とする画像形成装置。
【請求項２】
請求項１に記載の画像形成装置において、
前記受信制限部は、前記エラーの継続中に前記印刷データの受信の停止時間が所定の時間を経過した場合、前記印刷データを一時的に受信することを特徴とする画像形成装置。
【請求項３】
請求項１または請求項２に記載の画像形成装置において、さらに、
前記印刷部の動作状態の通知を要求するメッセージが前記端末装置から第２のプロトコルに基づいて送信された場合、前記印刷部の動作状態を前記第２のプロトコルに基づいて前記端末装置に通知する通知部、
を備え、
前記受信制限部は、前記印刷データの受信中に前記メッセージを受信し、かつ、前記メッセージの受信後に前記エラーが発生した場合、前記印刷データの受信を停止することを特徴とする画像形成装置。
【請求項４】
請求項１ないし請求項３のいずれかに記載の画像形成装置において、
前記印刷部は、
受信済みの前記印刷データを解析し、前記印刷部の動作状態が変化した場合に変化後の前記動作状態の通知を要求するコマンドが前記受信済みの前記印刷データに含まれているかどうかを確認する解析部、
を含み、
前記受信制限部は、前記受信済みの前記印刷データから前記コマンドが検出され、かつ、前記コマンドの検出後に前記印刷部でエラーが発生した場合、前記印刷データの受信を停止することを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末装置からネットワークを介して送信された印刷データに基づいて印刷処理を実行する画像形成装置に関する。
【背景技術】
【０００２】
従来から、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）とプリンタとをＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して接続し、ＰＣから印刷データをプリンタに送信することでプリンタに印刷処理を実行させることが行われている。
【０００３】
印刷データの送信には、Ｐｏｒｔ９１００、ｌｐｒ（Ｌｉｎｅ  ＰＲｉｎｔｅｒ）プロトコルなどが用いられる。これらのプロトコルは、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を利用している。つまり、印刷データは、ＰＣとプリンタとの間に確立されたＴＣＰコネクションを介してプリンタに送信される。
【０００４】
また、プリンタは、印刷データの受信中に用紙切れ、紙詰まりなどのエラーが発生することで、印刷処理を継続できないことがある。この場合、プリンタは、エラー処理としてＴＣＰコネクションを切断する。印刷データの送信元であるＰＣは、ＴＣＰコネクションの切断を検知することでプリンタにエラーが発生したと判断し、エラーの発生をユーザに通知する。
【０００５】
ＰＣは、ＴＣＰコネクションが切断された後でも、印刷データの再送を定期的に行っている。プリンタは、エラーから復帰した後に、再送された印刷データを用いて印刷処理を再開することができる。これにより、ユーザは、再プリントの操作を行わなくてもプリンタからの出力を得ることができる。
【０００６】
【特許文献１】特開２００１−９２６０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＰＣは、印刷データを再送する際に、全ページ分の印刷データを送信する。プリンタは、エラーの発生前に印刷したページがあるにもかかわらず、印刷処理を最初からやり直すことになる。この結果、エラーの発生によって、複数のページが重複されて印刷されるという問題が生じていた。
【０００８】
上記特許文献１では、エラーから復帰した後に重複して印刷されるページの発生を防ぐ技術が開示されている。上記特許文献１において、プリンタは、印刷データの受信中に発生したエラーから復帰した場合、メモリに残っている印刷データをクリアし、印刷済みのページ数をＰＣに通知する。ＰＣは、印刷が終了するまで印刷データをページ単位でスプールしており、プリンタからの通知に基づいて印刷済みのページの次のページ以降の印刷データを再送する。
【０００９】
そこで、本発明は前記問題点に鑑み、エラーから復帰した後に端末装置が印刷データを再送する必要のない画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、請求項１記載の発明は、ネットワークを介して端末装置に接続された画像形成装置であって、第１のプロトコルに基づく通信コネクションを利用して前記端末装置から送信される印刷データを受信する通信部と、受信した前記印刷データを用いた印刷処理を実行する印刷部と、を備え、前記通信部は、前記印刷データの受信中に前記印刷部でエラーが発生した場合に前記通信コネクションを維持したまま前記印刷データの受信を停止し、前記エラーが解消した場合に前記通信コネクションを利用して前記印刷データの受信を再開する受信制限部、を含むことを特徴とする。
【００１１】
請求項２記載の発明は、請求項１に記載の画像形成装置において、前記受信制限部は、前記エラーの継続中に前記印刷データの受信の停止時間が所定の時間を経過した場合、前記印刷データを一時的に受信することを特徴とする。
【００１２】
請求項３記載の発明は、請求項１または請求項２に記載の画像形成装置において、さらに、前記印刷部の動作状態の通知を要求するメッセージが前記端末装置から第２のプロトコルに基づいて送信された場合、前記印刷部の動作状態を前記第２のプロトコルに基づいて前記端末装置に通知する通知部、を備え、前記受信制限部は、前記印刷データの受信中に前記メッセージを受信し、かつ、前記メッセージの受信後に前記エラーが発生した場合、前記印刷データの受信を停止することを特徴とする。
【００１３】
請求項４記載の発明は、請求項１ないし請求項３のいずれかに記載の画像形成装置において、前記印刷部は、受信済みの前記印刷データを解析し、前記印刷部の動作状態が変化した場合に変化後の前記動作状態の通知を要求するコマンドが前記受信済みの前記印刷データに含まれているかどうかを確認する解析部、を含み、前記受信制限部は、前記受信済みの前記印刷データから前記コマンドが検出され、かつ、前記コマンドの検出後に前記印刷部でエラーが発生した場合、前記印刷データの受信を停止することを特徴とする。
【発明の効果】
【００１４】
本発明に係る画像形成装置は、印刷データの受信中に印刷部でエラーが発生した場合に通信コネクションを維持したまま印刷データの受信を停止し、エラーが解消した場合に維持していた通信コネクションを用いて印刷データの受信を再開する。これにより、本発明に係る画像形成装置は、エラーが解消された後に、新たな通信コネクションを確立することなく印刷データの受信を継続でき、再送された印刷データを用いることなく印刷処理を継続することができる。
【００１５】
また、エラーが発生する前に、印刷部の動作状態の通知を要求するメッセージを受信していた場合、または受信済みの印刷データから動作状態の変化の通知を要求するコマンドを検出していた場合に、本発明に係る画像形成装置は、印刷データの受信を停止する。これにより、本発明に係る画像形成装置は、印刷データの受信を停止しても、端末装置に印刷部の動作状態を通知することができる。
【発明を実施するための最良の形態】
【００１６】
｛第１の実施の形態｝
以下、図面を参照しつつ本発明の実施の形態について説明する。図１は、本実施の形態に係るネットワークシステムの構成図である。図１に示すネットワークシステムは、プリンタ１とＰＣ２とが、ＬＡＮ３に接続された構成である。
【００１７】
プリンタ１は、ＰＣ２から送信された印刷データ３０を印刷するネットワークプリンタである。ＰＣ２は、ユーザが使用する端末装置である。ＬＡＮ３には、インターネットあるいは他のＬＡＮに接続するためのルータ（図示省略）などが設置されている。
【００１８】
まず、プリンタ１の構成について説明する。プリンタ１は、制御部１１と、プリンタコントローラ１２と、プリンタ本体部１３と、通信部１４とを備えている。
【００１９】
制御部１１は、受信制限部１１１と、送信元情報記憶部１１２と、プリンタ情報管理部１１３と、ＡＣＫ送信タイマ１１４を備えている。制御部１１は、プリンタ１の全体制御を行うとともに、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）エージェントの機能を有している。
【００２０】
受信制限部１１１は、印刷データ３０の受信中にプリンタ１でエラーが発生した際に、印刷データ３０の受信を一時的に停止させる受信制限処理を行う。送信元情報記憶部１１２は、印刷データ３０の送信元のＩＰアドレスと、ＳＮＭＰリクエスト４３の送信元のＩＰアドレスと記憶している。プリンタ情報管理部１１３は、プリンタコントローラ１２、プリンタ本体部１３の動作状況を監視し、プリンタ１のステータス情報を格納する。ＡＣＫ送信タイマ１１４は、受信制限処理時にＡＣＫパケット４２の送信タイミングを指定するタイマである。
【００２１】
プリンタコントローラ１２は、コマンド解析部１２１と、メモリ１２２とを備えている。コマンド解析部１２１は、印刷データ３０に記述された印刷コマンドを解析する。メモリ１２２は、ＰＣ２から送信された印刷データ３０を格納する記憶部である。コマンド解析部１２１によって解析された印刷コマンドに基づいて、印刷データ３０からラスタデータが生成される。
【００２２】
プリンタ本体部１３は、現像装置、転写装置などを備えており、プリンタコントローラ１２が生成したラスタデータを印刷用紙に印刷する。
【００２３】
通信部１４は、ＬＡＮ３を介して接続する各コンピュータとの間で、ＴＣＰ／ＩＰなどを用いたデータの送受信を行う。
【００２４】
次に、ＰＣ２の構成について説明する。ＰＣ２は、プリンタドライバ２１と、ポートモニタ２２とを備えている。
【００２５】
プリンタドライバ２１は、ユーザが印刷を指示した文書データなどから、ページ記述言語で記述された印刷データ３０を生成する。ポートモニタ２２は、印刷データ３０をプリンタ１に送信するとともに、ＳＮＭＰマネージャとして機能する。なお、印刷データ３０の送信には、Ｐｏｒｔ９１００、ｌｐｒプロトコルなどが用いられる。
【００２６】
以上のように構成されたネットワークシステムにおいて、プリンタ１は、印刷データ３０の受信中に用紙切れ、紙詰まりなどのエラーが発生した場合、印刷データ３０の受信を一時的に停止する。このため、エラー中に印刷データ３０の受信を継続するために発生するメモリ１２２などのオーバーフローを防止できる。これにより、プリンタ１は、受信した印刷データ３０の消失を防ぐことができるため、ＰＣ２が印刷データ３０を再送することなく、全てのページを印刷することができる。
【００２７】
以下、プリンタ１が印刷データ３０を受信する際のプリンタ１とＰＣ２との間のデータの流れについて説明する。図２は、プリンタ１とＰＣ２との間のデータの流れを示す図である。
【００２８】
まず、ユーザが、ＰＣ２にインストールされたアプリケーションプログラムを用いて作成した文書データなどの印刷を指示する。プリンタドライバ２１は、文書データからページ記述言語で記述された印刷データを生成し、スプーラ（図示省略）にスプールする。
【００２９】
ポートモニタ２２は、プリンタ１との間にＴＣＰコネクションを確立し（ステップＳ１１）、ＴＣＰコネクションを利用してＴＣＰパケット４１を送信する（ステップＳ１２）。具体的には、ポートモニタ２２は、分割された印刷データ３０が格納されているＴＣＰパケット４１をプリンタ１に送信する。プリンタ１は、ＴＣＰパケット４１の受信応答として、ＡＣＫパケット４２をＰＣ２に送信する。ステップＳ１２に示す処理が繰り返されることで、印刷データ３０がＰＣ２からプリンタ１へ送信される。印刷データ３０の送信が終了することにより、ＴＣＰコネクションが切断される（ステップＳ１４）。
【００３０】
プリンタ１において、ＴＣＰパケット４１から印刷データ３０が取り出され、メモリ１２２に蓄積される。メモリ１２２に蓄積された印刷データ３０から、ページ単位のラスタデータが生成される。プリンタ本体部１３は、ラスタデータを印刷用紙に印刷する。
【００３１】
また、ポートモニタ２２は、ＴＣＰパケット４１の送信（ステップＳ１２）と並行して、ＳＮＭＰを用いてプリンタ１のステータス情報を取得する（ステップＳ１３）。具体的には、ポートモニタ２２は、ＳＮＭＰリクエスト４３をプリンタ１に定期的に送信する。プリンタ１は、ＳＮＭＰリクエスト４３の応答として、プリンタ１のステータス情報を含むＳＮＭＰレスポンス４４をＰＣ２に送信する。これにより、ポートモニタ２２は、プリンタ１のステータス（待機中、印刷中、エラー発生など）をＰＣ２のモニタなどに表示することができる。
【００３２】
通常、印刷データ３０は、上述のようにしてプリンタ１に送信される。しかし、印刷データ３０の受信中にプリンタ１でエラーが発生した場合、プリンタ１とＰＣ２との間で、図３に示すデータのやり取りが行われる。
【００３３】
図３は、プリンタ１のエラー発生時におけるプリンタ１とＰＣ２との間のデータの流れを示す図である。図３において、ＴＣＰコネクションの確立（ステップＳ１１）、切断（ステップＳ１４）の表示を省略している。
【００３４】
プリンタ１において、ＴＣＰパケット４１の受信（ステップＳ１２）中にエラーが発生したとする。しかし、ポートモニタ２２は、プリンタ１のエラーに関係なく、ＴＣＰパケット４１をプリンタ１に送信する（ステップＳ２１）。プリンタ１は、エラーが発生した場合、ＡＣＫパケット４２の送信を停止する。
【００３５】
ポートモニタ２２は、送信したＴＣＰパケット４１に対応するＡＣＫパケット４２を検出できない。このため、ポートモニタ２２は、ＴＣＰコネクションを維持するために、いわゆるキープアライブを実行する。つまり、ポートモニタ２２は、予め設定された間隔でキープアライブパケット４５をプリンタ１に送信する（ステップＳ２２）。プリンタ１は、キープアライブパケット４５に対しても応答しない。このように、プリンタ１は、エラーが発生した場合、ＴＣＰコネクションを介して受信したパケットに対して応答しないことで、印刷データ３０の受信を一時的に中止する。
【００３６】
しかし、ＰＣ２は、ＳＮＭＰを用いてプリンタ１のステータス情報を取得することができる（ステップＳ１３）。これは、ＳＮＭＰがＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）の利用を前提としているためである。なお、エラー発生後に最初に実行されるステップＳ１３の処理によって、プリンタ１でのエラー発生がＰＣ２に通知される。これにより、ポートモニタ２２は、ＰＣ２のモニタにプリンタ１でエラーが発生したメッセージを表示する。
【００３７】
プリンタ１は、キープアライブパケット４５を最初に受信してから所定の時間を経過した場合、ＡＣＫパケット４２をＰＣ２に送信する（ステップＳ２３）。ＡＣＫパケット４２を受信したＰＣ２は、新たなＴＣＰパケット４１を送信する（ステップＳ２１）。プリンタ１は、エラー状態が続いているため、受信したＴＣＰパケット４１に対するＡＣＫパケット４２を送信しない。この結果、ポートモニタ２２は、キープアライブパケット４５の送信を再開する（ステップＳ２２）。このように、プリンタ１のエラーが解除されるまで、ステップＳ２１〜Ｓ２３の処理が繰り返される。つまり、プリンタ１は、エラーが継続している間、ＴＣＰパケット４１の受信を一時的に停止する。しかし、ＴＣＰコネクション維持のために、プリンタ１とＰＣ２との間で所定の時間間隔でＴＣＰパケット４１およびＡＣＫパケット４２の送受信が行われる。
【００３８】
プリンタ１のエラーが解消した場合、プリンタ１は、ＡＣＫパケット４２をＰＣ２に送信する。これにより、ＴＣＰパケット４１の受信処理（ステップＳ１２）が再開される。
【００３９】
以下、印刷データ３０の受信処理時におけるプリンタ１の動作について説明する。図４は、印刷データ３０を受信する際のプリンタ１の動作の流れを示すフローチャートである。図４に示すフローチャートにおいて、プリンタ１とＰＣ２との間にＴＣＰコネクションが既に確立されているとする。
【００４０】
なお、図４に示すステップＳ１０１およびステップＳ１０２の処理、ステップＳ１０９およびＳ１１０の処理は、それぞれ図２、図３に示すステップＳ１２に対応する。ステップＳ１０３〜Ｓ１０５の処理は、図２、図３に示すステップＳ１３に対応する。ステップＳ１０８の処理は、図３に示すステップＳ２１〜Ｓ２３に対応する。
【００４１】
プリンタ１は、最初のＴＣＰパケット４１を受信した場合（ステップＳ１０１においてＹｅｓ）、ＡＣＫパケット４２をＰＣ２に送信し、ＴＣＰパケット４１の送信元のＩＰアドレスを取得する（ステップＳ１０２）。取得したＩＰアドレスは、送信元情報記憶部１１２に格納される。
【００４２】
次に、プリンタ１は、ＳＮＭＰリクエスト４３を受信することにより（ステップＳ１０３においてＹｅｓ）、ＳＮＭＰリクエスト４３の送信元のＩＰアドレスを取得し（ステップＳ１０４）、ＳＮＭＰレスポンス４４を送信する（ステップＳ１０５）。ＳＮＭＰリクエスト４３の送信元のＩＰアドレスは、送信元情報記憶部１１２に格納される。
【００４３】
プリンタ１においてエラーが発生していない場合（ステップＳ１０６においてＮｏ）、プリンタ１は、ＴＣＰパケット４１を受信することにより（ステップＳ１０９においてＹｅｓ）、ＡＣＫパケット４２をＰＣ２に送信する（ステップＳ１１０）。ＴＣＰパケット４１の受信が完了した場合（ステップＳ１１１においてＹｅｓ）、プリンタ１は、図４に示す処理を終了する。一方、ＴＣＰパケット４１の受信が完了していない場合（ステップＳ１１１においてＮｏ）、プリンタ１は、ＴＣＰパケット４１およびＳＮＭＰリクエスト４３を受信するために、ステップＳ１０３に示す処理に戻る。
【００４４】
プリンタ１でエラーが発生した場合（ステップＳ１０６においてＹｅｓ）、制御部１１は、送信元情報記憶部１１２に格納されたＴＣＰパケット４１の送信元とＳＮＭＰリクエスト４３の送信元とが一致しているかどうかを確認する。（ステップＳ１０７）。送信元ＩＰアドレスが一致する場合（ステップＳ１０７においてＹｅｓ）、受信制限部１１１が受信制限処理を実行する（ステップＳ１０８）。そして、プリンタ１は、ステップＳ１０９〜Ｓ１１１に示す処理を実行する。
【００４５】
一方、送信元ＩＰアドレスが一致しない場合（ステップＳ１０７においてＮｏ）、プリンタ１は、ＴＣＰパケット４１を受信することにより（ステップＳ１０９においてＹｅｓ）、ＡＣＫパケット４２をＰＣ２に送信する（ステップＳ１１０）。つまり、プリンタ１は、ＳＮＭＰリクエスト４３を受信していない場合、エラーに関係なく印刷データ３０の受信を継続する。
【００４６】
次に、受信制限処理（ステップＳ１０８）におけるプリンタ１の動作について説明する。図５は、受信制限処理における受信制限部１１１の動作の流れを示すフローチャートである。
【００４７】
まず、受信制限部１１１は、通信部１４に対してＡＣＫパケット４２の送信の停止を指示する（ステップＳ１２１）。最初のキープアライブパケット４５を受信した場合（ステップＳ１２２においてＹｅｓ）、受信制限部１１１は、ＡＣＫ送信タイマ１１４をＯＮにする（ステップＳ１２３）。ＡＣＫ送信タイマ１１４は、上述した所定の時間間隔でタイマイベントを発生させる。所定の時間は、ＰＣ２がキープアライブパケット４５の送信を開始してからＴＣＰコネクションが切断されるまでの時間を超えない時間であり、ＡＣＫ送信タイマ１１４に予め設定されている。
【００４８】
プリンタ１のエラーが解消した場合（ステップＳ１２４においてＹｅｓ）、受信制限部１１１は、ＡＣＫパケット４２の送信を通信部１４に指示する（ステップＳ１２６）。そして、受信制限部１１１は、ＡＣＫ送信タイマ１１４をＯＦＦにして（ステップＳ１２７）、図５に示す受信制限処理を終了する。
【００４９】
一方、プリンタ１のエラーが解消していない場合（ステップＳ１２４においてＮｏ）、受信制限部１１１は、ＡＣＫ送信タイマ１１４でタイマイベントが発生したかどうかを確認する（ステップＳ１２５）。タイマイベントが発生した場合（ステップＳ１２５においてＹｅｓ）、受信制限部１１１は、ＡＣＫパケット４２の送信を指示する（ステップＳ１２６）。つまり、プリンタ１は、キープアライブのタイムアウトによってＴＣＰコネクションが切断される前に、ＡＣＫパケット４２を送信することでＴＣＰコネクションを維持する。受信制限部１１１は、ＡＣＫ送信タイマ１１４をＯＦＦにして（ステップＳ１２７）、図５に示す受信制限処理を終了する。
【００５０】
以上説明したように、本実施の形態に係るプリンタ１は、エラーが継続している間、ＡＣＫパケット４２の送信タイミングを制御することによって、ＴＣＰコネクションを維持した状態で印刷データ３０の受信を一時的に停止する。プリンタ１は、エラーが解消された後に、維持していたＴＣＰコネクションを利用して印刷データ３０の受信を継続するため、ＰＣ１は、プリンタ１のエラーに伴う印刷データ３０の再送処理を省略することができる。
【００５１】
また、プリンタ１は、エラーの発生中に印刷データ３０の受信を一時的に停止することで、メモリ１２２に蓄積された印刷データ３０の消失を防止する。したがって、プリンタ１は、ＰＣ２から再送された印刷データ３０を用いることなく、印刷データ３０の印刷処理を完了させることができる。
【００５２】
また、プリンタ１は、ＰＣ２からＳＮＭＰリクエスト４３が送信されており、かつ、エラーが発生した場合に、印刷データ３０の受信を一定期間停止する。これにより、プリンタ１は、印刷データ３０の受信が完了していなくても、確実にエラーの発生をＰＣ２に通知することができる。
【００５３】
｛第２の実施の形態｝
以下、本発明の第２の実施の形態について説明する。上記第１の実施の形態に係るプリンタ１は、ＳＮＭＰリクエスト４３に応じてステータス情報を提供する。一方、本実施の形態に係るプリンタは、印刷データ３０に記述されたＰＪＬ（Ｐｒｉｎｔｅｒ  Ｊｏｂ  Ｌａｎｇｕａｇｅ）コマンドに基づいて、ステータス情報を提供する。
【００５４】
なお、本実施の形態に係るプリンタの構成は、図１に示すプリンタ１の構成と同じであるため、各構成要素の説明を省略する。以下では、上記第１の実施の形態と異なる点を中心に説明する。
【００５５】
まず、本実施の形態に係るプリンタ１が印刷データ３０を受信する際のデータの流れについて説明する。図６は、本実施の形態に係るプリンタ１と、ＰＣ２との間のデータの流れを示す図である。
【００５６】
プリンタ１は、ＴＣＰコネクションが確立された（ステップＳ３１）後で、ＴＣＰパケット４１の受信処理を行う（ステップＳ３２）。コマンド解析部１２１は、最初に受信したＴＣＰパケットに格納された印刷データ３０を解析し（ステップＳ３３）、プリンタ１のステータスの通知を要求するＰＪＬコマンド４６の有無を確認する。
【００５７】
図７は、ＰＪＬコマンド４６の一例を示す図である。なお、図７に示す“．％−１２３４５”の文字列は、印刷データ３０に記述されている印刷コマンドの間に、ＰＪＬコマンドを挿入するためのエスケープシーケンスである。最初に受信したＴＣＰパケット４１からＰＪＬコマンド４６が検出された場合、プリンタコントローラ１２は、プリンタ１のステータスを通知するＰＪＬコマンド４７を、ＴＣＰコネクションを利用してＰＣ２に送信する（ステップＳ３４）。たとえば、プリンタ１が待機中である場合は、図８に示すＰＪＬコマンド４７が送信され、プリンタ１が印刷中である場合は、図９に示すＰＪＬコマンド４７が送信される。
【００５８】
これらの処理の後で、ステップＳ３２に示す処理が繰り返されることで印刷データ３０がプリンタ１に送信される。プリンタ１のステータスが変化するたびに、ＰＪＬコマンド４７がＰＣ２に送信される（ステップＳ３４）。印刷データ３０の受信が完了した場合、ＴＣＰコネクションが切断される（ステップＳ３５）。
【００５９】
また、本実施の形態において、プリンタ１でエラーが発生した場合、プリンタ１とＰＣ２との間で図３に示すデータのやり取りが行われる。ただし、図３に示すステップＳ１３の処理は行われず、プリンタコントローラ１２が、プリンタ１のステータスが変化するたびにＰＪＬコマンド４７をＰＣ２に送信する。
【００６０】
次に、本実施の形態に係るプリンタ１における印刷データ３０の受信処理について説明する。図１０は、印刷データ３０を受信する際の本実施の形態に係るプリンタ１の動作の流れを示すフローチャートである。図１０に示すフローチャートにおいて、プリンタ１とＰＣ２との間にＴＣＰコネクションが既に確立されているとする。
【００６１】
なお、図１０に示すステップＳ２０１〜Ｓ２０２の処理は、図６に示すステップＳ３２〜Ｓ３３の処理に対応する。図１０に示すステップＳ２０６〜Ｓ２０７の処理は、図６に示すステップＳ３４の処理に対応する。図１０に示すステップＳ２１０〜Ｓ２１１の処理は、図６に示すステップＳ３２の処理に対応する。
【００６２】
プリンタ１は、最初のＴＣＰパケット４１を受信した場合（ステップＳ２０１においてＹｅｓ）、ＡＣＫパケット４２を送信し、最初のＴＣＰパケット４１に含まれる印刷データ３０を解析する（ステップＳ２０２）。解析した印刷データ３０にＰＪＬコマンド４６が記述されている場合（ステップＳ２０３においてＹｅｓ）、プリンタ１は、通知フラグをＯＮにし、ＰＪＬコマンド４７をＰＣ２に送信する（ステップＳ２０４）。通知フラグは、プリンタ１のステータスが変化した際にＰＪＬコマンド４７を送信するかしないかを示す情報であり、初期状態ではＯＦＦに設定されている。
【００６３】
通知フラグがＯＦＦの場合（ステップＳ２０５においてＮｏ）、プリンタ１は、ＴＣＰパケット４１を受信することにより（ステップＳ２１０においてＹｅｓ）、ＡＣＫパケット４２をＰＣ２に送信する（ステップＳ２１１）。つまり、最初に受信したＴＣＰパケット４１にＰＪＬコマンド４６が記述されていない場合、プリンタ１は、エラーに関係なく、ＡＣＫパケット４２をＰＣ２に送信する。そして、ＴＣＰパケット４１の受信が完了した場合（ステップＳ２１２においてＹｅｓ）、プリンタ１は、図１０に示す処理を終了する。一方、ＴＣＰパケット４１の受信が完了していない場合（ステップＳ２１２においてＮｏ）、プリンタ１は、次のＴＣＰパケット４１を受信するために、ステップＳ２０６に示す処理に戻る。
【００６４】
一方、通知フラグがＯＮの場合（ステップＳ２０５においてＹｅｓ）、プリンタ１は、ステータスが変化したかどうかを確認する（ステップＳ２０６）。プリンタ１のステータスが変化した場合（ステップＳ２０６においてＹｅｓ）、プリンタコントローラ１２は、ＰＪＬコマンド４７をＰＣ２に送信する（ステップＳ２０７）。
【００６５】
次に、プリンタ１は、エラーが発生しているかどうかを確認する（ステップＳ２０８）。エラーが発生していない場合（ステップＳ２０８においてＮｏ）、プリンタ１は、ステップＳ２１０、Ｓ２１１に示す処理を実行する。
【００６６】
一方、エラーが発生した場合（ステップＳ２０８においてＹｅｓ）、受信制限部１１１が、受信制限処理を実行する（ステップＳ２０９）。ステップＳ２０９の受信制限処理は、図５に示す処理と同様である。つまり、本実施の形態に係るプリンタ１は、キープアライブのタイムアウトによってＴＣＰコネクションが切断される前にＡＣＫパケット４２を送信することで、ＴＣＰコネクションを維持する。プリンタ１は、ステップＳ２１０、Ｓ２１１に示す処理を実行して、ＴＣＰパケット４１の受信処理を継続する。
【００６７】
プリンタ１は、エラー発生の有無に応じた処理を実行した後で、ステップＳ２１２に示す処理を実行する。つまり、ＴＣＰパケット４１の受信が完了した場合（ステップＳ２１２においてＹｅｓ）、プリンタ１は、図１０に示す処理を終了する。一方、ＴＣＰパケット４１の受信が完了していない場合（ステップＳ２１２においてＮｏ）、プリンタ１は、次のＴＣＰパケット４１を受信するために、ステップＳ２０６に示す処理に戻る。
【００６８】
以上説明したように、本実施の形態に係るプリンタ１は、上記第１の実施の形態と同様に、エラーが解消されるまで、ＴＣＰコネクションを維持した状態で印刷データ３０の受信を一時的に停止する。本実施の形態に係るプリンタ１は、エラーが解消された後に、維持していたＴＣＰコネクションを利用して印刷データ３０の受信を継続するため、ＰＣ１は、プリンタ１のエラーに伴う印刷データ３０の再送処理を省略することができる。
【００６９】
また、本実施の形態に係るプリンタ１は、エラーの発生中に印刷データ３０の受信を一時的に停止することで、メモリ１２２に蓄積された印刷データ３０の消失を防止する。したがって、本実施の形態に係るプリンタ１は、ＰＣ２から再送された印刷データ３０を用いることなく、印刷データ３０の印刷処理を完了させることができる。
【００７０】
また、本実施の形態に係るプリンタ１は、最初に受信したＴＣＰパケット４１からＰＪＬコマンド４６を検出し、かつエラーが発生した場合、ＴＣＰパケット４１の受信を一定期間停止する。これにより、本実施の形態に係るプリンタ１は、ＳＮＭＰを用いることなくステータスをＰＣ２に通知することができる。
【００７１】
なお、本実施の形態に係るプリンタ１は、最初に受信したＴＣＰパケットを解析してＰＪＬコマンド４６の有無を確認する例について説明したが、これに限られない。たとえば、プリンタ１は、受信した全てのＴＣＰパケットにおけるＰＪＬコマンド４６の有無を確認してもよい。この場合、エラーが発生するまでにＰＪＬコマンド４６が検出されていれば、プリンタ１は、受信制限処理を実行することができる。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施の形態に係るネットワークシステムの構成図である。
【図２】ＰＣと第１の実施の形態に係るプリンタとの間のデータの流れを示す図である。
【図３】ＴＣＰパケットの受信制限時におけるプリンタとＰＣとの間のデータの流れを示す図である。
【図４】第１の実施の形態に係るプリンタの動作の流れを示すフローチャートである。
【図５】受信制限処理の流れを示すフローチャートである。
【図６】ＰＣと第２の実施の形態に係るプリンタとの間のデータの流れを示す図である。
【図７】プリンタのステータスの通知を要求するＰＪＬコマンドを示す図である。
【図８】プリンタのステータスの変化を通知するＰＪＬコマンドを示す図である。
【図９】プリンタのステータスの変化を通知するＰＪＬコマンドを示す図である。
【図１０】第２の実施の形態に係るプリンタの動作の流れを示すフローチャートである。
【符号の説明】
【００７３】
１  プリンタ
２  ＰＣ（パーソナルコンピュータ）
１１  制御部
１２  プリンタコントローラ
１３  プリンタ本体部
１４  通信部
２１  プリンタドライバ
２２  ポートモニタ
１１１  受信制限部
１１２  送信元情報記憶部
１１３  プリンタ情報管理部
１１４  ＡＣＫ送信タイマ
【図１】
2009297905.tif 000003
【図２】
2009297905.tif 000004
【図３】
2009297905.tif 000005
【図４】
2009297905.tif 000006
【図５】
2009297905.tif 000007
【図６】
2009297905.tif 000008
【図７】
2009297905.tif 000009
【図８】
2009297905.tif 000010
【図９】
2009297905.tif 000011
【図１０】
2009297905.tif 000012