(57)【要約】【課題】  ダイレクトプリントによるプリントを行う際に画像供給側の装置が処理に拘束される時間を短縮する。【解決手段】  ダイレクトプリント対応のプリンタ１０に、ダイレクトプリントを実行させる場合、外部のＤＳＣ２０から画像を取得させて（Ｓ１０４，Ｓ１１３）印刷を実行させる（Ｓ１２４）と共に、全ページの印刷終了を、印刷すべき画像の供給元であるＤＳＣ２０に通知させるが（Ｓ１２８）、全ページの印刷終了前に、その通知を行わせるようにした。【選択図】        図４
2006192760.tif 000002
【特許請求の範囲】
【請求項１】
ダイレクトプリント対応のプリンタであって、
外部の画像供給装置から画像を取得する取得手段と、
該手段が取得した画像の処理終了を前記画像供給装置に通知する通知手段とを有し、
Ｎを自然数として、前記取得手段が、前記通知手段によるＮ番目の画像の処理終了の通知の前に、Ｎ＋１番目の画像を取得することができるようにしたことを特徴とするプリンタ。
【請求項２】
ダイレクトプリント対応のプリンタであって、
外部の画像供給装置から画像を取得する取得手段と、
該手段が取得した画像を含むページの処理終了を前記画像供給装置に通知する通知手段とを有し、
Ｎを自然数として、前記取得手段が、前記通知手段によるＮ番目のページの処理終了の通知の前に、Ｎ＋１番目のページの画像を取得することができるようにしたことを特徴とするプリンタ。
【請求項３】
ダイレクトプリント対応のプリンタであって、
全ページの印刷終了を、印刷すべき画像の供給元に通知する通知手段を有し、
全ページの印刷終了前に、前記通知手段が前記通知を行うことができるようにしたことを特徴とするプリンタ。
【請求項４】
ダイレクトプリント対応のプリンタであって、
取得した画像又はその画像複数を含むページについて、その画像又はページについての印刷経過を前記画像の供給元に通知する通知手段を有し、
該当する画像又はページの印刷終了前に、前記通知手段がその画像又はページに関する印刷終了の通知を行うことができるようにしたことを特徴とするプリンタ。
【請求項５】
ダイレクトプリント対応のプリンタであって、
外部の画像供給装置から画像を取得してその画像の画像データを第１のバッファに格納する取得手段と、
前記第１のバッファに格納した画像データを処理する処理手段とを有し、
Ｎを自然数として、前記取得手段が、Ｎ番目の画像の画像データを前記第１のバッファに格納した後、該画像データについて前記処理手段による処理が終了する前に、Ｎ＋１番目の画像の画像データを取得することができるようにしたことを特徴とするプリンタ。
【請求項６】
ダイレクトプリント対応のプリンタであって、
第１のバッファに格納した画像データを処理し、処理後の画像データを第２のバッファに格納する処理手段と、
前記第２のバッファに格納した画像データに基づいて画像の印刷を行う印刷手段とを有し、
Ｎを自然数として、前記処理手段が、Ｎ番目の画像について処理後の画像データを前記第２のバッファに格納した後、該画像について前記印刷手段による印刷が終了する前に、Ｎ＋１番目の画像の画像データを処理することができるようにしたことを特徴とするプリンタ。
【請求項７】
請求項５記載のプリンタであって、
前記処理手段が、前記第１のバッファに格納した画像データを処理し、処理後の画像データを第２のバッファに格納する手段であり、
前記第２のバッファに格納した画像データに基づいて画像の印刷を行う印刷手段を有し、
前記処理手段が、Ｎ番目の画像について処理後の画像データを前記第２のバッファに格納した後、該画像について前記印刷手段による印刷が終了する前に、Ｎ＋１番目の画像の画像データを処理することができるようにしたことを特徴とするプリンタ。
【請求項８】
請求項７記載のプリンタであって、
前記取得手段と、前記処理手段と、前記印刷手段とが、独立したモジュールとして構成されていることを特徴とするプリンタ。
【請求項９】
ピクトブリッジ規格対応のプリンタであって、
外部の画像供給装置にGetPartialObjectコマンドを送信する手段と、
前記画像供給装置にNotifyJobStatusコマンドを送信する手段とを有し、
Ｎを自然数として、Ｎ番目の画像の処理終了を示すNotifyJobStatusコマンドを送信する前に、前記画像供給装置にGetPartialObjectコマンドを送信してＮ＋１番目の画像を取得することができるようにしたことを特徴とするプリンタ。
【請求項１０】
ピクトブリッジ規格対応のプリンタであって、
外部の画像供給装置にGetPartialObjectコマンドを送信する手段と、
前記画像供給装置にNotifyJobStatusコマンドを送信する手段とを有し、
Ｎを自然数として、Ｎ番目のページの処理終了を示すNotifyJobStatusコマンドを送信する前に、前記画像供給装置にGetPartialObjectコマンドを送信してＮ＋１番目のページの画像を取得することができるようにしたことを特徴とするプリンタ。
【請求項１１】
ピクトブリッジ規格対応のプリンタであって、
印刷すべき画像の供給元にNotifyDeviceStatusコマンドを送信する手段を有し、
全ページの印刷終了前に、上記NotifyDeviceStatusコマンドの送信を行うことができるようにしたことを特徴とするプリンタ。
【請求項１２】
ピクトブリッジ規格対応のプリンタであって、
印刷すべき画像の供給元にNotifyJobStatusコマンドを送信する手段を有し、
ある画像又はページの印刷終了前に、その画像又はページの印刷終了を示すNotifyJobStatusコマンドの送信を行うことができるようにしたことを特徴とするプリンタ。
【請求項１３】
ダイレクトプリント対応のプリンタに、
外部の画像供給装置から画像を取得させ、
その取得した画像の処理終了を前記画像供給装置に通知させ、
Ｎを自然数として、Ｎ番目の画像の処理終了の通知の前に、Ｎ＋１番目の画像を取得させるようにしたことを特徴とするプリンタの制御方法。
【請求項１４】
ダイレクトプリント対応のプリンタに、
外部の画像供給装置から画像を取得させ、
その取得した画像を含むページの処理終了を前記画像供給装置に通知させ、
Ｎを自然数として、Ｎ番目のページの処理終了の通知の前に、Ｎ＋１番目のページの画像を取得させるようにしたことを特徴とするプリンタの制御方法。
【請求項１５】
ダイレクトプリント対応のプリンタに、
全ページの印刷終了を、印刷すべき画像の供給元に通知させ、
全ページの印刷終了前に、上記通知を行わせるようにしたことを特徴とするプリンタの制御方法。
【請求項１６】
ダイレクトプリント対応のプリンタに、
取得した画像又はその画像複数を含むページについて、その画像又はページについての印刷経過を前記画像の供給元に通知させ、
該当する画像又はページの印刷終了前に、その画像又はページに関する印刷終了の通知を行わせるようにしたことを特徴とするプリンタの制御方法。
【請求項１７】
プリンタを制御するコンピュータに、
前記プリンタにダイレクトプリントによる印刷を行わせる機能と、
外部の画像供給装置から画像を取得する機能と、
その取得した画像の処理終了を前記画像供給装置に通知する機能と、
Ｎを自然数として、Ｎ番目の画像の処理終了の通知の前にＮ＋１番目の画像を取得する機能とを実現させるためのプログラム。
【請求項１８】
プリンタを制御するコンピュータに、
前記プリンタにダイレクトプリントによる印刷を行わせる機能と、
外部の画像供給装置から画像を取得する機能と、
その取得した画像を含むページの処理終了を前記画像供給装置に通知する機能と、
Ｎを自然数として、Ｎ番目のページの処理終了の通知の前に、Ｎ＋１番目のページの画像を取得する機能とを実現させるためのプログラム。
【請求項１９】
プリンタを制御するコンピュータに、
前記プリンタにダイレクトプリントによる印刷を行わせる機能と、
全ページの印刷終了を、印刷すべき画像の供給元に通知する機能と、
全ページの印刷終了前に、上記通知を行う機能とを実現させるためのプログラム。
【請求項２０】
プリンタを制御するコンピュータに、
前記プリンタにダイレクトプリントによる印刷を行わせる機能と、
取得した画像又はその画像複数を含むページについて、その画像又はページについての印刷経過を前記画像の供給元に通知する機能と、
該当する画像又はページの印刷終了前に、その画像又はページに関する印刷終了の通知を行う機能とを実現させるためのプログラム。
【請求項２１】
請求項１７乃至２０のいずれか一項記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ダイレクトプリント又はピクトブリッジ規格対応のプリンタ、このようなプリンタの制御方法、コンピュータにこのようなプリンタを制御させるためのプログラム、およびこのようなプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
近年において、デジタルスチルカメラ（ＤＳＣ）とプリンタとをパーソナルコンピュータ（ＰＣ）を介さずに直接接続し、ＤＳＣで撮像して記憶した画像を、ＰＣを用いずにプリンタにプリンタ出力させることを可能にすることが行われている。そして、このような機能は、ダイレクトプリントと呼ばれ、この機能を実現するための、ＤＳＣとプリンタの間の通信に使用される規格として、ピクトブリッジ規格（CIPA規格「CIPADC-001-2003 Digital Photo Solutions for Imaging Devices」）がＣＩＰＡ（Camera & Imaging Products Association）により公開されている。
なお、ピクトブリッジ規格に対応可能な装置は、上記のＤＳＣやプリンタには限られない。
また、このようなダイレクトプリントに関連する技術としては、例えば特許文献１に記載のものが知られている。
【特許文献１】特開２００２−９４９１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、ダイレクトプリントに対応した従来のＤＳＣとプリンタにおいて、プリンタがＤＳＣ側からの要求に従って画像をプリント出力する場合の動作は、以下のような各動作を順に実行するものである。
１．ＤＳＣから印刷要求（StartJobコマンド）を受信し、印刷要求で指定された画像名を記憶しておく。
２．１画像分の画像データをＤＳＣから取得する。
３．取得した画像データをプリントに使用できる形式のデータに変換する。
４．変換後のデータに基づいてプリントを行う。
５．１画像のプリントが終了すると、印刷経過通知をＤＳＣに送信する。
６．次の画像があれば、上記２〜５を繰り返す。
７．次の画像がなければ、印刷終了通知をＤＳＣに送信する。
【０００４】
このように、従来のプリンタは、ＤＳＣからの要求に従ってプリントを行う場合、まず１画像分の画像データを取得し、それが完了してからデータ形式の変換を行い、それが完了してからプリントを行う。そして、これらにより１画像分のプリントが全て完了してから、次の画像についてのデータ取得を開始するという動作を行っていた。従って、プリント開始からプリント完了までに、長い時間がかかっていた。
また、個々の動作に要する時間は、プリンタ、ＤＳＣあるいはそれらの間の通信路の性能や、画像のサイズや印字品質、印字手段によって異なるが、近年では画像の高画質化や画像ファイルの容量増大が進んでおり、この傾向は、処理に要する時間を増加させる方向の影響をもたらすものである。そして、ユーザからの要求として、このような高画質や大容量の画像でも高速でプリントしたいという要求があった。
【０００５】
特に、ダイレクトプリントの場合、ＤＳＣのような画像の供給側の装置は、印刷要求をプリンタに送信後、プリンタから印刷終了通知を受信するまで、印刷（画像供給）動作に拘束されてしまい、その間は他の動作ができないという問題があった。このため、プリントの高速化と同時に、画像の供給側の装置が画像供給動作に拘束されてしまう時間を短縮したいという要求もあった。
この発明は、このような要求に応えるためになされたものであり、ダイレクトプリントによるプリントを行う際に画像供給側の装置が処理に拘束される時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
上記の目的を達成するため、この発明によるプリンタは、ダイレクトプリント対応のプリンタにおいて、外部の画像供給装置から画像を取得する取得手段と、その手段が取得した画像の処理終了を上記画像供給装置に通知する通知手段とを設け、Ｎを自然数として、上記取得手段が、上記通知手段によるＮ番目の画像の処理終了の通知の前に、Ｎ＋１番目の画像を取得することができるようにしたものである。
【０００７】
また、この発明は、ダイレクトプリント対応のプリンタにおいて、外部の画像供給装置から画像を取得する取得手段と、その手段が取得した画像を含むページの処理終了を上記画像供給装置に通知する通知手段とを設け、Ｎを自然数として、上記取得手段が、上記通知手段によるＮ番目のページの処理終了の通知の前に、Ｎ＋１番目のページの画像を取得することができるようにしたプリンタも提供する。
【０００８】
また、この発明は、ダイレクトプリント対応のプリンタにおいて、全ページの印刷終了を、印刷すべき画像の供給元に通知する通知手段を設け、全ページの印刷終了前に、上記通知手段が上記通知を行うことができるようにしたプリンタも提供する。
【０００９】
また、この発明は、ダイレクトプリント対応のプリンタにおいて、取得した画像又はその画像複数を含むページについて、その画像又はページについての印刷経過を上記画像の供給元に通知する通知手段を設け、該当する画像又はページの印刷終了前に、上記通知手段がその画像又はページに関する印刷終了の通知を行うことができるようにしたプリンタも提供する。
【００１０】
あるいはまた、この発明は、ダイレクトプリント対応のプリンタであって、外部の画像供給装置から画像を取得してその画像の画像データを第１のバッファに格納する取得手段と、上記第１のバッファに格納した画像データを処理する処理手段とを設け、Ｎを自然数として、上記取得手段が、Ｎ番目の画像の画像データを上記第１のバッファに格納した後、その画像データについて上記処理手段による処理が終了する前に、Ｎ＋１番目の画像の画像データを取得することができるようにしたプリンタも提供する。
【００１１】
また、このようなプリンタにおいて、上記処理手段を、上記第１のバッファに格納した画像データを処理し、処理後の画像データを第２のバッファに格納する手段とし、上記第２のバッファに格納した画像データに基づいて画像の印刷を行う印刷手段を設け、上記処理手段が、Ｎ番目の画像について処理後の画像データを上記第２のバッファに格納した後、その画像について上記印刷手段による印刷が終了する前に、Ｎ＋１番目の画像の画像データを処理することができるようにするとよい。
また、このようなプリンタにおいて、上記取得手段と、上記処理手段と、上記印刷手段とを、独立したモジュールとして構成するとよい。
【００１２】
また、この発明は、ダイレクトプリント対応のプリンタにおいて、第１のバッファに格納した画像データを処理し、処理後の画像データを第２のバッファに格納する処理手段と、上記第２のバッファに格納した画像データに基づいて画像の印刷を行う印刷手段とを設け、Ｎを自然数として、上記処理手段が、Ｎ番目の画像について処理後の画像データを上記第２のバッファに格納した後、その画像について上記印刷手段による印刷が終了する前に、Ｎ＋１番目の画像の画像データを処理することができるようにしたプリンタも提供する。
【００１３】
また、この発明は、ピクトブリッジ規格対応のプリンタにおいて、外部の画像供給装置にGetPartialObjectコマンド送信する手段と、上記画像供給装置にNotifyJobStatusコマンドを送信する手段とを設け、Ｎを自然数として、Ｎ番目の画像の処理終了を示すNotifyJobStatusコマンドを送信する前に、上記画像供給装置にGetPartialObjectコマンドを送信してＮ＋１番目の画像を取得することができるようにしたプリンタも提供する。
【００１４】
また、この発明は、ピクトブリッジ規格対応のプリンタにおいて、外部の画像供給装置にGetPartialObjectコマンド送信する手段と、上記画像供給装置にNotifyJobStatusコマンドを送信する手段とを設け、Ｎを自然数として、Ｎ番目のページの処理終了を示すNotifyJobStatusコマンドを送信する前に、上記画像供給装置にGetPartialObjectコマンドを送信してＮ＋１番目のページの画像を取得することができるようにしたプリンタも提供する。
【００１５】
また、この発明は、ピクトブリッジ規格対応のプリンタにおいて、印刷すべき画像の供給元にNotifyDeviceStatusコマンドを送信する手段を設け、全ページの印刷終了前に、上記NotifyDeviceStatusコマンドの送信を行うことができるようにしたプリンタも提供する。
【００１６】
また、この発明は、ピクトブリッジ規格対応のプリンタにおいて、印刷すべき画像の供給元にNotifyJobStatusコマンドを送信する手段を設け、ある画像又はページの印刷終了前に、その画像又はページの印刷終了を示すNotifyJobStatusコマンドの送信を行うことができるようにしたプリンタも提供する。
【００１７】
また、この発明のプリンタの制御方法は、ダイレクトプリント対応のプリンタに、外部の画像供給装置から画像を取得させ、その取得した画像の処理終了を上記画像供給装置に通知させ、Ｎを自然数として、Ｎ番目の画像の処理終了の通知の前に、Ｎ＋１番目の画像を取得させるようにしたものである。
【００１８】
また、この発明は、ダイレクトプリント対応のプリンタに、外部の画像供給装置から画像を取得させ、その取得した画像を含むページの処理終了を上記画像供給装置に通知させ、Ｎを自然数として、Ｎ番目のページの処理終了の通知の前に、Ｎ＋１番目のページの画像を取得させるようにするプリンタの制御方法も提供する。
【００１９】
また、この発明は、ダイレクトプリント対応のプリンタに、全ページの印刷終了を、印刷すべき画像の供給元に通知させ、全ページの印刷終了前に、上記通知を行わせるようにするプリンタの制御方法も提供する。
【００２０】
また、この発明は、ダイレクトプリント対応のプリンタに、取得した画像又はその画像複数を含むページについて、その画像又はページについての印刷経過を上記画像の供給元に通知させ、該当する画像又はページの印刷終了前に、その画像又はページに関する印刷終了の通知を行わせるようにするプリンタの制御方法も提供する。
【００２１】
また、この発明のプログラムは、プリンタを制御するコンピュータに、上記プリンタにダイレクトプリントによる印刷を行わせる機能と、外部の画像供給装置から画像を取得する機能と、その取得した画像の処理終了を上記画像供給装置に通知する機能と、Ｎを自然数として、Ｎ番目の画像の処理終了の通知の前にＮ＋１番目の画像を取得する機能とを実現させるためのプログラムである。
【００２２】
また、この発明は、プリンタを制御するコンピュータに、上記プリンタにダイレクトプリントによる印刷を行わせる機能と、外部の画像供給装置から画像を取得する機能と、その取得した画像を含むページの処理終了を上記画像供給装置に通知する機能と、Ｎを自然数として、Ｎ番目のページの処理終了の通知の前に、Ｎ＋１番目のページの画像を取得する機能とを実現させるためのプログラムも提供する。
【００２３】
また、この発明は、プリンタを制御するコンピュータに、上記プリンタにダイレクトプリントによる印刷を行わせる機能と、全ページの印刷終了を、印刷すべき画像の供給元に通知する機能と、全ページの印刷終了前に、上記通知を行う機能とを実現させるためのプログラムも提供する。
【００２４】
また、この発明は、プリンタを制御するコンピュータに、上記プリンタにダイレクトプリントによる印刷を行わせる機能と、取得した画像又はその画像複数を含むページについて、その画像又はページについての印刷経過を上記画像の供給元に通知する機能と、該当する画像又はページの印刷終了前に、その画像又はページに関する印刷終了の通知を行う機能とを実現させるためのプログラムも提供する。
【００２５】
また、この発明の記録媒体は、上記のいずれかのプログラムを記録したコンピュータ読取可能な記録媒体である。
【発明の効果】
【００２６】
以上のようなこの発明のプリンタ又はプリンタの制御方法によれば、ダイレクトプリントによるプリントを行う際に画像供給側の装置が処理に拘束される時間を短縮することができる。
また、この発明のプログラムによれば、コンピュータにプリンタを制御させて上記のプリンタの特徴を実現し、同様な効果を得ることができる。
この発明の記録媒体によれば、上記のプログラムを記憶していないコンピュータにそのプログラムを読み出させて実行させ、上記の効果を得ることができる。
【発明を実施するための最良の形態】
【００２７】
以下、この発明を実施するための最良の形態について、図面を参照して説明する。
〔実施形態のハードウェア構成：図１，図２〕
まず、この発明のプリンタの実施形態のハードウェア構成について説明する。図１は、そのプリンタの構成を示したブロック図である。
図１に示すように、この発明のプリンタの実施形態であるプリンタ１０は、ＣＰＵ１１，ＲＯＭ１２，ＲＡＭ１３，不揮発メモリ１４，通信Ｉ／Ｆ１５，エンジン部１６を備え、これらがシステムバス１７によって接続されている。
【００２８】
ＣＰＵ１１は、プリンタ１０全体を統括制御する制御手段であり、ＲＯＭ１２や不揮発メモリ１４に記録された種々のプログラムを実行することにより、取得手段，通知手段，処理手段，印刷手段等の各手段として機能し、後述するようなこの実施形態の特徴に係る種々の機能を実現する。
ＲＯＭ１２は、不揮発性の記憶手段であり、ＣＰＵ１１が実行するプログラムや、固定的なパラメータ等を記憶する。ＲＯＭ１２を書き換え可能な記憶手段として構成し、これらのデータをアップデートできるようにしてもよい。
【００２９】
ＲＡＭ１３は、一時的に使用するデータを記憶したり、ＣＰＵ１１のワークメモリや、後述する第１及び第２のバッファとして使用したりする記憶手段である。
不揮発メモリ１４は、ＮＶＲＡＭ（不揮発ＲＡＭ）やＨＤＤ（ハードディスクドライブ）等による書き換え可能な不揮発性記憶手段であり、ＣＰＵ１１が実行するプログラムや、装置の電源がＯＦＦされた後でも保持しておく必要があるパラメータの値等を記憶する。
【００３０】
通信インタフェース（Ｉ／Ｆ）１５は、プリンタ１０を外部機器と接続するためのインタフェースであり、例えばＵＳＢ（Universal Serial Bus）方式あるいはＩＥＥＥ１３９４（Institute of Electrical and Electronic Engineers 1394）方式等の通信を行うためのインタフェースである。なお、通信Ｉ／Ｆとしては、これら以外にも、有線、無線を問わず種々の方式のものが使用可能であり、ＬＡＮ（ローカルエリアネットワーク）等に接続してネットワーク通信を可能とするＩ／Ｆを用いることも可能である。
【００３１】
エンジン部１６は、ここでは電子写真方式で用紙に画像を形成する画像形成手段であり、ＣＰＵ１１がエンジン部１６の動作を適切に制御することにより、プリンタ１０にプリント動作を実行させることができる。なお、この部分の構成は、この実施形態の特徴とはあまり関係ないため、図示は簡単なものに留めている。
【００３２】
ところで、このプリンタ１０は、ダイレクトプリントに対応したプリンタである。そして、図２に示すように、画像供給装置である外部のデジタルスチルカメラ（ＤＳＣ）２０とＰＣを介さずに接続し、ＤＳＣ２０から画像データを取得してその画像データに基づいて用紙に画像を形成することができる。
【００３３】
この際の通信は、通信Ｉ／Ｆ１５を介して行うが、ＤＳＣ２０との間の通信路３０は、ＵＳＢケーブルやＩＥＥＥ１３９４ケーブル、ＬＡＮケーブル等の有線のものであっても、赤外線通信や無線ＬＡＮ等の無線のものであってもよい。また、１対１通信用のものであっても、ネットワーク通信用のものであってもよい。さらに、ＤＳＣ２０側の通信Ｉ／Ｆとプリンタ１０側の通信Ｉ／Ｆ１５とを、ケーブル等を介さずに直接接続するようにすることも考えられる。
【００３４】
また、ＤＳＣ２０のハードウェア構成をブロック図で記載すると、概ね図１に示したプリンタの場合と同様なものとなる。これらの装置は実際には外観や構成が大きく異なるものであるが、その差はエンジン部の詳細や図示しない外装等に表われるものであり、ＣＰＵ，ＲＯＭ，ＲＡＭ等は、容量や処理能力等の差はあれ、同様なものを使用することができる。
【００３５】
また、プリンタ１０は、ピクトブリッジ規格におけるイメージアウトプットデバイスに該当し、ダイレクトプリントを行う際には、ピクトブリッジ規格に従った通信を行う機能を有するＤＳＣ２０（ピクトブリッジ規格におけるイメージソースデバイスに該当する）との間で、適切にコマンドやデータを送受信して印刷動作を実行可能である。そして、プリンタ１０は、この意味でピクトブリッジ規格に対応している。また、プリンタ１０にダイレクトプリントによる印刷を要求する画像供給装置は、ピクトブリッジ規格に従った通信が可能な画像供給装置であれば、ＤＳＣ２０に限られない。例えば、画像データを記憶したフラッシュメモリに、通信用のマイクロコンピュータと画像供給指示用の簡単な操作子とを付加したようなユニットでも構わない。
【００３６】
〔比較例の動作：図１３，図１４〕
ここで、図１３及び図１４に、比較例として、ピクトブリッジ規格及びダイレクトプリントに対応した従来のプリンタであるプリンタ４０が、ピクトブリッジ規格に対応したＤＳＣ２０からの要求によりダイレクトプリントを行う場合の処理シーケンスを示す。
なお、ピクトブリッジ規格に従った通信においては、画像供給側の装置が最初にプリンタにプリントを要求する際に、互いがピクトブリッジ規格に対応していることおよび互いの有する機能を確認する、ネゴシエーションの手順（Discovery, Configure, GetCapacityの手順）を実行するが、この手順は実施形態の特徴とはあまり関係ないので、この比較例でも、以下に説明する実施形態の動作でも、図示及び説明は省略する。
【００３７】
この例においては、ユーザがＤＳＣ２０とプリンタ４０とを接続し、ＤＳＣ２０を操作して印刷すべき画像を指定し、ダイレクトプリントの実行を指示すると、図１３に示すように、ＤＳＣ２０がプリンタ４０にStartJob（スタートジョブ）コマンドを送信する（Ｓ４０１）。このとき、StartJobコマンドと共に、印刷すべき画像のファイルの名称やＩＤ、印刷の書式（１ページ当たりの画像数やプリントサイズ等）等を示すジョブデータも送信する。また、このコマンドは、ＤＳＣ２０がプリンタ４０にダイレクトプリント動作の開始を要求する印刷要求といった位置づけのコマンドである。
【００３８】
そして、プリンタ４０は、ダイレクトプリントが実行できる状態であれば、これに対して印刷要求応答としてＯＫを返す（Ｓ４０２）と共に、受信したジョブデータを記憶する（Ｓ４０３）。
【００３９】
その後、プリンタ４０は、NotifyJobStatus（ノーティファイジョブステータス）コマンドをＤＳＣ２０に送信する（Ｓ４０４）。このコマンドは、印刷の進行状況を示す印刷経過通知といった位置づけのものであり、「ページ１画像０」が印刷の進行状況を示す情報である。そして、「ページ１」は、１ページ目の印刷を完了したことを示し、「画像０」は、印刷が終了した画像の枚数が０であることを示す。すなわち、「ページＸ」であれば、Ｘページ目の印刷を実行中であることを示し、「画像Ｙ」であれば、印刷が終了した画像の枚数がＹであることを示す。なお、「ページ１画像０」のNotifyJobStatusコマンドは、形式的なものであり、実質的にはこれからダイレクトプリントに係る動作を開始することを示す通知である。
【００４０】
また、ステップＳ４０４の後、プリンタ４０は、最初の画像のファイルＩＤを指定してGetObjectInfo（ゲットオブジェクトインフォ）コマンドを送信する。このコマンドは、指定したファイルＩＤに対応した画像ファイルの情報、例えばファイルサイズの転送を要求するファイル情報要求といった位置づけのコマンドである。そして、これに対してＤＳＣ２０は、応答として、送信したファイルＩＤに対応するファイルサイズの情報を送信する（Ｓ４０６）。そして、プリンタ４０はそのファイルサイズの情報を記憶する。
【００４１】
そしてその後、ＤＳＣ２０に対してGetPartialObject（ゲットパーシャルオブジェクト）コマンドを送信する（Ｓ４０８）。このコマンドは、ＤＳＣ２０に対して印刷すべき画像の画像データの転送を要求する画像データ要求といった位置づけのコマンドであり、画像ファイルのＩＤと収集するデータのサイズとオフセット値（初回は０）を指定して送信する。これに対して、ＤＳＣ２０は、オフセット値で指定された画像ファイルのオフセット位置から、指定されたサイズ分の画像データを、プリンタ４０に送信する（Ｓ４０９）。この送信は、何度かに分けて行うこともある。そして、プリンタ４０は受信した画像データを所定のメモリに記憶する（Ｓ４１０）。
【００４２】
そして、プリンタ４０が１ページ分の画像データを取得できるまで、GetPartialObjectコマンド送信時のオフセット値を取得済みの画像データサイズ分ずらしながらステップＳ４０８〜Ｓ４１０と同じ処理を繰り返し（Ｓ４１１〜Ｓ４１３）、１ページ分の画像データが取得できると（総サイズがステップＳ４０６での応答により既知であり、１回のGetPartialObjectコマンドの送信に応じて取得するデータサイズも既知であるから、必要な回数のコマンドと対応する転送の完了により取得完了を認識できる）、処理は図１４に示した部分に進み、取得した画像データのチェックとデコード処理を行う（Ｓ４１４）。ここで、チェック処理は、画像データに破損等がなく正常なものであることを確認する処理、デコード処理は、ＤＳＣ２０から受信したＪＰＥＧ（Joint Photographic Experts Group）形式等のデータを、プリントエンジンの制御に使用できる形式のデータ、例えばビットマップ形式のデータに変換する処理である。
【００４３】
そして、チェック及びデコードの処理が完了すると、デコード後のデータを用いて印刷処理を行い、用紙に画像を形成する（Ｓ４１５）。
そして、以上により１ページ分の画像（ここでは１画像とする）の形成に係る動作が全て完了した後、プリンタ４０は、「ページ１画像１」のNotifyJobStatusコマンドをＤＳＣ２０に送信して１ページかつ１画像の印刷が終了したことを通知する（Ｓ４１６）。
ここで、まだ印刷すべき画像があればステップＳ４０５〜Ｓ４１６の処理を繰り返すが、StartJobコマンドで要求された全ての画像の印刷が終了していれば、プリンタ４０はＤＳＣにNotifyDeviceStatus（ノーティファイデバイスステータス）コマンドを送信して（Ｓ４１７）処理を終了する。このコマンドは、要求された印刷処理を完了（全ページ全画像の印刷を終了）したことを通知する印刷終了通知といった位置づけのコマンドである。
【００４４】
一方、ＤＳＣ２０側では、ステップＳ４０１でStartJobコマンドを送信した後は、プリンタ４０からのGetObjectInfoコマンドに応じてファイルサイズの情報を送信したり、GetPartialObjectコマンドに応じて画像データの送信を行ったりするため、コマンド受信待機状態となり、ダイレクトプリント以外の動作は行わないようにしているが、ステップＳ４１７でNotifyDeviceStatusコマンドを受信すると、もはや受信待機を行う必要がないことがわかるので、受信待機状態を解除し、撮影等の他の動作を行うことができる状態に復帰する。
【００４５】
従来のプリンタ４０は、以上のような手順により、ダイレクトプリントによる印刷動作を行っていた。すなわち、画像データの受信とデコードと印刷を、順次に行い、これらが全て完了した後で、印刷したページについてのNotifyJobStatusコマンドを送信するようにしていた。また、次のページについての画像データの取得は、そのNotifyJobStatusコマンドの送信より更に後に開始するし、NotifyDeviceStatusコマンドの送信は、最後のページについてのNotifyJobStatusコマンドの送信後であるから、全てのページについての印刷動作が完全に終了してから送信することになっていた。従って、ＤＳＣ２０がStartJobコマンドを送信してからNotifyDeviceStatusコマンドを受信するまでの時間が長くなり、その分ダイレクトプリント動作に拘束される時間が長くなってしまうことになる。
【００４６】
〔実施形態の動作：図３乃至図１２〕
一方、この発明の実施形態であるプリンタ１０においては、ダイレクトプリントを実行する際に、Ｎを自然数として、ＤＳＣ２０にＮ番目のページの処理終了を示すNotifyJobStatusコマンドを送信する前に、GetPartialObjectコマンドを送信してＮ＋１番目のページの画像を取得することができるようにし、また、全ページの印刷終了前に、NotifyDeviceStatusコマンドの送信を行うことができるようにし、また、ある画像又はページの印刷終了前に、その画像又はページの印刷終了を示すNotifyJobStatusコマンドの送信を行うことができるようにしている。
【００４７】
ここで、図３に、図１に示したプリンタの機能構成のうち、このような動作を可能とするための機能構成を示す。
図３に示すように、プリンタ１０においては、ダイレクトプリントを実行するための機能モジュールを、通信制御モジュール１０１，画像処理モジュール１０２，画像描画モジュール１０３の独立した３つのモジュールとして構成し、これらが並列に処理を実行できるようにしている。
【００４８】
そして、通信制御モジュール１０１には、ＤＳＣ２０のような画像供給装置との間で通信を行い、印刷すべき画像の画像データを取得して第１のバッファ１１１に書き込む機能を設けている。さらに、画像供給装置に種々の通知を行う機能も設けている。また、画像処理モジュール１０２には、第１のバッファ１１１から画像データを読み出し、上述のチェック及びデコードの処理を行って、デコード後の画像データを第２のバッファ１１２に書き込む機能を設けている。そして、画像描画モジュール１０３には、第２のバッファ１１２からデコード後の画像データを読み出し、その画像データに基づいてエンジン部１６を駆動して印刷を実行する機能を設けている。
【００４９】
なお、これらのモジュールは、それぞれソフトウェアとして構成し、ＣＰＵ１１にこれを実行させることにより、各モジュールの機能を実現させるようにすることが考えられる。そして、ここではこのような構成としているが、以下の説明においては、説明を簡単にするため、ＣＰＵ１１がこれらのモジュールに係るソフトウェアを実行することにより行う動作を、これらのモジュールが実行するものとして説明する。
また、第１及び第２のバッファ１１１，１１２は、例えばＲＡＭ１３に設ければよい。また、別々のメモリユニットとして設ける必要はなく、１つのメモリユニット内に設けてよい。さらに、各バッファとして使用するアドレス領域を動的に変化させられるようにしてもよい。
【００５０】
次に、図４乃至図８に、このようなプリンタ１０が、ピクトブリッジ規格に対応したＤＳＣ２０からの要求によりダイレクトプリントを行う場合の種々の処理シーケンスを示す。
まず、図４に、１画像からなるページを１ページ印刷する場合の処理シーケンス、すなわち図１３に示した比較例と同様な印刷を行う場合の処理シーケンスの例を示す。
【００５１】
この場合、ユーザがＤＳＣ２０とプリンタ１０とを接続し、ＤＳＣ２０を操作して印刷すべき画像を指定し、ダイレクトプリントの実行を指示すると、図４に示すように、ＤＳＣ２０がプリンタ１０にStartJobコマンドとジョブデータとを送信する（Ｓ１０１）。そして、プリンタ１０側では通信制御モジュール１０１がこれを受け取り、プリンタ１０がダイレクトプリントが実行できる状態であれば、通信制御モジュール１０１がこれに応答すると共に（Ｓ１０２）ジョブデータを所定のワークエリアに記憶し（Ｓ１０３）、さらに図１３のステップＳ４０４の場合と同様な「ページ１画像０」のNotifyJobStatusコマンドをＤＳＣ２０に送信する（Ｓ１０４）。また、ステップＳ１０３の処理において、通信制御モジュール１０１が使用するワークエリアにもジョブデータを書き込むようにしてもよい。
【００５２】
そして、ステップＳ１０４の後、通信制御モジュール１０１が、ＤＳＣ２０に対して最初の画像ファイルについてのGetObjectInfoコマンドを送信すると（Ｓ１０５）、ＤＳＣ２０は、これに応じて、その画像ファイルのファイルサイズの情報を送信してくるので、通信制御モジュール１０１がこれを受信し（Ｓ１０６）、第１のバッファ１１１に書き込む（Ｓ１０７）。このとき、ワークエリアにも別途記憶しておくようにしてもよい。
なお、ステップＳ１０４での最初のNotifyJobStatusコマンドの送信と、以上のステップＳ１０５乃至Ｓ１０７の処理は、どちらを先に行うようにしてもよい。
【００５３】
その後、通信制御モジュール１０１が、ＤＳＣ２０に対して最初の画像のファイルＩＤと、取得サイズ及びオフセットを指定してGetPartialObjectコマンドを送信すると（Ｓ１０８）、ＤＳＣ２０は、これに応じて対応する画像データを指定したサイズ分送信してくるので、通信制御モジュール１０１がこれを受信する（Ｓ１０９）。このような、GetPartialObjectコマンドの送信及び画像データの受信処理が、画像供給装置からの画像の取得に該当し、この処理においてＣＰＵ１１が取得手段として機能する。
【００５４】
また、通信制御モジュール１０１は、ステップＳ１０９で受信した画像データを第１のバッファ１１１に書き込むと共に（Ｓ１１０）、画像処理モジュール１０２に対し、印刷すべき画像の画像データを書き込んだ旨を示す画像データ通知を行う（Ｓ１１１）。
そして、画像処理モジュール１０２は、この通知を受けると、通信制御モジュール１０１が第１のバッファ１１１に書き込んだ画像データを収集し（Ｓ１１２）、このデータに対してチェック及びデコードの処理を行って（Ｓ１１３）、デコード後の画像データを第２のバッファ１１２に書き込む（Ｓ１１４）。ここで、チェック及びデコードの処理は上述した図１３のステップＳ４１４の場合と同様であり、これらのステップＳ１１３及びＳ１１４のような処理において、ＣＰＵ１１が処理手段として機能する。
【００５５】
なお、このデコードの処理に、画像のレイアウトやページ付け等の処理を含めてもよい。また、チェックとデコードの処理は、通信制御モジュール１０１から画像データ通知を受ける度に行ってもよいが、１度に書き込まれるサイズのデータでは処理に不適当な場合等、複数回通知を受けた後、その複数回の書き込み分のデータについて一括して処理を行うようにしてもよい。
【００５６】
そして、以上のステップＳ１０８乃至Ｓ１１４の処理を、GetPartialObjectコマンド送信時のオフセット値を取得済みの画像データサイズ分ずらしながら１画像分の画像データを第２のバッファ１１２に書き込むまで繰り返す（Ｓ１１５〜Ｓ１２１）。なお、画像処理モジュール１０２が第１のバッファ１１１から画像データを収集するタイミングと、通信制御モジュール１０１が次の画像データを取得するタイミングとの前後関係は、特に管理する必要はない。単に、通信制御モジュール１０１が、画像処理モジュール１０２が未収集の画像データに新たな画像データを上書きしてしまわないようにすればよい。
【００５７】
また、画像処理モジュール１０２も、通信制御モジュール１０１が第１のバッファ１１１に書き込んだファイルサイズの情報を参照できるので、何回の画像データ通知と対応する処理で１画像分の画像データの処理を完了できるかは、そのファイルサイズの情報に基づいて把握することができる。さらに、ここでは１ページに画像は１つのみであるから、１画像分の画像データの処理完了は、１ページ分の画像データの処理完了にも該当する。
【００５８】
そして、画像処理モジュール１０２は、１ページ分の画像データの第２のバッファ１１２への書き込みが終了したことを検出すると、画像描画モジュール１０３に対し、１ページ分の印刷の実行を指示する旨の画像描画指示を行う（Ｓ１２２）。
すると、画像描画モジュール１０３はこれに応じて第２のバッファ１１２からデコード後の１ページ分の画像データを収集し（Ｓ１２３）、その画像データに基づいてエンジン部１６を駆動して用紙に画像を形成させる印刷処理を行う（Ｓ１２４）。これらの処理においては、ＣＰＵ１１が印刷手段として機能する。
【００５９】
一方、画像処理モジュール１０２は、１画像分の画像データの処理が終了したことを検出すると、通信制御モジュール１０１に対し、現在処理中のページの番号（ここでは「１」）及び書き込みを完了した画像の数（ここでは「１」）を通知する処理経過通知を行う（Ｓ１２５）。
【００６０】
すると、通信制御モジュール１０１は、これに応じて、そのページ番号及び画像の数を通知するNotifyJobStatusコマンドをＤＳＣ２０に送信する（Ｓ１２６）。このコマンドは、取得した画像又はその画像複数を含むページについて、その画像又はページについての印刷経過を画像の供給元に通知するものであり、この処理において、ＣＰＵ１１は通知手段として機能する。
【００６１】
なお、画像処理モジュール１０２において、ステップＳ１２２の画像描画通知とステップＳ１２５の処理経過通知の前後関係を管理する必要はない。ここではたまたま前者が先になった例を示しているが、この前後関係が逆転しても全く問題ない。そして、画像描画モジュール１０３及び通信制御モジュール１０１は、それぞれの通知に応じて対応する動作を行うのみであり、互いの動作は独立して行われる。
【００６２】
一方、上記のNotifyJobStatusコマンドは、図１３のステップＳ４０４やＳ４１６において説明した通り、通常のピクトブリッジ規格においては、印刷が完了したページ数と画像数を通知するコマンドであり、受信した側のＤＳＣ２０はこの意味に解釈する。従って、通信制御モジュール１０１は、画像描画モジュール１０３における印刷処理の完了を確認せずに、印刷対象の画像又はページに関する印刷終了の通知を行うことになる。
【００６３】
また、画像処理モジュール１０２は、全画像の第２のバッファ１１２への書き込みが終了したことを検出すると、通信制御モジュール１０１に対し、そのことを示す処理終了通知を行う。すると、通信制御モジュール１０１は、これに応じて、NotifyDeviceStatusコマンドをＤＳＣ２０に送信する（Ｓ１２８）。この処理においても、ＣＰＵ１１は通知手段として機能する。
【００６４】
なお、このNotifyDeviceStatusコマンドは、図１３のステップＳ４１７において説明した通り、通常のピクトブリッジ規格においては、全ページ全画像の印刷終了を通知するコマンドであり、受信した側のＤＳＣ２０はこの意味に解釈する。従って、通信制御モジュール１０１は、画像描画モジュール１０３における印刷処理の完了を確認せずに、全ページ印刷終了の通知も行うことになる。
【００６５】
プリンタ１０をこのように動作させるようにしたことにより、ＤＳＣ２０は、プリンタ１０における印刷処理が完了しなくても、画像データの処理が完了した時点でNotifyDeviceStatusコマンドを受け取り、そしてこのことによりダイレクトプリントに係る動作から開放されることになる。従って、印刷処理が完了するまでNotifyDeviceStatusコマンドを受け取れない場合に比べ、ダイレクトプリントによるプリントを行う際に処理に拘束される時間を短縮することができる。
【００６６】
一方、画像データのデコード及び第２のバッファ１１２への書き込みが終了していれば、その後印刷処理が失敗しても、プリンタ１０側に記憶しているデータで復旧可能な場合が多く、ＤＳＣ２０側から再度画像データを取得する必要が生じることはあまりないと考えられるので、印刷処理の完了を確認せずに印刷終了の通知を行ったとしても、大きな問題は生じないと考えられる。
【００６７】
また、NotifyDeviceStatusコマンドは、ＤＳＣ２０においてダイレクトプリントに係る処理の最後に受信されるべきものであるから、画像処理モジュール１０２は、ステップＳ１２５の処理経過通知をステップＳ１２７の処理終了通知よりも前に行うようにし、このことにより、通信制御モジュールに１０１よるNotifyJobStatusコマンドの送信も、NotifyDeviceStatusコマンドの送信よりも前に行われるようにしている。
【００６８】
従って、NotifyDeviceStatusコマンドを早い時期に送信するためには、その前のNotifyJobStatusコマンドも早い時期に送信することは重要であり、通信制御モジュール１０１が、画像描画モジュール１０３における印刷処理の完了を確認せずにNotifyJobStatusコマンドを送信するようにすることも、拘束時間の短縮に効果があると言える。
なお、このような処理が可能となったのは、プリンタ１０とＤＳＣ２０との間の通信、受信した画像の処理、及び処理後の画像のプリントの機能を、それぞれ独立したモジュールにより実現し、これらの処理を並列に行うことができるようにしたためである。
【００６９】
次に、図５及び図６に、２画像からなるページを１ページ印刷する場合の処理シーケンスの例を示す。これらの図の説明において、図４において上述した処理と対応する部分については、説明を簡単にするか省略する。
この場合も、ステップＳ２０１〜Ｓ２１４の、StartJobコマンドからプリンタ１０によるデコード後画像データの記憶までの処理は、図４のステップＳ１０１〜Ｓ１１４の場合と同様である。しかし、この例では、ステップＳ２１４で１画像分の画像データの書き込みが終了したため、画像処理モジュール１０２が通信制御モジュール１０１に対し、１ページ目を処理中であり、書き込みを完了した画像の数は１である旨の処理経過通知を行う（Ｓ２１５）。すると、通信制御モジュール１０１は、これに応じて、そのページ番号及び画像の数を通知するNotifyJobStatusコマンドをＤＳＣ２０に送信する（Ｓ２１６）。
【００７０】
一方、ＤＳＣ２０から取得すべき画像データはまだ残っているため、通信制御モジュール１０１は、引き続きＤＳＣ２０にGetPartialObjectコマンドを送信して画像データを取得し、画像処理モジュール１０２も、新たに第１のバッファに書き込まれたデータの処理を行う（Ｓ２１７〜Ｓ２２６）。これらの処理のうち、ステップＳ２２５とＳ２２６の部分は続きの図６に示している。
なお、ここではGetObjectInfoコマンドの送信とファイルサイズの取得及び書き込みは、画像ファイル毎に行うようにしており、新たな画像（画像ファイル）に係る画像データの取得を行う際には、その画像ファイルのＩＤを用いてその画像ファイルのサイズの情報を取得すると共に第１のバッファ１１１に書き込むようにしている（Ｓ２１７〜Ｓ２１９）。また、次に画像データを取得すべき画像ファイルのＩＤは、ステップＳ２０３で記憶したジョブデータから認識することができる。
【００７１】
この場合において、通信制御モジュール１０１が行う画像データ通知（Ｓ２２３）までの処理は、画像処理モジュール１０２におけるデコードの進行状況、例えば処理経過通知の受信やNotifyJobStatusコマンドの送信とは関係なく、通常は連続的に行う。従って、ある画像について処理が完了した旨のNotifyJobStatusコマンドを送信する前に、次の画像の画像データの取得を行うことになる。一方、NotifyJobStatusコマンドは、通常のピクトブリッジ規格においては、印刷が完了したページ数と画像数を通知するコマンドであるから、上記のような制御は、Ｎ（自然数）番目の画像の処理終了の通知の前に、Ｎ＋１番目の画像を取得することを可能にするものであると言える。
【００７２】
そして、このことにより、前の画像の画像データの受信後、チェックやデコード及び第２のバッファ１１２への書き込みの完了を待たずに次の画像の画像データの受信を行うことができるから、処理の待ち時間を短縮し、全体的に処理時間を短縮し、ダイレクトプリントによるプリントを行う際にＤＳＣ２０が処理に拘束される時間を短縮することができる。
【００７３】
なお、画像処理モジュール１０２の側でも、処理経過通知（Ｓ２１５）を行ってしまえば、その後のNotifyJobStatusコマンドの送信は確認せずに次の画像についての処理（Ｓ２２４〜Ｓ２２６）に進むようにしている。すなわち、処理経過通知に関連する処理は、順次画像データを受信してチェック・デコードする処理の流れに割り込む形で行うことになる。
【００７４】
次に、処理は図６に示す部分に進むが、通信制御モジュール１０１と画像処理モジュール１０２は、１ページ分の画像全て（ここでは２画像）の画像データについて、デコードと第２のバッファ１１２への書き込みが完了するまで、GetPartialObjectコマンドの送信から第２のバッファ１１２への書き込みまでの処理を繰り返す（Ｓ２２７〜Ｓ２３３）。そして、これが完了した時点で、画像処理モジュール１０２は、１画像分の画像データの書き込みが完了したこと、１ページ分の画像データの書き込みが完了したこと、および全画像の書き込みが完了したことを認識する。
【００７５】
以降の３つの処理は、画像処理モジュール１０２がこれらの状況発生を認識した際にそれぞれ行うものであるが、処理経過通知を処理終了通知よりも前に行うようにすれば、これらの処理をどの順で行うかは任意である。
これらの処理としては、まず、画像処理モジュール１０２は、１画像分の画像データの書き込み完了と対応して、通信制御モジュール１０１に現在処理中のページの番号及び書き込みを完了した画像の数を通知する処理経過通知を送信する（Ｓ２３４）。そして、通信制御モジュール１０１は、これに応じて、そのページ番号及び画像の数を通知するNotifyJobStatusコマンドをＤＳＣ２０に送信する（Ｓ２３５）。この処理は、書き込み済み画像数が２である点以外は、図４のステップＳ１２５，Ｓ１２６の場合と同様である。
【００７６】
また、画像処理モジュール１０２は、１ページ分の画像データの第２のバッファ１１２への書き込み完了と対応して、画像描画モジュール１０３に対し、１ページ分の印刷の実行を指示する旨の画像描画指示を行う（Ｓ２３６）。そして、これに応じて画像描画モジュール１０３が１ページ分の印刷処理を行うこと（Ｓ２３７，Ｓ２３８）は、図４のステップＳ１２２〜Ｓ１２４の場合と同様である。
【００７７】
そして、画像処理モジュール１０２は、全画像の第２のバッファ１１２への書き込み完了と対応して、通信制御モジュール１０１に処理終了通知を送信する（Ｓ２３９）。そして、通信制御モジュール１０１は、これに応じて、NotifyDeviceStatusコマンドをＤＳＣ２０に送信する（Ｓ２４０）。この処理は、図４のステップＳ１２７，Ｓ１２８の場合と同様である。
２画像からなるページを１ページ印刷する場合には、プリンタ１０は、以上のような動作を行う。
【００７８】
次に、図７及び図８に、１画像からなるページを２ページ印刷する場合の処理シーケンスの例を示す。これらの図の説明において、図４乃至図６において上述した処理と対応する部分については、説明を簡単にするか省略する。
この場合も、ステップＳ３０１〜Ｓ３１４の、StartJobコマンドからプリンタ１０によるデコード後画像データの記憶までの処理は、図４のステップＳ１０１〜Ｓ１１４の場合と同様である。また、この例でも、ステップＳ３１４で１画像分の画像データの書き込みが終了したため、画像処理モジュール１０２が通信制御モジュール１０１に対し、処理経過通知を行う（Ｓ３１５）。ただし、ここでは１ページ分の画像データの書き込みも同時に終了しているので、次の２ページ目を処理中であり、書き込みを完了した画像の数は１である旨の通知となる。そして、通信制御モジュール１０１は、これに応じて、そのページ番号及び画像の数を通知するNotifyJobStatusコマンドをＤＳＣ２０に送信する（Ｓ３１６）。
【００７９】
また、ステップＳ３１４で１ページ分の画像データの書き込みが終了していることから、画像処理モジュール１０２は、画像描画モジュール１０３に対し、画像描画指示を行う（Ｓ３１７）。すると、画像描画モジュール１０３はこれに応じて画像データの収集と印刷処理を行う（Ｓ３１８，Ｓ３１９）。この一連の処理は、図４のステップＳ１２２〜Ｓ１２４の場合と同様である。
【００８０】
なお、図４のステップＳ１２２〜Ｓ１２６の処理と比較した場合、この図７のステップＳ３１５〜Ｓ３１９の処理では、処理経過通知と画像描画指示の順番が逆になっているが、このうちどちらを先に行ってもよいことは、図４の説明において述べた通りである。
また、この図７の処理においては、１ページ分の画像データを取得した後も、ＤＳＣ２０から取得すべき画像データはまだ残っているため、通信制御モジュール１０１は、GetObjectInfoコマンドをＤＳＣ２０に送信して次に画像データを取得する画像ファイルについてのファイルサイズを取得し、これを第１のバッファ１１１に書き込むと共に、引き続きＤＳＣ２０にGetPartialObjectコマンドを送信して画像データを取得し、画像処理モジュール１０２も、新たに第１のバッファに書き込まれたデータの処理を行う（Ｓ３２０〜Ｓ３２９）。
【００８１】
この場合において、通信制御モジュール１０１が行うデータ通知（Ｓ３２６）までの処理は、画像処理モジュール１０２におけるデコードの進行状況、例えば処理経過通知の受信やNotifyJobStatusコマンドの送信とは関係なく、通常は連続的に行う。従って、あるページについて処理が完了した旨のNotifyJobStatusコマンドを送信する前に、次のページの画像の画像データの取得を行うことになる。一方、NotifyJobStatusコマンドは、通常のピクトブリッジ規格においては、印刷が完了したページ数と画像数を通知するコマンドであり、ステップＳ３１６で送信するコマンドは、ステップＳ３０４で送信した前回のコマンドからページ数が変わっていることから、ＤＳＣ２０は、１ページ分の印刷処理が終了した旨の通知と受け取る。従って、上記のような制御は、Ｎ（自然数）番目のページの処理終了の通知の前に、Ｎ＋１番目のページの画像を取得することを可能にするものであると言える。
【００８２】
そして、このことにより、前のページの画像の画像データの受信後、チェックやデコードの完了を待たずに次のページの画像の画像データの受信を行うことができるから、処理の待ち時間を短縮し、全体的に処理時間を短縮し、ダイレクトプリントによるプリントを行う際にＤＳＣ２０が処理に拘束される時間を短縮することができる。
【００８３】
なお、画像処理モジュール１０２の側では、処理経過通知（Ｓ３１５）や画像描画指示（Ｓ３１７）を行ってしまえば、その後のNotifyJobStatusコマンドの送信や印刷処理の完了は確認せずに次の画像についての処理（Ｓ３２７〜Ｓ３２９）に進むようにしている。すなわち、処理経過通知及び画像描画指示に関連する処理は、順次画像データを受信してチェック・デコードする処理の流れに割り込む形で行うことになる。
【００８４】
次に、処理は図８に示す部分に進むが、通信制御モジュール１０１と画像処理モジュール１０２は、次のページの画像全て（ここでは１画像）の画像データについて、デコードと第２のバッファ１１２への書き込みが完了するまで、GetPartialObjectコマンドの送信から第２のバッファ１１２への書き込みまでの処理を繰り返す（Ｓ３３０〜Ｓ３３６）。そして、これが完了した時点で、画像処理モジュール１０２は、１画像分の画像データの書き込みが完了したこと、１ページ分の画像データの書き込みが完了したこと、および全画像の書き込みが完了したことを認識する。
【００８５】
そして、これらの認識に応じて行う以降の処理（Ｓ３３７〜Ｓ３４３）は、図６のステップＳ２３４〜Ｓ２４０）の場合と同様である。なお、ここでは画像描画指示（Ｓ３３７）を処理経過通知（Ｓ３４０）よりも前に行う例を示しているが、これらのどちらを先に行ってもよいことは、図６の説明において述べた通りである。
また、画像描画モジュール１０３は、２ページ目以降の画像描画指示に応じた画像データの収集と印刷処理（Ｓ３３８，Ｓ３３９）を、画像描画指示を受信してすぐではなく、それまでに印刷しているページに係る印刷処理（Ｓ３１８）が完了してから行うようにするとよい。
１画像からなるページを２ページ印刷する場合には、プリンタ１０は、以上のような動作を行う。
【００８６】
なお、３ページ以上印刷する場合、１ページに３画像以上含まれる場合、あるいは複数画像を含むページを複数ページ印刷する場合でも、通信制御モジュール１０１が全ページ分の画像の画像データの取得完了まで順次GetPartialObjectコマンドをＤＳＣ２０に送信して画像データを取得する（また画像ファイル毎にGetObjectInfoコマンドをＤＳＣ２０に送信してファイルサイズの情報を取得する）ことは、上述した各処理の場合と同様でよい。そして、画像処理モジュール１０２が、１画像分の画像データの第２のバッファ１１２への書き込みが終了したら、通信制御モジュール１０１への処理経過通知を行い、１ページ分の画像データの第２のバッファ１１２への書き込みが終了したら、画像描画モジュール１０３への画像描画指示を行い、全ページ分の画像データの第２のバッファ１１２への書き込みが終了したら、通信制御モジュール１０１への処理終了通知を行うようにすればよい。このようにすれば、図４乃至図８を用いて上述した処理と同様な効果を得ることができる。
【００８７】
次に、図９乃至図１２に、上述したようなプリンタ１０内の各モジュールが実行する処理のフローチャート例を示す。プリンタ１０のＣＰＵ１１は、プリンタ１０の起動時に、図３に示した各モジュール１０１〜１０３に係るプログラムを実行することにより、これらの各フローチャートに示す処理を開始し、以後、プリンタの電源がＯＦＦされるまでその処理を続ける。
【００８８】
まず、図９は、通信制御モジュール１０１に係る処理を示すフローチャートである。
この処理においては、ＣＰＵ１１はまずステップＳ１で印刷要求（具体例としてはStartJobコマンド）を受信するまで待機する。そして、受信するとステップＳ２に進んで、印刷要求で印刷を指示された画像に関連する情報（画像データの名称やＩＤ等を示すジョブデータ）を、ワークエリアに書き込む。その後、ステップＳ３で、印刷要求の送信元に、印刷要求応答及び最初の印刷経過通知（具体例としてはページ数１、画像数０のNotifyJobStatusコマンド）を送信する。
【００８９】
そしてステップＳ４で、印刷要求の送信元に、１番目にデータを収集する画像について画像ファイルのＩＤを指定してファイル情報要求（具体例としてはGetObjectInfoコマンド）を送信する。その後、ステップＳ５で上記のファイル情報要求に応じて送信されてくるファイルサイズの情報（他の情報を含んでいてもよい）を受信して第１のバッファ１１１に書き込む。
【００９０】
また、次のステップＳ６では印刷要求の送信元に画像データ要求（具体例としてはGetPartialObjectコマンド）を送信する。そして、ステップＳ７でこの要求に応じて送信されてくる画像データを受信し、第１のバッファ１１１に書き込む。このステップＳ７の処理が、取得手順及び格納手順の処理であり、この処理において、ＣＰＵ１１が取得手段及び格納手段として機能する。
【００９１】
その後、ステップＳ８で１画像分の画像データの収集を完了したか否か判断し、完了していればステップＳ９に進んでさらに全画像の画像データの収集を完了したか否か判断し、完了していなければステップＳ１０でデータ収集対象の画像を次の画像に更新する。そして、ステップＳ１１で、印刷要求の送信元に、新たな収集対象の画像についてファイル情報要求すると共に、ステップＳ１２で上記のファイル情報要求に応じて送信されてくるファイルサイズの情報（他の情報を含んでいてもよい）を受信して第１のバッファ１１１に書き込み、ステップＳ６に戻って処理を繰り返す。
一方、ステップＳ８で完了していなければ、そのままステップＳ６に戻り、処理を繰り返す。
【００９２】
また、ステップＳ９で全画像の画像データの収集を完了していれば、ステップＳ１３に進み、印刷終了通知を送信するまで待機した後、ステップＳ１に戻って処理を繰り返す。すなわち、再度印刷要求を受信するまで待機し、受信したら、ステップＳ２以降の処理を繰り返す。なお、印刷終了通知の送信は、次の図１０に示す処理において送信するものである。
【００９３】
次の図１０も、通信制御モジュール１０１に係る処理を示すフローチャートである。図９及び図１０に示す処理は、ＣＰＵ１１に別々のスレッドで実行させるようにするとよい。
そして、この処理においては、ＣＰＵ１１は、ステップＳ２１で画像処理モジュール１０２からの通知を受信するまで待機し、通知を受信した場合、その内容に応じてステップＳ２２〜ステップＳ２４の処理を行う。
【００９４】
すなわち、処理経過通知を受信した場合には、ステップＳ２２で、受信した通知と対応するページ数及び画像数を示す印刷経過通知（具体例としてはNotifyJobStatusコマンド）を、印刷要求の送信元に送信する。また、処理終了通知を受信した場合には、ステップＳ２３で、印刷終了通知（具体例としてはNotifyDeviceStatusコマンド）を、印刷要求の送信元に送信する。
【００９５】
なお、印刷要求をどこから受信したかは、図９のステップＳ１において印刷要求の受信を検知する際に把握することができる。また、画像処理モジュール１０２からの処理経過通知や処理終了通知は、画像データの処理の進捗に応じて送信されてくるものであることから、これらの通知を受信する場合、動作が正常であれば、対応する印刷要求が存在するはずであり、その送信元（＝画像データの取得元）に送信すればよい。
そして、ステップＳ２２及びＳ２３の処理が通知手順の処理であり、この処理において、ＣＰＵ１１が通知手段として機能する。
【００９６】
また、ステップＳ２１でその他の通知を受信した場合には、受信した通知と対応する処理を行う。そして、ステップＳ２２〜Ｓ２４のいずれの場合も、処理の完了後、ステップＳ２１に戻って再度画像処理モジュール１０２からの通知を受信するまで待機する。
【００９７】
次の図１１は、画像処理モジュール１０２に係る処理を示すフローチャートである。
この処理においては、まずステップＳ３１で処理経過通知のページ数を１に、画像数を０にそれぞれ設定し、ステップＳ３２で通信制御モジュール１０１からの画像データ通知の受信を待つ。画像処理モジュール１０２は、ＤＳＣ２０からの画像データの受信ではなく、通信制御モジュール１０１からの通知をトリガーに画像処理を開始するためである。
【００９８】
そして、画像データ通知を受信すると、ステップＳ３３に進み、第１のバッファ１１１に書き込まれている画像データを所定サイズ分収集し、ステップＳ３４で、収集した画像データのチェック及びデコードの処理を行い、ステップＳ３５で、デコード後のデータを第２のバッファ１１２に書き込む。これらの処理の詳細は、図４のステップＳ１１２乃至Ｓ１１４の説明で述べた通りである。また、これらの処理が処理手順の処理であり、この処理においては、ＣＰＵ１１が処理手段として機能する。
そして、ステップＳ３５の後は、ステップＳ３６で１画像分の画像データの第２のバッファ１１２への書き込みが終了したか否か判断し、終了していなければステップＳ３２に戻って処理を繰り返す。
【００９９】
一方、ステップＳ３６で終了していれば、処理経過通知の画像数をインクリメント（１増加）し、ステップＳ３８に進む。そして、ここで１ページ分の画像データの第２のバッファ１１２への書き込みが終了していなければ、ステップＳ３９で通信制御モジュール１０１に現在のページ数及び画像数の処理経過通知を送信する。その後ステップＳ３２に戻って処理を繰り返す。
【０１００】
また、ステップＳ３８で１ページ分の書き込みが終了していれば、ステップＳ４０に進む。そして、全画像の画像データの第２のバッファ１１２への書き込みが終了したか否か判断し、終了していなければ、ステップＳ４１で処理経過通知のページ数をインクリメントし、その後ステップＳ４２で通信制御モジュール１０１に現在のページ数及び画像数の処理経過通知を送信する。また、ステップＳ４０で全画像の画像データの書き込みが終了していれば、ページ数をインクリメントせずに処理経過通知を送信する。
【０１０１】
このようにしているのは、処理経過通知に付すページ数は、上述の通り処理中のページの番号であるから、全画像の処理が終了した場合にもインクリメントすると、実際には存在しない最終ページの次のページの番号を示すことになり、不都合が生じるためである。
なお、ステップＳ３９やＳ４２で送信する処理経過通知は、プリンタ１０内での内部的なものであるから、通信制御モジュール１０１がＤＳＣ２０等に送信する印刷経過通知とは異なる形式のものでよい。
【０１０２】
また、ステップＳ４２の後は、ステップＳ４３で画像描画モジュール１０３に画像描画指示を送信する。
そして、ステップＳ４４で全画像の画像データの第２のバッファ１１２への書き込みが終了したか否か判断し、終了していなければ、ステップＳ３２に戻って処理を繰り返す。また、終了していれば、ステップＳ４５で通信制御モジュール１０１に処理終了通知を送信し、ステップＳ３１に戻って処理を繰り返す。この場合には、次に受信する画像データ通知に応じて処理する画像データは、新しい印刷ジョブに係るデータであると考えられるため、ステップＳ３１で処理経過通知のページ数と画像数をリセットするのである。
【０１０３】
次の図１２は、画像描画モジュール１０３に係る処理を示すフローチャートである。
この処理においては、まずステップＳ５１で画像処理モジュール１０２からの画像描画指示の受信を待つ。画像描画モジュール１０３は、ＤＳＣ２０からの画像データの受信ではなく、画像処理モジュール１０２からの指示をトリガーに印刷処理を開始するためである。
【０１０４】
そして、画像描画指示を受信すると、ステップＳ５２に進み、第２のバッファ１１２に書き込まれている画像データを所定サイズ分収集し、ステップＳ５３で、収集した画像データに基づいてエンジン部１６を駆動して１ページ分の印刷を実行させる。そして、１ページ分の印刷が終了すると、ステップＳ５１に戻って処理を繰り返し、次の画像描画指示を待つ。これらの処理が印刷手順の処理であり、この処理においては、ＣＰＵ１１が印刷手段として機能する。
【０１０５】
以上のような各処理をＣＰＵ１１に実行させることにより、プリンタ１０に、図４乃至図８を用いて説明したような各モジュールに係る処理を実現させることができる。そして、そのことにより、これらの図の説明において述べたような、ダイレクトプリントによるプリントを行う際に画像供給側の装置が処理に拘束される時間を短縮できるという効果を得ることができる。ただし、図４乃至図８には、タイミングを管理しなくてよい部分について、場合によって処理の実行順を入れ替えて示した部分もあるので、厳密には図９乃至図１２のフローチャートに示した処理と一致しない部分もある。
【０１０６】
以上で実施形態の動作の説明を終了するが、以上説明してきた実施形態において、ソフトウェアの構成や使用する通信プロトコル、データの形式、処理内容等が上述の実施形態で説明したものに限られないことはもちろんである。例えば、通信制御モジュール１０１による画像データの取得は、必ずしも連続して行わなくてもよく、例えば、図９乃至図１２のフローチャートに示したような処理を、常時実行するのではなく、要求や指示の受信に応じて実行を開始するイベント駆動型のものにしてもよい。また、図１０に示した処理を、画像処理モジュールからの通知の受信をトリガーに図９に示した処理に割り込んで行う割り込み処理としてもよい。
【０１０７】
また、この発明は、当初は、従来知られているダイレクトプリント又はピクトブリッジ規格対応のイメージソースデバイスを、電子写真方式のプリントエンジンを備えたレーザプリンタと接続してダイレクトプリントを行う際の処理時間を短縮するためになされたものである。従って、この発明は、レーザプリンタに適用すると特に好適である。しかしながら、この発明は、ダイレクトプリント又はピクトブリッジ規格対応のプリンタであれば、どのようなプリンタにも適用可能であり、インクジェット方式やドットインパクト方式等、他の方式で画像形成を行うプリンタに適用することを妨げるものではない。
【０１０８】
また、この発明によるプログラムは、コンピュータにプリンタを制御させ、上述したプリンタ１０のような機能を実現させるためのプログラムであり、このようなプログラムをコンピュータに実行させることにより、上述したような効果を得ることができる。
このようなプログラムは、はじめからコンピュータに備えるＲＯＭあるいはＨＤＤ等の記憶手段に格納しておいてもよいが、記録媒体であるＣＤ−ＲＯＭあるいはフレキシブルディスク，ＳＲＡＭ，ＥＥＰＲＯＭ，メモリカード等の不揮発性記録媒体（メモリ）に記録して提供することもできる。そのメモリに記録されたプログラムをコンピュータにインストールしてＣＰＵに実行させるか、ＣＰＵにそのメモリからこのプログラムを読み出して実行させることにより、上述した各手順を実行させることができる。
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部機器あるいはプログラムを記憶手段に記憶した外部機器からダウンロードして実行させることも可能である。
【産業上の利用可能性】
【０１０９】
以上説明してきたように、この発明のプリンタ、プリンタの制御方法、プログラム又は記録媒体によれば、ダイレクトプリントによるプリントを行う際に画像供給側の装置が処理に拘束される時間を短縮することができる。
従って、この発明を利用することにより、短時間でダイレクトプリントを行うことができるプリンタを構成することができる。
【図面の簡単な説明】
【０１１０】
【図１】この発明の実施形態であるプリンタの構成を示すブロック図である。
【図２】図１に示したプリンタと外部のＤＳＣとを接続した状態を示すブロック図である。
【図３】図１に示したプリンタの機能構成を示す機能ブロック図である。
【図４】図１に示したプリンタが、ピクトブリッジ規格に対応したＤＳＣからの要求によりダイレクトプリントで１画像からなるページを１ページ印刷する場合の処理シーケンスを示す図である。
【図５】同じく２画像からなるページを１ページ印刷する場合の処理シーケンスの一部を示す図である。
【０１１１】
【図６】その続きを示す図である。
【図７】同じく１画像からなるページを２ページ印刷する場合の処理シーケンスの一部を示す図である。
【図８】その続きを示す図である。
【図９】図１に示したプリンタのＣＰＵが実行する処理のうち、通信制御モジュールに係る処理を示すフローチャートである。
【図１０】同じく通信制御モジュールに係る処理のうち別の部分を示すフローチャートである。
【０１１２】
【図１１】同じく画像処理モジュールに係る処理を示すフローチャートである。
【図１２】同じく画像描画モジュールに係る処理を示すフローチャートである。
【図１３】ピクトブリッジ規格及びダイレクトプリントに対応した従来のプリンタが、ピクトブリッジ規格に対応したＤＳＣからの要求によりダイレクトプリントを行う場合の処理シーケンスの一部を示す図である。
【図１４】その続きを示す図である。
【符号の説明】
【０１１３】
１０，４０：プリンタ、１１：ＣＰＵ、１２：ＲＯＭ、１３：ＲＡＭ、
１４：不揮発メモリ、１５：通信Ｉ／Ｆ、１６：エンジン部、１７：システムバス、
２０：ＤＳＣ、３０：通信路、１０１：通信制御モジュール、
１０２：画像処理モジュール、１０３：画像描画モジュール、
１１１：第１のバッファ、１１２：第２のバッファ
【図１】
2006192760.tif 000003
【図２】
2006192760.tif 000004
【図３】
2006192760.tif 000005
【図４】
2006192760.tif 000006
【図５】
2006192760.tif 000007
【図６】
2006192760.tif 000008
【図７】
2006192760.tif 000009
【図８】
2006192760.tif 000010
【図９】
2006192760.tif 000011
【図１０】
2006192760.tif 000012
【図１１】
2006192760.tif 000013
【図１２】
2006192760.tif 000014
【図１３】
2006192760.tif 000015
【図１４】
2006192760.tif 000016