(57)【特許請求の範囲】
【請求項１】
印刷データを取得する印刷データ取得部と、
前記印刷データ取得部が取得した印刷データを記憶し、実行済みの印刷データを削除するバッファと、
連続用紙に印刷を行う印刷処理部であって、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理部と、
前記印刷処理部が行った前回の印刷が正常終了したか異常終了したかを判定する判定部と、
前記前回の印刷が異常終了したと前記判定部が判定した場合、前記印刷処理部に、前記印刷データ取得部が取得するリカバリデータであって、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行させることで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせた後、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を行わせ、前記前回の印刷が正常終了したと前記判定部が判定した場合、前記印刷データ取得部が取得したリカバリデータを削除して、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を前記印刷処理部に行わせる異常終了対応部と、
を備える印刷装置。
【請求項２】
前記判定部は、前記印刷データ取得部が所定の印刷データを取得すると、前記前回の印刷が正常終了したか異常終了したかを判定する、請求項１に記載の印刷装置。
【請求項３】
前記判定部は、前記印刷データ取得部が、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを取得すると、前記前回の印刷が正常終了したか異常終了したかを判定する、
請求項２に記載の印刷装置。
【請求項４】
前記判定部は、前記印刷データ取得部が最後に印刷データを取得してから所定時間以上経過すると、前記前回の印刷が正常終了したか異常終了したかを判定する、請求項１に記載の印刷装置。
【請求項５】
前記異常終了対応部は、前記前回の印刷が異常終了したと前記判定部が判定した場合、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを生成して前記印刷処理部に実行させる、
請求項４に記載の印刷装置。
【請求項６】
前記判定部は、前記前回の印刷が正常終了したか異常終了したかを、前記バッファに前回の印刷の印刷データが残存しているか否か、及び、前記印刷処理部による用紙送り量に基づいて、判定する、請求項１から５のいずれか１項に記載の印刷装置。
【請求項７】
前記印刷装置の状態を示す状態情報を記憶する状態情報記憶部を備え、
前記判定部は、前記前回の印刷が正常終了したか異常終了したかを、前記状態情報に基づいて判定する、請求項１から５のいずれか１項に記載の印刷装置。
【請求項８】
印刷要求装置と、印刷装置とを備え、
前記印刷要求装置は、
印刷データを生成する印刷データ生成部と、
印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを前記印刷装置へ送信した後、前記印刷データ生成部が生成した印刷データを前記印刷装置へ送信する、印刷データ送信部と、
を備え、
前記印刷装置は、
前記印刷データ送信部が送信したデータを取得する印刷データ取得部と、
前記印刷データ取得部が取得した印刷データを記憶し、実行済みの印刷データを削除するバッファと、
連続用紙に印刷を行う印刷処理部であって、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理部と、
前記印刷処理部が行った前回の印刷が正常終了したか異常終了したかを判定する判定部と、
前記前回の印刷が異常終了したと前記判定部が判定した場合、前記印刷処理部に、前記印刷データ取得部が取得するリカバリデータであって、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行させることで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせた後、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を行わせ、前記前回の印刷が正常終了したと前記判定部が判定した場合、前記印刷データ取得部が取得したリカバリデータを削除して、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を前記印刷処理部に行わせる異常終了対応部と、
を備える印刷システム。
【請求項９】
印刷データを記憶し実行済みの印刷データを削除するバッファを備えて、連続用紙に印刷を行う印刷装置が、印刷データを取得する印刷データ取得ステップと、
前記印刷装置が、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理ステップと、
前記印刷装置が、前記印刷処理ステップで行った前回の印刷が正常終了したか異常終了したかを判定する判定ステップと、
前記前回の印刷が異常終了したと前記判定ステップで判定した場合、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行することで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行し、用紙先頭位置合わせ処理を行った後、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行い、前記前回の印刷が正常終了したと前記判定ステップで判定した場合、前記リカバリデータを削除して、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行う異常終了対応ステップと、
を含む印刷方法。
【請求項１０】
印刷要求装置が、印刷データを生成する印刷データ生成ステップと、
前記印刷要求装置が、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを印刷装置へ送信した後、前記印刷データ生成ステップで生成した印刷データを前記印刷装置へ送信する、印刷データ送信ステップと、
前記印刷内容データを記憶するバッファを備えて連続用紙に印刷を行う印刷装置が、前記印刷データ送信ステップで送信したデータを取得する印刷データ取得ステップと、
前記印刷装置が、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理ステップと、
前記印刷装置が、前記印刷処理ステップで行った前回の印刷が正常終了したか異常終了したかを判定する判定ステップと、
前記前回の印刷が異常終了したと前記判定ステップで判定した場合、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行することで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行し、用紙先頭位置合わせ処理を行った後、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行い、前記前回の印刷が正常終了したと前記判定ステップで判定した場合、前記リカバリデータを削除して、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行う異常終了対応ステップと、
を含む印刷方法。
【請求項１１】
印刷データを記憶し実行済みの印刷データを削除するバッファを備えて、連続用紙に印刷を行う印刷装置を制御するコンピュータに、
印刷データを取得する印刷データ取得ステップと、
前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理ステップと、
前記印刷処理ステップで行った前回の印刷が正常終了したか異常終了したかを判定する判定ステップと、
前記前回の印刷が異常終了したと前記判定ステップで判定した場合、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行することで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行し、用紙先頭位置合わせ処理を行った後、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行い、前記前回の印刷が正常終了したと前記判定ステップで判定した場合、前記リカバリデータを削除して、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行う異常終了対応部と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置、印刷システム、印刷方法及びプログラムに関する。
【背景技術】
【０００２】
プリンタの印刷中に異常が発生した場合の対策について幾つかの技術が提案されている。
例えば、特許文献１に記載の印刷システムでは、ホストＰＣは、ラスターデータとページ記述言語とを含む印刷データを生成してプリンタ（シリアルプリンタ）に送信する。ここでいうページ記述言語とは、ページを構成する文字、グラフィックス等をオブジェクト単位で表現した高級言語である。そして、プリンタは、ラスターデータを用いて印刷を行う。また、ジャムが発生した場合、プリンタは、ページ記述言語データに基づいてラスターデータを生成し、当該ラスターデータを用いて、ジャムが発生したページの先頭から印刷を行う。
特許文献１では、これにより、ジャムが発生したページの再印刷をプリンタ単体で行うことができる、とされている。
【０００３】
また、特許文献２に記載の印刷装置では、受信バッファに蓄積された印刷データを制御手段が印刷機構に送信し、印刷機構は、印刷データを順次受信しながら印刷を実行する。また、メモリ手段は、手段が印刷機構に送信する印刷データを並列的に順次受信して記憶する。また、メモリ手段が一杯になったときに１ページ分の印刷データが格納されていない場合、表示手段は、メモリ手段が有効に機能する状態を示すコピー準備モードオンの表示をオフにする。
特許文献２では、これにより、印刷完了した印刷データを再度利用して印刷を実行でき、さらにバックアップメモリが有効に機能しない場合には、その旨をプリンタの操作者に知らせることができる、とされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２８４８１０号公報
【特許文献２】特許第３７７７６９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
行単位で印刷を行うラインプリンタへの印刷データの送信が途中で異常終了した場合、当該ラインプリンタのバッファ内に印刷されないデータが残ってしまい、新たな印刷を正しく行えなくなる。
具体的には、ラインプリンタは改行コードを印刷開始コードとして検出して、改行コードまでの印刷データを１行分のデータとして印刷する。これに対し、ラインプリンタへの印刷データの送信が途中で止まってしまうと、印刷内容を示すデータ（例えば文字コード）がバッファに格納されるが、後続するはずの改行コードは格納されない場合がある。この場合、ラインプリンタは印刷開始コードである改行コードを検出しないので印刷を行わず、印刷内容を示すデータが印刷されないままバッファに残ってしまう。
例えば、ユーザが、ラインプリンタの電源を一旦オフした後にオンすることで、バッファ内に残っているデータをクリアする場合、ユーザは、ラインプリンタに近づいて電源を操作する必要があり、ユーザにとって負担となる。
【０００６】
一方、特許文献１、２に記載の技術は、いずれも印刷に失敗したページを再印刷するための技術であり、ラインプリンタのバッファに残ったデータをクリアする処理にそのまま適用することはできない。
また、特許文献１に記載の発明では、プリンタが、ページ記述言語を記憶するためのメモリ領域、及び、ページ記述言語に基づいてラスターデータを生成する手段を備える必要がある。また、特許文献２に記載の発明では、印刷装置が、印刷データの印刷機構への送信と並行して当該印刷データを受信して記憶するメモリ手段と、メモリ手段が一杯になったときに１ページ分の印刷データが格納されているか否かを判定する手段とを備える必要がある。従って、仮に、特許文献１、２のいずれかに記載の発明を、ラインプリンタのバッファに残ったデータをクリアする処理にできた場合でも、印刷装置の構造が複雑になる。
より簡単な構成で、ラインプリンタのバッファに残ったデータをクリアできることが望まれる。
【０００７】
本発明は、上述の課題を解決することのできる印刷装置、印刷システム、印刷方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明の第１の態様によれば、印刷装置は、印刷データを取得する印刷データ取得部と、前記印刷データ取得部が取得した印刷データを記憶し、実行済みの印刷データを削除するバッファと、連続用紙に印刷を行う印刷処理部であって、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理部と、前記印刷処理部が行った前回の印刷が正常終了したか異常終了したかを判定する判定部と、前記前回の印刷が異常終了したと前記判定部が判定した場合、前記印刷処理部に、前記印刷データ取得部が取得するリカバリデータであって、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行させることで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせた後、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を行わせ、前記前回の印刷が正常終了したと前記判定部が判定した場合、前記印刷データ取得部が取得したリカバリデータを削除して、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を前記印刷処理部に行わせる異常終了対応部と、を備える。
【０００９】
本発明の第２の態様によれば、印刷システムは、印刷要求装置と、印刷装置とを備え、前記印刷要求装置は、印刷データを生成する印刷データ生成部と、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを前記印刷装置へ送信した後、前記印刷データ生成部が生成した印刷データを前記印刷装置へ送信する、印刷データ送信部と、を備え、前記印刷装置は、前記印刷データ送信部が送信したデータを取得する印刷データ取得部と、前記印刷データ取得部が取得した印刷データを記憶し、実行済みの印刷データを削除するバッファと、連続用紙に印刷を行う印刷処理部であって、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理部と、前記印刷処理部が行った前回の印刷が正常終了したか異常終了したかを判定する判定部と、前記前回の印刷が異常終了したと前記判定部が判定した場合、前記印刷処理部に、前記印刷データ取得部が取得するリカバリデータであって、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行させることで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせた後、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を行わせ、前記前回の印刷が正常終了したと前記判定部が判定した場合、前記印刷データ取得部が取得したリカバリデータを削除して、前記印刷データ取得部が取得する今回の印刷の印刷データが示す処理を前記印刷処理部に行わせる異常終了対応部と、を備える。
【００１１】
本発明の第４の態様によれば、印刷方法は、印刷データを記憶し実行済みの印刷データを削除するバッファを備えて、連続用紙に印刷を行う印刷装置が、印刷データを取得する印刷データ取得ステップと、前記印刷装置が、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理ステップと、前記印刷装置が、前記印刷処理ステップで行った前回の印刷が正常終了したか異常終了したかを判定する判定ステップと、前記前回の印刷が異常終了したと前記判定ステップで判定した場合、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行することで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行し、用紙先頭位置合わせ処理を行った後、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行い、前記前回の印刷が正常終了したと前記判定ステップで判定した場合、前記リカバリデータを削除して、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行う異常終了対応ステップと、を含む。
【００１２】
本発明の第５の態様によれば、印刷方法は、印刷要求装置が、印刷データを生成する印刷データ生成ステップと、前記印刷要求装置が、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを印刷装置へ送信した後、前記印刷データ生成ステップで生成した印刷データを前記印刷装置へ送信する、印刷データ送信ステップと、前記印刷内容データを記憶するバッファを備えて連続用紙に印刷を行う印刷装置が、前記印刷データ送信ステップで送信したデータを取得する印刷データ取得ステップと、前記印刷装置が、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理ステップと、前記印刷装置が、前記印刷処理ステップで行った前回の印刷が正常終了したか異常終了したかを判定する判定ステップと、前記前回の印刷が異常終了したと前記判定ステップで判定した場合、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行することで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行し、用紙先頭位置合わせ処理を行った後、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行い、前記前回の印刷が正常終了したと前記判定ステップで判定した場合、前記リカバリデータを削除して、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行う異常終了対応ステップと、を含む。
【００１４】
本発明の第７の態様によれば、プログラムは、印刷データを記憶し実行済みの印刷データを削除するバッファを備えて、連続用紙に印刷を行う印刷装置を制御するコンピュータに、印刷データを取得する印刷データ取得ステップと、前記バッファが記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と前記行印刷処理によって用紙送りされた用紙送り量とに基づいて前記連続用紙のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理、を行う印刷処理ステップと、前記印刷処理ステップで行った前回の印刷が正常終了したか異常終了したかを判定する判定ステップと、前記前回の印刷が異常終了したと前記判定ステップで判定した場合、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを実行することで、前記バッファに残存する前回の印刷の印刷データが示す処理を全て実行し、用紙先頭位置合わせ処理を行った後、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行い、前記前回の印刷が正常終了したと前記判定ステップで判定した場合、前記リカバリデータを削除して、前記印刷データ取得ステップで取得する今回の印刷の印刷データが示す処理を行う異常終了対応部と、を実行させるためのプログラムである。
【発明の効果】
【００１６】
この発明によれば、比較的簡単な構成で、ラインプリンタのバッファに残ったデータをクリアすることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態における印刷システムの機能構成を示す概略ブロック図である。
【図２】同実施形態における用紙先頭位置合わせ実行後の状態の例を示す説明図である。
【図３】同実施形態におけるコンピュータ１００が送信するリカバリデータの構成を示す説明図である。
【図４】通信障害発生時の印刷例を示す説明図である。
【図５】プリンタ２００がリカバリデータの示す処理を行わない場合の印刷例を示す説明図である。
【図６】プリンタ２００の電源を切断し再接続した後、改ページを行った状態の例を示す説明図である。
【図７】同実施形態において、前回の印刷が正常終了している状態からプリンタ２００が印刷を行う場合の、印刷システム１の動作例を示す説明図である。
【図８】同実施形態における印刷ハンマ２４０が１行分の印刷を行った状態の例を示す説明図である。
【図９】同実施形態における用紙送り部２５０が用紙先頭位置合わせを行った状態の例を示す説明図である。
【図１０】同実施形態において、前回の印刷が異常終了している状態からプリンタ２００が印刷を行う場合の、印刷システム１の動作例を示す説明図である。
【図１１】同実施形態における印刷ハンマ２４０が１行分の印刷を行った状態の例を示す説明図である。
【図１２】同実施形態における用紙送り部２５０が用紙先頭位置合わせを行った状態の例を示す説明図である。
【図１３】同実施形態において、アプリケーション実行部１１０からの送信要求に基づく印刷データが示す１行分の印刷を印刷ハンマ２４０が行った状態の例を示す説明図である。
【図１４】同実施形態におけるコンピュータ１００がリカバリデータ及び印刷データを生成して送信する処理手順の例を示すフローチャートである。
【図１５】同実施形態において、判定部２９１が行う処理の手順の例を示すフローチャートである。
【図１６】同実施形態において、印刷処理部２９３が行う処理の手順の例を示すフローチャートである。
【図１７】本実施形態におけるプリンタ２００の変形例であるプリンタ２０１の機能構成を示す概略ブロック図である。
【図１８】同変形例において、状態情報が示すプリンタ２０１の状態の遷移例を示す説明図である。
【図１９】本発明に係る印刷装置の最小構成を示す概略ブロック図である。
【図２０】本発明に係る印刷システムの最小構成を示す概略ブロック図である。
【図２１】本発明に係る印刷要求装置の最小構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図１は、本発明の一実施形態における印刷システムの機能構成を示す概略ブロック図である。同図に示すように、印刷システム１は、コンピュータ１００と、プリンタ２００とを備える。コンピュータ１００は、アプリケーション実行部１１０と、プリンタドライバ１２０と、印刷データ送信部１３０とを備える。プリンタドライバ１２０は、リカバリデータ生成部１２１を備える。プリンタ２００は、印刷データ受信部２１０と、受信バッファ２２０と、印刷バッファ２３０と、印刷ハンマ２４０と、用紙送り部２５０と、制御部２９０とを備える。用紙送り部２５０は、左トラクタ２５１と、右トラクタ２５２とを備える。制御部２９０は、判定部２９１と、異常終了対応部２９２と、印刷処理部２９３とを備える。
【００１９】
また、コンピュータ１００とプリンタ２００とは、通信ネットワーク９１０を介して通信を行う。
なお、印刷システム１が備えるコンピュータ１００の数は、図１に示す１つに限らず複数であってもよい。また、印刷システム１が備えるプリンタ２００の数は、図１に示す１つに限らず複数であってもよい。
【００２０】
プリンタ２００は、印刷装置の例に該当し、コンピュータ１００が送信する印刷データに従って印刷を行う。プリンタ２００は、ラインプリンタであり、連続用紙を用紙送りしながら印刷を行う。ここでいうラインプリンタは、行を単位として印刷を行うプリンタである。以下では、プリンタ２００が１行毎に印刷を行うプリンタである場合を例に説明するが、これに限らず、２行毎、又は３行毎など、複数行毎に印刷を行うプリンタであってもよい。
【００２１】
また、ここでいう印刷データは、プリンタ２００に印刷を指示するデータであり、印刷内容データと制御コードとを含む。
ここでいう印刷内容とは、例えば文字、記号、図形又は模様など、印刷されるものである。また、文字コードなど、印刷内容を示すデータを印刷内容データと称する。
また、ここでいう制御コードとは、例えば改行など、印刷内容の印刷以外の処理をプリンタ２００に指示するデータである。
【００２２】
プリンタ２００が行を単位として印刷を行うので、１印刷ジョブ分の印刷データは、行単位のデータを１行分以上含む。具体的には、印刷内容データの後に改行コードが付されて１行分のデータを構成する。この１行分のデータが１つ以上（必要な行数分）続いた後、改ページコードが付されて１印刷ジョブ分の印刷データを構成する。
【００２３】
改行コードは、１行分の用紙送り量として定められている所定の用紙送りを行い、印刷位置（例えば、印字ヘッドの位置）を行頭にセットするよう指示するコードである。以下では、改行コードとして復帰（キャリッジリターン、Carriage Return；ＣＲ）コード（例えばコード「０Ｄｈ」）を用いる場合を例に説明するが、これに限らず、プリンタ２００が改行コードとして認識可能なコードであればよい。
プリンタ２００が１行毎に印刷を行うので、改行コードは印刷開始コードとしても機能する。すなわち、プリンタ２００は、受信した印刷データを前から順（印刷の早い順）にスキャンし、改行コードを検出すると、検出した改行コードまでの印刷データの印刷を行う。
【００２４】
改ページコード（例えば、コード「０Ｃｈ」）は、印刷位置をページの先頭にセットするよう指示するコードである。ここでいうページは、連続用紙がミシン目で区切られている各領域である。また、ここでいうページの先頭は、ページの先頭行の行頭として定められている所定の位置（ページの左上の所定の位置）である。
改ページコードは、印刷ジョブ終了コードとしても機能する。すなわち、プリンタ２００は、改ページコードを検出すると、印刷位置をページの先頭にセットして印刷ジョブを終了し、次の印刷ジョブの実行に備える。ここでいう印刷ジョブとは、プリンタ２００に対する処理要求の一纏まりである。
【００２５】
ここで、プリンタ２００は、連続用紙のミシン目の位置を検出する機能を有していない。このため、初回の用紙先頭位置合わせはユーザが行う必要がある。具体的には、プリンタ２００の本体に用紙先頭位置合わせ用のマークが記されており、ユーザは、連続用紙のミシン目をマークの位置に合せるように、左トラクタ２５１及び右トラクタ２５２を手動で回転させる。
ここでいう用紙先頭位置合わせは、印刷位置をページ先頭にセットすることであり、具体的には、連続用紙のミシン目の位置を用紙先頭位置合わせ用のマークの位置に合わせることである。
【００２６】
図２は、用紙先頭位置合わせ実行後の状態の例を示す説明図である。
同図では、連続用紙９２０の一部（約２ページ分）と、左トラクタ２５１及び右トラクタ２５２と、用紙先頭位置合わせ用のマークＭ１１とが示されている。また、領域Ａ１１は、印刷ハンマ２４０が印刷を行う位置であり、領域Ａ１２は、連続用紙９２０のページの先頭の例を示す。同図の例では、連続用紙９２０のページの先頭（領域Ａ１２）が、印刷ハンマ２４０が印刷を行う位置（領域Ａ１１）に位置する状態が、印刷位置をページの先頭にセットした状態である。
また、図２に示すように、連続用紙９２０には、線Ｌ１１で示されるミシン目が付けられており、ミシン目で区切られる領域の各々が１ページに該当する。
【００２７】
また、連続用紙９２０の左右それぞれに、トラクタ（左トラクタ２５１、右トラクタ２５２の各々）が用紙送りを行うための穴Ｈ１１が等間隔で図２の上下に連続して空けられている。左トラクタ２５１及び右トラクタ２５２の各々には突起が設けられており、ユーザは、この突起に連続用紙９２０の穴Ｈ１１を通して連続用紙９２０をセットする。
左トラクタ２５１及び右トラクタ２５２が回転することで、用紙送りを行う。手動での用紙先頭位置合わせ時は、ユーザが左トラクタ２５１及び右トラクタ２５２を回転させることで、連続用紙９２０を矢印Ｂ１１の方向（図２の上下）に動かし、ミシン目（線Ｌ１１）の位置をマークＭ１１の位置に合せる。
例えば、ユーザは、プリンタ２００の電源が接続（オン）されて起動した後、最初の印刷を行う前に、用紙先頭位置合わせを行う。
【００２８】
一方、プリンタ２００は、オン状態（電源を接続された状態）では、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と、左トラクタ２５１及び右トラクタ２５２による用紙送り量とを記憶している。従って、プリンタ２００は、ユーザが用紙先頭位置合わせを行った状態から動作を開始した場合、用紙先頭位置合わせのために必要な用紙送り量（すなわち、ミシン目のいずれかの位置をマークＭ１１の位置に合せるために連続用紙９２０を動かすべき量）を算出できる。
そこで、プリンタ２００は、改ページコードを検出すると、用紙先頭位置合わせのために必要な用紙送り量を算出して用紙送りを行うことで、用紙先頭位置合わせを行う。
なお、以下では、連続用紙９２０のミシン目のいずれかの位置がマークＭ１１の位置に合っている状態を、連続用紙９２０が先頭位置にあると称する。
【００２９】
印刷データ受信部２１０は、印刷データ取得部の例に該当し、コンピュータ１００が送信する印刷データを受信する。
受信バッファ２２０は、印刷データ受信部２１０が受信した印刷データを記憶する。そして、受信バッファ２２０は、当該印刷データを印刷順（例えば、ファーストイン・ファーストアウト（First In First Out；ＦＩＦＯ））に印刷バッファ２３０へ送信する。受信バッファ２２０は、コンピュータ１００が印刷データを送信する速度と、プリンタ２００が印刷を行う速度との差を吸収するために設けられている。
【００３０】
印刷バッファ２３０は、受信バッファ２２０から印刷データを印刷順に取得して記憶する。印刷バッファ２３０は、プリンタ２００が印刷を行う際の印刷データの参照先として設けられている。印刷バッファ２３０は、プリンタ２００が印刷を行った印刷データを印刷バッファ２３０から削除（破棄）し、受信バッファ２２０から次の印刷データを取得する。
【００３１】
受信バッファ２２０と印刷バッファ２３０との組み合わせはバッファの例に該当し、印刷データ受信部２１０が受信した印刷データを記憶し、実行済みの印刷データを削除する。
なお、プリンタ２００が備えるバッファの構成は、受信バッファ２２０及び印刷バッファ２３０のような２段の構成に限らない。例えば、プリンタ２００が、受信バッファ２２０の機能と印刷バッファ２３０の機能とを兼ねる１つのバッファを備えるようにしてもよい。
【００３２】
印刷ハンマ２４０は、例えばインクリボンを連続用紙９２０に押し付けてインクを付着させるなど、連続用紙９２０への印刷内容の書込を行う。
用紙送り部２５０は、連続用紙９２０の用紙送りを行う。具体的には、図２を参照して説明したように、左トラクタ２５１及び右トラクタ２５２が回転することで、回転量に応じた用紙送り量で連続用紙９２０の用紙送りを行う。
【００３３】
制御部２９０は、プリンタ２００の各部を制御して各種処理を実行する。制御部２９０は、例えばプリンタ２００が備えるＣＰＵ（Central Processing Unit、中央処理装置）が、プリンタ２００が備える記憶デバイスからプログラムを読み出して実行することで実現される。あるいは、制御部２９０が専用のハードウェアにて構成されるなど、ＣＰＵを用いる構成以外の構成にて実現されていてもよい。
【００３４】
印刷処理部２９３は、行印刷処理及び用紙先頭位置合わせ処理を行う。
ここでいう行印刷処理とは、印刷バッファ２３０が記憶している印刷データが示す印刷内容を行毎に印刷して改行する処理である。具体的には、印刷処理部２９３は、印刷バッファ２３０が記憶している印刷データを印刷順にスキャンする。スキャンにて改行コードを検出した場合、印刷処理部２９３は、当該改行コードまでの印刷データが示す処理を実行することで、１行分の印刷を実行する。
【００３５】
また、ここでいう用紙先頭位置合わせ処理とは、上述した用紙先頭位置合わせを行う処理である。上記のスキャンで改ページコードを検出した場合、印刷処理部２９３は用紙先頭位置合わせ処理を行う。
具体的には、印刷処理部２９３は、１ページ分の用紙送り量として設定されている所定のページ用紙送り量を予め記憶しておく。また、印刷処理部２９３は、行印刷処理で用紙送りした用紙送り量を記憶する。例えば、印刷処理部２９３は、１ページ分の用紙送り量を左トラクタ２５１の回転角度にて記憶する。なお、左トラクタ２５１と右トラクタ２５２とは同じ回転速度で回転する。また、印刷処理部２９３は、行印刷処理で用紙送りした用紙送り量を、左トラクタ２５１の回転角度にて、０度から１ページ分の用紙送り量までの範囲で記憶する。すなわち、行印刷処理で用紙送りした用紙送り量が１ページ分の用紙送り量に達した場合、印刷処理部２９３は、左トラクタ２５１の回転角度として記憶している角度を０にリセットする。
そして、印刷処理部２９３は、改ページコードを検出した場合、１ページ分の用紙送り量から、行印刷処理で用紙送りした用紙送り量を減算して、用紙先頭位置合わせに必要な用紙送り量を算出する。そして、印刷処理部２９３は、算出した用紙送り量の用紙送りを用紙送り部２５０に行わせる。
【００３６】
判定部２９１は、印刷処理部２９３による印刷が正常終了したか異常終了したかを判定する。ここでいう正常終了は、受信バッファ２２０、印刷バッファ２３０のいずれにも印刷データが残っておらす、かつ、連続用紙９２０が先頭位置にある状態で印刷を終了することである。
ここで、プリンタ２００への印刷データの規格では、上述したように、印刷内容データの後に改行コードが付されて１行分のデータを構成し、１行分のデータが１つ以上続いた後、改ページコードが付されて１印刷ジョブ分の印刷データを構成するよう規定されている。従って、プリンタ２００が印刷を正常終了した場合、印刷データ受信部２１０が受信した印刷データは、改ページコードで終了するはずである。一方、印刷データ受信部２１０が受信した印刷データが、改ページコード以外のデータで終了している場合は、プリンタ２００が印刷を異常終了したことになる。
【００３７】
判定部２９１は、受信バッファ２２０及び印刷バッファ２３０が記憶している印刷内容データの有無、及び、用紙送り部２５０による用紙送り量に基づいて異常終了の有無（印刷処理部２９３による印刷が正常終了したか異常終了したか）を判定する。具体的には、判定部２９１は、受信バッファ２２０及び印刷バッファ２３０のいずれも印刷データを記憶しておらず、かつ、用紙送り部２５０が行った用紙送りにて連続用紙９２０が先頭位置にあると判定した場合、印刷処理部２９３による印刷が正常終了したと判定する。
【００３８】
一方、判定部２９１は、
（条件１）受信バッファ２２０が印刷データを記憶している、
（条件２）印刷バッファ２３０が印刷データを記憶している、
（条件３）連続用紙９２０が先頭位置以外の位置にある（すなわち、連続用紙９２０のいずれのミシン目の位置も図２のマークＭ１１の位置と合っていない）、
の３つの条件のうちうち１つ以上が成立すると判定した場合、印刷処理部２９３による印刷が異常終了したと判定する。
【００３９】
判定部２９１は、印刷データ受信部２１０が所定の印刷データを受信した場合、異常終了の有無を判定する。具体的には、コンピュータ１００は、新たな印刷データの送信前にリカバリデータを送信し、判定部２９１は、印刷データ受信部２１０がリカバリデータを受信した場合に、前回の印刷が正常終了したか異常終了したかを判定する。ここでいうリカバリデータは、印刷するものが無いことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データである。
【００４０】
以下では、印刷するものが無いことを示す印刷内容データがヌル（ＮＵＬＬ）データ（例えばコード「００ｈ」（コードの表記の「ｈ」は１６進数を示す））である場合を例に説明する。すなわち、リカバリデータは、ヌルデータと、改行コードと、改ページコードとで構成されるデータである。
【００４１】
図３は、コンピュータ１００が送信するリカバリデータの構成を示す説明図である。同図に示すように、リカバリデータは、ヌルデータと、改行コードと、改ページコードとを含む。
ここでいうヌルデータは、ヌルストリング（文字長が０の文字列）を示すデータである。従って、ヌルデータは印刷するものが無いことを示す印刷内容データに該当する。但し、リカバリデータに含が、印刷するものが無いことを示す印刷内容データとして、ヌルデータ以外のダミーのデータ（プリンタ２００に無視されるデータ）を含んでいてもよい。
【００４２】
リカバリデータに含まれる改行コードは、１行分の印刷及び改行を指示し、改ページコードは、用紙先頭位置合わせを指示する。従って、プリンタ２００は、リカバリデータを実行することで、受信バッファ２２０及び印刷バッファ２３０をクリア（印刷データを記憶していない状態）にし、用紙先頭位置合わせを行う。従って、プリンタ２００が前回の印刷ジョブを異常終了した場合、リカバリデータを実行してから新たな印刷ジョブを実行することで、残存データの印刷、印刷位置のずれのいずれも回避して、新たな印刷を行うことができる。
【００４３】
具体的には、プリンタ２００が前回の印刷を異常終了した場合、印刷データ受信部２１０及び印刷バッファ２３０のいずれか一方または両方に印刷内容データが残っている可能性、及び、連続用紙９２０が先頭位置にない（連続用紙９２０のミシン目の位置が図２のマークＭの位置と合っていない）可能性がある。そこで、プリンタ２００がリカバリデータを実行することで、残っている印刷内容データを印刷して受信バッファ２２０及び印刷バッファ２３０から削除し、連続用紙９２０の位置を先頭位置に合わせる（連続用紙９２０のミシン目の位置が図２のマークＭの位置と合うようにする）ことができる。これにより、プリンタ２００は、連続用紙９２０のページの先頭から新たな印刷を行うことができ、また、新たな印刷の際に、前回の印刷内容データを印刷してしまうことを回避できる。
【００４４】
異常終了対応部２９２は、印刷処理部２９３による印刷が異常終了したと判定部２９１が判定した場合、プリンタ２００の状態を印刷が正常終了した場合の状態にする。具体的には、異常終了対応部２９２は、印刷処理部２９３による印刷が異常終了したと判定部２９１が判定した場合、印刷データ受信部２１０が受信したリカバリデータが示す処理を印刷処理部２９３に実行させる。これにより異常終了対応部２９２は、印刷処理部２９３に、バッファ（受信バッファ２２０及び印刷バッファ２３０）が記憶している印刷データの示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせる。その後、異常終了対応部２９２は、印刷処理部２９３に、印刷データ受信部２１０が受信する印刷データ（新たな印刷ジョブの印刷データ）の示す処理を行わせる。
印刷処理部２９３が、リカバリデータを実行してから新たな印刷ジョブを実行することで、上述したように残存データの印刷、印刷位置のずれのいずれも回避して、新たな印刷を行うことができる。
【００４５】
一方、印刷処理部２９３による印刷が正常終了したと判定部２９１が判定した場合、異常終了対応部２９２は、印刷データ受信部２１０が受信したリカバリデータを削除（破棄）し、当該リカバリデータ受信の後に印刷データ受信部２１０が受信する印刷データ（新たな印刷ジョブの印刷データ）の示す処理を印刷処理部２９３に行わせる。
印刷処理部２９３による印刷が正常終了した場合、受信バッファ２２０及び印刷バッファ２３０はクリアされ（すなわち、印刷データを記憶しておらず）、また、用紙先頭位置合わせが行われた状態になる。プリンタ２００は、この状態から、残存データの印刷、印刷位置のずれのいずれも回避して、新たな印刷を行うことができる。
【００４６】
ここで、印刷処理部２９３による印刷が正常終了した場合に印刷処理部２９３がリカバリデータの示す処理を実行すると、連続用紙９２０を１ページ分無駄に用紙送りしてしまうことになる。そこで、異常終了対応部２９２がリカバリデータを削除する。これにより、無駄な用紙送りを抑制することができる。
【００４７】
コンピュータ１００は、印刷要求装置の例に該当し、印刷データを生成してプリンタ２００に送信する。コンピュータ１００は、例えばパソコン（Personal Computer；ＰＣ）であってもよいが、これに限らない。コンピュータ１００は、印刷データを生成し出力する装置であればよく、例えばスマートフォンまたは大型計算機であってもよい。
【００４８】
アプリケーション実行部１１０は、アプリケーションプログラムを実行する。以下、アプリケーションプログラムを単にアプリケーションと称する。
アプリケーション実行部１１０が実行するアプリケーションには、例えば文書作成ソフトウェアなど、印刷機能を有するアプリケーションが含まれる。アプリケーションの印刷機能が実行されると、アプリケーション実行部１１０は、当該アプリケーションにて規定されたフォーマットで印刷要求をプリンタドライバ１２０に出力する。アプリケーションの印刷機能の実行は、例えば、印刷を要求するユーザ操作にて行われる。
アプリケーション実行部１１０は、コンピュータ１００が備えるＣＰＵ（Central Processing Unit、中央処理装置）が、コンピュータ１００が備える記憶媒体からプログラム（オペレーティングシステム（Operating System；ＯＳ）等）を読み出して実行することで実現される。
【００４９】
プリンタドライバ１２０は、印刷データ生成部の例に該当し、印刷データを生成する。上述したように、ここでいう印刷データは、プリンタ２００に印刷を指示するデータであり、印刷内容データと制御コードとを含む。
特に、プリンタドライバ１２０は、アプリケーション実行部１１０が出力する印刷要求を、プリンタ２００が実行可能なフォーマットの印刷データに変換し、印刷データ送信部１３０を介してプリンタ２００へ送信する。
プリンタドライバ１２０は、コンピュータ１００が備えるＣＰＵが、コンピュータ１００が備える記憶媒体からプログラム（プリンタドライバソフトウェア）を読み出して実行することで実現される。
【００５０】
リカバリデータ生成部１２１は、リカバリデータを生成する。
印刷データ送信部１３０は、リカバリデータ生成部１２１が生成したリカバリデータをプリンタ２００へ送信した後、プリンタドライバ１２０が生成した印刷データ（新たな印刷ジョブの印刷データ）をプリンタ２００へ送信する。印刷データ送信部１３０は、例えば、コンピュータ１００が備える通信回路を含んで構成される。
上述したように、プリンタ２００が前回の印刷ジョブを異常終了した場合、印刷データ送信部１３０が送信するリカバリデータを実行してから新たな印刷ジョブを実行することで、プリンタ２００は、残存データの印刷、印刷位置のずれのいずれも回避して、新たな印刷を行うことができる。
【００５１】
通信ネットワーク９１０は、コンピュータ１００とプリンタ２００との通信を仲介する。通信ネットワーク９１０は、例えばローカルエリアネットワーク（Local Area Network；ＬＡＮ）である。
なお、コンピュータ１００とプリンタ２００との通信の態様は、図１に示すネットワーク通信に限らない。例えば、コンピュータ１００とプリンタ２００とがＵＳＢケーブルで接続されるなど、コンピュータ１００とプリンタ２００とが１対１に接続されていてもよい。また、コンピュータ１００とプリンタ２００との通信方式は、有線の通信方式であってもよいし、無線による通信方式であってもよい。
【００５２】
なお、判定部２９１が、印刷データ受信部２１０がリカバリデータを受信したこと以外の事象を契機として異常終了の有無を判定するようにしてもよい。例えば、判定部２９１が、印刷データ受信部２１０が最後に印刷データを取得してから所定時間以上経過した場合に、異常終了の有無を判定するようにしてもよい。印刷データ受信部２１０が最後に印刷データを受信してから所定時間（例えば１分）以上経過した場合、コンピュータ１００は印刷データの送信を終了していると考えられる。なお、ここでいう印刷データの送信終了には、印刷データ送信の正常終了の他、コンピュータ１００の不具合または通信の不具合等による印刷データ送信の異常終了を含む。
【００５３】
この場合、コンピュータ１００に代えて異常終了対応部２９２が、リカバリデータを生成する。具体的には、印刷処理部２９３による印刷が異常終了したと判定部２９１が判定した場合、異常終了対応部２９２は、リカバリデータを生成して印刷処理部２９３に実行させた後、印刷データ受信部２１０が受信する印刷データ（新たな印刷ジョブの印刷データ）が示す処理を印刷処理部２９３に行わせる。一方、印刷処理部２９３による印刷が正常終了したと判定部２９１が判定した場合、異常終了対応部２９２は、リカバリデータの生成は行わず、印刷データ受信部２１０が受信する印刷データ（新たな印刷ジョブの印刷データ）が示す処理を印刷処理部２９３に行わせる。
【００５４】
判定部２９１が、印刷データ受信部２１０が最後に印刷データを受信してから所定時間以上経過した場合に異常の有無を判定することで、その後に印刷データ受信部２１０が受信する新たな印刷ジョブの印刷データに備えることができる。すなわち、プリンタ２００は、連続用紙９２０のページの先頭から新たな印刷を行うことができ、また、新たな印刷の際に、前回の印刷内容データを印刷してしまうことを回避できる。
【００５５】
次に、図４〜図６を参照して、印刷異常終了時に回復処理（例えば、リカバリデータが示す処理）を行う必要性について説明する。
図４は、通信障害発生時の印刷例を示す説明図である。図４〜図６の例では、文字列「ＡＢＣＤ」を２行分印刷する場合に、コンピュータ１００が２行目の「ＡＢ」の印刷データまで送信したところで通信障害が発生した例を示している。
【００５６】
図４では、プリンタ２００は、１行目の「ＡＢＣＤ」の印刷を完了している。一方、２行目については、印刷データ受信部２１０が文字列「ＡＢ」の印刷内容データを受信しているものの、改行コードを受信していない。印刷開始コードでもある改行コードを受信していないため、プリンタ２００は２行目の「ＡＢ」を印刷しておらず、文字列「ＡＢ」の印刷内容データは印刷バッファ２３０に格納されている。
【００５７】
図５は、プリンタ２００がリカバリデータの示す処理を行わない場合の印刷例を示す説明図である。同図では、コンピュータ１００が印刷データを再送した場合の印刷例を示している。
図５の１行目は、図の場合と同じく文字列「ＡＢＣＤ」が印刷されている。
また、２行目には、印刷バッファ２３０に残存していた文字データとコンピュータ１００が再送した印刷データの１行目が結合されて、文字列「ＡＢＡＢＣＤ」が印刷されている。３行目には、コンピュータ１００が再送した印刷データの２行目が示す「ＡＢＣＤ」が印刷されている。
【００５８】
このように、印刷バッファ２３０にデータが残っているために、プリンタ２００は余分な文字列（２行目の先頭の文字列「ＡＢ」）を印刷している。印刷バッファ２３０に残存するデータを削除する方法として、ユーザがプリンタ２００の電源を切断（オフ）して再び接続（オン）する方法が考えられるが、電源の切断により用紙送り量の情報が失われ、用紙先頭位置合わせを正確に行えなくなる可能性がある。
【００５９】
図６は、プリンタ２００の電源を切断し再接続した後、改ページを行った状態の例を示す説明図である。同図の例では、図４に示す状態から、ユーザがプリンタ２００の電源を切断して再び接続し、さらに、プリンタ２００が改ページコードに従って用紙先頭位置合わせを行った例を示している。電源が一旦切断されたことで、プリンタ２００が記憶していた行印刷処理による用紙送り量の情報が失われている。このため、プリンタ２００は、１ページ分として記憶している用紙送り量の用紙送りを行う。
【００６０】
ところが、図４に示す状態では、文字列「ＡＢＣＤ」を印刷した後改行を行っている。このため、図６の状態では、線Ｌ１１に示されるミシン目の位置が、マークＭ１１の位置から１行分ずれている。
このように、プリンタ２００の電源を切断すると、プリンタ２００が用紙先頭位置合わせを正確に行えなくなる可能性がある。
【００６１】
これに対し、プリンタ２００が、リカバリデータに含まれる改行コードの処理を行うことで、受信バッファ２２０及び印刷バッファ２３０をクリアすることができる。また、リカバリデータの実行ではプリンタ２００の電源を切断する必要がなく、プリンタ２００は、行印刷処理による用紙送り量の情報を保持している。このため、プリンタ２００は、リカバリデータに含まれる改ページコードの処理を実行することで、用紙先頭位置合わせを正確に行うことができる。
【００６２】
次に、図７〜図１６を参照して印刷システム１の動作について説明する。
図７は、前回の印刷が正常終了している状態からプリンタ２００が印刷を行う場合の、印刷システム１の動作例を示す説明図である。
同図の処理で、コンピュータ１００のアプリケーション実行部１１０がアプリケーションプログラムを実行して印刷要求が発生し、アプリケーション実行部１１０は、印刷内容データを含む印刷要求をプリンタドライバ１２０に出力して印刷を要求する（ステップＳ１０１）。
【００６３】
アプリケーション実行部１１０からの印刷要求を受けたプリンタドライバ１２０は、リカバリデータと、印刷要求に応じた印刷データとを生成する（ステップＳ１０２）。具体的には、プリンタドライバ１２０のリカバリデータ生成部１２１が、リカバリデータを生成する。また、プリンタドライバ１２０は、アプリケーション実行部１１０からの印刷要求を、プリンタ２００に実行させる印刷データの書式に変換する。そして、プリンタドライバ１２０は、リカバリデータを、印刷データ送信部１３０を介してプリンタ２００へ送信し、次に、アプリケーション実行部１１０からの送信要求に基づく印刷データを、印刷データ送信部１３０を介してプリンタ２００へ送信する。
なお、コンピュータ１００が、リカバリデータとアプリケーション実行部１１０からの送信要求に基づく印刷データとを別々のデータとして送信するようにしてもよいし、１つのデータに纏めて送信するようにしてもよい。
【００６４】
コンピュータ１００からのリカバリデータとアプリケーション実行部１１０からの送信要求に基づく印刷データとを受信したプリンタ２００では、判定部２９１が、印刷処理部２９３による印刷が正常終了していると判定し、異常終了対応部２９２が、当該判定に基づいてリカバリデータを削除する（ステップＳ１０３）。
具体的には、受信バッファ２２０が、リカバリデータとアプリケーション実行部１１０からの送信要求に基づく印刷データとを記憶する。そして、判定部２９１は、受信バッファ２２０が記憶しているデータをスキャンしてリカバリデータを検出したことを契機に、印刷処理部２９３が前回行った印刷が正常終了したか異常終了したかを判定する。図７の例では、印刷処理部２９３が前回行った印刷は正常終了しており、判定部２９１は正常終了と判定する。そして、異常終了対応部２９２は、判定部２９１の判定結果に基づいて、受信バッファ２２０が記憶しているリカバリデータを受信バッファ２２０から削除する。
【００６５】
次に、印刷処理部２９３が印刷データに従って行印刷処理を行い、さらに用紙先頭位置合わせ処理を行って印刷を終了する（ステップＳ１０４）。
具体的には、受信バッファ２２０は、印刷データを印刷順（例えば受信順）に印刷バッファ２３０へ出力し、出力した印刷データを受信バッファ２２０から削除する。印刷バッファ２３０は、受信バッファ２２０からの印刷データを記憶する。そして、印刷処理部２９３は、印刷バッファ２３０が記憶している印刷データを印刷順にスキャンする。
【００６６】
スキャンにて改行コードを検出すると、印刷処理部２９３は、該改行コードまでの印刷データに従って印刷ハンマ２４０を制御して、１行分の印刷を行わせる。印刷ハンマ２４０が１行分の印刷を完了すると、印刷処理部２９３は、用紙送り部２５０を制御して、１行分の用紙送りを行わせる。その際、印刷処理部２９３は、用紙送り量を記憶しておき、また、処理を完了した１行分の印刷データを印刷バッファ２３０から削除する。
なお、印刷データに複数行分のデータが含まれている場合、印刷処理部２９３は、改行コードを検出する毎に上記の処理を繰り返す。
【００６７】
図８は、印刷ハンマ２４０が１行分の印刷を行った状態の例を示す説明図である。同図の例では、印刷ハンマ２４０は、印刷処理部２９３の制御に従って１行分の文字列「ＡＢＣＤ」を印刷している。なお、図８の状態の後、印刷処理部２９３が用紙送り部２５０を制御して１行分の用紙送りを行わせる。これにより、図４に示す状態と同様に、線Ｌ１１にて示されるミシン目の位置がマークＭ１１の位置から１行分送られた状態（図４の上側へ移動した状態）になる。なお、図４では、印刷バッファ２３０に文字列「ＡＢ」の印刷内容データが残っている場合の例について説明したが、図８〜図９の例では、プリンタ２００が印刷すべき文字列は「ＡＢＣＤ」の１行分のみである。図８の状態では、印刷バッファ２３０には印刷内容データは残っていない。
【００６８】
上述したように、印刷データの末尾には改ページコードを付すよう規定されている。行毎の印刷を全て完了した印刷処理部２９３は、印刷データの末尾の改ページコードを検出して用紙先頭位置合わせ処理を行い、印刷を終了する。具体的には、印刷処理部２９３は、印刷バッファ２３０が記憶している印刷データをスキャンして改ページコードを検出すると、用紙送り部２５０を制御して用紙先頭位置合わせを行わせる。
【００６９】
図９は、用紙送り部２５０が用紙先頭位置合わせを行った状態の例を示す説明図である。図９の例では、線Ｌ１１にて示されるミシン目の位置が、マークＭ１１の位置に合っている。印刷処理部２９３は、行印刷処理にて用紙送りを行った用紙送り量を記憶しておき、当該用紙送り量に基づいて用紙先頭位置合わせのための用紙送り量を算出する。これにより、図９の例のように、ミシン目の位置をマークＭ１１の位置に合わせることができる。
用紙送り部２５０が用紙先頭位置合わせを完了すると、印刷処理部２９３は、印刷バッファ２３０が記憶している改ページコードを印刷バッファ２３０から削除する。これにより、印刷バッファ２３０は空（印刷データを記憶していない状態）になり、プリンタ２００は、印刷（コンピュータ１００からの印刷コードに基づく印刷ジョブ）を終了する。
【００７０】
図１０は、前回の印刷が異常終了している状態からプリンタ２００が印刷を行う場合の、印刷システム１の動作例を示す説明図である。
同図のステップＳ２０１及びＳ２０２は、図７のステップＳ１０１及びＳ１０２と同様である。
【００７１】
一方、コンピュータ１００からのリカバリデータとアプリケーション実行部１１０からの送信要求に基づく印刷データとを受信したプリンタ２００では、判定部２９１が、印刷処理部２９３による印刷が異常終了していると判定し、異常終了対応部２９２は、リカバリデータの削除を行わない（ステップＳ２０３）。
具体的には、受信バッファ２２０が、リカバリデータとアプリケーション実行部１１０からの送信要求に基づく印刷データとを記憶する。そして、判定部２９１は、受信バッファ２２０が記憶しているデータをスキャンしてリカバリデータを検出したことを契機に、印刷処理部２９３が前回行った印刷が正常終了したか異常終了したかを判定する。
【００７２】
図１０の例では、印刷処理部２９３が前回行った印刷は異常終了しており、判定部２９１は異常終了と判定する。この場合、異常終了対応部２９２は、判定部２９１の判定結果に基づいて、受信バッファ２２０が記憶しているリカバリデータの削除を行わない。異常終了対応部２９２は、リカバリデータの削除を行わないことで、リカバリデータの示す処理をステップＳ２０４で印刷処理部２９３に実行させる。
【００７３】
次に、印刷処理部２９３が印刷データ（印刷バッファ２３０に残存する印刷データ及びリカバリデータ）に従って行印刷処理を行い、さらに用紙先頭位置合わせ処理を行って、リカバリデータに基づく印刷を終了する（ステップＳ２０４）。
具体的には、受信バッファ２２０は、印刷データを印刷順（例えば受信順）に印刷バッファ２３０へ出力し、出力した印刷データを受信バッファ２２０から削除する。ステップＳ２０２でコンピュータ１００が、リカバリデータを送信した後、アプリケーション実行部１１０からの送信要求に基づく印刷データを送信するため、受信バッファ２２０は、まず、リカバリデータを印刷バッファ２３０へ出力する。
【００７４】
印刷バッファ２３０は、前回の印刷ジョブで処理されなかった印刷データ（改行コードを含まない印刷データ）を記憶しており、この印刷データに続いて受信バッファ２２０からのリカバリデータを記憶する。そして、印刷処理部２９３は、印刷バッファ２３０が記憶している印刷データを印刷順にスキャンする。
【００７５】
スキャンにて改行コードを検出すると、印刷処理部２９３は、該改行コードまでの印刷データに従って印刷ハンマ２４０を制御して、１行分の印刷を行わせる。具体的には、印刷処理部２９３は、リカバリコードに含まれる改行コードを検出して、前回の印刷ジョブで処理されなかった印刷データ（及びヌルデータ）の印刷を印刷ハンマ２４０に行わせる。
印刷ハンマ２４０が１行分の印刷を完了すると、印刷処理部２９３は、用紙送り部２５０を制御して、１行分の用紙送りを行わせる。その際、印刷処理部２９３は、用紙送り量を記憶しておき、また、処理を完了した１行分の印刷データを印刷バッファ２３０から削除する。
【００７６】
図１１は、印刷ハンマ２４０が１行分の印刷を行った状態の例を示す説明図である。同図の例では、印刷ハンマ２４０は、印刷処理部２９３の制御に従って１行分の文字列「ＡＢ」を印刷している。この文字列「ＡＢ」は、異常終了した前回の印刷ジョブで印刷されなかった印刷データに基づいて印刷された文字列である。
図１１の状態の後、印刷処理部２９３が用紙送り部２５０を制御して１行分の用紙送りを行わせる。
【００７７】
ここで、図３を参照して説明したように、リカバリデータの末尾には改ページコードを付すよう規定されている。行印刷処理を完了した印刷処理部２９３は、リカバリデータの末尾の改ページコードを検出して用紙先頭位置合わせ処理を行い、印刷を終了する。具体的には、印刷処理部２９３は、印刷バッファ２３０が記憶している印刷データをスキャンして改ページコードを検出すると、用紙送り部２５０を制御して用紙先頭位置合わせを行わせる。
【００７８】
図１２は、用紙送り部２５０が用紙先頭位置合わせを行った状態の例を示す説明図である。図１２の例では、線Ｌ１１にて示されるミシン目の位置が、マークＭ１１の位置に合っている。図６の例の場合と異なり図１２の例では、プリンタ２００の電源が接続されたままなので、印刷処理部２９３は、行印刷処理にて用紙送りを行った用紙送り量を、異常終了した前回の印刷分も含めて記憶している。そして、印刷処理部２９３は、当該用紙送り量に基づいて用紙先頭位置合わせのための用紙送り量を算出する。これにより、図１２の例のように、ミシン目の位置をマークＭ１１の位置に合わせることができる。これにより、プリンタ２００は、次の印刷データに基づく印刷（アプリケーション実行部１１０からの送信要求に基づく印刷データが示す処理）を、連続用紙９２０のページの先頭（図２の例では領域Ａ１２）から行うことができる。この点で、プリンタ２００は、次の印刷データに基づく印刷を、前回の印刷が正常終了した場合と同様に行うことができる。
【００７９】
用紙送り部２５０が用紙先頭位置合わせを完了すると、印刷処理部２９３は、印刷バッファ２３０が記憶している改ページコードを印刷バッファ２３０から削除する。これにより、前回の印刷ジョブで処理されなかった印刷データ及びリカバリデータは、全て印刷バッファ２３０から削除され、リカバリコードに基づく印刷ジョブを終了する。
【００８０】
ステップＳ２０４の後、受信バッファ２２０は、プリンタ２００は、引き続き、アプリケーション実行部１１０からの送信要求に基づく印刷データに対する処理を行う（ステップＳ２０５）。
ステップＳ２０５では、判定部２９１はリカバリデータを検出せず、前回の印刷が正常終了したか異常終了したかの判定を行わない。これにより、異常終了対応部２９２は、受信バッファ２２０が記憶している印刷データに対する処理を行わない。
【００８１】
ステップＳ２０６は、図７のステップＳ１０４と同様である。すなわち、図１２を参照して上述したように、ステップＳ２０４の処理を終了した状態では、プリンタ２００は、次の印刷データに基づく印刷を、前回の印刷が正常終了した場合と同様に行うことができる。従って、プリンタ２００は、アプリケーション実行部１１０からの送信要求に基づく印刷データに基づく印刷を、前回の印刷が正常終了した場合の動作例である図７のステップＳ１０４と同様に行う。
【００８２】
図１３は、アプリケーション実行部１１０からの送信要求に基づく印刷データが示す１行分の印刷を印刷ハンマ２４０が行った状態の例を示す説明図である。同図の例では、印刷ハンマ２４０は、印刷処理部２９３の制御に従って１行分の文字列「ＡＢＣＤ」を印刷している。
図１２の状態で、線Ｌ１１にて示されるミシン目の位置が、マークＭ１１の位置に合っているので、図１２の状態から用紙送りをしていない図１３の例でも、線Ｌ１１にて示されるミシン目の位置が、マークＭ１１の位置に合っている。
また、図１３の状態から用紙送り部２５０が用紙先頭位置合わせを行うと、図９の例の場合と同様、ミシン目の位置をマークＭ１１の位置に合わせることができる。
【００８３】
図１４は、コンピュータ１００がリカバリデータ及び印刷データを生成して送信する処理手順の例を示すフローチャートである。コンピュータ１００は、アプリケーション実行部１１０が実行するアプリケーションの印刷機能を実行されると、コンピュータ１００は同図の処理を開始する。
図１４の処理で、アプリケーション実行部１１０は、当該アプリケーションにて規定されたフォーマットで印刷要求を生成してプリンタドライバ１２０に出力する（ステップＳ３０１）。
【００８４】
アプリケーション実行部１１０から印刷要求を受けたプリンタドライバ１２０は、リカバリデータと、印刷要求に基づく印刷データとを生成する（ステップＳ３０２）。具体的には、プリンタドライバ１２０のリカバリデータ生成部１２１が、リカバリデータを生成する。また、プリンタドライバ１２０は、アプリケーション実行部１１０からの印刷要求をプリンタ２００が実行可能なフォーマットの印刷データに変換することで印刷データを生成する。
【００８５】
そして、プリンタドライバ１２０はリカバリデータを、印刷データ送信部１３０を介してプリンタ２００へ送信する（ステップＳ３０３）。リカバリデータの送信を完了すると、プリンタドライバ１２０は、アプリケーション実行部１１０からの印刷要求を変換した印刷データを、印刷データ送信部１３０を介してプリンタ２００へ送信する（ステップＳ３０４）。
ステップＳ３０４の後、図１４の処理を終了する。
【００８６】
図１５は、判定部２９１が行う処理の手順の例を示すフローチャートである。判定部２９１は、印刷データ受信部２１０がデータを受信して受信バッファ２２０が当該データを記憶すると同図の処理を開始する。
同図の処理にて、判定部２９１は受信バッファ２２０が記憶しているデータをスキャンする（ステップＳ４０１）。そして、判定部２９１は、ステップＳ４０１のスキャンにてリカバリデータを検出したか否かを判定する（ステップＳ４０２）。リカバリデータを検出していないと判定した場合（ステップＳ４０２：ＮＯ）、同図の処理を終了する。
【００８７】
一方、リカバリデータを検出したと判定した場合（ステップＳ４０２：ＹＥＳ）、判定部２９１は、前回の印刷が異常終了したか否かを判定する（ステップＳ４１１）。前回の印刷が異常終了したと判定した場合（ステップＳ４１１：ＹＥＳ）、同図の処理を終了する。
一方、前回の印刷が異常終了していないと判定した場合（ステップＳ４１１：ＮＯ）、
判定部２９１は、受信バッファ２２０が記憶しているリカバリデータを削除する（ステップＳ４２１）。
ステップＳ４２１の後、同図の処理を終了する。
【００８８】
図１６は、印刷処理部２９３が行う処理の手順の例を示すフローチャートである。印刷処理部２９３は、印刷バッファ２３０がデータを記憶すると同図の処理を開始する。
同図の処理にて、印刷処理部２９３は、印刷バッファ２３０を印刷順にスキャンする（ステップＳ５０１）。そして、印刷処理部２９３は、ステップＳ５０１のスキャンにて改行コードを検出したか否かを判定する（ステップＳ５０２）。
【００８９】
改行コードを検出したと判定した場合、印刷処理部２９３は、行印刷処理を行う（ステップＳ５１１）。具体的には、印刷処理部２９３は、印刷バッファ２３０が記憶しているデータの先頭から改行コードの手前までの印刷データに従って印刷ハンマ２４０を制御して、１行分の印字を行わせる。
次に、印刷処理部２９３は、改行コードに従って用紙送り部２５０を制御して、１行分の用紙送りを行わせる（ステップＳ５１２）。
そして、印刷処理部２９３は、実行済みのデータを削除する（ステップＳ５１３）。具体的には、印刷処理部２９３は、印刷バッファ２３０が記憶している印刷データの先頭から改行コードまでを、印刷バッファ２３０から削除する。
ステップＳ５１３の後、ステップＳ５０１へ遷移する。
【００９０】
一方、ステップＳ５０２で、改行コードを検出していないと判定した場合（ステップＳ５０２：ＮＯ）、印刷処理部２９３は、ステップＳ５０１のスキャンで改ページコードを検出したか否かを判定する（ステップＳ５２１）。改ページコードを検出していないと判定した場合（ステップＳ５２１：ＮＯ）、印刷処理部２９３は、印刷バッファ２３０が記憶しているデータを全てスキャンしたか否かを判定する（ステップＳ５３１）。
【００９１】
印刷バッファ２３０が記憶しているデータをすべてスキャンしたと判定した場合（ステップＳ５３１：ＹＥＳ）、同図の処理を終了する。なお、この場合、印刷データが改ページコード以外のデータで終了することになり、プリンタ２００は印刷を異常終了する。
一方、未だスキャンしていないデータがあると判定した場合（ステップＳ５３１：ＮＯ）、ステップＳ５０１へ遷移する。
【００９２】
一方、ステップＳ５２１で改ページコードを検出したと判定した場合（ステップＳ５２１：ＹＥＳ）、印刷処理部２９３は、改ページコードに従って用紙先頭位置合わせ処理を行う（ステップＳ５４１）。そして、印刷処理部２９３は、実行済みのデータとなった改ページコードを印刷バッファ２３０から削除する（ステップＳ５４２）。
ステップＳ５４２の後、同図の処理を終了する。
なお、ステップＳ５４２の後、印刷バッファ２３０にデータが残っている場合、印刷処理部２９３は、再び図１６の処理を開始して、残りのデータを処理する。
【００９３】
以上のように、前回の印刷が異常終了したと判定部２９１が判定した場合、異常終了対応部２９２は、印刷処理部２９３に、バッファ（受信バッファ２２０及び印刷バッファ２３０）に残存する前回の印刷の印刷データが示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせた後、印刷データ受信部２１０が取得する今回の印刷の印刷データが示す処理を行わせる。一方、前回の印刷が正常終了したと判定部２９１が判定した場合、異常終了対応部２９２は、印刷データ受信部２１０が取得する今回の印刷の印刷データが示す処理を印刷処理部２９３に行わせる。
【００９４】
このように、プリンタ２００は、印刷処理部２９３に通常の処理と同様の処理（印刷データが示す処理の実行、及び、用紙先頭位置合わせ処理）を行わせることで、バッファ（受信バッファ２２０及び印刷バッファ２３０）のクリア及び連続用紙９２０の位置合わせを行って、印刷正常終了状態（印刷が正常終了した場合の状態）にする。印刷処理部２９３は通常の処理を同様の処理を行えばよい点で、印刷異常終了状態（印刷が異常終了した場合の状態）から印刷正常終了状態にするための特別な構成を備える必要がない。この点で、プリンタ２００では、より簡単な構成で、ラインプリンタのバッファに残ったデータのクリア、及び、連続用紙９２０の位置合わせを行うことができる。
【００９５】
また、判定部２９１は、印刷データ受信部２１０が所定のデータ（本実施形態の例ではリカバリデータ）を取得すると、前回の印刷が正常終了したか異常終了したかを判定する。
従って、印刷要求装置（本実施形態の例ではコンピュータ１００）は、プリンタ２００を印刷異常終了状態から印刷正常終了状態にするために、所定のデータを送信すればよい。この点で、印刷要求装置は、より簡単な構成でプリンタ２００を印刷異常終了状態から印刷正常終了状態にすることができる。
【００９６】
また、判定部２９１は、印刷データ受信部２１０が、ＮＵＬＬデータ（印刷するものがないことを示す印刷内容データ）、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを取得すると、前回の印刷が正常終了したか異常終了したかを判定する。そして、異常終了対応部２９２は、前回の印刷が異常終了したと判定部２９１が判定した場合、印刷データ受信部２１０が取得したリカバリデータが示す処理を印刷処理部２９３に実行させる。一方、前回の印刷が正常終了したと判定部２９１が判定した場合、印刷データ受信部２１０が取得したデータの中からリカバリデータを削除する。
このように、プリンタ２００は、印刷データ受信部２１０が受信したリカバリデータが示す処理を実行するという簡単な処理で、印刷異常終了状態から印刷正常終了状態にすることができる。
また、前回の印刷が正常終了したと判定部２９１が判定した場合、異常終了対応部２９２が、印刷データ受信部２１０が取得したデータの中からリカバリデータを削除することで、印刷処理部２９３がリカバリデータを実行して無駄な用紙送りを行うことを回避できる。
【００９７】
また、判定部２９１は、印刷データ受信部２１０が最後に印刷データを受信してから所定時間以上経過すると、前回の印刷が正常終了したか異常終了したかを判定する。この場合、印刷要求装置はリカバリデータを送信する必要がない。この点で、印刷要求装置の構成をさらに簡単にすることができる。
また、プリンタ２００は、判定部２９１が判定を行う契機を検出するために、印刷データ受信部２１０が最後に印刷データを受信してからの経過時間を計り、所定の時間が経過したことを検出する構成を備えればよく、この点で、プリンタ２００の構成を簡単にすることができる。
【００９８】
また、異常終了対応部２９２は、前回の印刷が異常終了したと判定部２９１が判定した場合、リカバリデータを生成して印刷処理部２９３に実行させる。
このように、異常終了対応部２９２がリカバリデータを生成して印刷処理部２９３に実行させるという簡単な処理で、プリンタ２００を印刷異常終了状態から印刷正常終了状態にすることができる。この点で、印刷処理部２９３の構成を簡単にすることができ、また、異常終了対応部２９２の負荷の増加を抑制することができる。
【００９９】
また、判定部２９１は、前回の印刷が正常終了したか異常終了したかを、バッファ（受信バッファ２２０及び印刷バッファ２３０に前回の印刷の印刷データが残存しているか否か、及び、印刷処理部２９３による用紙送り量に基づいて判定する。
これにより、判定部２９１は、バッファのデータ記憶状況、及び、用紙送り量を把握するという簡単な処理で、前回の印刷が正常終了したか異常終了したかを、判定することができる。
【０１００】
なお、前回の印刷の印刷データの有無は、印刷データ受信部２１０がリカバリデータを取得する前のデータの有無を判定することで判定できる。
あるいは、判定部２９１は、印刷データ受信部２１０が最後に印刷データを受信してからの経過時間を契機として、前回の印刷が正常終了したか異常終了したかを判定する場合、前回の印刷の印刷データの有無は、受信バッファ２２０又は印刷バッファ２３０の少なくとも一方が印刷データを記憶しているか否かを判定することで判定できる。
【０１０１】
また、プリンタドライバ１２０は、印刷データを生成する。そして、印刷データ送信部１３０は、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータをプリンタ２００へ送信した後、プリンタドライバ１２０が生成した印刷データをプリンタ２００へ送信する。
このように、コンピュータ１００が、印刷データの前にリカバリデータを送信することで、判定部２９１は、印刷データ受信部２１０がリカバリデータを取得したことを契機として、前回の印刷が正常終了したか異常終了したかの判定を行うことができる。また、印刷処理部２９３がリカバリデータを実行することで、プリンタ２００を印刷異常終了状態から印刷正常終了状態にすることができる。
【０１０２】
なお、判定部２９１が、前回の印刷が正常終了したか異常終了したかを、プリンタ２００の状態を示す情報に基づいて判定するようにしてもよい。この点について図１７及び図１８を参照して説明する。
図１７は、本実施形態におけるプリンタ２００の変形例であるプリンタ２０１の機能構成を示す概略ブロック図である。同図に示すように、プリンタ２０１は、印刷データ受信部２１０と、受信バッファ２２０と、印刷バッファ２３０と、印刷ハンマ２４０と、用紙送り部２５０と、状態情報記憶部２８０と、制御部２９０とを備える。用紙送り部２５０は、左トラクタ２５１と、右トラクタ２５２とを備える。制御部２９０は、異常終了対応部２９２と、印刷処理部２９３と、判定部２９５と、状態情報管理部２９６とを備える。
なお、図１７の各部のうち、図１の各部に対応して同様の機能を有する部分には同一の符号（２１０、２２０、２３０、２４０、２５０、２５１、２５２、２９０、２９２、２９３）を付して説明を省略する。
【０１０３】
状態情報記憶部２８０は、状態情報を記憶する。ここでいう状態情報は、プリンタ２０１の状態を示す情報である。
図１８は、状態情報が示すプリンタ２０１の状態の遷移例を示す説明図である。
同図に示すように、状態情報は、プリンタ２０１が、印刷前又は印刷正常終了の状態（モードＭ２１）にあるか、あるいは、印刷中又は印刷異常終了の状態（モードＭ２２）にあるかを示す。
【０１０４】
状態情報管理部２９６は、状態情報の値を書き換える。例えば、プリンタ２０１の電源が接続され起動した状態では、状態情報管理部２９６は、状態情報の値を、印刷前又は印刷正常終了の状態を示す値にする。また、受信バッファ２２０、印刷バッファ２３０のいずれも印刷データを記憶しておらず、かつ、用紙先頭位置合わせが行われた状態（左トラクタ２５１及び右トラクタ２５２の回転量が０）の場合、状態情報管理部２９６は、状態情報の値を、印刷前又は印刷正常終了の状態を示す値にする。
一方、受信バッファ２２０、印刷バッファ２３０の少なくともいずれかが印刷データを記憶している、または、用紙先頭位置合わせが行われていない状態（左トラクタ２５１及び右トラクタ２５２の回転量が０でない）の場合、状態情報管理部２９６は、状態情報の値を、印刷中又は印刷異常終了の状態を示す値にする。
判定部２９５は、印刷処理部２９３による印刷が正常終了したか異常終了したかを状態情報に基づいて判定する。
【０１０５】
以上のように、状態情報記憶部２８０は、プリンタ２０１の状態を示す状態情報を記憶する。そして、判定部２９５は、前回の印刷が正常終了したか異常終了したかを、状態情報に基づいて判定する。
これにより、判定部２９５は、状態情報を参照して速やかに判定を行うことができ、この点でプリンタ２０１の処理速度を速めることができる。
【０１０６】
次に、図１９〜図２１を参照して本発明の最小構成について説明する。
図１９は、本発明に係る印刷装置の最小構成を示す概略ブロック図である。同図に示す印刷装置３００は、印刷データ取得部３１０と、バッファ３２０と、印刷処理部３３０と、判定部３４０と、異常終了対応部３５０とを備える。
【０１０７】
かかる構成にて、印刷データ取得部３１０は、印刷データを取得する。バッファ３２０は、印刷データ取得部３１０が取得した印刷データを記憶し、実行済みの印刷データを削除する。印刷処理部３３０は、バッファ３２０が記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と行印刷処理によって用紙送りされた用紙送り量とに基づいて連続用紙９２０のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理を行う。また、判定部３４０は、印刷処理部３３０が行った前回の印刷が正常終了したか異常終了したかを判定する。
【０１０８】
また、異常終了対応部３５０は、前回の印刷が異常終了したと判定部３４０が判定した場合、印刷処理部３３０に、バッファ３２０に残存する前回の印刷の印刷データが示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせた後、印刷データ取得部３１０が取得する今回の印刷の印刷データが示す処理を行わせる。また、異常終了対応部３５０は、前回の印刷が正常終了したと判定部３４０が判定した場合、印刷データ取得部３１０が取得する今回の印刷の印刷データが示す処理を印刷処理部３３０に行わせる。
【０１０９】
このように、印刷装置３００は、印刷処理部３３０に通常の処理と同様の処理（印刷データが示す処理の実行、及び、用紙先頭位置合わせ処理）を行わせることで、バッファ３２０のクリア及び連続用紙９２０の位置合わせを行って、印刷正常終了状態（印刷が正常終了した場合の状態）にする。印刷処理部３３０が通常の処理を同様の処理を行えばよい点で、印刷異常終了状態（印刷が異常終了した場合の状態）から印刷正常終了状態にするための特別な構成を備える必要がない。この点で、印刷装置３００では、より簡単な構成で、ラインプリンタのバッファに残ったデータのクリア、及び、連続用紙９２０の位置合わせを行うことができる。
【０１１０】
図２０は、本発明に係る印刷システムの最小構成を示す概略ブロック図である。同図に示す印刷装置印刷システム２は、印刷要求装置４００と、印刷装置５００とを備える。印刷要求装置４００は、印刷データ生成部４１０と、印刷データ送信部４２０とを備える。印刷装置５００は、印刷データ取得部５１０と、バッファ５２０と、印刷処理部５３０と、判定部５４０と、異常終了対応部５５０とを備える。
【０１１１】
かかる構成にて、印刷データ生成部４１０は、印刷データを生成する。印刷データ送信部４２０は、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを前記印刷装置へ送信した後、前記印刷データ生成部４１０が生成した印刷データを前記印刷装置へ送信する。
また、印刷データ取得部５１０は、印刷データを取得する。バッファ５２０は、印刷データ取得部５１０が取得した印刷データを記憶し、実行済みの印刷データを削除する。印刷処理部５３０は、バッファ５２０が記憶している印刷データが示す印刷内容を行毎に印刷して改行する行印刷処理、及び、１ページ分の用紙送り量として設定されている所定のページ用紙送り量と行印刷処理によって用紙送りされた用紙送り量とに基づいて連続用紙９２０のページの先頭を所定の位置に合せる用紙先頭位置合わせ処理を行う。また、判定部５４０は、印刷処理部５３０が行った前回の印刷が正常終了したか異常終了したかを判定する。
【０１１２】
また、異常終了対応部５５０は、前回の印刷が異常終了したと判定部５４０が判定した場合、印刷処理部５３０に、バッファ５２０に残存する前回の印刷の印刷データが示す処理を全て実行させ、用紙先頭位置合わせ処理を行わせた後、印刷データ取得部５１０が取得する今回の印刷の印刷データが示す処理を行わせる。また、異常終了対応部は、前回の印刷が正常終了したと判定部５４０が判定した場合、印刷データ取得部５１０が取得する今回の印刷の印刷データが示す処理を印刷処理部５３０に行わせる。
【０１１３】
このように、印刷装置５００は、印刷処理部５３０に通常の処理と同様の処理（印刷データが示す処理の実行、及び、用紙先頭位置合わせ処理）を行わせることで、バッファ５２０のクリア及び連続用紙９２０の位置合わせを行って、印刷正常終了状態（印刷が正常終了した場合の状態）にする。印刷処理部５３０が通常の処理を同様の処理を行えばよい点で、印刷異常終了状態（印刷が異常終了した場合の状態）から印刷正常終了状態にするための特別な構成を備える必要がない。この点で、印刷装置５００では、より簡単な構成で、ラインプリンタのバッファに残ったデータのクリア、及び、連続用紙９２０の位置合わせを行うことができる。
【０１１４】
図２１は、本発明に係る印刷要求装置の最小構成を示す概略ブロック図である。同図に示す印刷要求装置６００は、印刷データ生成部６１０と、印刷データ送信部６２０とを備える。
かかる構成にて、印刷データ生成部６１０は、印刷データを生成する。印刷データ送信部６２０は、印刷するものがないことを示す印刷内容データ、改行コード、及び、改ページコードからなる印刷データであるリカバリデータを前記印刷装置へ送信した後、前記印刷データ生成部６１０が生成した印刷データを前記印刷装置へ送信する。
【０１１５】
このように、印刷要求装置６００が、印刷データの前にリカバリデータを送信することで、リカバリデータを受信した印刷装置は、リカバリデータを取得したことを契機として、前回の印刷が正常終了したか異常終了したかの判定を行うことができる。また、リカバリデータを受信した印刷装置は、リカバリデータを実行することで、印刷異常終了状態から印刷正常終了状態にすることができる。
【０１１６】
なお、上述した実施形態におけるアプリケーション実行部１１０、プリンタドライバ１２０、制御部２９０、印刷装置３００及び５００、印刷要求装置４００及び６００の一部または全部の機能を、ＣＰＵがプログラムを読み出して実行することで実現することができる。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【０１１７】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１１８】
１、２  印刷システム
１００  コンピュータ
１１０  アプリケーション実行部
１２０  プリンタドライバ
１２１  リカバリデータ生成部
１３０  印刷データ送信部
２００  プリンタ
２１０  印刷データ受信部
２２０  受信バッファ
２３０  印刷バッファ
２４０  印刷ハンマ
２５０  用紙送り部
２５１  左トラクタ
２５２  右トラクタ
２８０  状態情報記憶部
２９０  制御部
２９１、２９５  判定部
２９２  異常終了対応部
２９３  印刷処理部
２９６  状態情報管理部
３００、５００  印刷装置
３１０、５１０  印刷データ取得部
３２０、５２０  バッファ
３３０、５３０  印刷処理部
３４０、５４０  判定部
３５０、５５０  異常終了対応部
４００、６００  印刷要求装置
４１０、６１０  印刷データ生成部
４２０、６２０  印刷データ送信部
９１０  通信ネットワーク
【図１】
0006551976.tif 000002
【図２】
0006551976.tif 000003
【図３】
0006551976.tif 000004
【図４】
0006551976.tif 000005
【図５】
0006551976.tif 000006
【図６】
0006551976.tif 000007
【図７】
0006551976.tif 000008
【図８】
0006551976.tif 000009
【図９】
0006551976.tif 000010
【図１０】
0006551976.tif 000011
【図１１】
0006551976.tif 000012
【図１２】
0006551976.tif 000013
【図１３】
0006551976.tif 000014
【図１４】
0006551976.tif 000015
【図１５】
0006551976.tif 000016
【図１６】
0006551976.tif 000017
【図１７】
0006551976.tif 000018
【図１８】
0006551976.tif 000019
【図１９】
0006551976.tif 000020
【図２０】
0006551976.tif 000021
【図２１】
0006551976.tif 000022