(57)【要約】【課題】  ホスト装置から印刷ジョブデータを受信中に、ホスト装置との接続が切断した場合に、簡易な処理により正しく印刷することができる印刷装置、印刷装置の制御方法、制御プログラムおよびそのプログラムを記録した記録媒体を提供すること。【解決手段】  印刷ジョブデータを順次送信するホストコンピュータ２に接続され、受信したデータに従って印刷処理を行うプリンタ１であって、ホストコンピュータ２から受信したデータを記憶する入力バッファＩＮ−ＢＵＦと、ホストコンピュータ２とプリンタ１との接続の切断を検出するホストインターフェイス２３と、接続の切断を検出した場合に、入力バッファＩＮ−ＢＵＦに記憶されたデータの印刷ジョブを終了させる制御を行うコントローラ１０と、を備える。【選択図】      図３
2007050640.tif 000002
【特許請求の範囲】
【請求項１】
印刷ジョブを構成するデータを順次送信するホスト装置に接続され、前記ホスト装置から受信したデータを順次処理することにより、前記印刷ジョブに従う印刷を実行する印刷装置であって、
前記ホスト装置から受信したデータを記憶する記憶部と、
前記ホスト装置と印刷装置との接続の切断を検出する検出部と、
前記検出部が接続の切断を検出した場合に、前記記憶部が記憶するデータの印刷ジョブを終了させる印刷ジョブ制御部と、を備えることを特徴とする印刷装置。
【請求項２】
請求項１に記載の印刷装置において、
前記印刷ジョブ制御部は、
前記検出部が切断を検出した後に、再び接続されて印刷ジョブを構成するデータを受信した場合に、前記記憶部が記憶する切断後に受信したデータにより印刷ジョブを構成することを特徴とする印刷装置。
【請求項３】
請求項１に記載の印刷装置において、
前記印刷ジョブ制御部は、
前記記憶部に記憶した全てのデータを処理したときに前記検出部が接続の切断を検出した場合、印刷ジョブを終了させることを特徴とする印刷装置。
【請求項４】
請求項１に記載の印刷装置において、
前記印刷ジョブ制御部は、
前記検出部が接続の切断を検出してから所定のタイムアウト時間が経過するまで、前記ホスト装置からのデータの受信がなかった場合、前記記憶部が記憶するデータの印刷ジョブを終了させることを特徴とする印刷装置。
【請求項５】
印刷ジョブを構成するデータを順次送信するホスト装置に接続され、前記ホスト装置から受信したデータを順次処理することにより、前記印刷ジョブに従う印刷を実行する印刷装置を制御する制御方法であって、
前記ホスト装置から受信したデータを記憶部に記憶する記憶工程、
前記ホスト装置と印刷装置との接続の切断を検出する検出工程と、
接続の切断を検出した場合に、前記記憶部が記憶するデータの印刷ジョブを終了させる印刷ジョブ制御工程と、を備えることを特徴とする制御方法。
【請求項６】
印刷ジョブを構成するデータを順次送信するホスト装置に接続され、前記ホスト装置から受信したデータを順次処理することにより、前記印刷ジョブに従う印刷を実行する印刷装置を制御する制御プログラムであって、
コンピュータに、
前記ホスト装置から受信したデータを記憶部に記憶する記憶工程、
前記ホスト装置と印刷装置との接続の切断を検出する検出工程、
接続の切断を検出した場合に、前記記憶部が記憶するデータの印刷ジョブを終了させる印刷ジョブ制御工程、を実行させることを特徴とする制御プログラム。
【請求項７】
請求項６に記載の制御プログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ホスト装置から受信した印刷ジョブを処理することにより、印刷を実行する印刷装置、印刷装置の制御方法、制御プログラムおよびそのプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
近年、ＰＣなどのホスト装置と、プリンタとを接続するインターフェイスとして、ＵＳＢ(Universal serial Bus)が広く用いられている。ＵＳＢでは、ユーザの利便性のため、ホスト装置の電源が入っている状態でケーブルを挿抜することができる仕様としている。しかし、ユーザの操作の誤り・不注意などによって、ホスト装置とプリンタとの通信中にケーブルが抜けてしまうことがある。
【０００３】
また、プリンタとの通信中、ホスト装置は、ＰＤＬなどのプリンタ制御言語により印刷ジョブを記述した印刷ジョブデータをプリンタへ送信している。印刷ジョブデータは、図１に示すように、オブジェクトに対応するコマンドデータおよび画像データを繰り返し有するデータ構造となっている。コマンドデータには、次に続く画像データのデータ量、画像データの画像を印刷ページ上に描画する位置、などに関する情報が記述されている。プリンタが印刷ジョブを処理する際には、まずコマンドデータを解釈して、次に続く画像データのデータ量を認識する。そして、コマンドデータに続けて、認識しただけのデータ量のデータを画像データとして認識する。画像データを認識すると、次に続くデータはコマンドデータとして認識する。このように、プリンタはコマンドデータ、画像データを交互に認識することによって、印刷ジョブを処理している。
【０００４】
ここで、データの通信途中にケーブルが抜けたりして接続が切断したときには、例えば、図２（ａ）に示すように、受信中であった画像データの一部だけを受信した状態となって通信が終了する。このような場合、ホスト装置は印刷ジョブを送信する処理が失敗したと認識するので、抜けたケーブルが再接続されると、ホスト装置は再印刷を行うために全印刷ジョブデータを最初から再送信するか、あるいは、通信中だった印刷ジョブは削除して次の印刷ジョブデータを送信する。
【０００５】
切断前に受信したデータに続けて再接続後に受信したデータを受信すると、プリンタは、図２（ｂ）に示すように切断前のデータと再接続後のデータとを続けて、１つの印刷ジョブのデータとして認識する。このとき、プリンタは、コマンドデータに従って次に続く画像データの大きさを認識するので、図２（ｃ）に示すようにデータを誤って認識してしまう。例えば、図２（ｂ）に示す再接続後に受信した先頭のコマンドデータ１００を、図２（ｃ）に示すように画像データ１０１の一部として認識してしまう。さらに、誤って認識した画像データ１０１の次に続くデータはコマンドデータとして認識するので、画像データ１０１以降のデータについても正しく認識することができない。このように、印刷ジョブデータの受信中に接続がいったん切断された場合、印刷ジョブを正しく処理して印刷することができなくなる。一般にはコマンドデータを画像データとして誤って認識した場合は、正しい印刷ができないばかりか、所謂ゴミ印字となり大量の印刷用紙等を無駄にすることにもなる。
【０００６】
そこで、特許文献１には、ケーブルが抜けた場合に、切断前に受信したデータをバッファから消去することにより、再接続後に受信した印刷ジョブデータに従って正しく印刷することができる技術が開示されている。
【０００７】
また、特許文献２には、ケーブルが再接続された場合に、ホスト装置とプリンタとの間で双方向通信を行い、ホスト装置は、ケーブルが抜けることによって転送されなかったデータを続きから転送することにより、正しく印刷することができる技術が開示されている。
【０００８】
【特許文献１】特開２００１−３４１３９１号公報
【特許文献２】特許第２７２５６２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載の技術では、切断前に受信したデータを消去するので、切断前に受信したデータを印刷して有効に活用することができない。例えば、１つの印刷ジョブデータとして複数ページのデータを順番に受信する場合、受信中でケーブルが抜けると、特許文献１の技術では、既に受信済みのページのデータについても消去してしまうので、受信済みのページを印刷することができない。
【００１０】
また、特許文献２に記載の技術では、ホスト装置、プリンタ間で双方向通信を行うので、プリンタおよびホスト装置の双方が専用の処理を行う必要が生じるので、処理が複雑になってしまう。
【００１１】
そこで、本発明は、ホスト装置から印刷ジョブデータを受信中に、ホスト装置との接続が切断した場合に、簡易な処理により正しく印刷することができる印刷装置、印刷装置の制御方法、制御プログラムおよびそのプログラムを記録する記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明は、印刷ジョブを構成するデータを順次送信するホスト装置に接続され、ホスト装置から受信したデータを順次処理することにより、印刷ジョブに従う印刷を実行する印刷装置であって、ホスト装置から受信したデータを記憶する記憶部と、ホスト装置と印刷装置との接続の切断を検出する検出部と、検出部が接続の切断を検出した場合に、記憶部が記憶するデータの印刷ジョブを終了させる印刷ジョブ制御部と、を備えることを特徴とする。
【００１３】
この構成によれば、ホスト装置から受信したデータは記憶部に記憶し、ホスト装置と印刷装置との接続が切断した場合には、記憶したデータの印刷ジョブを終了させることにより、確実に終了した印刷ジョブに従って印刷を実行するので、正しく印刷することができる。
【００１４】
また、ホスト装置から印刷装置にデータを送信する片方向の通信によって処理しているので、双方向通信を行う特許文献２の技術に比べて、簡易な処理、簡易な構成にすることができる。
【００１５】
なお、印刷ジョブには、複数ページ分のデータが含まれていることが多い。この場合、データの通信中に通信が切断してしまっても、既に受信したデータのページ分については印刷するので、特許文献１に記載の技術に比べてもさらに有用である。
【００１６】
ここで、印刷ジョブ制御部は、検出部が切断を検出した後に、再び接続されて印刷ジョブを構成するデータを受信した場合に、記憶部が記憶する切断後に受信したデータにより印刷ジョブを構成することが好ましい。
【００１７】
このようにすれば、接続が切断した後に、再び接続されてデータを受信した場合に、切断後に受信したデータにより印刷ジョブを構成することにより、切断前に受信したデータと再接続後に受信したデータとを別の印刷ジョブとして処理することができる。したがって、再接続後に受信した印刷ジョブについて正しく印刷することができる。
【００１８】
ここで、印刷ジョブ制御部は、記憶部に記憶した全てのデータを処理したときに検出部が接続の切断を検出した場合、印刷ジョブを終了させることが好ましい。
【００１９】
このようにすれば、受信した全てのデータを処理したときに通信の切断が検出した場合、確実に終了した印刷ジョブに従って印刷を実行するので、正しく印刷することができる。
【００２０】
ここで、印刷ジョブ制御部は、検出部が接続の切断を検出してから所定のタイムアウト時間が経過するまで、ホスト装置からのデータの受信がなかった場合、記憶部が記憶するデータの印刷ジョブを終了させることが好ましい。
【００２１】
このようにすれば、接続が切断してから所定のタイムアウト時間が経過するまでホスト装置からのデータの受信がなかった場合に、記憶部が記憶するデータの印刷ジョブを確実に終了させるので、正しく印刷することができる。
【００２２】
また、本発明は、方法の発明とすることもできる。すなわち、本発明の制御方法は、印刷ジョブを構成するデータを順次送信するホスト装置に接続され、ホスト装置から受信したデータを順次処理することにより、印刷ジョブに従う印刷を実行する印刷装置を制御する制御方法であって、ホスト装置から受信したデータを記憶部に記憶する記憶工程、ホスト装置と印刷装置との接続の切断を検出する検出工程と、接続の切断を検出した場合に、記憶部が記憶するデータの印刷ジョブを終了させる印刷ジョブ制御工程と、を備えることを特徴とする。
【００２３】
さらに、本発明は、プログラムまたはそのプログラムを記憶した記録媒体とすることもできる。すなわち、本発明のプログラムは、印刷ジョブを構成するデータを順次送信するホスト装置に接続され、ホスト装置から受信したデータを順次処理することにより、印刷ジョブに従う印刷を実行する印刷装置を制御する制御プログラムであって、コンピュータに、ホスト装置から受信したデータを記憶部に記憶する記憶工程、ホスト装置と印刷装置との接続の切断を検出する検出工程、接続の切断を検出した場合に、記憶部が記憶するデータの印刷ジョブを終了させる印刷ジョブ制御工程、を実行させることを特徴とする。また、このプログラムを記録した記録媒体としては、フレキシブルディスクやＣＤ−ＲＯＭ、ＩＣカード、メモリカードなど、コンピュータが読み取り可能な種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００２４】
（第１の実施形態）
以下、本発明に係る第１の実施形態について図面を参照して説明する。
【００２５】
図３は、第１の実施形態に係るプリンタのハードウェア構成を示した図である。図３に示すように、プリンタ１にはホストコンピュータ２が接続されている。プリンタ１は、ホストコンピュータ２から送信された印刷ジョブデータの制御などを行うコントローラ（印刷ジョブ制御部）１０、印刷用紙などの記録媒体に印刷する印刷エンジン１１、およびユーザとプリンタ１とのインターフェイスである操作パネル１２、を備えている。
【００２６】
コントローラ１０は、ＣＰＵ２０、ＲＯＭ２１、ＲＡＭ２２、ホストＩ／Ｆ２３、エンジンＩ／Ｆ２４、パネルＩ／Ｆ２５を有している。
【００２７】
ＣＰＵ２０は、コントローラ１０が行う処理を司る部分であり、受信した印刷ジョブデータの解釈、解釈した印刷ジョブの管理などの処理も行う。
【００２８】
ＲＯＭ２１は、フラッシュＲＯＭ、ＥＥＰＲＯＭなど電気的に読み書き可能な不揮発性のメモリであり、制御プログラムなどが格納されている。なお、この制御プログラムは、予めＲＯＭ２１に格納されていてもよいし、メモリカードなどの記録媒体により供給され、ＣＰＵ２０がメモリカードから読み出した制御プログラムをＲＯＭ２１に格納するとしてもよい。
【００２９】
ＲＡＭ２２は、各種の処理のワーキングメモリとして用いられる汎用のメモリであり、特に、受信した印刷ジョブデータを記憶するための入力バッファ（記憶部）ＩＮ−ＢＵＦが確保されている。なお、ＣＰＵ２０は、入力バッファＩＮ−ＢＵＦをリングバッファとして制御する。
【００３０】
ホストＩ／Ｆ２３は、着脱可能に装着されたＵＳＢケーブル１３を介してホストコンピュータ２に接続され、ホストコンピュータ２とのデータの送受信を制御している。
【００３１】
また、ホストＩ／Ｆ２３は、接続されたホストコンピュータ２からの電源供給線の電圧を監視しており、ＵＳＢケーブル１３が着脱されると、電源供給線の電圧変動によりＵＳＢケーブル１３の着脱を検出する。すなわち、ホストＩ／Ｆ２３は検出部としての機能を有している。ホストＩ／Ｆ２３は、ＵＳＢケーブル１３の着脱を検出すると、ＣＰＵ２０に着脱があった旨の着脱信号を送信する。なお、着脱信号では、装着されたときの信号と抜き出されたときの信号とが区別される。
【００３２】
エンジンＩ／Ｆ２４は、入力バッファＩＮ−ＢＵＦに格納されているデータを読み出し、それらに所定の処理を施した後に印刷エンジン１１に引き渡す、印刷エンジン１１とのインターフェイスを司る部分である。なお、このエンジンＩ／Ｆ２４には、図示していないが、データを一時的に格納するメモリが備えられ、入力バッファＩＮ−ＢＵＦから読み出した印刷ジョブデータに印刷処理を行うことにより、印刷エンジン１１に対応する印刷データを生成する。エンジンＩ／Ｆ２４は、印刷データを印刷エンジン１１に送信することにより、印刷用紙などの記録媒体に印刷を行う。
【００３３】
なお、ホストＩ／Ｆ２３およびエンジンＩ／Ｆ２４は、具体的には、ＡＳＩＣ(Application Specific Integrated Circuit)で構成されている。
【００３４】
パネルＩ／Ｆ２５は、コントローラ１０と、操作パネル１２とのインターフェイスである。操作パネル１２には、ユーザからの指示を受け付けるスイッチ、ユーザへのメッセージを表示する液晶パネルが備わっている。操作パネル１２からのユーザ指示の入力は、パネルＩ／Ｆ２５を介してコントローラ１０に受け渡される。コントローラ１０からの液晶パネルの表示信号は、パネルＩ／Ｆ２５を介して操作パネル１２に受け渡される。
【００３５】
以上に説明したコントローラ１０の各部は、図３に示すように、相互にデータ授受可能に接続されている。
【００３６】
次に、プリンタ１が行う処理について、フローチャートに従って詳細に説明する。図４は、印刷ジョブデータを受信したときの入力処理の流れを示したフローチャートである。ＣＰＵ２０が、ＲＯＭ２１に格納された制御プログラムを実行し、ホストコンピュータ２から印刷ジョブデータを受信すると、図４の入力処理を開始する。以下、フローチャートに従って詳細に説明する。
【００３７】
入力処理を開始すると、まず、ステップＳ１０では、ＣＰＵ２０は、入力バッファＩＮ−ＢＵＦの記憶領域におけるデータの読み出し位置であるアドレスを示すリードポインタを設定する。図５は、印刷ジョブデータを受信したときの、入力バッファＩＮ−ＢＵＦの記憶領域を示している。ステップＳ１０では、図５（ａ）に示すように、入力バッファＩＮ−ＢＵＦの記憶領域上の読み出す位置を示すリードポインタＰＲを設定する。また、入力バッファＩＮ−ＢＵＦの記憶領域において、次にデータを書き込む位置であるアドレスを示すライトポインタＰＷを、初期値としてリードポインタＰＲと同じ位置に設定する。設定したリードポインタＰＲおよびライトポインタＰＷの値はＲＡＭ２２に記憶される。
【００３８】
次に、ステップＳ１１では、ＣＰＵ２０は、受信した印刷ジョブデータを入力バッファＩＮ−ＢＵＦのライトポインタＰＷが示す位置から順番に格納する。また、ＲＡＭ２２に格納したライトポインタＰＷの値を、受信したデータを記憶した終端の位置に更新する。このとき、図５（ｂ）に示すように、リードポインタＰＲとライトポインタＰＷが示す位置に挟まれる範囲の記憶領域にデータが格納される。
【００３９】
次に、ステップＳ１２では、ＣＰＵ２０は、ホストコンピュータ２との接続が維持されているか否かを判断する。ＣＰＵ２０がホストＩ／Ｆ２３からケーブル１３が抜けたことを示す着脱信号を受け取っていない場合、接続が維持されていると判断して（Ｙｅｓ）、ステップＳ１３に進む。ケーブル１３が抜けたことを示す着脱信号を受け取った場合、接続が維持されていないと判断して（Ｎｏ）、ステップＳ１４に進む。
【００４０】
ステップＳ１３では、ＣＰＵ２０は、データの受信が終了したか否かを判断する。データの受信が終了していない場合（Ｎｏ）、ステップＳ１１に戻り、さらに受信したデータを入力バッファＩＮ−ＢＵＦに格納する処理を繰り返す。データの受信が終了した場合（Ｙｅｓ）、入力処理を終了する。
【００４１】
なお、実際には、ステップＳ１２の処理は割り込み処理により行っている。すなわち、通常は、ステップＳ１２の処理を行うことなく、ステップＳ１１およびステップＳ１３の処理を繰り返している。ＣＰＵ２０がホストＩ／Ｆ２３から着脱信号を受け取ったときに、ＣＰＵ２０がステップＳ１２の判断を行って、ステップＳ１４に処理を進める。
【００４２】
図４に示す入力処理において、データの受信が終了することにより処理を終えると、受信した全てのデータは入力バッファＩＮ−ＢＵＦに格納されているので、図５（ｃ）に示すように、図５（ｂ）に示した状態よりライトポインタＰＷがさらに進んで、１つの印刷ジョブの印刷ジョブデータを記憶した状態となって入力処理を終了する。
【００４３】
次に、印刷ジョブデータの受信中に接続が切断したときの処理について説明する。接続が切断した場合は、ステップＳ１２からステップＳ１４に処理が進む。ステップＳ１４では、ＣＰＵ２０は、ライトポインタＰＷの位置に接続が切断したときに受信したデータの位置を示す切断ポインタを設定する。図６は、接続が切断したときの、入力バッファＩＮ−ＢＵＦの記憶領域を示している。接続が切断したときには、図６（ａ）に示すように、受信データの終端を示すライトポインタＰＷの位置に切断ポインタＰＣを設定する。ステップＳ１４の処理を終えると、入力処理を終了する。このように、印刷ジョブデータの受信中に接続が切断したときは、図６（ａ）に示すように切断ポインタＰＣが設定された状態となって入力処理を終了する。
【００４４】
なお、第１の実施形態では、ホストコンピュータ２は、接続が途中で切断したときに通信が失敗したものとみなして、再接続後には該印刷ジョブデータあるいは、次の印刷ジョブデータを最初から送信するものとする。したがって、接続切断後にケーブルが再接続された場合、図６（ｂ）に示すように、図６（ａ）の切断ポインタＰＣが設定された位置に続く記憶領域に、再接続後に受信したデータが格納され、ライトポインタＰＷは再接続後に受信したデータの終端を示す位置に更新される。
【００４５】
また、入力バッファＩＮ−ＢＵＦはリングバッファとして制御されているので、図６（ｂ）に示すように、再接続後の受信データが入力バッファＩＮ−ＢＵＦの終端位置に達した後には、入力バッファＩＮ−ＢＵＦの先頭位置から順に続きのデータを格納する。
【００４６】
ここで、印刷ジョブデータは、図１に示したように、コマンドデータと画像データをオブジェクトごとに繰り返すデータ構造となっている。したがって、図６（ｂ）のように切断前の受信データと再接続後の受信データを続けて記憶した状態では、コマンドデータを解釈した画像データと実際の画像データとが異なってしまうので、印刷ジョブを正しく認識することができない（図２（ｂ）、（ｃ）参照）。
【００４７】
そこで、プリンタ１は、切断ポインタＰＣを用いて接続の切断前後に受信したデータを別々の印刷ジョブとして扱って印刷処理を行う。
【００４８】
図７は、印刷処理の流れを示したフローチャートである。以下、フローチャートに従って印刷処理について順番に説明する。
【００４９】
印刷処理を開始すると、ステップＳ３０では、ＣＰＵ２０は、リードポインタＰＲを参照して、入力バッファＩＮ−ＢＵＦから受信データを読み出す。ここでは、リードポインタＰＲが示す位置に続けて格納された、予め決められたデータ量の受信データが読み出される。読み出されたデータはエンジンＩ／Ｆ２４に受け渡し、エンジンＩ／Ｆ２４のメモリに蓄積される。また、読み出されたデータは入力バッファＩＮ−ＢＵＦから消去して、リードポインタＰＲが示す位置を残された受信データの先頭位置に更新する。したがって、図６（ｂ）に示す状態から、データが読み出されると共にリードポインタＰＲが更新されて、図８（ａ）に示す状態となる。
【００５０】
次に、ステップＳ３１では、ＣＰＵ２０は、切断ポインタＰＣが設定されているか否かを判断する。切断ポインタＰＣが設定されている場合（Ｙｅｓ）、ステップＳ３２に進む。切断ポインタＰＣが設定されていない場合（Ｎｏ）、ステップＳ３５に進む。
【００５１】
ステップＳ３２では、ＣＰＵ２０は、リードポインタＰＲと切断ポインタＰＣが等しいか否かを判断する。リードポインタＰＲと切断ポインタＰＣが等しくない場合（Ｎｏ）、ステップＳ３０に戻り、続けてデータを読み出す処理を行う。繰り返しデータを読み出して、図８（ｂ）に示すように切断前に受信したデータを全て読み出した状態になると、リードポインタＰＲと切断ポインタＰＣが等しくなり（Ｙｅｓ）、ステップＳ３３に進む。
【００５２】
ステップＳ３３では、ＣＰＵ２０は、当該印刷ジョブを終了させるコマンドをエンジンＩ／Ｆ２４に受け渡すことにより、印刷ジョブを終了させる。エンジンＩ／Ｆ２４は、ステップＳ３１において繰り返し受け取って蓄積したデータを解釈し、解釈して得られた印刷ジョブから印刷データを生成する。そして、印刷データを印刷エンジン１１に送信することにより、印刷を実行する。
【００５３】
次に、ステップＳ３４では、ＣＰＵ２０は、リードポインタＰＲに等しくなった切断ポインタＰＣの値を消去して、ステップＳ３５に進む。ここでは、接続の切断前に受信したデータの処理を終えているので、入力バッファＩＮ−ＢＵＦ内には切断前に受信したデータがなくなり、設定した切断ポインタＰＣが消去される。したがって、図９（ａ）に示すように、入力バッファＩＮ−ＢＵＦは再接続後に受信したデータのみを記憶し、リードポインタＰＲおよびライトポインタＰＷが設定された状態となる。
【００５４】
ステップＳ３５では、ＣＰＵ２０は、リードポインタＰＲとライトポインタＰＷが等しいか否かを判断する。リードポインタＰＲとライトポインタＰＷが等しくない場合（Ｎｏ）、ステップＳ３０に戻り、リードポインタＰＲとライトポインタＰＷが等しくなるまでステップＳ３０〜ステップＳ３４の処理を繰り返す。入力バッファＩＮ−ＢＵＦに格納されていたデータを全て読み出してエンジンＩ／Ｆ２４に受け渡すと、リードポインタＰＲとライトポインタＰＷが等しくなって（Ｙｅｓ）、ステップＳ３６に進む。
【００５５】
ステップＳ３５においてリードポインタＰＲとライトポインタＰＷが等しいと判断されるまで再接続後に受信したデータを繰り返し読み出すことにより、リードポインタＰＲの位置が更新され続ける。また、入力バッファＩＮ−ＢＵＦはリングバッファであるので、リードポインタＰＲの位置が入力バッファＩＮ−ＢＵＦの終端の位置となったときには、図９（ｂ）に示すように、リードポインタは入力バッファＩＮ−ＢＵＦの先頭位置に更新される。さらに、受信データを読み出して、図９（ｃ）に示すように、リードポインタＰＲとライトポインタＰＷとの位置が等しくなったときには、再接続後に受信した全てのデータがエンジンＩ／Ｆ２４へと受け渡されて、ステップＳ３６に進む。
【００５６】
ステップＳ３６では、ＣＰＵ２０は、エンジンＩ／Ｆ２４に受け渡したデータを解釈して、印刷ジョブが終了したか否かを判断する。受け渡したデータに当該印刷ジョブを終了するコマンドが含まれていれば印刷ジョブを終了して（Ｙｅｓ）、ステップＳ３７に進む。印刷ジョブが終了しなければ（Ｎｏ）、ステップＳ３８に進む。
【００５７】
ステップＳ３７では、エンジンＩ／Ｆ２４は、受け渡されたデータから構成される印刷ジョブを解釈して、印刷データを生成する。印刷データは印刷エンジン１１に送信することにより印刷を実行する。
【００５８】
ステップＳ３８では、ＣＰＵ２０は、所定のタイムアウト時間内にデータの受信があるか否かを判断する。タイムアウト時間内にデータを受信した場合（Ｙｅｓ）、受信したデータについて図４の入力処理を開始する。タイムアウト時間内にデータを受信しなかった場合（Ｎｏ）、エンジンＩ／Ｆ２４にジョブを終了するコマンドデータを受け渡すことにより印刷ジョブを終了させて、ステップＳ３７に進み、エンジンＩ／Ｆ２４に受け渡したデータから構成される印刷ジョブについて印刷を実行する。
【００５９】
なお、ステップＳ１０の処理が記憶工程、ステップＳ１２の処理が検出工程、ステップＳ３３の処理が印刷ジョブ制御工程、に相当する。
【００６０】
以上に、説明したように、第１の実施形態のプリンタ１によれば、切断前に受信したデータと切断後に受信したデータとを、別々の印刷ジョブとして処理することができる。図１０は、印刷結果の一例を示した図である。図１０（ａ）には、ケーブルの接続が切断することがなかった場合に印刷される、３ページ分の印刷ジョブに対応する画像を示している。一方、図１０（ｂ）には、３ページ分の印刷ジョブデータのうち、２ページ目のデータの通信中に切断があったときの、切断前に受信したデータの印刷ジョブに対応する印刷結果の画像を示している。図１０（ｂ）に示すように、１ページ目については１ページ目の印刷ジョブは全て処理されているので正しく印刷されている。２ページ目については、２ページ目の印刷ジョブデータの一部の受信していたデータについてのみ処理されているので、ページ内の一部だけが正しく印刷される。３ページ目については、切断前の受信データには３ページ目に対応するデータが含まれていないので、印刷しない。
【００６１】
さらに、ケーブルを再接続後に受信した印刷ジョブデータについては、切断前に受信したデータとは別のジョブとして処理するので、図１０（ａ）に示したように印刷ジョブの全ページについて正しい印刷がなされる。
【００６２】
以下、第１の実施形態の効果を記載する。
【００６３】
（１）データの通信中に接続が切断した場合に、切断前に受信したデータの印刷ジョブを終了させることにより、切断前に受信した印刷ジョブデータと再接続後に受信した印刷ジョブデータとを別々に処理しているので、切断前に受信した印刷ジョブデータ、切断後に再接続されて受信した印刷ジョブデータ間でデータを誤って認識することがなくなる。したがって、正しく印刷することができる。
【００６４】
（２）データの通信中に接続が切断してしまっても、印刷ジョブデータのうち受信したデータに対応する部分については印刷することができる。例えば、図１０（ａ）に示すように印刷ジョブに複数ページのデータが含まれている場合、切断前に受信したデータに対応するページについては正しく印刷することができる。したがって、受信したデータを無駄にすることなく効率的に処理することができる。また、ケーブルの再接続後の印刷を待つことなく一部の印刷物は得ることができるので有用である。
【００６５】
（３）データの通信は、ホストコンピュータ２からプリンタ１への片方向通信により行っているので、簡易な処理によって正しく印刷することができる。また、処理が簡易であるため、処理を実現するためのコストアップを抑えることができる。
【００６６】
（第２の実施形態）
次に、本発明に係る第２の実施形態について説明する。第２の実施形態では、入力バッファＩＮ−ＢＵＦに未処理のデータがなくなった時点で、接続が切断している場合に、印刷ジョブを終了させる処理を行う。図１１は、第２の実施形態に係る処理の流れを示したフローチャートである。ＣＰＵ２０がＲＯＭ２１から制御プログラムを読み出して実行すると、図１１のフローチャートの処理を開始する。以下、図１１のフローチャートに従って説明する。
【００６７】
処理を開始すると、まず、ステップＳ１００では、ＣＰＵ２０は、リードポインタＰＲおよびライトポインタＰＷを設定する。
【００６８】
次に、ステップＳ１０１では、ホストコンピュータ２から受信したデータを入力バッファＩＮ−ＢＵＦに格納し、ライトポインタＰＷを更新する。ステップＳ１０１の処理を行うと、図１２（ａ）に示すように、リードポインタＰＲの位置からライトポインタＰＷの位置の間の領域に受信データが格納された状態となる。
【００６９】
次に、ステップＳ１０２では、ＣＰＵ２０は、リードポインタＰＲを参照して、入力バッファＩＮ−ＢＵＦから受信データを読み出す。ここでは、格納された受信データを読み出し、読み出されたデータはエンジンＩ／Ｆ２４に受け渡す。また、読み出されたデータは入力バッファＩＮ−ＢＵＦから消去して、リードポインタＰＲの位置を更新する。
【００７０】
次に、ステップＳ１０３では、ＣＰＵ２０は、リードポインタＰＲとライトポインタＰＷが等しいか否かを判断する。リードポインタＰＲとライトポインタＰＷが等しくない場合（Ｎｏ）、ステップＳ１０２に戻り、リードポインタＰＲとライトポインタＰＷが等しくなるまで、データを読み出す処理を繰り返す。リードポインタＰＲとライトポインタＰＷが等しい場合（Ｙｅｓ）、図１２（ｂ）に示すように、受信したデータを全て読み出した状態となって、ステップＳ１０４に進む。
【００７１】
ステップＳ１０４では、処理すべき受信データがなくなったので、接続が切断しているか否かを判断する。接続が切断している場合（Ｙｅｓ）、ステップＳ１０５に進む。接続が切断していない場合（Ｎｏ）、ステップＳ１０６に進む。
【００７２】
ステップＳ１０５では、接続が切断しているので、ＣＰＵ２０は、受け渡したデータで印刷ジョブが終了したものとして、エンジンＩ／Ｆ２４に当該印刷ジョブに対する印刷処理を実行させ、図１１の処理を終了する。エンジンＩ／Ｆ２４は、受け渡された印刷ジョブデータから印刷データを生成する。印刷エンジン１１は印刷データに従って印刷を行う。
【００７３】
ステップＳ１０６では、接続が切断しているので、ＣＰＵ２０は、所定のタイムアウト時間内にケーブル１３が再接続され、データの受信があったか否かを判断する。タイムアウト時間内にデータの受信があった場合（Ｙｅｓ）、ステップＳ１０１に戻り、受信したデータについて処理を行う。タイムアウト時間内にデータの受信がなかった場合（Ｎｏ）、ステップＳ１０５に進んで、エンジンＩ／Ｆ２４に受け渡したデータで印刷ジョブが終了したものとして印刷を行う。
【００７４】
第２の実施形態によれば、第１の実施形態における（２）または（３）の効果を得ることができる。
【００７５】
（第３の実施形態）
次に、本発明に係る第３の実施形態について説明する。第３の実施形態では、通信が切断したときに、タイムアウト処理を発生させることにより印刷ジョブを終了させる。すなわち、通信が切断するとタイムアウト処理を開始して、通信の切断から所定のタイムアウト時間の経過を待ち、タイムアウト時間内に再接続されて受信したデータがなかったときに、切断前に受信したデータで印刷ジョブを終了させる。なお、第３の実施形態では、ケーブル１３の接続の切断が検出されたときには、プリンタにおける通常の処理により発生するタイムアウト処理よりタイムアウト時間を短く設定している。
【００７６】
第３の実施形態によれば、第１の実施形態における（２）または（３）の効果に加えて、タイムアウト処理のタイムアウト時間を短縮しているので、処理待ち時間が短くなり、効率良く処理することができる。
【００７７】
以上、本発明の第１ないし第３の実施形態について説明した。本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施することもできる。以下、変形例を挙げて説明する。
【００７８】
（変形例１）第１ないし第３の実施形態では、ＵＳＢケーブルを介して接続されたホストコンピュータ２とプリンタ１が通信する場合について説明した。接続方式としては、これに限られることはない。例えば、パラレルケーブル、ＩＥＥＥ１３９４などによる有線通信であってもよいし、無線通信により接続されていてもよい。
【００７９】
（変形例２）本発明は、レーザプリンタ、インクジェットプリンタ、熱昇華型プリンタなどのプリンタの他、複写機、ファックスなどの様々な機器に適用することができる。
【図面の簡単な説明】
【００８０】
【図１】印刷ジョブデータのデータ構造を示した図。
【図２】接続が切断した時に受信したデータを示した図。（ａ）は切断時の受信データ、（ｂ）は切断後に再接続したときの受信データ、（ｃ）は切断後にプリンタが認識する受信データを示した図。
【図３】第１の実施形態のプリンタのハードウェア構成を示した図。
【図４】入力処理の流れを示したフローチャート。
【図５】入力バッファの記憶領域を示した模式図。（ａ）は、印刷ジョブデータの受信開始時、（ｂ）は、受信データを受け取ったとき、（ｃ）は、１つの印刷ジョブデータを全て受信したときの記憶領域を示した図。
【図６】入力バッファの記憶領域を示した模式図。（ａ）は、接続が切断したとき、（ｂ）は再接続後にデータを受け取ったときの記憶領域を示した図。
【図７】印刷処理の流れを示したフローチャート。
【図８】入力バッファの記憶領域を示した模式図。（ａ）は、受信データの一部を読み出したとき、（ｂ）は、切断前の受信データを全て読み出したときの記憶領域を示した図。
【図９】入力バッファの記憶領域を示した模式図。（ａ）は、再接続後の受信データを読み出しを開始するとき、（ｂ）は、記憶領域の終端までの受信データを読み出したとき、（ｃ）は、再接続後の全受信データを読み出したときの記憶領域を示した図。
【図１０】印刷結果の一例を示した図。（ａ）は、接続が切断しなかったときの印刷物、（ｂ）は、接続が切断したときの印刷物の一例を示した図。
【図１１】第２の実施形態に係る処理の流れを示したフローチャート。
【図１２】入力バッファの記憶領域を示した模式図。（ａ）は、データを受信したとき、（ｂ）は、受信データを全て読み出したときの記憶領域を示した図。
【符号の説明】
【００８１】
１…印刷装置としてのプリンタ、２…ホスト装置としてのホストコンピュータ、１０…印刷ジョブ制御部としてのコントローラ、１１…印刷エンジン、１２…操作パネル、２０…コンピュータとしてのＣＰＵ、２１…ＲＯＭ、２２…ＲＡＭ、２３…検出部としてのホストインターフェイス、２４…エンジンインターフェイス、２５…パネルインターフェイス、ＩＮ−ＢＵＦ…記憶部としての入力バッファ、ＰＣ…切断ポインタ、ＰＲ…リードポインタ、ＰＷ…ライトポインタ。
【図１】
2007050640.tif 000003
【図２】
2007050640.tif 000004
【図３】
2007050640.tif 000005
【図４】
2007050640.tif 000006
【図５】
2007050640.tif 000007
【図６】
2007050640.tif 000008
【図７】
2007050640.tif 000009
【図８】
2007050640.tif 000010
【図９】
2007050640.tif 000011
【図１０】
2007050640.tif 000012
【図１１】
2007050640.tif 000013
【図１２】
2007050640.tif 000014