(57)【要約】【課題】プリンタの電源異常発生後の復旧時に適切な印刷を開始する。【解決手段】プリンタ３００では、ホストコンピュータ１００から印刷ジョブを受信し、１枚の用紙への印刷を完了する毎に不揮発性メモリ３０９の用紙枚数３１１の領域に格納される変数に数値“１”を加算する。これにより、プリンタ３００の電源が切断されてしまった場合でも、不揮発性メモリ３０９に正常に印刷を完了できている用紙枚数を残すようにする。そして、プリンタ３００の電源の復旧時にその用紙の枚数が何枚であるかの情報をホストコンピュータ１００に送る。これにより、ホストコンピュータ３００は以後に印刷すべき内容を正確に把握し、適切な印刷ジョブをプリンタ３００に送る。【選択図】        図１
2005028713.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から送られる１頁または複数頁からなる印刷ジョブを受信し、該印刷ジョブに基づいて印刷媒体に印刷する印刷装置において、
前記印刷ジョブを印刷中であるか否かの状態を示す印刷状態格納部と、
前記印刷ジョブに対する印刷枚数をカウントする印刷枚数カウント部と、
前記印刷枚数カウント部でカウントされた値を格納するカウンタ値格納部と、
前記上位装置に前記カウント値格納部に格納されたカウント値を通知する通知部とを備えたことを特徴とする印刷装置。
【請求項２】
請求項１記載の印刷装置において、
前記印刷状態格納部と前記カウンタ値格納部は、前記印刷装置の電源が切断されても情報を保持できる格納部であることを特徴とする印刷装置。
【請求項３】
請求項１記載の印刷装置において、
前記通知部は、前記印刷状態格納部に前記印刷ジョブが印刷中である旨の情報が格納されていると判断された場合、前記カウント値格納部に格納されたカウント値を通知することを特徴とする印刷装置。
【請求項４】
印刷装置に１頁または複数頁からなる印刷ジョブを送信する印刷制御装置において、
前記印刷装置から情報を受信する受信部と、
前記受信部で受信した情報により、印刷枚数を検出する印刷枚数検出部と、
前記印刷枚数検出部で検出された印刷枚数に基づき、前記印刷装置に送信する前記印刷ジョブの印刷頁を算出する送信頁算出部と、
前記送信頁算出部により算出された送信頁に基づき、印刷ジョブを送信する送信部とを備えたことを特徴とする印刷制御装置。
【請求項５】
請求項１記載の印刷装置と、請求項４記載の印刷制御装置とからなることを特徴とする印刷システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストコンピュータなどの上位装置と接続されるプリンタ、上位装置が生成したデータを印刷データおよび制御コードが含まれる印刷ジョブデータに変換し、これをプリンタに送って印刷の指示を行うプリンタ制御装置、およびこれらにより構成されるプリンタシステムに関するものである。
【０００２】
【従来の技術】
従来、ホストコンピュータによるデータ処理システムにおけるプリンタにおいては、ホストコンピュータから複数の印刷用紙への印刷を含む印刷ジョブデータを送り、これを受け取ったプリンタがその印刷を実行していた。ところで、不意の停電や人為的なミスによって、プリンタの印刷の途中で電源が切断される場合があった。このような場合、従来は、プリンタからホストコンピュータに対して状態情報を送るような手段がなく、プリンタの側のそのような異常状態でなされた印刷の結果を的確に把握することができなかった。このため、そのような異常状態の発生を知ったホストコンピュータのオペレータは、どの用紙まで印刷が終了しているかを調べて、プリンタの電源の復旧後、印刷ジョブの途中のデータから送り直していた。また、ある場合は、改めてはじめから印刷ジョブデータを送り直していた（特許文献１参照）。
【０００３】
【特許文献１】
特開平１１−１８９３５１号公報
【０００４】
【発明が解決しようとする課題】
しかしながら、上述した従来の技術には、以下のような課題があった。すなわち、印刷ジョブの途中のデータから送り直す場合には、どの用紙までの印刷が終了しているのかを正確に認識しないで指示する場合があり、電源の復旧以後の印刷結果が適切なものとはならないこともあった。例えば、重複して印刷される部分が生じてしまう場合もあれば、印刷が抜けてしまう部分が生じる場合もあった。また、改めてはじめから印刷をやり直す場合には、異常状態の発生の前にすでに印刷している部分があるときは、その印刷の結果が無駄になってしまった。
【０００５】
【課題を解決するための手段】
本発明は以上の点を解決するため次の構成を採用する。
〈構成１〉
上位装置から送られる１頁または複数頁からなる印刷ジョブを受信し、該印刷ジョブに基づいて印刷媒体に印刷する印刷装置において、以下を備えるものである。
１つ目は、印刷ジョブを印刷中であるか否かの状態を示す印刷状態格納部である。
２つ目は、印刷ジョブに対する印刷枚数をカウントする印刷枚数カウント部である。
３つ目は、印刷枚数カウント部でカウントされた値を格納するカウンタ値格納部である。
４つ目は、上位装置に前記カウント値格納部に格納されたカウント値を通知する通知部である。
【０００６】
〈構成２〉
構成１の印刷装置において、前記印刷状態格納部と前記カウンタ値格納部を、前記印刷装置の電源が切断されても情報を保持できる格納部としたものである。
【０００７】
〈構成３〉
構成１の印刷装置において、前記通知部は、前記印刷状態格納部に前記印刷ジョブが印刷中である旨の情報が格納されていると判断された場合、前記カウント値格納部に格納されたカウント値を通知するものである。
【０００８】
〈構成４〉
印刷装置に１頁または複数頁からなる印刷ジョブを送信する印刷制御装置において、以下を備えるものである。
１つ目は、印刷装置から情報を受信する受信部である。
２つ目は、受信部で受信した情報により、印刷枚数を検出する印刷枚数検出部である。
３つ目は、印刷枚数検出部で検出された印刷枚数に基づき、前記印刷装置に送信する前記印刷ジョブの印刷頁を算出する送信頁算出部である。
４つ目は、送信頁算出部により算出された送信頁に基づき、印刷ジョブを送信する送信部である。
【０００９】
〈構成５〉
構成１の印刷装置と、構成４の印刷制御装置とからなることを特徴とする印刷システムである。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態を具体例を用いて説明する。
〈具体例〉
図１は、本発明のプリンタシステムの具体例の構成を示すブロック図である。
図示のシステムは、ホストコンピュータ１００と、プリンタ３００とからなる。
〈プリンタの具体例〉
同図において、プリンタ３００は、システムバス３０５に接続されたＣＰＵ３０１と、ＲＡＭ３０２と、フォントメモリ３０３と、プログラムＲＯＭ３０４と、入出力チャネル３０６と、エンジンインタフェース３０７およびプリンタエンジン３０８と、不揮発性メモリ３０９とからなる。
【００１１】
ＣＰＵ３０１は、プログラムＲＯＭ３０４に記憶されている制御プログラムに基づきシステムバス３０５に接続されている各デバイスを総括的に制御し、エンジンインタフェース３０７を介してプリンタエンジン３０８に画像信号を供給する。
ＲＡＭ３０２は、ＣＰＵ３０１によってプログラムＲＯＭ３０４に記憶されている制御プログラムすなわち制御手順が実行されるとき、ＣＰＵ３０１の演算、論理判断における各種データを記憶するワークメモリとして用いられる。また、これとともに、このＲＡＭ３０２は、ホストコンピュータ１００からの印刷ジョブデータ格納領域、ダウンロードフォント、マクロ格納領域、プリント環境情報（当該ページの印刷に必要な設定情報）格納領域、フォント展開領域などとして用いられる。
【００１２】
フォントメモリ３０３には、前記画像信号の生成時に使用するフォントが記憶されている。
プログラムＲＯＭ３０４には、上述の制御プログラムとともにＣＰＵ３０１が行う制御手順などが記憶されている。
入出力チャネル３０６は、ホストコンピュータ１００の入出力チャネル１０７に外部ケーブル２００または図示しないネットワークを介して接続されている。
エンジンインタフェース３０７およびプリンタエンジン３０８は、ＣＰＵ３０１から画像信号の供給を受けて印刷を実行する。
【００１３】
不揮発性メモリ３０９は、出荷時設定プリント環境情報記憶領域、ユーザー設定プリント環境情報記憶領域、印刷中ページプリント環境情報記憶領域、プリンタステータス情報記憶領域などとして用いられる。
その他、システムバス３０５には、図示しないオペレータパネル等が接続されている。
【００１４】
ところで、上述したプログラムＲＯＭ３０４には、以下の処理を行うプログラムが含まれている。そのプログラムは、まず、ホストコンピュータ１００からの印刷ジョブデータに基づき印刷指定されたファイルの印刷処理開始時に、不揮発性メモリ３０９にある印刷ジョブの状態情報３１０を“印刷途中”に設定する。また、このプログラムは、前記印刷開始したジョブの印刷処理中に、正常に印刷出力が終了した用紙枚数（またはページ数）をカウントし、当該カウント情報を不揮発性メモリ３０９にある用紙枚数３１１の領域に記憶する。そして、前記印刷開始したジョブの総用紙枚数（または総ページ数）を正常印刷終了時には、この用紙枚数３１１の領域に記憶し、印刷ジョブの状態情報３１０に“印刷途中でない”旨を設定する。ここで、不揮発性メモリ３０９は、ＥＥＰＲＯＭ等のほか、バックアップ電源（バッテリ等）に接続されたメモリであっても良い。これは、主電源が切られてもデータが消えないものである。
【００１５】
これらの不揮発性メモリ３０９に記憶された印刷ジョブの状態情報３１０と、正常に印刷出力が終了した用紙枚数（またはページ数）は、同様にプログラムＲＯＭ３０４に格納された他のプログラムによって入出力チャネル３０６を介してホストコンピュータ１００の入出力チャネル１０７に出力される。
【００１６】
〈プリンタの具体例の動作〉
上述したプリンタシステムの具体例におけるプリンタの動作を図２、図３のフローチャートを用いて説明する。
まず、各用紙の片面に１ページずつ印刷する通常の場合について説明する。この場合、用紙枚数とページ数は等しい。
図２は、具体例のプリンタのページ数カウント手順を示すフローチャートである。
このフローチャートに示すプログラムは、プログラムＲＯＭ３０４に記憶された周知の印刷制御手順に組み込んであり、ホストコンピュータ１００から印刷ジョブが入力されたときにＣＰＵ３０１によって実行されるものである。
【００１７】
まず、ステップＳ２０１では、入力された印刷情報が「印刷ジョブの開始」を意味する場合、ステップＳ２０２で不揮発性メモリ３０９に割り当てられた印刷ジョブの状態情報３１０に“印刷途中”を設定する。より具体的には、この状態を示す変数ＰＪＳＴを“１”にセットする。そして、ステップＳ２０３で不揮発性メモリ３０９に割り当てられた用紙枚数３１１の領域に数値０を設定する。より具体的には、ページカウント数Ｎを０に初期化する。ここで、ページカウント数Ｎは、Ｊｏｂの印刷開始前のプリンタの総印刷枚数と、現印刷枚数を比較することにより算出しても良い。
ステップＳ２０４では、用紙枚数が全枚数か、すなわちページカウント数Ｎが印刷ジョブの総ページカウント数ＮＬＡＳＴに達しているかどうかをチェックする。ここで、用紙枚数が全枚数かという情報は、ホストから送られるＪｏｂ中に格納されている情報から得られる。そして、印刷された用紙枚数が全枚数とならず、印刷ジョブの印刷が完了されない間は、ステップＳ２０４の後にステップＳ２０５に進む。
【００１８】
ステップＳ２０５では、周知の印刷ページの編集・展開処理を１ページ分行う。そして、その１ページ分の処理が終了すると、ステップＳ２０６で印刷中か、すなわちエンジンインタフェース３０７を介して行われるプリンタエンジン３０８のページ印刷の動作中かどうかを判定する。そして、印刷中でなければ、ステップＳ２０７でエンジンインタフェース３０７を介してプリンタエンジン３０８に画像を供給し、１ページ分の印刷を起動する。また、ステップＳ２０８で１ページ分の印刷の終了を監視する監視用タイマを起動する。
【００１９】
印刷起動後はステップＳ２０９でエンジンインタフェース３０７を介してプリンタエンジン３０８に異常が発生したかどうかを監視し、異常を検出したらステップＳ２１０に進み、異常検出処理を行い、次処理に進む。
一方、ステップＳ２０８でプリンタエンジン３０８の異常を検出しなければ、ステップＳ２１１に進む。
ステップＳ２１１では、１ページの印刷終了監視タイマのタイムアウトに達していなければ、ステップＳ２０４に進む。ステップＳ２０４では、次ページの編集・展開データがあれば用紙枚数が全枚数か、すなわちページカウント数Ｎが印刷ジョブの総ページカウント数ＮＬＡＳＴに達しているかどうかをチェックし、印刷ジョブの印刷を完了するまではステップＳ２０５に進む。
【００２０】
ステップＳ２０５では、次ページの印刷データがあれば印刷ページの編集・展開処理を行い、ステップＳ２０６で、プリンタエンジン３０８が１ページ分の印刷中かどうかを判定し、その印刷中ならば、ステップＳ２０７、Ｓ２０８に進む。以下、ステップＳ２１１で１ページ分の印刷終了監視タイマのタイムアウトに達するまでステップＳ２０４〜Ｓ２０９、Ｓ２１１の処理を繰り返す。
ステップＳ２１１で１ページ分の印刷終了監視タイマのタイムアウトに達したならば、ステップＳ２１２に進み、不揮発性メモリに割り当てられた用紙枚数３１１の領域のページカウント数ＮをインクリメントしてステップＳ２０４に進む。
【００２１】
ステップＳ２０４で印刷ジョブの印刷を完了、すなわちページカウント数Ｎが印刷ジョブの総ページカウント数ＮＬＡＳＴに達するまでステップＳ２０４〜Ｓ２０９、Ｓ２１１、Ｓ２１２を繰り返す。そして、ページカウント数Ｎが印刷ジョブの総ページカウント数ＮＬＡＳＴに達したならばステップＳ２１３に進み、不揮発性メモリに割り当てられた印刷ジョブ状態情報を“印刷途中でない”に設定する。より具体的には、変数ＰＪＳＴを“０”にセットする。そして、ステップＳ２１４で印刷ジョブ状態情報の変数ＰＪＳＴを入出力チャネル３０６を介してホストコンピュータ１００の入出力チャネル１０７に出力する。
【００２２】
図３は、上述した具体例のプリンタの電源投入時の情報通知処理手順を示すフローチャートである。
この図３の処理手順は、周知の初期化処理手順に組み込んであり、電源が投入されたときにＣＰＵ３０１によって実行されるものである。
まず、ステップＳ３０１でプリンタの初期化処理を行う。そして、次にステップＳ３０２で不揮発性メモリ３０９に記憶されている印刷ジョブ状態情報ＰＪＳＴおよびページカウント情報Ｎを読み出し、入出力チャネル３０６を介してホストコンピュータ１００の入出力チャネル１０７に出力する。
【００２３】
図２および図３の手順により、印刷ジョブの途中でプリンタの電源断、電源再投入が発生した場合は、図４の時点Ｔ１からＴ４までに示すように、ステップＳ２１３の印刷ジョブの状態情報ＰＪＳＴ“０”セットの処理がなされずに、ステップＳ３０２で印刷ジョブの状態情報ＰＪＳＴ＝“１”のままページカウント情報Ｎを入出力チャネル３０６を介してホストコンピュータ１００に出力することになる。このようにすれば、ホストコンピュータ１００は送信した印刷ジョブの印刷途中で電源断が発生したか否か、また何ページ目で電源断が発生したかを知ることができる。尚、これらの情報の送り方の他の例として、ＰＪＳＴ＝“１”のときのみ、ページカウント情報のみを送信するようにしても良い。
【００２４】
また、上記変数ＰＪＳＴおよびＮを用いて、電源投入時に印刷途中でプリンタ電源断が発生したかどうかを図示しないプリンタのオペレータパネルに表示することも可能である。
【００２５】
〈プリンタの具体例の効果〉
以上のように、上述したプリンタの具体例によれば、印刷指示された印刷ジョブの印刷処理開始時に、不揮発性メモリに印刷ジョブ状態情報を“印刷途中”に設定し、前記印刷開始したジョブの印刷処理中に、正常に印刷出力が終了したページ数（または用紙枚数）をカウントし、当該カウント情報を不揮発性メモリに記憶する一方、前記印刷開始したジョブの総ページ数（または総用紙枚数）を正常印刷終了時に記憶し、前記印刷ジョブ状態情報を“印刷途中でない”旨設定する。そして、前記不揮発性メモリに記憶された前記印刷ジョブ状態情報と、前記正常に印刷出力が終了したページ数（または用紙枚数）を示す情報を上位装置に出力するようなプリンタにしたので、印刷ジョブの途中でプリンタの電源切断が発生しても、電源再投入時に電源切断前のページから正しく印刷することができる。
例えば、全枚数が“５”であるのに対し、用紙枚数が“３”であるときは、電源の復旧後に印刷すべき枚数は“５−３＝２”となる。よって、降順に印刷する場合、印刷すべき用紙は２枚目と１枚目となる。また、昇順に印刷する場合、印刷すべき用紙は４枚目と５枚目となる。
【００２６】
〈プリンタ制御装置の具体例〉
ホストコンピュータ１００は、図１に示すように、ＯＳ（オペレーティングシステム）１０４に基づき演算、処理を実行するＣＰＵ１０１を備えている。このＣＰＵ１０１は、システムバス１０５に接続されている各デバイスを総括的に制御する。
ＣＰＵ１０１は、ＲＡＭ１０２およびメモリ１０８に格納されているアプリケーションプログラムを起動する。そして、このアプリケーションプログラムで図示しないキーボードから入力されたデータを処理することによって文書ファイルなどのデータファイルを作成する。
【００２７】
文書ファイル作成時には、フォントメモリ１０３に格納されているフォントが用いられる。
アプリケーションプログラムには、作成したデータファイルを後述するプリンタ３００が処理可能な印刷データに変換するためのプリンタドライバ（プリンタ制御装置）が含まれる。このプリンタドライバの詳細について後述する。ＲＡＭ１０２は、上述のアプリケーションプログラムを格納するとともに、ＣＰＵ１０１の演算、論理判断における各種データを一時的に記憶するワークメモリとして用いられる。
【００２８】
アプリケーションプログラムによって作成された文書、編集ファイル、演算処理結果などは、メモリ１０８に記憶され、メモリ１０８には、上述したように、アプリケーションプログラムも格納されている。メモリ１０８は、ハードディスク装置（ＨＤ）、フロッピーディスク装置（ＦＤ）などから構成されている。メモリ１０８への書込、読出は、ディスクコントローラ１０６で制御される。
また、作成された文書、編集ファイル、演算処理結果などは、入出力チャネル１０７を介してプリンタ３００に送信される。入出力チャネル１０７は外部ケーブル２００を介してプリンタ３００に接続され、プリンタ３００との通信制御処理を実行する。この通信制御には、双方向セントロ、シリアル、ＬＡＮなどの方式が用いられている。
【００２９】
プリンタドライバは、印刷指定時にＲＡＭ１０２上で起動され、印刷指定時にＲＡＭ１０２に格納されていないときには、メモリ１０８からＲＡＭ１０２に書き込まれる。
プリンタドライバは、印刷指定されたファイルをプリンタ３００が処理可能な印刷データおよび制御コードが含まれる複数ページからなる印刷ジョブデータに変換する。
【００３０】
また、プリンタドライバは、印刷ジョブの各ページの印刷に必要なダウンロードフォント、マクロおよびプリント環境情報（当該ページの印刷に必要な設定情報）と各ページの印刷データを分離して生成し、印刷ジョブデータとしてＲＡＭ１０２に書き込む。印刷ジョブデータは入出力チャネル１０７を介してプリンタ３００に送信される。
よって、上述の構成において、データ読み出し手段とは、ＣＰＵ１０１をいい、データ処理手段とは、やはりＣＰＵ１０１をいい、データ送出手段とは、入出力チャネル１０７をいう。
【００３１】
〈プリンタ制御装置の具体例の動作〉
上述したプリンタ制御装置の具体例の動作を図５、６を用いて説明する。
図５は、印刷システムのホストコンピュータのプリンタドライバの具体例による印刷制御手順を示すフローチャートであり、これを用いてドライバの通常の動作を説明する。
【００３２】
アプリケーションプログラムからの印刷指示に従いホストコンピュータ１００でプリンタドライバが起動されると、ステップＳ５０１でアプリケーションプログラムから印刷指定されたファイルの総ページ数情報ＮＬＡＳＴを取り出す。そして、ステップＳ５０１で、これを送信用紙枚数すなわちプリンタ３００に送信すべき印刷ジョブのページ数ＮＰに格納し、ステップＳ５０２で用紙計数値すなわちページカウント数Ｎを数値“１”に初期化する。
ステップＳ５０３で印刷指定されたファイルのフォントリストとプリンタドライバにあらかじめ登録されているプリンタのフォントリストが比較され、印刷用紙Ｎ枚目のフォントがプリンタに存在しないなら、ステップＳ５０４でダウンロードフォントファイル（Ｎ枚目）を生成してステップＳ５０５に進む。
【００３３】
ステップＳ５０５で印刷用紙Ｎ枚目のプリント環境情報指定があるなら、ステップＳ５０６でプリント環境情報ファイル（Ｎ枚目）を生成してステップＳ５０７に進む。
ステップＳ５０７でプリンタへの印刷ジョブの開始と印刷用紙枚数（Ｎ）コマンドをバッファ１０９に格納（スプーリング）する。そして、ステップＳ５０８でダウンロードファイル（Ｎ枚目）をバッファ１０９にスプーリングし、ステップＳ５０９でプリント環境情報ファイル（Ｎ枚目）を同じくバッファ１０９にスプーリングする。その後、ステップＳ５１０で文字コードファイル（Ｎ枚目）を同じくバッファ１０９にスプーリングし、ステップＳ５１１に進む。
【００３４】
ステップＳ５１１では、印刷ジョブの終了か否かが判定され、終了でなければステップＳ５１２で次ページの開始を意味するコマンドをバッファ１０９にスプーリングしているかどうかが判定される。この判定が、否定（Ｎｏ）なら、ステップＳ５１０〜Ｓ５１２をループする。
一方、ステップＳ５１２の判定が肯定（Ｙｅｓ）なら、ステップＳ５１３に進み、ページカウント数ＮをインクリメントしてステップＳ５０３に進む。
【００３５】
以下、ステップＳ５１１で印刷ジョブの終了と判定されるまでＳ５０３〜Ｓ５１３をループして所定のページ数分の印刷ジョブデータがハードディスク装置（ＨＤ）１０８上のバッファ１０９にスプーリングされる。そして、ステップＳ５１１で印刷ジョブの終了と判定されると、ステップＳ５１４に進み、プリンタへの印刷ジョブの終了コマンドをバッファ１０９にスプーリングして次処理に進む。
【００３６】
図６は、印刷システムのホストコンピュータのプリンタドライバの具体例によるプリンタへの印刷ジョブデータ送信手順およびプリンタの異常電源切断・投入発生時の処理手順を示すフローチャートであり、これを用いてドライバによるプリンタの異常発生に対応した動作を説明する。
ステップＳ６０１でハードディスク装置（ＨＤ）１０８上のバッファ１０９にスプーリングされた印刷ジョブデータがあれば、ステップＳ６０２に進む。
ステップＳ６０２で入出力チャネル１０７を介してプリンタ３００から受信されるプリンタ状態情報を監視する。そして、異常を検出したらステップＳ６０３に進み、異常検出処理を行い、次処理に進む。
【００３７】
一方、ステップＳ６０２でプリンタ３００の異常を検出しなければ、ステップＳ６０４に進む。
ステップＳ６０４でプリンタ３００から受信されるプリンタ状態情報が“プリンタ非接続またはプリンタ電源断”を示していなければ、ステップＳ６０５に進む。そして、プリンタ状態データを受信可能でないなら、データ受信可能となったとき、ステップＳ６０６に進み、バッファ１０９にスプーリングされた印刷ジョブデータを取り出す。そして、それを入出力チャネル１０７を介してプリンタ３００に送信し、ステップＳ６０１に進む。
【００３８】
以下、ステップＳ６０１、Ｓ６０２、Ｓ６０４〜Ｓ６０６をループして、バッファ１０９のスプーリングデータがなくなるまで順次印刷ジョブデータを取り出して、入出力チャネル１０７を介してプリンタ３００に送信する。
上記のように、プリンタ３００に印刷ジョブデータを送信している途中で（ステップＳ６０４で）プリンタ３００から受信されるプリンタ状態情報が“プリンタ非接続またはプリンタ電源断”を検出したならば、ステップＳ６０７に進み、プリンタ状態情報が“プリンタ接続またはプリンタ電源オン”を示すのを検出するまで待つ。
【００３９】
ステップＳ６０７で“プリンタ接続またはプリンタ電源オン”を検出したならば、ステップＳ６０８に進み、入出力チャネル１０７を介してプリンタ３００からプリンタの印刷ジョブ状態情報ＰＪＳＴを入力する。そして、ステップＳ６０９でＰＪＳＴ＝“１”すなわち“印刷途中”を検出してステップＳ６１０に進む。
なお、ステップＳ６０９でプリンタの印刷ジョブ状態情報ＰＪＳＴ＝“０”を検出したならば、アプリケーションプログラムからの印刷指示をした後、初めてプリンタの電源が投入された場合に相当する。そのため、ステップＳ６０５に進み、前述した手順でバッファ１０９のスプーリングデータがなくなるまで順次印刷ジョブデータを取り出して、それを入出力チャネル１０７を介してプリンタ３００に送信する。
【００４０】
ステップＳ６１０でプリンタ３００からプリンタのページカウント情報Ｎを入力し、ステップＳ６１１でドライバのページカウント数ＮをＮ＋１に更新する。
ステップＳ６１２で印刷ジョブのページ数ＮＰをＮＰ−Ｎに更新して、次にステップＳ６１３でスプーリング用バッファ１０９を破棄して図５のステップＳ５０７に進む。
【００４１】
ここで印刷ジョブの３枚目を印刷中にプリンタ３００の電源切断・再投入が発生した場合は、ＮＰ＝２であるからステップＳ６１１でドライバのページカウント数ＮはＮ＝ＮＰ＋１＝３に更新され、ステップＳ６１２で印刷ジョブの枚数ＮＰはＮＰ＝ＮＰ−Ｎに更新される。これによって、ステップＳ５０７ではプリンタ３００への印刷ジョブの開始コマンドと印刷枚数（残りＮＰ−２枚分）をバッファ１０９にスプーリングする。そして、ステップ５０８でダウンロードファイル（Ｎ＝３枚目から）をバッファ１０９にスプーリングし、ステップＳ５０９でプリント環境情報ファイル（Ｎ＝３枚目から）をバッファ１０９にスプーリングする。その後、ステップＳ５１０で文字コードファイル（Ｎ＝３枚目から）をバッファ１０９にスプーリングし、以後前述の図５の動作説明で説明したのと同様にステップＳ５１４でのプリンタへの印刷ジョブの終了コマンドまでバッファ１０９にデータのスプーリングがされる。
【００４２】
そして、前述の図６のステップＳ６０１からステップＳ６０６の動作説明で説明したのと同様に、プリンタ３００の電源切断・再投入が発生した３枚目から最後の用紙までの印刷に必要なデータが新たな印刷ジョブとして、前述した手順でバッファ１０９にスプーリングされる。そして、そのスプーリングデータがなくなるまで順次印刷ジョブデータが取り出されて、入出力チャネル１０７を介してプリンタ３００に送信される。
【００４３】
〈プリンタ制御装置の具体例の効果〉
以上のように、上述した具体例によればプリンタに印刷指示した印刷ジョブについての印刷ジョブ状態情報を取得して印刷ジョブの異常電源切断・再投入の有無を判断し、異常電源切断・再投入検出時にそれ以降、出力途中の印刷ジョブのデータ出力を中断し、印刷ジョブの正常に印刷出力が終了したページ数（または用紙枚数）を示す情報から異常電源切断・再投入したページ（または用紙の番号）を割り出し、当該ページ以降の用紙枚数の印刷に必要なデータの印刷ジョブを生成し、当該印刷ジョブデータをプリンタに送信し印刷指示するようなプリンタドライバにしたので、印刷ジョブの途中でプリンタの電源切断が発生しても、電源再投入時に電源切断前のページから正しく印刷することができる。
【００４４】
〈プリンタの他の具体例〉
図７は、プリンタの他の具体例の説明図である。この図に示すように、図２のステップＳ２０５とＳ２０６との間にステップＳ２０５１とＳ２０５２を挿入して用紙枚数で表される用紙番号に対応したプリント環境情報を不揮発性メモリ３０９に残すようにする。
【００４５】
〈印刷方法を変更した場合〉
印刷方法には、上述した各用紙の片面にのみ１ページずつ印刷する場合以外に種々の方法があるが、基本的な考え方は、上述と同様である。
各用紙の片面に奇数ページだけを１ページずつ印刷する場合、用紙枚数＝（ページ数＋１）／２となる。よって、ページ数＝用紙枚数×２−１となる。これにより、電源異常発生後の復旧時に新たな用紙に印刷すべきページを特定できる。これらの用紙の印刷面の裏面に偶数ページだけを印刷すれば、両面印刷ができる。各用紙の片面に偶数ページだけを１ページずつ印刷する場合、用紙枚数＝ページ数／２となる。よって、ページ数＝用紙枚数×２となる。これにより、電源異常発生後の復旧時に新たな用紙に印刷すべきページを特定できる。
各用紙の片面にのみ複数のページをレイアウトして印刷する場合、用紙枚数＝ページ数／用紙当たりのページ数となる。よって、ページ数＝用紙枚数×用紙当たりのページ数となる。これにより、電源異常発生後の復旧時に新たな用紙に印刷すべきページを特定できる。
各用紙について表面に１ページ印刷し、それにつづく１ページをつづいてその裏面に印刷して両面印刷をしていく場合、例えば、ページによって印刷を制御せず、用紙によって印刷を制御する。すなわち、２ページずつの印刷データをペアにして管理し、電源異常発生後の復旧時に新たな用紙に印刷すべきページのペアを特定する。
【００４６】
〈プリンタの他の具体例の効果〉
以上のように、プリンタの他の具体例によれば印刷指示された印刷ジョブの印刷処理開始時に、不揮発性メモリに印刷ジョブ状態情報を“印刷途中”に設定し、前記印刷開始したジョブの印刷処理中に、各印刷ページのプリント環境情報（ダウンロードフォント、マクロを除く当該ページの印刷に必要な設定情報）を不揮発性メモリに記憶し、正常に印刷出力が終了した用紙枚数（またはページ数）をカウントし、当該カウント情報を不揮発性メモリに記憶し、前記印刷開始したジョブの総用紙枚数（または総ページ数）を正常印刷終了時に、前記印刷ジョブ状態情報を“印刷途中でない”旨設定記憶し、前記不揮発性メモリに記憶された前記印刷ジョブ状態情報と、前記正常に印刷出力が終了した用紙枚数（またはページ数）を上位装置に出力するようなプリンタとしたので、印刷ジョブの途中でプリンタの電源切断が発生しても、電源再投入時に電源切断前のページから正しく印刷するためのデータ再送時間を短縮することができる。
【００４７】
〈プリンタ制御装置の他の具体例〉
図８に示すように、図５のステップＳ５０９の前に判定のステップＳ５０８９を挿入してプリンタ３００から送られた状態情報が“印刷途中”を示しているときは、プリンタ３００の不揮発性メモリ３０９に環境情報が保存されているので、バッファ１０９に格納しないようにしたものである。
【００４８】
〈プリンタ制御装置の他の具体例の効果〉
以上のように、上述した他の具体例によれば、プリンタに印刷指示した印刷ジョブの印刷ジョブ状態情報を取得して印刷ジョブの異常電源切断・再投入の有無を判断し、異常電源切断・再投入検出時にそれ以降、出力途中の印刷ジョブのデータ出力を中断し、印刷ジョブの正常に印刷出力が終了したページ数（または用紙枚数）を示す情報から異常電源切断・再投入した用紙のページを割り出し、当該ページ以降の用紙枚数の印刷に必要なデータの印刷ジョブを生成し、当該印刷ジョブデータに異常電源切断・再投入発生ページのプリント環境情報（ダウンロードフォント、マクロを除く該ページの印刷に必要な設定情報）を含めずにプリンタに送信し印刷指示するようなプリンタドライバおよび印刷制御方法にしたので、印刷ジョブの途中でプリンタの電源切断が発生しても、電源再投入時に電源切断前のページから正しく印刷するためのデータ再送時間を短縮することができる。
【００４９】
〈ネットワーク上のシステムの具体例〉
ネットワーク上に設けられた上述のようなシステムにおいては、ホストから送られるデータにはホスト識別情報（ＩＰアドレスやホスト名）やファイル識別情報（ファイル名やファイル作成日時）があり、プリンタはそれらの情報もページ情報と同時に格納し、情報の送信時には、それらの情報も送信する。これによりネットワーク上に複数のホストが存在した場合でも上述のようなシステムが可能となる。
【００５０】
【発明の効果】
以上詳述したように、本発明によれば、不揮発性メモリに印刷途中の正常に印刷できた用紙の枚数を残して、電源の異常が生じ、復旧したときにそれをプリンタからホストコンピュータ側に送り出すようにしたので、ホストコンピュータ側で印刷を開始すべき用紙を正確に知ることができ、適切な印刷ができるとともに、無駄な印刷を省くことができる。
【図面の簡単な説明】
【図１】本発明の印刷システムの構成を説明するブロック図である。
【図２】プリンタの用紙計数手順を説明するフローチャートである。
【図３】プリンタの電源投入時の処理手順を説明するフローチャートである。
【図４】不揮発性メモリの内容の遷移を説明する状態遷移図である。
【図５】プリンタ制御装置の処理手順を説明するフローチャートである。
【図６】プリンタ制御装置の異常時の処理手順を説明するフローチャートである。
【図７】プリンタの他の具体例の説明図である。
【図８】プリンタ制御装置の他の具体例の説明図である。
【符号の説明】
１０１  ＣＰＵ（データ処理手段）
１０７  入出力チャネル（データ受信手段、データ送出手段）
３０１  ＣＰＵ（用紙計数手段）
３０６  入出力チャネル（データ送出手段）
３０９  不揮発性メモリ
【図１】
2005028713.tif 000003
【図２】
2005028713.tif 000004
【図３】
2005028713.tif 000005
【図４】
2005028713.tif 000006
【図５】
2005028713.tif 000007
【図６】
2005028713.tif 000008
【図７】
2005028713.tif 000009
【図８】
2005028713.tif 000010