(57)【要約】【課題】  印刷データの送受信がトランスポート層や物理層という、より下位層で行われているものであるため、アプリケーションではデータ転送が始まっていることを認識できない。【解決手段】  ＤＳＣとＰＤプリンタに実装されたアプリケーションによる通信手順の確立後、ＤＳＣからＰＤプリンタにリクエストを発行し（Ｓ１）、そのリクエストに伴うデータ転送に要する時間を予測し（Ｓ４）、その予測した時間に基づいて、そのリクエストに応答してＰＤプリンタからの応答を受信するまでの経過時間を推測し（Ｓ５）、その推測した経過時間内にＰＤプリンタから応答がない場合（Ｓ９）は、そのリクエストを無効にする（Ｓ１０）。【選択図】    図１１
2005066988.tif 000002
【特許請求の範囲】
【請求項１】
画像供給装置と記録装置とを汎用インターフェースを介して直接接続し、前記画像供給装置から前記記録装置に画像データを送信して記録する記録システムであって、
前記画像供給装置と前記記録装置に実装されたアプリケーションによる通信手順の確立後、前記画像供給装置から前記記録装置にリクエストを発行する発行手段と、
前記リクエストに伴うデータ転送に要する時間を予測する予測手段と、
前記リクエストに応答して前記記録装置からの応答を受信するまでの経過時間を、前記予測手段により予測された前記時間に基づいて推測する推測手段と、
前記推測手段により推測した経過時間内に前記記録装置から応答がない場合は前記リクエストを無効にする手段と、
を有することを特徴とする記録システム。
【請求項２】
前記予測手段は、
データ転送量に対応するデータ転送時間を記憶するテーブルと、
実際のデータ転送に要した時間を計時する計時手段と、
前記計時手段による計時値に基づいて前記テーブルに記憶されているデータ転送時間を修正する修正手段とを有し、
前記修正手段により修正されたデータ転送時間に基づいて、前記リクエストに伴うデータ転送に要する時間を予測することを特徴とする請求項１に記載の記録システム。
【請求項３】
前記リクエスト及び応答を通信する通信階層は、前記データ転送を行う通信階層よりも上位にあることを特徴とする請求項１又は２に記載の記録システム。
【請求項４】
記録装置と汎用インターフェースを介して直接接続し、前記記録装置に画像データを送信して記録させる画像供給装置であって、
実装されたアプリケーションによる通信手順の確立後、前記記録装置にリクエストを発行する発行手段と、
前記リクエストに伴うデータ転送に要する時間を予測する予測手段と、
前記リクエストに応答して前記記録装置からの応答を受信するまでの経過時間を、前記予測手段により予測された前記時間に基づいて推測する推測手段と、
前記推測手段により推測した経過時間内に前記記録装置から応答がない場合は前記リクエストを無効にする手段と、
を有することを特徴とする画像供給装置。
【請求項５】
前記予測手段は、
データ転送量に対応するデータ転送時間を記憶するテーブルと、
実際のデータ転送に要した時間を計時する計時手段と、
前記計時手段による計時値に基づいて前記テーブルに記憶されているデータ転送時間を修正する修正手段とを有し、
前記修正手段により修正されたデータ転送時間に基づいて、前記リクエストに伴うデータ転送に要する時間を予測することを特徴とする請求項４に記載の画像供給装置。
【請求項６】
前記リクエスト及び応答を通信する通信階層は、前記データ転送を行う通信階層よりも上位にあることを特徴とする請求項４又は５に記載の画像供給装置。
【請求項７】
画像供給装置と汎用インターフェースを介して直接接続し、前記画像供給装置からの画像データを受信して記録する記録装置であって、
実装されたアプリケーションによる通信手順の確立後、前記画像供給装置にリクエストを発行する発行手段と、
前記リクエストに伴うデータ転送に要する時間を予測する予測手段と、
前記リクエストに応答して前記画像供給装置からの応答を受信するまでの経過時間を、前記予測手段により予測された前記時間に基づいて推測する推測手段と、
前記推測手段により推測した経過時間内に前記画像供給装置から応答がない場合は前記リクエストを無効にする手段と、
を有することを特徴とする記録装置。
【請求項８】
前記予測手段は、
データ転送量に対応するデータ転送時間を記憶するテーブルと、
実際のデータ転送に要した時間を計時する計時手段と、
前記計時手段による計時値に基づいて前記テーブルに記憶されているデータ転送時間を修正する修正手段とを有し、
前記修正手段により修正されたデータ転送時間に基づいて、前記リクエストに伴うデータ転送に要する時間を予測することを特徴とする請求項７に記載の記録装置。
【請求項９】
前記リクエスト及び応答を通信する通信階層は、前記データ転送を行う通信階層よりも上位にあることを特徴とする請求項７又は８に記載の記録装置。
【請求項１０】
画像供給装置と記録装置とを汎用インターフェースを介して直接接続し、前記画像供給装置から前記記録装置に画像データを送信して記録する記録システムにおける制御方法であって、
前記画像供給装置と前記記録装置に実装されたアプリケーションによる通信手順の確立後、前記画像供給装置から前記記録装置にリクエストを発行する発行工程と、
前記リクエストに伴うデータ転送に要する時間を予測する予測工程と、
前記リクエストに応答して前記記録装置からの応答を受信するまでの経過時間を、前記予測手段により予測された前記時間に基づいて推測する推測工程と、
前記推測工程で推測した経過時間内に前記記録装置から応答がない場合は前記リクエストを無効にする工程と、
を有することを特徴とする制御方法。
【請求項１１】
前記予測工程では、
実際のデータ転送に要した時間を計時する計時工程と、
前記計時工程での計時値に基づいて、データ転送量に対応するデータ転送時間を記憶するテーブルに記憶されているデータ転送時間を修正する修正工程とを有し、
前記修正工程で修正されたデータ転送時間に基づいて、前記リクエストに伴うデータ転送に要する時間を予測することを特徴とする請求項１０に記載の制御方法。
【請求項１２】
前記リクエスト及び応答を通信する通信階層は、前記データ転送を行う通信階層よりも上位にあることを特徴とする請求項１０又は１１に記載の制御方法。
【請求項１３】
請求項１０乃至１２のいずれか１項に記載の制御方法を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像供給装置と記録装置及び記録システム及びその制御方法とそのプログラムに関するものである。
【背景技術】
【０００２】
近年、簡単な操作で画像を撮影し、その撮影した画像をデジタル画像データに変換できるデジタルカメラ（撮像装置）が広く使用されるようになってきている。このようなカメラで撮影した画像を印刷して写真として使用する場合には、通常、一旦、その撮影されたデジタル画像データを、デジタルカメラからＰＣ（コンピュータ）に取り込み、そのＰＣで画像処理を行った後、そのＰＣからカラープリンタに出力して印刷するのが一般的である。
【０００３】
これに対して最近は、ＰＣを介することなく、直接、デジタルカメラからカラープリンタにデジタル画像データを伝送して印刷できるカラープリントシステム（以降ダイレクト印刷と称する）や、デジタルカメラに搭載され、その撮像した画像を記憶しているメモリカードを、直接、カラープリンタに装着し、そのメモリカードに記憶されている、撮影された画像を印刷できる、所謂フォトダイレクト（ＰＤ）プリンタ等も開発されている(特許文献１参照)。
【０００４】
このようなダイレクト印刷は、元々、同一メーカのカメラとプリンタとの間でのみ実現できる機種限定の印刷機能であったが、近年、これら業界での標準化がうたわれ、メーカの違いに依らず、異なるメーカのカメラとプリンタとを接続してダイレクト印刷が行える環境を整えようとしている。
【特許文献１】特開２００３−０６１０３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように、メーカに依存しないダイレクト印刷を実現するために、画像データを供給するデバイスとそれを受け取って印刷する画像出力装置の少なくとも一方が、他方の有する機能（以降capabilityと称す）を取得することが考えられている。いま仮に、ユーザがカメラのインターフェースを操作することによりダイレクト印刷を実現するのであれば、そのカメラは事前に、画像を印刷させたいプリンタが有しているcapabilityを入手しておかねばならない。そのために、カメラとプリンタとの間でcapabilityをやり取りする為のコマンドを定義し、そのコマンドの通信仕様を定義し、その通信仕様に従ってコマンドの送受信を行う必要がある。これにより、そのコマンドを解釈して互いの機能を確認し、ユーザからの印刷指示に従った印刷命令（以降印刷ジョブと称す）を、そのプリンタのcapabilityに応じて適正に生成しなければならない。つまりカメラは、プリンタのcapabilityに合わせて複数の印刷ジョブを生成できるように設計されていなければならず、これはカメラにとっては非常に負荷が大きいものである。
【０００６】
このような機能情報を取得するためにコマンドによるリクエストと、そのリクエストに対するレスポンスによる送受信を行う場合に、コマンドのタイムアウトが規定されていないことがある。これは、コマンドによるリクエストが発生した直後に印刷データの送受信が開始されても、それがトランスポート層や物理層という、より下位層で行われているものであるため、アプリケーションではデータ転送が始まっていることを認識できないことがあるためである。この場合は、アプリケーションは、単にレスポンスが遅れているだけであると判断してしまい、その設定されたタイムアウト時間が経過した場合にはデータ転送中であるにも拘わらずタイムアウト処理を実行してしまうためである。
【０００７】
本発明は上記問題点に鑑みてなされたもので、画像供給装置と記録装置との間でコマンドによるリクエストとレスポンスにより送受信を行うとともに、画像供給装置からデータが送信された場合に記録装置における応答までのタイムアウトを正確に予測することにより、通信エラーなどが発生した場合の状態復帰を迅速に行うことができる画像供給装置と記録装置及び記録システム及びその制御方法とプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の画像供給装置は以下のような構成を備える。即ち、  記録装置とを汎用インターフェースを介して直接接続し、前記記録装置に画像データを送信して記録させる画像供給装置であって、
実装されたアプリケーションによる通信手順の確立後、前記記録装置にリクエストを発行する発行手段と、
前記リクエストに伴うデータ転送に要する時間を予測する予測手段と、
前記リクエストに応答して前記記録装置からの応答を受信するまでの経過時間を、前記予測手段により予測された前記時間に基づいて推測する推測手段と、
前記推測手段により推測した経過時間内に前記記録装置から応答がない場合は前記リクエストを無効にする手段とを有することを特徴とする。
【０００９】
上記目的を達成するために本発明の記録システムは以下のような構成を備える。即ち、  画像供給装置と記録装置とを汎用インターフェースを介して直接接続し、前記画像供給装置から前記記録装置に画像データを送信して記録する記録システムであって、
前記画像供給装置と前記記録装置に実装されたアプリケーションによる通信手順の確立後、前記画像供給装置から前記記録装置にリクエストを発行する発行手段と、
前記リクエストに伴うデータ転送に要する時間を予測する予測手段と、
前記リクエストに応答して前記記録装置からの応答を受信するまでの経過時間を、前記予測手段により予測された前記時間に基づいて推測する推測手段と、
前記推測手段により推測した経過時間内に前記記録装置から応答がない場合は前記リクエストを無効にする手段とを有することを特徴とする。
【００１０】
上記目的を達成するために本発明の記録システムの制御方法は以下のような工程を備える。即ち、
画像供給装置と記録装置とを汎用インターフェースを介して直接接続し、前記画像供給装置から前記記録装置に画像データを送信して記録する記録システムにおける制御方法であって、
前記画像供給装置と前記記録装置に実装されたアプリケーションによる通信手順の確立後、前記画像供給装置から前記記録装置にリクエストを発行する発行工程と、
前記リクエストに伴うデータ転送に要する時間を予測する予測工程と、
前記リクエストに応答して前記記録装置からの応答を受信するまでの経過時間を、前記予測手段により予測された前記時間に基づいて推測する推測工程と、
前記推測工程で推測した経過時間内に前記記録装置から応答がない場合は前記リクエストを無効にする工程とを有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、通信エラーなどが発生した場合の状態復帰を迅速に行うことができるという効果がある。また、例えば送信すべきデータが小さいと分かっているような場合でも、タイムアウトまで、過剰に長い時間、待ち状態になってしまうことも防止できる。
【発明を実施するための最良の形態】
【００１２】
以下、添付図面を参照して本発明の好適な実施例を詳細に説明する。
【実施例】
【００１３】
＜本発明の第１実施例＞
＜プリンタの概要説明＞
図１は、本発明の実施例に係るフォトダイレクトプリンタ装置（以下、ＰＤプリンタ）１０００の概観斜視図である。このＰＤプリンタ１０００は、ホストコンピュータ（ＰＣ）からデータを受信して印刷する通常のＰＣプリンタとしての機能と、メモリカードなどの記憶媒体に記憶されている画像データを直接読取って印刷したり、或いはデジタルカメラやＰＤＡなどからの画像データを受信して印刷する機能を備えている。
【００１４】
図１において、本実施例に係るＰＤプリンタ１０００の外殻をなす本体は、下ケース１００１、上ケース１００２、アクセスカバー１００３及び排出トレイ１００４の外装部材を有している。また、下ケース１００１は、ＰＤプリンタ１０００の略下半部を、上ケース１００２は本体の略上半部をそれぞれ形成しており、両ケースの組合せによって内部に後述の各機構を収納する収納空間を有する中空体構造をなし、その上面部及び前面部にはそれぞれ開口部がされている。さらに、排出トレイ１００４は、その一端部が下ケース１００１に回転自在に保持され、その回転によって下ケース１００１の前面部に形成される開口部を開閉させ得るようになっている。このため、記録動作を実行させる際には、排出トレイ１００４を前面側へと回転させて開口部を開成させることにより、ここから記録されたシート（普通紙、専用紙、樹脂シート等を含む。以下単にシートとする）が排出可能となると共に、排出されたシートを順次積載し得るようになっている。また排紙トレイ１００４には、２枚の補助トレイ１００４ａ，１００４ｂが収納されており、必要に応じて各トレイを手前に引き出すことにより、シートの支持面積を３段階に拡大、縮小させ得るようになっている。
【００１５】
アクセスカバー１００３は、その一端部が上ケース１００２に回転自在に保持され、上面に形成される開口部を開閉し得るようになっており、このアクセスカバー１００３を開くことによって本体内部に収納されている記録ヘッドカートリッジ（不図示）或いはインクタンク（不図示）等の交換が可能となる。尚、ここでは特に図示しないが、アクセスカバー１００３を開閉させると、その裏面に形成された突起がカバー開閉レバーを回転させるようになっており、そのレバーの回転位置をマイクロスイッチなどで検出することにより、アクセスカバー１００３の開閉状態を検出し得るようになっている。
【００１６】
また、上ケース１００２の上面には、電源キー１００５が設けられている。また、上ケース１００２の右側には、液晶表示部１００６や各種キースイッチ等を備える操作パネル１０１０が設けられている。この操作パネル１０１０の構造は、図２を参照して詳しく後述する。１００７は自動給送部で、シートを装置本体内へと自動的に給送する。１００８は紙間選択レバーで、プリントヘッドとシートとの間隔を調整するためのレバーである。１００９はカードスロットで、ここにメモリカードを装着可能なアダプタが挿入され、このアダプタを介してメモリカードに記憶されている画像データを直接取り込んで印刷することができる。このメモリカード（ＰＣ）としては、例えばコンパクトフラッシュ（登録商標）メモリ、スマートメディア、メモリスティック等がある。１０１１はビューワ（液晶表示部）で、このＰＤプリンタ１０００の本体に着脱可能であり、ＰＣカードに記憶されている画像の中からプリントしたい画像を検索する場合などに、１コマ毎の画像やインデックス画像などを表示するのに使用される。１０１２は後述するデジタルカメラを接続するためのＵＳＢ端子である。また、このＰＤ装置１０００の後面には、パーソナルコンピュータ（ＰＣ）を接続するためのＵＳＢコネクタが設けられている。
【００１７】
＜プリンタ操作部の概要説明＞
図２は本実施例に係るＰＤプリンタ１０００の操作パネル１０１０の概観図である。
【００１８】
図において、液晶表示部１００６には、その左右に印刷されている項目に関するデータを各種設定するためのメニュー項目が表示される。ここに表示される項目としては、例えば、複数ある写真画像ファイルの内、印刷したい写真画像の先頭番号、指定コマ番号（開始コマ指定／印刷コマ指定）、印刷を終了したい最後の写真番号（終了）、印刷部数（部数）、印刷に使用するシートの種類（用紙種類）、１枚のシートに印刷する写真の枚数設定（レイアウト）、印刷の品位の指定（品位）、撮影した日付を印刷するかどうかの指定（日付印刷）、写真を補正して印刷するかどうかの指定（画像補正）、印刷に必要なシートの枚数表示（用紙枚数）等がある。これら各項目は、カーソルキー２００１を用いて選択、或いは指定される。２００２はモードキーで、このキーを押下する毎に、印刷の種類（インデックス印刷、全コマ印刷、１コマ印刷、指定コマ印刷等）を切り替えることができ、これに応じてＬＥＤ２００３の対応するＬＥＤが点灯される。２００４はメンテナンスキーで、プリントヘッドのクリーニング等、プリンタのメンテナンスを行わせるためのキーである。２００５は印刷開始キーで、印刷の開始を指示する時、或いはメンテナンスの設定を確立する際に押下される。２００６は印刷中止キーで、印刷を中止させる時や、メンテナンスの中止を指示する際に押下される。
【００１９】
＜プリンタの電気仕様概要＞
次に図３を参照して、本実施例に係るＰＤプリンタ１０００の制御に係る主要部の構成を説明する。尚、この図３において、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
【００２０】
図３において、３０００は制御部（制御基板）を示している。３００１はＡＳＩＣ（専用カスタムＬＳＩ）を示している。３００２はＤＳＰ（デジタル信号処理プロセッサ）で、内部にＣＰＵを有し、後述する各種制御処理及び、輝度信号（ＲＧＢ）から濃度信号（ＣＭＹＫ）への変換、スケーリング、ガンマ変換、誤差拡散等の画像処理等を担当している。３００３はメモリで、ＤＳＰ３００２のＣＰＵの制御プログラムを記憶するプログラムメモリ３００３ａ、及び実行時のプログラムを記憶するＲＡＭエリア、画像データなどを記憶するワークメモリとして機能するメモリエリアを有している。３００４はプリンタエンジンで、ここでは、複数色のカラーインクを用いてカラー画像を印刷するインクジェットプリンタのプリンタエンジンが搭載されている。３００５はデジタルカメラ（ＤＳＣ）３０１２を接続するためのポートとしてのＵＳＢコネクタである。３００６はビューワ１０１１を接続するためのコネクタである。３００８はＵＳＢハブ(USBHUB)で、このＰＤプリンタ１０００がＰＣ３０１０からの画像データに基づいて印刷を行う際には、ＰＣ３０１０からのデータをそのままスルーし、ＵＳＢ３０２１を介してプリンタエンジン３００４に出力する。これにより、接続されているＰＣ３０１０は、プリンタエンジン３００４と直接、データや信号のやり取りを行って印刷を実行することができる（一般的なＰＣプリンタとして機能する）。３００９は電源コネクタで、電源３０１９により、商用ＡＣから変換された直流電圧を入力している。ＰＣ３０１０は一般的なパーソナルコンピュータ、３０１１は前述したメモリカード（ＰＣカード）、３０１２はデジタルカメラ（ＤＳＣ：DigitalStillCamera)である。
【００２１】
尚、この制御部３０００とプリンタエンジン３００４との間の信号のやり取りは、前述したＵＳＢ３０２１又はＩＥＥＥ１２８４バス３０２２を介して行われる。
【００２２】
＜デジタルカメラの概要説明＞
図４は、本実施例に係るＤＳＣ（デジタルカメラ）３０１２の構成を示すブロック図である。
【００２３】
同図において、３１００はＤＳＣ３０１２全体の制御を司るＣＰＵであり、３１０１はＣＰＵ３１００による処理手順を記憶しているＲＯＭである。３１０２はＣＰＵ３１００のワークエリアとして使用されるＲＡＭであり、３１０３は各種操作を行うスイッチ群で、シャッター、モード切替スイッチ、選択スイッチやカーソルキー等が含まれている。２７００は液晶表示部であり、現時点で撮影している映像や、撮像されてメモリカードに記憶されている画像を表示したり、各種設定を行う際のメニューを表示するために使用される。３１０５は光学ユニットであり、主としてレンズ及びその駆動系で構成される。３１０６はＣＣＤ素子であり、３１０７はＣＰＵ３１００の制御下において光学ユニット３１０５を駆動制御するドライバである。３１０８は記憶媒体３１０９（コンパクトフラッシュ(登録商標)メモリカード、スマートメディア等）を接続するためのコネクタであり、３１１０はＰＣ或いは実施例におけるＰＤプリンタ１０００と接続するためのＵＳＢインターフェース（ＵＳＢのスレーブ側）である。
【００２４】
＜カメラ／プリンタの接続概要説明＞
図５は、本実施例に係るＰＤプリンタ１０００とＤＳＣ３０１２との接続を説明する図で、前述の図面と共通している部分は同じ記号で示し、その説明を省略している。
【００２５】
図において、ケーブル５０００は、ＰＤプリンタ１０００のコネクタ１０１２と接続されるコネクタ５００１と、デジタルカメラ３０１２の接続用コネクタ５００３と接続するためのコネクタ５００２とを備えており、また、デジタルカメラ３０１２は、内部のメモリに保存している画像データを、接続用コネクタ５００３を介して出力可能に構成されている。なお、デジタルカメラ３０１２の構成としては、内部に記憶手段としてのメモリを備えるものや、取外し可能なメモリを装着するためのスロットを備えたものなど、種々の構成を採用することができる。この図５に示すようにして、ケーブル５０００を介してＰＤプリンタ１０００とデジタルカメラ３０１２とを接続することにより、デジタルカメラ３０１２からの画像データを直接ＰＤプリンタ１０００で印刷することができる。
【００２６】
以上の構成に基づくＤＳＣ３０１２とＰＤプリンタ１０００とを含む印刷システムにおける動作概要を以下に説明する。尚、この実施例に係る印刷システムでは、ＤＳＣ３０１２とＰＤプリンタ１０００とはそれぞれ本実施例に係る手順ＤＰＳ（Direct Print System）の仕様に従った動作が可能であるものとする。
【００２７】
図１４は、この通信階層を示す図である。
【００２８】
図において、１４００はＵＳＢによるインターフェース、１４０１はブルーツース（Bluetooth）によるインターフェースを示している。１４０２はＮＣＤＰによるシステムを構築する際に組込まれるアプリケーションレイヤを示している。１４０３は既存のプロトコル及びインターフェースを実行するためのレイヤで、ここではＰＴＰ（Picture Transfer Protocol），ＳＣＳＩ及びブルーツースのＢＩＰ（Basic Image Profile），ＵＳＢインターフェース等が実装されている。本実施例に係るＮＣＤＰは、このようなプロトコルレイヤ等のアーキテクチャが実装されていて、その上にアプリケーションとして実装されることが前提である。ここではＰＤプリンタ１０００は、ＵＳＢホスト、カメラ３０１２はＵＳＢスレーブとして規定されており、図１４に示すように、それぞれ同じＮＣＤＰ構成となっている。
【００２９】
下記の説明では、リクエストやそのリクエストに対するレスポンスは、アプリケーション層で実行させる所定のアプリケーションの制御により、やり取りされる情報である。そして、画像データやcapability情報等の実際のデータは、アプリケーション層よりも下位の層（例えばトランスポート層や物理層）を用いている。
【００３０】
尚、通信される情報の種類と、その情報が実際にやり取りされる通信階層との対応は、これに限らないが、リクエスト／レスポンスをやり取りする階層よりも、そのリクエストにより実際に画像データ等をやり取りする階層の方が下位である場合に、本実施例は特に有用である。
【００３１】
＜ダイレクトプリント概要説明＞
図６は、本実施例に係る印刷システムにおいて、ＤＳＣ３０１２からＰＤプリンタ１０００に対してプリント要求を発行して印刷を行う場合の大まかな信号フローを説明する図である。
【００３２】
この処理手順は、ＰＤプリンタ１０００とＤＳＣ３０１２とがＵＳＢケーブル５０００を介して接続された後、互いにＤＰＳ仕様に準拠していることを確認した後に実行される。まずＤＳＣ３０１２は「ConfigurePrintService」をＰＤプリンタ１０００に送信して、ＰＤプリンタ１０００の状態をチェックする（６００）。これに対してＰＤプリンタ１０００から、その時点でのＰＤプリンタ１０００の状態（ここでは「アイドル」状態）が通知される（６０１）。ここでは「アイドル」状態であるため、ＤＳＣ３０１２はＰＤプリンタ１０００のcapabilityを問合せ（６０２）、そのcapabilityに応じたプリント開始要求（StartJob）を発行する（６０３）。尚、このプリント開始要求は、６０１で、後述するＰＤプリンタ１０００からのステータス情報の中の「newJobOK」が「True（真）」になっていることを条件に、ＤＳＣ３０１２からＰＤプリンタ１０００に発行される。
【００３３】
このプリント開始要求に対してＰＤプリンタ１０００は、印刷が指示された画像データのファイルＩＤに基づいてファイル情報をＤＳＣ３０１２に要求する（GetFileInfo）（６０４）。これに応答してＤＳＣ３０１２から、そのファイル情報（FileInfo）が送信される。このファイル情報にはファイル容量等の情報が含まれる。そしてＰＤプリンタ１０００がそのファイル情報を受信して処理可能であると判断すると、そのファイル情報をＤＳＣ３０１２に要求する（GetFile）（６０５）。これによりその要求されたファイルの画像データ（ImageFile）がＤＳＣ３０１２からＰＤプリンタ１０００に送られる。これによりＰＤプリンタ１０００がプリント処理を開始すると、６０６で「印刷中（Printing）」を示すステータス情報が、ＰＤプリンタ１０００からＤＳＣ３０１２に「NotifyDeviceStatus」によって送られる。そして１頁のプリント処理が終了すると、次のページの処理開始時にＰＤプリンタ１０００から「NotifyJobStatus」６０７により、それが通知される。そして１頁だけの印刷であれば、そのプリント要求した１頁の印刷が終了すると、次に「NotifyDviceStatus」６０８によりＰＤプリンタ１０００が「アイドル」状態になったことが通知される（NotifyDeviceStatus(Idle)）。
【００３４】
尚、例えば、１頁に複数（Ｎ）の画像をレイアウトして印刷するＮ−ｕｐ印刷の場合には、Ｎ枚の画像を印刷する度に、「NotifyJobStatus」６０７がＰＤプリンタ１０００からＤＳＣ３０１２に送られることになる。本実施例での「NotifyJobStatus」及び「NotifyDeviceStatus」の発行タイミングと画像データの取得の順番は一例であり、製品の実装によっては様々なケースが起こりうる。
【００３５】
尚、このプリント処理において、ＤＳＣ３０１２からのプリント開始要求（StartJob）に、印刷すべき画像データのファイルＩＤを一括して含めて送信して印刷する場合と、一般の写真現像で使用されるＤＰＯＦファイルのファイルＩＤのみをＤＳＣ３０１２からのプリント開始要求（StartJob）に含めてＰＤプリンタ１０００に送信し、ＰＤプリンタ１０００がそのＤＰＯＦファイルを解釈し、必要な画像データのファイルＩＤを取得してプリントする場合も含まれる。
【００３６】
＜印刷Jobの概要説明＞
図７は、ＤＳＣ３０１２からＰＤプリンタ１０００に対して発行されるプリント開始要求の具体例を説明する図である。
【００３７】
図において、７２０は、この印刷ジョブのコンフィグレーション（jobConfig）を示し、７２１はプリント情報（printInfo）を示している。
【００３８】
まずコンフィグレーション７２０について説明する。７００は印刷する画質（quality）を示し、これには例えば「標準」、「高画質」などがある。７０１は用紙サイズ（paperSize）、７０２は用紙タイプ（papertype）で、例えば「普通紙」、「写真用紙」、「インクジェット専用紙」等がある。７０３は印刷する画像ファイルのタイプ（fileType）を指定するもので、例えばＤＰＯＦを使用する場合は、これで指定される。７０４は日付印刷の有無（datePrint）、７０５はファイル名の印刷の有無（fileNamePrint）、７０６は画像最適化を行うかどうか（imageOptimize）、７０７は固定サイズの印刷（fixedSize）、７０８は画像の指定された範囲の印刷を行うかどうかの有無をそれぞれ指定する（cropping）。またプリント情報７２１は、ファイルＩＤ（fieldID）７０９と、日付情報（date）７１０を含んでいる。
【００３９】
図８は、前述のJobStatusとDeviceStatusに含まれる情報を説明する図である。ここで図８（Ａ）のJobStatus、及び図８（Ｂ）のDeviceStatusは、ＰＤプリンタ１０００からＤＳＣ３０１２に送信される。また、ＤＳＣ３０１２は任意のタイミングで、それらの情報をＰＤプリンタ１０００へ送信要求することができる。
【００４０】
図８（Ａ）において、「prtPID」、「ImagePath」及び「copyID」はＤＰＯＦファイルの印刷が指示された場合に有効になる。ここで「prtPID」は、ＤＰＯＦファイルで指定された印刷セクションの識別情報（ＩＤ）、「ImagePath」はＤＰＯＦファイルで指定された画像ファイルを特定するためのパスの情報、そして「copyID」は複数枚の印刷指定時に、実際に何枚目を印刷しているかを意味している。ＤＰＯＦファイルによる印刷の場合は、ＤＳＣ３０１２は、プリント開始要求（StartJob）中にＤＰＯＦファイルの「fileID」を記載してＰＤプリンタ１０００に送信する。これによりＰＤプリンタ１０００は、そのＤＰＯＦファイルの印刷を開始できる。そしてＰＤプリンタ１０００は、そのＤＰＯＦファイルの「fileID」を基にＤＰＯＦファイルを取得し、「GetFileID」を実行して、ＤＰＯＦファイル中に指定された画像ファイルの「fileID」を特定し、その画像ファイルをＤＳＣ３０１２に要求して、その画像データを取得する。こうしてＤＰＯＦファイルで指定された画像を印刷することができる。そして、ＤＰＯＦファイルによる印刷実行中に、印刷の進行状況を示す上記「prtPID」、「ImagePath」及び「copyID」が、ＰＤプリンタ１０００から前述の「NotifyJobStatus」によりＤＳＣ３０１２に通知される。
【００４１】
尚、このＤＰＯＦファイルの印刷中に何らかの理由で印刷が中断された後、印刷が再開された時は、印刷が中止されたページの先頭から、その印刷処理が再開される。
【００４２】
「progress」は、印刷予定枚数の内、現在何枚目を印刷しているか（Ｎ／Ｔ）を示す。ここでＮは現在の印刷ページ、Ｔはトータルの印刷枚数を示す。「imagePrinted」は印刷済みの画像枚数を示す。
【００４３】
次に図８（Ｂ）に示すDeviceStatusについて説明する。
【００４４】
「dpsPrintServiceStatus」は、ＰＤプリンタ１０００の状態を意味し、ＤＳＣ３０１２に通知される。この状態には、アイドル、プリント、ポーズ状態が含まれる。「jobEndReason」は、プリント処理の終了状況を意味し、最終ページの印刷が完了するとＤＳＣ３０１２に通知される。「errorStatus」はそのエラーの状態を意味し、エラーが発生した場合に通知される。「errorReason」は、そのエラーの発生理由を意味し、「errorStatus」と共に通知される。「disconnectEnable」は、ＵＳＢケーブル５０００が外されても印刷可能であることを意味し、ＰＤプリンタ１０００からＤＳＣ３０１２に通知される。「CapabilityChanged」は、ＰＤプリンタ１０００におけるcapabilityが変更されたことを意味し、ＤＳＣ３０１２に通知される。「newJobOK」は、ＰＤプリンタ１０００が印刷要求を受付け可能であることを意味し、ＤＳＣ３０１２に通知される。
【００４５】
＜GetCapabilityの説明＞
図９は、ＤＳＣ３０１２からＰＤプリンタ１０００に対して発行されるＰＤプリンタ１０００のcapability取得方法の具体例を説明する図である。
【００４６】
図９（Ａ）は、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、ＰＤプリンタ１０００のcapabilityを要求するコマンドを説明する図である。
【００４７】
図９（Ａ）の例では、＜getCapability＞，＜/getCapability＞によりcapabilityの取得が要求され、＜capability＞，＜/capability＞で囲まれる＜layouts/＞９０１により、ＰＤプリンタ１０００がcapabilityとして、レイアウト印刷機能を有しているかどうかが問い合わせられている。
【００４８】
図９（Ｂ）は、図９（Ａ）のcapability要求に応じて、ＰＤプリンタ１０００からＤＳＣ３０１２に対してcapabilityが返送される例を示す図である。
【００４９】
図中、＜capability＞９０２，＜/capability＞９０６で囲まれるcapability情報の中で、＜layouts＞９０３，＜layouts/＞９０５で囲まれるレイアウト情報９０４により、ＰＤプリンタ１０００が有しているレイアウト機能が通知されている。
【００５０】
この図９（Ｂ）から明らかなように本実施例では、capabilityは８桁のコード（「57000000」、「57010000」、「57020000」）でＰＤプリンタ１０００からＤＳＣ３０１２に送信されている。この実施例では、レイアウトのcapabilityは、上位２桁が「５７」で始まるコードと規定されており、次の２桁が１枚のシートに何枚の画像を印刷できるかを示すレイアウト情報を示している。即ち、上位４桁が「５７０１」は、１枚のシートに１つの画像を印刷するレイアウト印刷が可能であることを示し、「５７０２」は１枚のシートに２つの画像を印刷するレイアウト印刷機能を有することを示している。尚、上位４桁が「５７００」の場合は、ＰＤプリンタ１０００のデフォルトレイアウトでレイアウト印刷するモードを示している。つまり図９（Ｂ）の例では、ＰＤプリンタ１０００のレイアウト印刷のcapabilityは、１枚のシートに一つの画像のレイアウト印刷、１枚のシートに二つの画像のレイアウト印刷、及びＰＤプリンタ１０００のデフォルトレイアウト印刷の３通りのレイアウト印刷機能を有していることを示していることになる。
【００５１】
尚、図９では、レイアウト印刷に関してのcapabilityの送受信の仕方について説明したが、このcapabilityにより確認できる機能は、このレイアウト印刷に限るものでないことはもちろんである。例えば、ＰＤプリンタ１０００が印刷可能なシートの種類についてのcapability、プリンタ１０００が印刷可能なシートサイズのcapability、プリンタ１０００が対応できる画像データのファイルタイプについてのcapability、プリンタ１０００が日付やファイル名を画像に付加して印刷できるか否かのcapability、プリンタ１０００が対応できる印刷モードについてのcapability、プリンタ１０００が対応できる画像の自動補正機能の有無についてのcapability等様々なcapabilityがあるが、ここではこれらcapabilityの詳細な通信仕様に関しての説明は割愛する。
【００５２】
＜画像の特定方法＞
次に画像を印刷する場合における画像の特定の仕方について説明する。
【００５３】
印刷条件は図７を参照して前述した通りStartJob（印刷ジョブを指定するコマンド）を用いてＤＳＣ３０１２からＰＤプリンタ１０００に情報が送られる。ここで印刷対象の画像の指定は＜fileID＞（図７の７０９）のタグで指定される。即ち、このタグに印刷画像のハンドル番号が列挙されて印刷画像が特定される。図７の例は、複数枚の画像を印刷するレイアウト印刷の指定ではなく、１枚の画像の印刷例を示しているので、このハンドル番号は１つしか記載されていない（ハンドル番号「０００００００１」）。しかし２枚画像の印刷の場合であれば、８桁で表現される、これらハンドル番号が２つ並列に送られることはもちろんである。こうして印刷される画像のハンドル番号がＰＤプリンタ１０００に送信された後、ＰＤプリンタ１０００は印刷に先立って、このハンドル番号で指定された画像ファイルをＤＳＣ３０１２に要求する。この時、画像ファイルを取得する前に、先ず、ＰＤプリンタ１０００は画像の情報を取得して画像ファイルを受信する準備を行う。  図１０（Ａ）は、ＰＤプリンタ１０００からＤＳＣ３０１２に対してハンドル名が「０００００００１」の画像データを要求する場合のコマンド例を示している。
【００５４】
図１０（Ｂ）は、この要求に応えてＤＳＣ３０１２からＰＤプリンタ１０００に対して画像データを送信する例を示している。ここでは、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、画像ファイルのタイプ＜fileType＞と、画像ファイルのサイズ＜fileSize＞（バイト数）の情報が送信されている。
【００５５】
更に具体的には、例えば、このコマンドがＵＳＢのＰＴＰ上で実現される場合、以下の通り処理される。即ち、ＵＳＢのホストであるＰＤプリンタ１０００は、ＵＳＢのスレーブであるＤＳＣ３０１２から印刷指定されている画像のハンドル番号の「ObjectInfoDataset」を受信する。ここで、この「ObjectInfoDataset」は、複数のデータフィールドからなり、例えばファイルタイプ情報の取得であれば、このデータフィールドの中の「ObjectFormatCode」の内容からファイルのタイプを特定できる仕組みとなっている。尚、ＰＴＰでは、「ObjectFormatCode」は４桁の１６進コードで記載されているが、「ObjectFormatCode」の表で該コードが具体的に何のファイルタイプなのか（例えば、ＪＰＥＧ、ＴＩＦＦ、ＧＩＦなど）が別途規定されており、これによりファイルタイプが特定できるようになっている。また、この印刷が指定されている画像が格納されているフォルダも、「ObjectInfoDataset」のデータフィールドの情報から特定することができる。
【００５６】
尚、ここでは、トランスポート層以下がＵＳＢ−ＰＴＰである場合を例にして、ファイルの情報の入手方法の概要を説明したが、この様なファイルの情報の入手は、インターフェースに応じて異なるものの、多くのインターフェースで一般的に取得できるものである。
【００５７】
図１１は、本発明の第１実施例に係るＤＳＣ３０１２における処理を示すフローチャートで、この処理を実行するプログラムはＲＯＭ３１０１に記憶されており、このプログラムに従ってＣＰＵ３１００が制御処理を実行することによりこの処理が実現される。
【００５８】
ＤＳＣ３０１２とＰＤプリンタ１０００とが接続されると、不図示の仕様に従ってコンフィギュレーションが行われ通信の確立が行われる。次いで不図示の仕様に従って互いにダイレクト印刷の対応製品であることが確認される。ＤＳＣ３０１２は、ユーザにＵＩ表示を提供するために、ＰＤプリンタ１０００が実現できるcapabilityをＰＤプリンタ１０００から入手し、このcapabilityに応じてＵＩを構築して表示部２７００に表示し、ユーザからの印刷命令を待つアイドル（Idle）状態に移行する。ここでユーザがＤＳＣ３０１２のＵＩを操作してダイレクト印刷を行う画像や印刷の仕様を決定し、ＤＳＣ３０１２から印刷指示が出力される。ＤＳＣ３０１２は、このユーザの印刷指示を印刷ジョブ（即ち、StartJob）に変換してＰＤプリンタ１０００に送信する。この印刷ジョブを受信したＰＤプリンタ１０００は、この印刷ジョブを解析し、ＤＳＣ３０１２から印刷対象となる画像データを入手する。この時、入手される画像情報の種類は、画像の記憶エリアを確保するために「fileSize」と、入手された画像データをレンダリングするために「fileType」の情報が取得される（図１０（Ｂ）参照）。
【００５９】
ここから図１１のフローチャートを参照して説明する。
【００６０】
前述のように、ＤＳＣ３０１２はユーザにＵＩ表示を提供するために、ＰＤプリンタ１０００が実現できるcapabilityをＰＤプリンタ１０００から入手するために、ステップＳ１で、capability取得などのコマンド（getCapability）のリクエストを発行する。この時、このリクエストを発行してからＰＤプリンタ１０００からレスポンスを受信するまでのタイムアウト時間として、例えば１秒につきカウント値を「１００」に設定し「３０００」等の値をタイムアウトカウンタとして設定する。
【００６１】
図１２は、このカウント値などを計数するためのデータが記憶されるＲＡＭ３１０２のデータ構成を示す図である。
【００６２】
図１２において、１２０はＣＰＵ３１００による制御動作時に各種データを一時的に格納するためのワークエリアである。１２１はカウンタを示し、このカウンタ１２１に前述のカウント値がセットされ、ＣＰＵ３１００の制御の下にカウントダウンされる。１２２は後述するテーブルで、実際にデータ転送に要した時間を基に、これから転送しようとしているデータの転送に要する時間を推測するための学習値が記憶される。１２３は、データ転送が実行されるのに要する推定時間を記憶する推定データ転送時間がセットされている。１２４はデータ転送を開始してから終了するまでの実転送時間を計時するための転送時間カウンタである。
【００６３】
次にステップＳ２に進み、ステップＳ１で送信したリクエストに対するレスポンスをＰＤプリンタ１０００から受信したかどうかを判定する。レスポンスを受信している場合はタイムアウト処理を行うことなくステップＳ１１に進み、後述の実データ転送時間の学習結果をテーブル１２２に保存して処理を終了し、不図示の次の処理に移る。
【００６４】
このステップＳ２で、まだＰＤプリンタ１０００からレスポンスを受信していない場合はステップＳ３に進み、StartJobによる実データの転送が既に開始されているかどうかを判定する。既に開始されていればステップＳ８に進むが、これから開始する場合はステップＳ４に進み、データの転送に要する時間を推定する。この転送時間の推定には、転送予定のデータ量に対して、平均的な転送時間に相当するカウント値を記述したデフォルトのテーブルをＲＯＭ３１０１に記憶しておき、前述の取得している「fileSize」情報を用いて、その転送データ量に対するデータ転送に要する推定時間を取得する。そして、その推定時間に相当するカウント値を推定データ転送時間１２３にセットする。
【００６５】
次にステップＳ５に進み、テーブル１２２に記憶されている過去のデータ転送に基づく学習値を基に、この推定データ転送時間１２３にセットされている推定データ転送時間を補正する。この補正は、テーブル１２２に記憶されている過去の実データの転送に要した時間を基に、平均的な転送時間からの差分がどれくらいあるかを学習し、その差分に相当するカウント値を参照すればよい。そしてステップＳ６に進み、ステップＳ５で得られた値を、ステップＳ１でセットされているカウンタ１２１のカウント値に加算する。これによって、タイムアウトまでに要する時間が、現在のデータの転送に必要な時間分だけ延長されたことになる。そしてステップＳ７に進み、今回の実データの転送に要する時間を学習結果に反映させるためにデータの転送時間の計測を開始する。これは前もって初期化されている転送時間カウンタ１２４の値を、カウントアップすることにより計時される。そしてステップＳ８に進み、カウンタ１２１の値を−１する。そしてステップＳ９で、そのカウンタ１２１の値が「０」になったかどうか、即ち、データ転送に要すると予測した時間を超えたかどうかをみる。「０」でなければ、まだ推測した時間を超えていないのでステップＳ２に進み、ＰＤプリンタ１０００からのレスポンスを待って前述の処理を実行する。そしてステップＳ９で、カウンタ１２１の値が「０」になってタイムアウトが発生するとステップＳ１０に進み、タイムアウト処理を実行する。このタイムアウト処理では、ステップＳ１で発行したリクエストを無効にし、例えばデータの転送を伴わないステータス情報の取得要求などをＰＤプリンタ１０００に発行して。ＰＤプリンタ１０００の状態を調べるなどの処理を行う。
【００６６】
一方、ステップＳ３で、データ転送が既に開始されているときはステップＳ１２に進みまだデータの転送中かどうかをみる。手の転送中であればステップＳ７に進み、転送時間カウンタ１２４のカウントアップを行ってステップＳ８に進み、データ転送の実行中でないときはステップＳ８に進み、カウンタ１２１の減算処理を実行する。
【００６７】
そしてステップＳ２で、ＰＤプリンタ１０００からレスポンスを受信するとステップＳ１１に進み、今回転送時間カウンタ１２４で計数された転送時間を、その転送データ量と共にテーブル１２２の学習値として加える。尚、テーブル１２２のデータ更新についてはここでは詳しく述べないが、例えばサンプル数が所定数になると、所定範囲のデータ転送量ごとにデータ転送時間の平均値を求め、データ転送量が１０Ｋバイト〜２０Ｋバイトの場合にはデータ転送時間は何秒というように、テーブル１２２を更新しても良い。
【００６８】
以上のような処理を行うことによって、実際のデータ転送に要する時間を正確に推測し、その推測したデータ転送時間に応じてＰＤプリンタからの応答時間のタイムアウトを判定することができる。
【００６９】
＜第２実施例＞
図１３は、本発明の第２実施例に係るＤＳＣ３０１２の処理を示すフローチャートである。尚、この処理を実行するプログラムはＲＯＭ３１０１に記憶されており、このプログラムに従ってＣＰＵ３１００が制御処理を実行することによりこの処理が実現される。この第２実施例では、データ転送が実施されている間では、カウンタ１２１によるタイムアウトの計時を行わずないことを特徴としている。
【００７０】
前述したようにＤＳＣ３０１２は、ユーザにＵＩ表示を提供するためにＰＤプリンタ１０００が実現できるcapabilityをＰＤプリンタ１０００から入手するためにcapabilityの取得などのコマンド（getCapability）のリクエストを発行する（Ｓ２１）。この時、リクエストからレスポンスまでのコマンドのタイムアウト時間として、例えば１秒につきカウント値を「１００」等として「３０００」等の値をカウンタ１２１に設定する。また推定データ転送時間１２３を「０」に初期化する。
【００７１】
そしてステップＳ２２に進み、ステップＳ２１で送信したリクエストに対するレスポンスをＰＤプリンタ１０００から受信したかどうかを判定する。既にレスポンスを受信していた場合にはタイムアウト処理を行うことなくステップＳ３３に進み、後述の実データ転送時間の学習結果をテーブル１２２に保存して、この処理を終了し不図示の次の処理に移る。
【００７２】
ステップＳ２２で、レスポンスを受信していない場合はステップＳ２３に進み、StartJobによる実データの転送が既に開始されているかどうかを判定する。ここで、これから実データの転送が開始されると判定された場合はステップＳ２４に進み、そのデータ転送に要する時間を推定して推定時間データ転送時間１２３にセットする。この転送時間の推定には、転送するデータ量に対して、その時に必要な平均的な転送時間に相当するカウント値を記述したテーブルをＲＯＭ３１０１に記憶しておき、前述の取得した「fileSize」のファイルサイズ情報などを用いてそのテーブルからカウント値を参照してくればよい。
【００７３】
次にステップＳ２５に進み、実測した過去のデータ転送時間を基に推定データ転送時間１２３を補正してカウンタ１２１にセットする。この補正は、過去の実データの転送に要した時間を転送時間カウンタ１２４を用いて計測し、その計測した時間値を基に平均的な転送時間からの差分がどれくらいあるかを学習したカウント値をテーブル１２２に記憶しておき、そのテーブル１２２を参照すればよい。そしてステップＳ２６に進み、今回の実データの転送に要する時間を学習結果に反映させるためにデータの転送時間の計測するための転送時間カウンタ１２４をカウントアップしてステップＳ２７に進む。
【００７４】
一方、ステップＳ２３で、実データの転送が既に開始されていると判定された場合はステップＳ３１に進み、データ転送中かどうかを調べ、データ転送中であればステップＳ２６に進んで、実データの転送に要する時間を計測するために転送時間カウンタ１２４をカウントアップしてステップＳ２７に進む。又データの転送中でないときはそのままステップＳ２７に進む。
【００７５】
ステップＳ２７では、推定データ転送時間１２３の値が「０」かどうかを判定する。ここで推定データ転送時間１２３の値が「０」であれば、既にデータ転送が終了していると推測されるのでステップＳ２８に進み、レスポンスを受信していない間のタイムアウトのカウントダウンを行うためにカウンタ１２１の値を「１」だけ減算する。そしてステップＳ２９に進み、カウンタ１２１の値が「０」かどうか、即ち、タイムアウトが発生しているかをみる。タイムアウトでなければステップＳ２２に戻るが、タイムアウトが発生したときはステップＳ３０に進み、タイムアウト処理を実行する。
【００７６】
又ステップＳ２７で、推定データ転送時間１２３の値が「０」でなければ、即ち、まだデータ転送が終了していないと推測されるのでステップＳ３２に進み、レスポンスまでの時間を計時するためのカウンタ１２１のカウントダウンは行わず、推定データ転送時間１２３のカウンタ値を「１」だけ減算する。これによってデータ転送中と推定される間は、タイムアウトカウンタ１２１のカウントダウンが行われないためデータ転送中はタイムアウトが発生しないことになる。
【００７７】
以上のような処理を行うことにより、推定されたデータ転送時間分だけタイムアウトを判定するためのカウンタのカウントダウンが行われないので、無用なタイムアウトの発生を抑えることができる。
【００７８】
尚、前述の実施例では、データ転送の開始かどうかの判定を、StartJobによる実データの転送が開始されたかどうかで判定するという場合で説明したが、それ以外にも、例えば転送されるオブジェクトのファイル名が「XXXXXXXX.001」などの画像ファイルであるかどうか、ファイルタイプがＪＰＥＧであるかどうか、データの転送方向がバルクＩＮであるかどうか、ＵＳＢの転送方法がバルク転送であるかどうか、ＰＴＰのオブジェクトハンドルがＪＰＥＧであるかどうかなどで判定してもよいことは明らかである。
【００７９】
［他の実施例］
本発明の目的は前述したように、実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００８０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。
【００８１】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含む。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施例に係るＰＤプリンタの概観斜視図である。
【図２】本実施例に係るＰＤプリンタの操作パネルの概観図である。
【図３】本実施例に係るＰＤプリンタの制御に係る主要部の構成を示すブロック図である。
【図４】本実施例に係るＤＳＣの構成を示すブロック図である。
【図５】本実施例に係るＰＤプリンタとデジタルカメラとの接続を説明する図である。
【図６】本実施例に係る印刷システムにおけるＰＤプリンタとＤＳＣとの間のコマンドのやり取りを説明する図である。
【図７】本実施例に係るＤＳＣから発行されるプリント開始コマンドの具体例を説明する図である。
【図８】本実施例に係るＰＤプリンタからＤＳＣに送信されるJobStatus（Ａ）とDeviceStatus（Ｂ）を説明する図である。
【図９】本実施例に係るＰＤプリンタのcapabilityのやり取りを説明する図で、（Ａ）はＤＳＣからＰＤプリンタへのcapabilityの要求コマンド例を示し、（Ｂ）はＰＤプリンタからＤＳＣへの応答コマンド例を示す図である。
【図１０】本実施例に係る印刷対象画像のファイル情報を取得する例を説明する図で、（Ａ）はＰＤプリンタからＤＳＣへのファイル要求コマンド例を示し、（Ｂ）はＤＳＣからＰＤプリンタへ画像ファイルを送信する場合のコマンド例を示す図である。
【図１１】本発明の第１実施例に係るＤＳＣにおける処理を説明するフローチャートである。
【図１２】本発明の第１実施例に係るＤＳＣのＲＡＭのメモリマップを説明する図である。
【図１３】本発明の第２実施例に係るＤＳＣにおける処理を説明するフローチャートである。
【図１４】本実施例に係るＮＣＤＰを実装したＰＤプリンタとデジタルカメラのソフトウェア構成を説明する概念図である。
【図１】
2005066988.tif 000003
【図２】
2005066988.tif 000004
【図３】
2005066988.tif 000005
【図４】
2005066988.tif 000006
【図５】
2005066988.tif 000007
【図６】
2005066988.tif 000008
【図７】
2005066988.tif 000009
【図８】
2005066988.tif 000010
【図９】
2005066988.tif 000011
【図１０】
2005066988.tif 000012
【図１１】
2005066988.tif 000013
【図１２】
2005066988.tif 000014
【図１３】
2005066988.tif 000015
【図１４】
2005066988.tif 000016