(57)【要約】【課題】  各メーカのデジタルカメラに対応できるフォトダイレクトプリンタでは、互いに持っている機能情報の中には交換する手段のない機能情報が存在する。交換する手段のない機能情報を相手がサポートしているか否か知ることができない。【解決手段】  プリンタからDSCに対して、プリンタの機能が変更したことをcapabilityChangedタグにより通知する（Ｓ３１）。これに対してDSCから、その変更したcapabilityの内容を問い合わせがないときは、プリンタはDSCが、capabilityChangedタグに対応する機能を有していないと判定して（Ｓ３３）、ＵＳＢの切断や再接続を実行して（Ｓ３４）、DSCに対してプリンタにおける最新のcapabilityを通知する。【選択図】    図２８
2005059305.tif 000002
【特許請求の範囲】
【請求項１】
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる記録装置であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記画像供給装置の機能情報を受信する受信手段と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記画像供給装置における所定機能のサポートの有無を推定する推定手段と、
前記推定手段により推定された前記所定機能のサポートの有無に基づいて処理を実行する制御手段と、
を有することを特徴とする記録装置。
【請求項２】
前記推定手段は、前記所定機能に関連するコマンドを前記画像供給装置に発行する手段と、前記所定機能に関連するコマンドに対して前記画像供給装置から返送されるべきコマンドの受信の有無を判定する手段とを有し、前記所定機能に関連するコマンドに対して、返送されるべきコマンドを受信するとサポート有りと推定することを特徴とする請求項１に記載の記録装置。
【請求項３】
前記制御手段は、前記推定手段がサポートの有無を推定した前記所定機能に関して前記画像供給装置に送出する情報を変更することを特徴とする請求項１に記載の記録装置。
【請求項４】
前記画像供給装置に送出する情報は、前記画像供給装置の表示手段に表示させるメッセージを含むことを特徴とする請求項３に記載の記録装置。
【請求項５】
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる画像供給装置であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記記録装置の機能情報を受信する受信手段と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記記録装置における所定機能のサポートの有無を推定する推定手段と、
前記推定手段により推定された前記所定機能のサポートの有無に基づいて処理を実行する制御手段と、
を有することを特徴とする画像供給装置。
【請求項６】
前記推定手段は、前記所定機能に関連するコマンドを前記記録装置に発行する手段と、前記所定機能に関連するコマンドに対して前記記録装置から返送されるべきコマンドの受信の有無を判定する手段とを有し、前記所定機能に関連するコマンドに対して、返送されるべきコマンドを受信するとサポート有りと推定することを特徴とする請求項５に記載の画像供給装置。
【請求項７】
前記推定手段は、前記記録装置が非動作中と推定される状態で、前記所定機能に関連するコマンドを前記記録装置に発行し、前記所定機能に関連するコマンドに対して、前記記録装置から返送されるべきコマンドに前記記録装置が非動作中であることに矛盾しない状態が特定されている場合に前記所定機能のサポート有りと推定することを特徴とする請求項５に記載の画像供給装置。
【請求項８】
前記推定手段は、前記記録装置から最近取得した機能情報と、前記機能情報に基づいて作成して前記記録装置に送信した記録ジョブに対する前記記録装置からの応答に基づいて、前記所定機能のサポートの有無を推定することを特徴とする請求項５に記載の画像供給装置。
【請求項９】
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる記録システムであって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記記録装置の機能情報を受信する受信手段と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記記録装置又は前記画像供給装置における所定機能のサポートの有無を推定する推定手段と、
前記推定手段により推定された前記所定機能のサポートの有無に基づいて処理を実行する制御手段と、
を有することを特徴とする記録システム。
【請求項１０】
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる記録装置における制御方法であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記画像供給装置の機能情報を受信する受信工程と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記画像供給装置における所定機能のサポートの有無を推定する推定工程と、
前記推定工程で推定された前記所定機能のサポートの有無に基づいて処理を実行する制御工程と、
を有することを特徴とする制御方法。
【請求項１１】
前記推定工程では、前記所定機能に関連するコマンドを前記画像供給装置に発行する工程と、前記所定機能に関連するコマンドに対して前記画像供給装置から返送されるべきコマンドの受信の有無を判定する工程とを有し、前記所定機能に関連するコマンドに対して、返送されるべきコマンドを受信するとサポート有りと推定することを特徴とする請求項１０に記載の制御方法。
【請求項１２】
前記制御工程では、前記推定工程でサポートの有無を推定した前記所定機能に関して前記画像供給装置に送出する情報を変更することを特徴とする請求項１０に記載の制御方法。
【請求項１３】
前記画像供給装置に送出する情報は、前記画像供給装置の表示手段に表示させるメッセージを含むことを特徴とする請求項１２に記載の制御方法。
【請求項１４】
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる画像供給装置における制御方法であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記記録装置の機能情報を受信する受信工程と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記記録装置における所定機能のサポートの有無を推定する推定工程と、
前記推定工程で推定された前記所定機能のサポートの有無に基づいて処理を実行する制御工程と、
を有することを特徴とする制御方法。
【請求項１５】
前記推定工程では、前記所定機能に関連するコマンドを前記記録装置に発行する工程と、前記所定機能に関連するコマンドに対して前記記録装置から返送されるべきコマンドの受信の有無を判定する工程とを有し、前記所定機能に関連するコマンドに対して、返送されるべきコマンドを受信するとサポート有りと推定することを特徴とする請求項１４に記載の制御方法。
【請求項１６】
前記推定工程では、前記記録装置が非動作中と推定される状態で、前記所定機能に関連するコマンドを前記記録装置に発行し、前記所定機能に関連するコマンドに対して、前記記録装置から返送されるべきコマンドに前記記録装置が非動作中であることに矛盾しない状態が特定されている場合に前記所定機能のサポート有りと推定することを特徴とする請求項１４に記載の制御方法。
【請求項１７】
前記推定工程では、前記記録装置から最近取得した機能情報と、前記機能情報に基づいて作成して前記記録装置に送信した記録ジョブに対する前記記録装置からの応答に基づいて、前記所定機能のサポートの有無を推定することを特徴とする請求項１４に記載の制御方法。
【請求項１８】
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる記録システムにおける制御方法であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記記録装置の機能情報を受信する受信工程と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記記録装置又は前記画像供給装置における所定機能のサポートの有無を推定する推定工程と、
前記推定工程で推定された前記所定機能のサポートの有無に基づいて処理を実行する制御工程と、
を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルカメラなどの画像供給装置と記録装置とを有する記録システム及びその制御方法、及び画像供給装置と記録装置とその制御方法に関するものである。
【背景技術】
【０００２】
近年、簡単な操作で画像を撮影し、その撮影した画像をデジタル画像データに変換できるデジタルカメラ（撮像装置）が広く使用されるようになってきている。このようなカメラで撮影した画像を印刷して写真として使用する場合には、通常、一旦、その撮影されたデジタル画像データを、デジタルカメラからＰＣ（コンピュータ）に取り込み、そのＰＣで画像処理を行った後、そのＰＣからカラープリンタに出力して印刷するのが一般的である。
【０００３】
これに対して最近は、ＰＣを介することなく、直接、デジタルカメラからカラープリンタにデジタル画像データを伝送して印刷できるカラープリントシステム（以降ダイレクト印刷と称する）や、デジタルカメラに搭載され、その撮像した画像を記憶しているメモリカードを、直接、カラープリンタに装着し、そのメモリカードに記憶されている、撮影された画像を印刷できる、所謂フォトダイレクト（ＰＤ）プリンタ等も開発されている。
【０００４】
このようなダイレクト印刷は、元々、同一メーカのカメラとプリンタとの間でのみ実現できる機種限定の印刷機能であったが、近年、これら業界での標準化が進み、メーカの違いに依らず、異なるメーカのカメラとプリンタとを接続してダイレクト印刷が行える環境が整ってきた。
【０００５】
また、このようなプリンタ装置は、上記説明したデジタルカメラ以外にも、例えば、携帯電話やＰＤＡそれ以外にも各種デバイスからの画像データを受信して印刷することが考えられ、またプリンタ自体の機能も種々であるため互いの機能情報の交換が行われる。
【特許文献１】特開２００３−０６１０３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、このような機能情報の中には、互いに情報交換できない、例えば相手機器が、そのような機能に関して全く考慮していないため、そのような機能情報を送信しても、その相手機器がそれを理解できない場合がある。そのような場合には、その機能情報発信した機器側では、その機能を相手機器がサポートしていないのか、或は通信のエラーなどにより、それに対する応答がないのかを判断できない。このため、このような自体が発生した場合は、各機器は相手機器がその機能をサポートしているかどうかが不明なままで、画像データの転送および記録指示を行わなければならなくなる。
【０００７】
この場合、例えば画像データを送信して印刷を依頼するカメラにおけるＵＩ表示が、実際に相手機器であるプリンタが有している機能とは異なったものとなり、その印刷を行おうとしているカメラのユーザは、意図した印刷結果が得られなくなるなどにより混乱をきたす可能性がある。また、カメラからプリンタに対して、そのプリンタが有していない印刷機能を用いた印刷指示を与えてしまい、結果としてユーザの意図に合わない印刷結果が得られてしまうという不具合が生じる可能性がある。
【０００８】
本発明は上記従来例に鑑みてなされたもので、画像供給装置及び記録装置が特定の機能情報をサポートしているかどうか不明な場合に、所定の機能をサポートしているかどうかを判定し、その判定結果に基づいた処理を実行する記録装置及び画像供給装置及び記録システムとその制御方法を提供する。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明の記録装置は以下のような構成を備える。即ち、
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる記録装置であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記画像供給装置の機能情報を受信する受信手段と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記画像供給装置における所定機能のサポートの有無を推定する推定手段と、
前記推定手段により推定された前記所定機能のサポートの有無に基づいて処理を実行する制御手段とを有することを特徴とする。
【００１０】
上記目的を達成するために本発明の画像供給装置は以下のような構成を備える。即ち、
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる画像供給装置であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記記録装置の機能情報を受信する受信手段と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記記録装置における所定機能のサポートの有無を推定する推定手段と、
前記推定手段により推定された前記所定機能のサポートの有無に基づいて処理を実行する制御手段とを有することを特徴とする。
【００１１】
上記目的を達成するために本発明の記録システムは以下のような構成を備える。即ち、
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる記録システムであって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記記録装置の機能情報を受信する受信手段と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記記録装置又は前記画像供給装置における所定機能のサポートの有無を推定する推定手段と、
前記推定手段により推定された前記所定機能のサポートの有無に基づいて処理を実行する制御手段とを有することを特徴とする。
【００１２】
上記目的を達成するために本発明の制御方法は以下のような工程を備える。即ち、
画像供給装置と記録装置とが所定のプロトコルを用いて通信する通信システムに用いられる記録システムにおける制御方法であって、
前記記録装置と前記画像供給装置に実装された前記所定のプロトコルを用いたアプリケーションによる通信手順の確立後、前記記録装置の機能情報を受信する受信工程と、
前記通信手順での通信内容に応じて、前記機能情報に記述されていない、前記記録装置又は前記画像供給装置における所定機能のサポートの有無を推定する推定工程と、
前記推定工程で推定された前記所定機能のサポートの有無に基づいて処理を実行する制御工程とを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、画像供給装置及び記録装置が特定の機能情報をサポートしているかどうか不明な場合に、所定の機能をサポートしているかどうかを判定し、その判定結果に基づいた処理を実行できる。
【発明を実施するための最良の形態】
【００１４】
以下、添付図面を参照して本発明の好適な実施例を詳細に説明する。
【実施例】
【００１５】
図１は、本発明の実施例に係るフォトダイレクトプリンタ装置（以下、ＰＤプリンタ）１０００の概観斜視図である。このＰＤプリンタ１０００は、ホストコンピュータ（ＰＣ）からデータを受信して印刷する通常のＰＣプリンタとしての機能と、メモリカードなどの記憶媒体に記憶されている画像データを直接読取って印刷したり、或いはデジタルカメラやＰＤＡなどからの画像データを受信して印刷する機能を備えている。
【００１６】
図１において、本実施例に係るＰＤプリンタ１０００の外殻をなす本体は、下ケース１００１、上ケース１００２、アクセスカバー１００３及び排出トレイ１００４の外装部材を有している。また、下ケース１００１は、ＰＤプリンタ１０００の略下半部を、上ケース１００２は本体の略上半部をそれぞれ形成しており、両ケースの組合せによって内部に後述の各機構を収納する収納空間を有する中空体構造をなし、その上面部及び前面部にはそれぞれ開口部がされている。さらに、排出トレイ１００４は、その一端部が下ケース１００１に回転自在に保持され、その回転によって下ケース１００１の前面部に形成される開口部を開閉させ得るようになっている。このため、記録動作を実行させる際には、排出トレイ１００４を前面側へと回転させて開口部を開成させることにより、ここから記録されたシート（普通紙、専用紙、樹脂シート等を含む。以下単にシートとする）が排出可能となると共に、排出されたシートを順次積載し得るようになっている。また排紙トレイ１００４には、２枚の補助トレイ１００４ａ，１００４ｂが収納されており、必要に応じて各トレイを手前に引き出すことにより、シートの支持面積を３段階に拡大、縮小させ得るようになっている。
【００１７】
アクセスカバー１００３は、その一端部が上ケース１００２に回転自在に保持され、上面に形成される開口部を開閉し得るようになっており、このアクセスカバー１００３を開くことによって本体内部に収納されている記録ヘッドカートリッジ（不図示）或いはインクタンク（不図示）等の交換が可能となる。尚、ここでは特に図示しないが、アクセスカバー１００３を開閉させると、その裏面に形成された突起がカバー開閉レバーを回転させるようになっており、そのレバーの回転位置をマイクロスイッチなどで検出することにより、アクセスカバー１００３の開閉状態を検出し得るようになっている。
【００１８】
また、上ケース１００２の上面には、電源キー１００５が設けられている。また、上ケース１００２の右側には、液晶表示部１００６や各種キースイッチ等を備える操作パネル１０１０が設けられている。この操作パネル１０１０の構造は、図２を参照して詳しく後述する。１００７は自動給送部で、シートを装置本体内へと自動的に給送する。１００８は紙間選択レバーで、プリントヘッドとシートとの間隔を調整するためのレバーである。１００９はカードスロットで、ここにメモリカードを装着可能なアダプタが挿入され、このアダプタを介してメモリカードに記憶されている画像データを直接取り込んで印刷することができる。このメモリカード（ＰＣ）としては、例えばコンパクトフラッシュ（登録商標）メモリ、スマートメディア、メモリスティック等がある。１０１１はビューワ（液晶表示部）で、このＰＤプリンタ１０００の本体に着脱可能であり、ＰＣカードに記憶されている画像の中からプリントしたい画像を検索する場合などに、１コマ毎の画像やインデックス画像などを表示するのに使用される。１０１２は後述するデジタルカメラを接続するためのＵＳＢ端子である。また、このＰＤ装置１０００の後面には、パーソナルコンピュータ（ＰＣ）を接続するためのＵＳＢコネクタが設けられている。
＜プリンタ操作部の概要説明＞
図２は、本実施例に係るＰＤプリンタ１０００の操作パネル１０１０の概観図である。
【００１９】
図において、液晶表示部１００６には、その左右に印刷されている項目に関するデータを各種設定するためのメニュー項目が表示される。ここに表示される項目としては、例えば、複数ある写真画像ファイルの内、印刷したい写真画像の先頭番号、指定コマ番号（開始コマ指定／印刷コマ指定）、印刷を終了したい最後の写真番号（終了）、印刷部数（部数）、印刷に使用するシートの種類（用紙種類）、１枚のシートに印刷する写真の枚数設定（レイアウト）、印刷の品位の指定（品位）、撮影した日付を印刷するかどうかの指定（日付印刷）、写真を補正して印刷するかどうかの指定（画像補正）、印刷に必要なシートの枚数表示（用紙枚数）等がある。これら各項目は、カーソルキー２００１を用いて選択、或いは指定される。２００２はモードキーで、このキーを押下する毎に、印刷の種類（インデックス印刷、全コマ印刷、１コマ印刷、指定コマ印刷等）を切り替えることができ、これに応じてＬＥＤ２００３の対応するＬＥＤが点灯される。２００４はメンテナンスキーで、プリントヘッドのクリーニング等、プリンタのメンテナンスを行わせるためのキーである。２００５は印刷開始キーで、印刷の開始を指示する時、或いはメンテナンスの設定を確立する際に押下される。２００６は印刷中止キーで、印刷を中止させる時や、メンテナンスの中止を指示する際に押下される。
【００２０】
＜プリンタ電気仕様概要＞
次に図３を参照して、本実施例に係るＰＤプリンタ１０００の制御に係る主要部の構成を説明する。尚、この図３において、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
【００２１】
図３において、３０００は制御部（制御基板）を示している。３００１はＡＳＩＣ（専用カスタムＬＳＩ）を示している。３００２はＤＳＰ（デジタル信号処理プロセッサ）で、内部にＣＰＵを有し、後述する各種制御処理及び、輝度信号（ＲＧＢ）から濃度信号（ＣＭＹＫ）への変換、スケーリング、ガンマ変換、誤差拡散等の画像処理等を担当している。３００３はメモリで、ＤＳＰ３００２のＣＰＵの制御プログラムを記憶するプログラムメモリ３００３ａ、及び実行時のプログラムを記憶するＲＡＭエリア、画像データなどを記憶するワークメモリとして機能するメモリエリアを有している。３００４はプリンタエンジンで、ここでは、複数色のカラーインクを用いてカラー画像を印刷するインクジェットプリンタのプリンタエンジンが搭載されている。３００５はデジタルカメラ（ＤＳＣ）３０１２を接続するためのポートとしてのＵＳＢコネクタである。３００６はビューワ１０１１を接続するためのコネクタである。３００８はＵＳＢハブ(USBHUB)で、このＰＤプリンタ１０００がＰＣ３０１０からの画像データに基づいて印刷を行う際には、ＰＣ３０１０からのデータをそのままスルーし、ＵＳＢ３０２１を介してプリンタエンジン３００４に出力する。これにより、接続されているＰＣ３０１０は、プリンタエンジン３００４と直接、データや信号のやり取りを行って印刷を実行することができる（一般的なＰＣプリンタとして機能する）。３００９は電源コネクタで、電源３０１９により、商用ＡＣから変換された直流電圧を入力している。ＰＣ３０１０は一般的なパーソナルコンピュータ、３０１１は前述したメモリカード（ＰＣカード）、３０１２はデジタルカメラ（ＤＳＣ：DigitalStillCamera)である。
【００２２】
尚、この制御部３０００とプリンタエンジン３００４との間の信号のやり取りは、前述したＵＳＢ３０２１又はＩＥＥＥ１２８４バス３０２２を介して行われる。
【００２３】
図４は、ＡＳＩＣ３００１の構成を示すブロック図で、この図４においても、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
【００２４】
４００１はＰＣカードインターフェース部で、装着されたＰＣカード３０１１に記憶されている画像データを読取ったり、或いはＰＣカード３０１１へのデータの書き込み等を行う。４００２はＩＥＥＥ１２８４インターフェース部で、プリンタエンジン３００４との間のデータのやり取りを行う。このＩＥＥＥ１２８４インターフェース部４００２は、デジタルカメラ３０１２或いはＰＣカード３０１１に記憶されている画像データを印刷する場合に使用されるバスである。４００３はＵＳＢインターフェース部で、ＰＣ３０１０との間でのデータのやり取りを行う。４００４はＵＳＢホストインターフェース部で、デジタルカメラ３０１２との間でのデータのやり取りを行う。４００５は操作パネル・インターフェース部で、操作パネル１０１０からの各種操作信号を入力したり、表示部１００６への表示データの出力などを行う。４００６はビューワ・インターフェース部で、ビューワ１０１１への画像データの表示を制御している。４００７は各種スイッチやＬＥＤ４００９等との間のインターフェースを制御するインターフェース部である。４００８はＣＰＵインターフェース部で、ＤＳＰ３００２との間でのデータのやり取りの制御を行っている。４０１０はこれら各部を接続する内部バス（ＡＳＩＣバス）である。
【００２５】
以上の構成に基づく動作概要を以下に説明する。
【００２６】
＜通常のＰＣプリンタモード＞
これはＰＣ３０１０から送られてくる印刷データに基づいて画像を印刷する印刷モードである。
【００２７】
このモードでは、ＰＣ３０１０からのデータがＵＳＢコネクタ１０１３（図３）を介して入力されると、ＵＳＢハブ３００８、ＵＳＢ３０２１を介して直接プリンタエンジン３００４に送られ、ＰＣ３０１０からのデータに基づいて印刷が行われる。
【００２８】
＜ＰＣカードからの直接プリントモード＞
ＰＣカード３０１１がカードスロット１００９に装着或いは脱着されると割り込みが発生し、これによりＤＳＰ３００２はＰＣカード３０１１が装着されたか或いは脱着（取り外された）されたかを検知できる。ＰＣカード３０１１が装着されると、そのＰＣカード３０１１に記憶されている圧縮された（例えばＪＰＥＧ圧縮）画像データを読込んでメモリ３００３に記憶する。次に操作パネル１０１を使用して、その格納した画像データの印刷が指示されると、圧縮された画像データを解凍してメモリ３００３に格納し、ＲＧＢ信号からＹＭＣＫ信号への変換、ガンマ補正、誤差拡散等を実行してプリンタエンジン３００４で印刷可能な記録データに変換し、ＩＥＥＥ１２８４インターフェース部４００２を介してプリンタエンジン３００４に出力することにより印刷を行う。
＜カメラ／プリンタの接続概要説明＞
図５は、本実施例に係るＰＤプリンタ１０００とＤＳＣ３０１２との接続を説明する図で、前述の図面と共通している部分は同じ記号で示し、その説明を省略している。
【００２９】
図において、ケーブル５０００は、ＰＤプリンタ１０００のコネクタ１０１２と接続されるコネクタ５００１と、デジタルカメラ３０１２の接続用コネクタ５００３と接続するためのコネクタ５００２とを備えており、また、デジタルカメラ３０１２は、内部のメモリに保存している画像データを、接続用コネクタ５００３を介して出力可能に構成されている。なお、デジタルカメラ３０１２の構成としては、内部に記憶手段としてのメモリを備えるものや、取外し可能なメモリを装着するためのスロットを備えたものなど、種々の構成を採用することができる。この図５に示すようにして、ケーブル５０００を介してＰＤプリンタ１０００とデジタルカメラ３０１２とを接続することにより、デジタルカメラ３０１２からの画像データを直接ＰＤプリンタ１０００で印刷することができる。
【００３０】
ここで図５に示すようにしてＰＤプリンタ１０００にデジタルカメラ３０１２が接続された場合は、操作パネル１０１０の表示部１００６にはカメラマークのみが表示され、操作パネル１０１０における表示及び操作が無効になり、又ビューワ１０１１への表示も無効になる。従って、これ以降はデジタルカメラ３０１２でのキー操作及びデジタルカメラ３０１２の表示部（不図示）への画像表示のみが有効になるので、ユーザはそのデジタルカメラ３０１２を使用して印刷指定を行うことができる。
【００３１】
本実施例では、複数のメーカのデジタルカメラを接続してプリントすることができるＰＤプリンタを提供することを目的とし、本実施例に係るＰＤプリンタ１０００とデジタルカメラとを接続してプリントを行なう場合の通信規約について詳しく説明する。
【００３２】
本実施例においては、ＰＤプリンタとデジタルカメラとの間の通信制御を汎用ファイル、汎用フォーマットを用いて行い、インターフェースに依存しないＮＣＤＰ（New Camera Direct Print）を提案する。
【００３３】
図６は、このＮＣＤＰの構成の一例を示す図である。
【００３４】
図において、６００はＵＳＢによるインターフェース、６０１はブルーツース（Bluetooth）によるインターフェースを示している。６０２はＮＣＤＰによるシステムを構築する際に組込まれるアプリケーションレイヤを示している。６０３は既存のプロトコル及びインターフェースを実行するためのレイヤで、ここではＰＴＰ（Picture Transfer Protocol），ＳＣＳＩ及びブルーツースのＢＩＰ（Basic Image Profile），ＵＳＢインターフェース等が実装されている。本実施例に係るＮＣＤＰは、このようなプロトコルレイヤ等のアーキテクチャが実装されていて、その上にアプリケーションとして実装されることが前提である。ここではＰＤプリンタ１０００は、ＵＳＢホスト、カメラ３０１２はＵＳＢスレーブとして規定されており、図６に示すように、それぞれ同じＮＣＤＰ構成となっている。
【００３５】
図７は、本実施例に係るＮＣＤＰによる、ＰＤプリンタ１０００とデジタルカメラ（ＤＳＣ）３０１２との間での通信手順の流れを説明する図である。
【００３６】
ここでは、図５に示すようにＵＳＢケーブル５０００によりＰＤプリンタ１０００とＤＳＣ３０１２とが接続されたことが検知されると、これら機器間での通信が可能になる。これにより、これら機器に実装されているアプリケーションが実行されてＮＣＤＰによる手順７０１への移行が開始される。７０２はＮＣＤＰの初期状態を示し、ここでは互いの機種がＮＣＤＰを実行可能かどうかを判断し、可能であればＮＣＤＰによる手順７０１に移行している。もしここで、ＤＳＣ３０１２がＮＣＤＰを実装していない場合には、ＮＣＤＰによる通信制御は実行されない。こうしてＮＣＤＰに移行した後、７０３で示すように、ＤＳＣ３０１２から「基本手順」による画像データの転送／印刷が指示されると、ＤＳＣ３０１２から画像ファイルをＰＤプリンタ１０００に転送して印刷する簡易印刷モードに移行する。また７０４で示すように、ＤＳＣ３０１２から「推奨手順」による画像データの転送／印刷が指示されると、ＤＳＣ３０１２とＰＤプリンタ１０００との間で各種ネゴシエーションを行ってその印刷条件等を決定した後、画像ファイルをＤＳＣ３０１２からＰＤプリンタ１０００に転送して印刷する、より多彩な印刷モードに移行する。また７０５は「拡張手順」を示し、この「拡張手順」の指示がＤＳＣ３０１２によりなされると、例えばＤＰＯＦ，ＸＨＴＭＬ-print，ＳＶＧ等の高度レイアウト機能、及び各社ベンダーユニークな仕様での印刷を行うモードが設定される。尚、この「拡張手順」による詳細仕様に関しては、ＤＳＣのメーカ各社個別の拡張仕様書で規定されるので、ここでは特に説明しない。尚、これら「基本手順」及び「推奨手順」による画像印刷に関しては、図９乃至図１１を参照して後述する。
【００３７】
図８は、本実施例に係るＮＣＤＰにおいてプリントを行うために規定したコマンドを説明する図である。
【００３８】
図８において、「対応モード」はＤＳＣ３０１２から指示される、前述した「基本手順」、「推奨手順」及び「拡張手順」に対応している。「推奨手順」では全てのコマンドが使用できるのに対し、「基本手順」は簡易印刷モードであるため、ＮＣＤＰへの移行及びその終了、「基本手順」、「推奨手順」及び「拡張手順」の各モードへの移行コマンド及びカメラ３０１２からの画像データの取得及びカメラ３０１２よりの印刷命令のみが使用可能である。尚、「拡張手順」では、ＮＣＤＰへの移行及びその終了、「基本手順」、「推奨手順」及び「拡張手順」の各モードへの移行コマンドだけが用いられるように記載されているが、前述のように、各社の仕様に応じて他のコマンドが用いられても良いことはいうまでもない。
【００３９】
以下、前述した「基本手順」及び「推奨手順」による画像印刷について説明する。
【００４０】
図９は、「基本手順」による画像印刷を行う場合のＮＣＤＰの通信手順を説明する図である。この「基本手順」は、ＤＳＣからＰＤプリンタ１０００に対して１枚の画像ファイルを転送して印刷するだけの簡易印刷モードであり、対応している画像フォーマットとしては、例えばＶＧＡサイズ（６４０×４８０画素）のＲＧＢ画像、ＶＧＡサイズ（６４０×４８０画素）のＪＰＥＧ画像とし、画像ファイルサイズとしては約１Ｍバイト以下としている。ＤＳＣ３０１２はＰＤプリンタ１０００がサポートしている画像フォーマットで送信する。この場合はエラーハンドリグは実行しない。
【００４１】
まず９００で、ＰＤプリンタ１０００からＤＳＣ３０１２に対してＮＣＤＰへの移行を指示するコマンド（NCDPStart）を送信する。ここでＤＳＣ３０１２がＮＣＤＰを実装していればＯＫが返送される（９０１）。尚、このＮＣＤＰの確認手順を行う場合の一例としてＰＴＰを用いた場合の具体例に関しては、図１４を参照して詳しく後述する。
【００４２】
こうして互いにＮＣＤＰが実装されていることが確認されると、ＰＤプリンタ１０００からモードに移行するように命令（ProcedureStart）がＤＳＣ３０１２に送信される（９０２）。これに対して９０３で、ＤＳＣ３０１２から簡易印刷モードである「基本手順」が送られてくると、これ以降は「基本手順」による印刷モードに移行する。この場合は、ＤＳＣ３０１２における操作により印刷したい画像が選択されて印刷が指示されると、印刷の開始を指示するコマンド（JobStart）がＤＳＣ３０１２からＰＤプリンタ１０００に送られる（９０４）。これによりＰＤプリンタ１０００は簡易印刷モードとなり、ＤＳＣ３０１２に対してコマンド（GetImage）を送信してＪＰＥＧ画像を要求する（９０５）。これによりＤＳＣ３０１２からＪＰＥＧ画像がＰＤプリンタ１０００に送信され（９０６）、ＰＤプリンタ１０００における印刷処理が開始される。こうして、指示された画像の印刷が終了すると印刷ジョブの終了を示すコマンド（SendStatus）がＰＤプリンタ１０００からＤＳＣ３０１２に送信される（９０７）。これに対してＤＳＣ３０１２から肯定応答（ＯＫ）が返送されると（９０８）、この「基本手順」による印刷処理が完了する。尚、この「基本手順」でやり取りするかどうかに関しても、ＤＳＣとＰＤプリンタの双方のCapabilityで決定される。
【００４３】
図１０は、「推奨手順」による画像印刷を行う場合のＮＣＤＰの通信手順を説明する図で、前述の図９と共通する手順には同じ番号を付して、その説明を省略する。この「推奨手順」では、ＰＤプリンタ１０００とＤＳＣ３０１２との間でのネゴシエーションを前提とした「より多彩な印刷」モードが設定でき、複数枚の写真印刷やレイアウト印刷が可能になる。また、エラーハンドリングも実行可能となる。
【００４４】
図１０において、図９の場合と同様にして、互いにＮＣＤＰが実装されていることを確認した後、この場合では、ＤＳＣ３０１２から「推奨手順」が指示される（９１０）。この後はこの「推奨手順」による手順が実行される。まず９１１で示すように、ＤＳＣ３０１２からＰＤプリンタ１０００に対してCapabilityが要求されると、ＰＤプリンタ１０００は、自機の備えている機能及び用紙設定等を含む機能をCapability情報として全てＤＳＣ３０１２に伝える。このCapability情報は、スクリプト形式（テキスト）でＤＳＣ３０１２に送信される。
【００４５】
このCapability情報の一例を図１２に示す。
【００４６】
図１２に示すように、このCapability情報は、印刷可能な用紙の種類及びサイズ、印刷品位、画像データのフォーマット、日付印刷の有無、ファイル名印刷の有無、レイアウト、画像補正の有無、更にはオプションとして、各カメラメーカの仕様に対応した機能の有無等の情報を含んでいる。
【００４７】
このようにCapability情報をスクリプト表記とすることにより、他の通信プロトコルのアーキテクチャへの移植を簡単にし、このような機能情報のやり取りを、より標準化し易くしている。尚、このスクリプト表記はＸＭＬ準拠であっても良い。
【００４８】
このようなCapability情報を受信したＤＳＣ３０１２のユーザは、そのＰＤプリンタ１０００が備えている機能の内のいずれを使用して印刷を行うかを判定し、印刷したい画像を選択すると共に、その画像の印刷条件をそのＰＤプリンタ１０００の有している機能の中から選択して決定する。こうして印刷したい画像及び印刷条件などが決定されて印刷開始が指示されるとプリント命令（JobStart）がＰＤプリンタ１０００に送られる。これによりＰＤプリンタ１０００から、その画像データを要求するコマンド（GetImage xn）が発行され（９１２）、それに応答してＤＳＣ３０１２から、対応する画像データが、ＰＤプリンタ１０００が受信可能な画像フォーマット（Ｔｉｆｆ，ＪＰＥＧ，ＲＧＢなど）で送信される（９１３）。ここで１枚の画像印刷に対して複数の画像データを送信できるようになっているのは、例えば２×２等のレイアウト印刷が指定されている場合は、１枚の用紙に対して４枚分の画像データを送信する必要があるためである。こうして、指示された画像の印刷が終了すると印刷ジョブの終了を示すステータス情報（SendStatus）がＰＤプリンタ１０００からＤＳＣ３０１２に送信される（９０７）。ここでは正常終了を示す「endednormaly」が送信されている。これに対してＤＳＣ３０１２から肯定応答（ＯＫ）が返送されると（９０８）、再び、この「推奨手順」による、次に画像の選択・印刷処理に移行する。
【００４９】
図１１は、前述の「推奨手順」による画像印刷を行う場合のＮＣＤＰの通信手順において、ＰＤプリンタ１０００でエラーが発生した場合の通信手順を説明する図で、前述の図１０と共通する手順には同じ番号を付して、その説明を省略する。
【００５０】
この例では、「推奨手順」での印刷処理の実行中に、ＰＤプリンタ１０００において給紙エラーが発生した場合の例を示している。この場合には９１４で、ＰＤプリンタ１０００からＤＳＣ３０１２に対して給紙エラーを示すステータス情報（SendStatus("Warning")）が送信される。これに対してＤＳＣ３０１２のユーザによる判断に基づいて、その印刷処理を継続するか（JobContinue）、中止するか（JobAbort）を示すコマンドがＰＤプリンタ１０００に送信される（９１５）。これによりＰＤプリンタ１０００では、中止の場合はその印刷処理を中止してプリントジョブの終了通知（JobEnd）を送信して印刷を中止する。或いは継続が指示された場合には、その給紙エラーの修復を待って、印刷処理を継続するように動作する。
【００５１】
次に、前述した処理手順を図１３のフローチャートを参照して説明する。
【００５２】
図１３は、図７に示す処理手順を説明するフローチャートである。
【００５３】
まずステップＳ１で、デジタルカメラ（ＤＳＣ）３０１２とＰＤプリンタ１０００との間の通信を確立し（７００）、ステップＳ２で、これら機器がＮＣＤＰを実装済みかどうかを判定し、実装済みであればＮＣＤＰに移行する。次にステップＳ３に進み、ＤＳＣ３０１２からの手順指示を受信して、その指示された手順に移行する。ここで「基本手順」が指示された時はステップＳ４からステップＳ５に進み、「基本手順」による印刷処理を実行する。また「推奨手順」が指示された時はステップＳ６からステップＳ７に進み、前述した「推奨手順」による印刷処理を実行する。更に「拡張手順」が指示された時はステップＳ８からステップＳ９に進み、各ベンダーに応じた「拡張手順」による印刷処理を実行する。それ以外の場合はステップＳ１０に進み、このＰＤプリンタ１０００とＤＳＣ３０１２とによる独自のモードでの印刷を実行する。
【００５４】
次に上述したＮＣＤＰにおける各種コマンド（図８）を、汎用のＰＴＰを用いて実現した（ＰＴＰによるラッパー）例を説明する。尚、本実施例では、ＰＴＰを用いたＮＣＤＰの場合で説明するが本発明はこれに限定されるものではなく、例えば、他のインターフェース、他のクラス（Class）上でダイレクトプリントサービスＡＰＩを実装しても良い。
【００５５】
［NCDPStart］
図１４は、ＮＣＤＰ手順の開始を指示する命令（NCDPStart）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００５６】
ＰＤプリンタ１０００とＤＳＣ３０１２とが物理的に接続された後、まず１４００で、ＰＤプリンタ１０００からＤＳＣ３０１２に対してGetDeviceInfoが送信され、ＤＳＣ３０１２に対して、その保持しているオブジェクトに関する情報が要求される。これに対してＤＳＣ３０１２は、DeviceInfo Datasetにより、ＤＳＣ３０１２に保持しているオブジェクトに関する情報をＰＤプリンタ１０００に送信する。次に１４０２で、OpenSessionにより、ＤＳＣ３０１２をリソースとして割り当て、必要に応じてデータオブジェクトにハンドルをアサインしたり、特別な初期化を行うための手順の開始要求が発行されてＤＳＣ３０１２から肯定応答（ＯＫ）が返送されるとＰＴＰでの通信が開始される。次に１４０３で、ＤＳＣ３０１２に対してスクリプト形式の全てのハンドルを要求する（Storage ID: FFFFFF, Object Type: Script）と、これに対して１４０４で、ＤＳＣ３０１２に保持されている全てのハンドルリストが返送される。次に１４０５，１４０６において、ＰＤプリンタ１０００からｉ番目のオブジェクトハンドルの情報を取得する。ここで、このオブジェクトに、ＤＳＣ３０１２の識別を示すキーワード（例えば「山」）が含まれていると、次に１４０７において、ＰＤプリンタ１０００からオブジェクト情報の送信を指示して（SendObjectInfo）、それに対して肯定応答（ＯＫ）を受信すると、SendObjectにより、オブジェクト情報をＰＤプリンタ１０００からＤＳＣ３０１２に対して送信する。ここで、このオブジェクトには、前述のキーワードに対する応答キーワード（合言葉）として例えば「川」が含まれている。
【００５７】
このようにして、ＰＤプリンタ１０００とＤＳＣ３０１２の双方が互いに接続相手を認識できることになり、これ以降はＮＣＤＰによる手順（図７の７０１）に移行することができる。このようにファイルの受渡しができるトランスポートレイヤーであればキーワードの受渡しを確実に行うことができる。即ち、本実施例のＮＣＤＰにユニークなコマンド等を追加することなく、キーワードを交換することができる。尚、ここでキーワードとしては、上述の例に限定されるものでなく、同じキーワードであっても良い。またこのキーワードによるネゴシエーションを行う時間を短縮するために、スクリプト形式のハンドルの最初にこのキーワードを入れておくことにより、互いの機器を確認するのに要する時間を短縮できる。
【００５８】
［ProcedureStart］
図１５は、ＤＳＣ３０１２からの、モードへの移行手順を指示する命令を受信して、そのモードに移行するための命令（ProcedureStart）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００５９】
ここではまず１５０１で、ＰＤプリンタ１０００がサポートしている手続「基本手順」、「推奨手順」、「拡張手順」をＤＳＣ３０１２に通知するためにSendObjectInfoにより、ＤＳＣ３０１２に対して送信したいオブジェクト情報があることを伝える。これに対して肯定応答（ＯＫ）がＤＳＣ３０１２から送られてくると、１５０２でSendObjectによりオブジェクトを送信する旨をＤＳＣ３０１２に伝え、次の１５０３のObjectDataで、このＰＤプリンタ１０００がサポートしている手続に関する情報を送信する。次に１５０４で、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、GetObject動作を起動したい（プッシュモードに移行）旨を伝える。これにより１５０５で、ＰＤプリンタ１０００からオブジェクト情報に関する情報を受信する旨が伝えられると（GetObjectInfo）、１５０６で、ObjectInfo Datasetにより、その情報が返送され、次に１５０７で、そのオブジェクト情報を指定してオブジェクト情報そのものが要求されると、Object Datasetにより、ＤＳＣ３０１２が使用する手続（「基本」、「推奨」、「拡張」等）をＰＤプリンタ１０００に知らせる（１５０８）。
【００６０】
これにより、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、画像の印刷モードを指定することができる。
【００６１】
［NCDPEnd］
図１６は、本実施例に係るＮＣＤＰにおける通信制御手順を終了する命令（NCDPEnd）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００６２】
この手順では、１６００において、ＰＤプリンタ１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報があることを伝え、ObjectDataにより、ＤＳＣ３０１２に対してＮＣＤＰのモードから抜けることを通知する。これに対して肯定応答（ＯＫ）を受信すると、１６０１でCloseSessionを送信して、この通信を終了させる。これによりＮＣＤＰによる通信手順を終了する。
【００６３】
［getCapability］
図１７は、本実施例に係るＮＣＤＰにおける、ＰＤプリンタ１０００の機能をＤＳＣ３０１２に通知するCapability命令における通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００６４】
この手順では、１７０１において、ＤＳＣ３０１２からＰＤプリンタ１０００に対して（RequestObjectTransfer）により、ＤＳＣ３０１２からプリンタ１０００に対して送信したいオブジェクトがある旨を通知する。これに対して１７０２で、プリンタ１０００より、そのオブジェクトの情報が要求されると、１７０３で、その転送したいオブジェクトのデータセットをプリンタ１０００に通知する。そして１７０４で、プリンタ１０００からＤＳＣ３０１２に対してオブジェクトの取得コマンド（GetObject）が発行されると、それに応答してオブジェクトがＤＳＣ３０１２からプリンタ１０００に対して送信され、このオブジェクトの送信により、ＤＳＣ３０１２がプリンタ１０００のCapabilityを要求しているとみなす（１７０５）。
【００６５】
これによりプリンタ１０００は、自分の有している、その要求されたオブジェクトに関する情報をＤＳＣ３０１２に送信する。そして１７０７で、プリンタ１０００が有している機能を示すCapabilityをSendObject，ObjcetDataにより、スクリプト（Script）形式でＰＤプリンタ１０００からＤＳＣ３０１２に対して送信する。以上により、ＰＤプリンタ１０００とＤＳＣ３０１２とが有している機能情報の交換が成立する。
【００６６】
［GetImage］
図１８は、本実施例に係るＮＣＤＰにおけ+る、ＰＤプリンタ１０００がＤＳＣ３０１２に保持されている画像データ（ＪＰＥＧ画像）を取得する（GetImage）通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００６７】
まず１８００で、ＤＳＣ３０１２が保持しているオブジェクトに関する情報を要求すると、１８０１で、そのオブジェクトに関する情報（Object Dataset）がＤＳＣ３０１２からＰＤプリンタ１０００に送られる。次に、１８０２で、そのオブジェクトを指定して取得要求（GetObject）を発行すると、１８０３で、その要求された画像ファイル（Object Dataset）がＤＳＣ３０１２からＰＤプリンタ１０００に対して送信される。この様にしてＰＤプリンタ１０００は、ＤＳＣ３０１２から所望の画像ファイルを取得することができる。
【００６８】
［sendStatus］
図１９は、本実施例に係るＮＣＤＰにおける、ＰＤプリンタ１０００からＤＳＣ３０１２に対してエラー状態などを通知する（Status）通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００６９】
まず１９００で、ＰＤプリンタ１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報がある旨をSendObjectInfoにより通知する。そして１９０１で、そのオブジェクト情報に関する情報セット（Object Dataset）をＤＳＣ３０１２に送信し、ＤＳＣ３０１２からの肯定応答（ＯＫ）に対して、ＰＤプリンタ１０００におけるエラー等のステータス情報をSendObjectおよびObject Datasetにより送信する。
【００７０】
［PageEnd］
図２０は、本実施例に係るＮＣＤＰにおける、ＰＤプリンタ１０００からＤＳＣ３０１２に対して、１ページのプリント処理が終了したことを通知する（PageEnd）通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００７１】
図２１は、本実施例に係るＮＣＤＰにおける、ＰＤプリンタ１０００からＤＳＣ３０１２に対して、プリントジョブが終了したことを通知する（JoeEnd）通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００７２】
図２０，図２１においては、図１９の１９００乃至１９０１の手順実行後、図２０の１９１０で、ＰＤプリンタ１０００からＤＳＣ３０１２に対して１ページ印刷処理が終了したことが通知され、図２１の１９１１では、ＰＤプリンタ１０００からＤＳＣ３０１２に対して印刷ジョブが終了したことが通知される。
【００７３】
［JobStart］
図２２は、本実施例に係るＮＣＤＰにおける、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、プリントジョブの開始を通知する（JobStart）通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００７４】
まず２２００において、ＤＳＣ３０１２からＰＤプリンタ１０００に対してRequestObjectTransferを送り、ＰＤプリンタ１０００がGetObjectコマンドを発行するように促す。これにより２２０１で、ＰＤプリンタ１０００からGetObjectInfoが発行されると、ＤＳＣ３０１２は送信したいオブジェクト情報に関する情報を送信し、これに対してＰＤプリンタ１０００からオブジェクト情報が要求されると（GetObject：２２０３）、２２０４で、Object Datasetを送信して、ＤＳＣ３０１２からＰＤプリンタ１０００に対して印刷命令を発行する。
【００７５】
［JobAbort］
図２３は、本実施例に係るＮＣＤＰにおける、ＤＳＣ３０１２からＰＤプリンタ１０００に対してプリント中止命令を発行する（JobAbort）通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００７６】
［JobContinue］
図２４は、本実施例に係るＮＣＤＰにおける、ＤＳＣ３０１２からＰＤプリンタ１０００に対してプリント再開命令を発行する（JobContinue）通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００７７】
図２３及び図２４において、図２２の２２００乃至２２０３の手順を実行した後、図２３の２３０１で、ＤＳＣ３０１２からＰＤプリンタ１０００に対して印刷中止命令が発行され、図２４の２４０１では、ＤＳＣ３０１２からＰＤプリンタ１０００に対して印刷再開命令が通知される。
【００７８】
［Capability］
次に本実施例に係る特徴部分であるＰＤプリンタ１０００とＤＳＣ３０１２との間での通信手順と、ＰＤプリンタ１０００とＤＳＣ３０１２における処理について説明する。
【００７９】
本実施例では、ＰＤプリンタ１０００に接続されるＤＳＣ３０１２は、各メーカで製造された不特定のデジタルカメラが接続されることを前提としているため、例えばＰＤプリンタ１０００からＤＳＣに対して、そのＰＤプリンタ１０００が有している全ての情報をCapabilityとしてＤＳＣに送信しても、そのＤＳＣは、そのCapabilityの内容を全て或いはある一部を理解できない可能性がある。その様な場合には、ＰＤプリンタ１０００が意図していない印刷条件が記述されたプリントジョブファイルがＤＳＣから送られてくることになり、このような場合に、そのプリントジョブファイルで指示された通りの印刷条件で印刷を行うことができない場合、プリンタは前記プリントジョブを処理できない旨ＤＳＣに通知することとする。
【００８０】
図２５は、図１１に示す「推奨手順」におけるCapabilityのやり取りの手順を説明する図である。
【００８１】
図において、２５０１で、前述したようにＰＤプリンタ１０００からＤＳＣ３０１２に対してCapabilityがスクリプト表記で送信される。ＤＳＣ３０１２はこのCapabilityを解釈し、理解できない事項があればそれを無視する。次に２５０２で、ＤＳＣ３０１２のユーザは、このＤＳＣ３０１２のＵＩを使用して印刷したい画像ファイルや印刷条件（用紙種類、用紙サイズ、画像品位等）を指定する。これによりプリントジョブを指定するプリントジョブ形式のファイルを作成する。そして２５０３で、そのプリントジョブを指定するプリントジョブファイルをＤＳＣ３０１２からＰＤプリンタ１０００に送信する。これを受信したＰＤプリンタ１０００は、そのプリントジョブファイルに記述されている内容を解析し、次に２５０４で受信した画像ファイルを、そのプリントジョブファイルで指定された印刷条件で印刷する。こうして印刷が終了すると２５０５で、プリントジョブが終了したことをＤＳＣ３０１２に通知する。
【００８２】
尚、ここで、ＰＤプリンタ１０００にセットされている用紙サイズが「Ｌ判」であるのに対して、ＤＳＣ３０１２から受信したプリントジョブファイルのCapabilityの用紙サイズに「Ａ４判」が指定されていた場合、ＰＤプリンタ１０００は、そのプリントジョブを処理できない旨ＤＳＣに通知する。
【００８３】
図２６は、上述の「推奨手順」での処理手順におけるＤＳＣ３０１２での処理を説明するフローチャートである。
【００８４】
まずステップＳ２１で、ＰＤプリンタ１０００からCapabilityを受信するとステップＳ２２に進み、そのCapabilityを解析する。ここで、理解できない事項があればそれを無視する。次にステップＳ２３に進み、印刷指示画面（ＵＩ）をカメラ３０１２の表示部に表示し、ステップＳ２４で、そのＵＩ画面を使用して、ユーザによる印刷指示が入力される。こうして印刷指示が入力されるとステップＳ２５に進み、ＵＩを使用して設定された印刷対象画像ファイル及び各種印刷条件などを記述したプリントジョブファイルを作成し、ステップＳ２６で、そのプリントジョブファイルをＰＤプリンタ１０００に送信する。続いてステップＳ２７で、そのプリントジョブファイルに記述されている画像ファイルをＰＤプリンタ１０００に送信する。
＜デジタルカメラの概要説明＞
図２７は、本実施例に係るＤＳＣ（デジタルカメラ）３０１２の構成を示すブロック図である。
【００８５】
同図において、３１００はＤＳＣ３０１２全体の制御を司るＣＰＵであり、３１０１はＣＰＵ３１００による処理手順を記憶しているＲＯＭである。３１０２はＣＰＵ３１００のワークエリアとして使用されるＲＡＭであり、３１０３は各種操作を行うスイッチ群で、シャッター、モード切替スイッチ、選択スイッチやカーソルキー等が含まれている。２７００は液晶表示部であり、現時点で撮影している映像や、撮像されてメモリカードに記憶されている画像を表示したり、各種設定を行う際のメニューを表示するために使用される。３１０５は光学ユニットであり、主としてレンズ及びその駆動系で構成される。３１０６はＣＣＤ素子であり、３１０７はＣＰＵ３１００の制御下において光学ユニット３１０５を駆動制御するドライバである。３１０８は記憶媒体３１０９（コンパクトフラッシュ(登録商標)メモリカード、スマートメディア等）を接続するためのコネクタであり、３１１０はＰＣ或いは実施例におけるＰＤプリンタ１０００と接続するためのＵＳＢインターフェース（ＵＳＢのスレーブ側）である。
【００８６】
［第１実施例］
次に本発明の第１実施例について説明する。この第１実施例では、capabilityが変更されたことを伝えるcapabilityChanged機能をサポートしていないＤＳＣ３０１２と、それをサポートしているＰＤプリンタ１０００との間での処理について説明する。
【００８７】
まず、capabilityが変更されたことを伝えるcapabilityChangedタグは、ＤＳＣ３０１２とプリンタ１０００の両方においてOptional（オプション）であり、この機能をサポートするか否かは各ベンダの任意の設計事項とする。この第１実施例において、ＰＤプリンタ１０００は、ＤＳＣ３０１２がcapabilityChangedをサポートしているか否かを示す情報を取得するコマンドを持たないこととする。また、このcapabilityChangedタグを受信した場合、そのタグを解釈せず無視してＯＫを返信することが可能である。
【００８８】
capabilityChangedタグは、内部に「True」と「False」の２つの状態を持ち、「True」の状態はプリンタ１０００がサポートしているcapabilityが変更されたことを示し、「False」の状態は、capabilityが変更されない状態であることを示している。
【００８９】
具体的には、例えばＰＤプリンタ１０００の用紙トレイ１００４にＬ版の用紙を載置するトレイが装備されていると、このときのcapabilityの用紙サイズは＜PaperSize=L＞となる。このＬ版のトレイが、葉書用のトレイに交換されたとき、capabilityの用紙サイズは＜PaperSize=Hagaki＞に変更される。この状態においてCapabilityChangedは、capabilityが変更されたことを示す「True」となる。
【００９０】
一方、用紙トレイ１００４が交換されない、つまりcapbilityの用紙サイズがＮＣＤＰ開始から現在に至るまで＜PaperSize=L＞の場合には、capabilityChangedは「False」のままである。
【００９１】
このような前提条件の下で、ＰＤプリンタ１０００は、ＤＳＣ３０１２に「sendStatus(capabilityChanged=True)」を送信してcapabilityが変更されたことをＤＳＣ３０１２に通知した場合、ＤＳＣ３０１２は、このcapabilityChangedタグをサポートしていないため、capabilityが変わったことを理解できない。このため、ＰＤプリンタ１０００では、それに対するＯＫをＤＳＣ３０１２から受信しても、それが正しくＤＳＣ３０１２で理解できたかどうかまでは判定できないことになる。従って、ＰＤプリンタ１０００は、capabilityが変更された状態であり、ＤＳＣ３０１２がそれを理解できていない状態で設定された「jobStart」コマンドをプリンタ１０００送信して印刷を指示するといった問題が発生する。
【００９２】
一方、capabilityChangedタグをサポートしていないＤＳＣ３０１２に対しては、ＰＤプリンタ１０００の用紙トレイが交換された場合でも、その旨を通達する手段がないので、プリンタ１０００がサポートしていないcapabilityに基づいてを設定された「jobStart」コマンドが、ＤＳＣ３０１２からＰＤプリンタ１０００に送信されてしまうという問題が発生する。
【００９３】
図２８は、本発明の第１実施例に係るＰＤプリンタ１０００における処理を説明するフローチャートで、この処理を実行するプログラムはプログラムメモリ３００３ａに記憶されており、ＣＰＵ３００２の制御の下に実行される。
【００９４】
まずステップＳ３１で、ＰＤプリンタ１０００は、ＤＳＣ３０１２に対して「sendStatus(capaiblityChanged=True)」を送信して、プリンタ１０００のCapabilityが変更したことを通知する。次にステップＳ３２に進み、プリンタ１０００はＤＳＣ３０１２から「jobStart」により印刷ジョブを受信するとステップＳ３３に進み、ＰＤプリンタ１０００は、ステップＳ３１で「sendStatus(capabilityChanged=True)」を送信してからステップＳ３２で「jobStart」を受信するまでの間に、ＤＳＣ３０１２から、その変更した新たなcapabilityを要求する「getCapablity」を受信したか否かを判断する。ここで「getCapability」を受信している場合は、ＤＳＣ３０１２は、ＰＤプリンタ１０００がステップＳ３１で送信したcapabilityChangedタグを理解していることを示しているので、ステップＳ３２で受信した「jobStart」のcapabilityは、その変更を通知したcapabilityに矛盾したものではないと推定できる。従って、この場合は、ステップＳ３５に進み、そのまま通常の印刷処理に移行する。
【００９５】
一方、ステップＳ３３で、「getCapability」を受信していないと判定されるとステップＳ３４に進み、この場合は、ＤＳＣ３０１２がcapabilityChangedタグをサポートしていないと推測されるため、ステップＳ３２で受信した「jobStart」のcapabilityの設定は、現時点のＰＤプリンタ１０００がサポートしていないcapabilityを含んでいる可能性がある。このため、ＰＤプリンタ１０００は一旦、ＵＳＢ切断を行い、その後、再度ＵＳＢ接続を行う。これによって、改めてＮＣＤＰ接続を開始することになり、ＰＤプリンタ１０００は、ＤＳＣ３０１２から「getCapability」を受信して、capabilityを通知することができる。
【００９６】
以上説明したように、ＤＳＣ３０１２が特定のタグをサポートしているかどうか不明な場合においても、その特定のタグの内容に応じてＤＳＣ３０１２が取るべき動作と比較し、その比較結果に基づいて、ＤＳＣ３０１２がその特定のタグの機能をサポートしているかどうかを判定することができる。
【００９７】
その結果、プリンタ１０００のcapabilityが変更した場合に、プリンタ１０００はＤＳＣ３０１２に、その変更したcapabilityを取得させることができ、そして、現時点でプリンタがサポートしているcapabilityに基づいてが印刷ジョブが設定された「jobStart」コマンドを、ＤＳＣ３０１２から受信することができる。
【００９８】
尚、ＤＳＣ３０１２が新たなcapabilityを受信した後、既に作成した印刷ジョブを新たなcapabilityに適合するように修正し、その修正した後の印刷ジョブをＰＤプリンタ１０００に送信するようにすると更に好適である。この印刷ジョブの修正は自動的に行うようにしてもよいが、変更後のcapabilityに不適合な印刷ジョブの内容を、ＵＩを使用してユーザに提示して変更させるようにしてもよい。例えば、印刷ジョブの内容を文字列等でＵＩ表示し、新たなcapabilityに不適合な箇所を色を変える等してユーザに修正を促すようにすることなどが考えられる。
【００９９】
尚、この第１実施例のステップＳ３３における、capabiityChangedタグをサポートしているか否かを判別する手段は、ステップＳ３２で受信した「jobStart」に設定されたcapabilityを、capability変更後のＰＤプリンタ１０００がサポートしているか否かにより判断することもできる。更に、ステップＳ３２で受信した「jobStart」に設定されたcapabilityに基づく判定と、ステップＳ３３の処理との両方を用いても実現可能である。
【０１００】
更にこの第１実施例のステップＳ３４において、ＰＤプリンタ１０００がＤＳＣ３０１２にcapabilityを取得させる手段は、NCDPEndを実行してＮＣＤＰモードを終了させ、次に再度、ＮＣＤＰへの移行を指示するNCDPStartを実行することでも実現できる。また或は、ＰＴＰのcloseSessionを実行し、次にopenSessionを実行することでも実現可能である。
【０１０１】
図２９は、本発明の第１実施例に係るＤＳＣ３０１２における処理を示すフローチャートで、この処理を実行するプログラムはＤＳＣ３０１２のＲＯＭ３１０１に記憶されている。
【０１０２】
まずステップＳ４１で、ＤＳＣ３０１２は「getCapability」をＰＤプリンタ１０００に送信して、ＰＤプリンタ１０００に対してcapabilityを要求する。次にステップＳ４２に進み、ＤＳＣ３０１２は「jobStart」により印刷ジョブをＰＤプリンタ１０００に送信する。次にステップＳ４３に進み、ステップＳ４２で送信した「jobStart」に対してＰＤプリンタ１０００からの応答が「プリンタで処理できない」旨を含んでいるか否かを判断する。処理できない旨を受信した場合は、ＰＤプリンタ１０００がcapabilityChangedタグをサポートしていないと推定でき、プリンタ１０００がサポートしているCapabilityが変わったと推定できる。
【０１０３】
即ち、ステップＳ４１でＰＤプリンタ１０００のcapabilityが取得された後、ステップＳ４２で、ＤＳＣ３０１２がＰＤプリンタ１０００に対して印刷ジョブを発行する前に、ＰＤプリンタ１０００のcapabilityが変更された場合を想定している。この場合、もしＰＤプリンタ１０００がcapabilityChangedタグをサポートしていれば、ステップＳ４２の前に、ＰＤプリンタ１０００からcapabilityChangedタグが送信されてくるはずである。このcapabilityChangedタグが送信されてこなくて、ステップＳ４１で取得したＰＤプリンタ１０００のcapabilityに従った印刷ジョブをＰＤプリンタ１０００に発行した場合に、その印刷ジョブにその時点でのＰＤプリンタ１０００のcapabilityと一致しない項目が含まれているということは、ＰＤプリンタ１０００はcapabilityChangedタグをサポートしていないと判定する。
【０１０４】
一方、ステップＳ４３で、「プリンタで処理できない」旨以外の応答を受信した場合は、ＤＳＣ３０１２はＰＤプリンタ１０００がサポートしているcapabilityが変更していないと推定できるため、ステップＳ４５に進んで、通常の処理を実行する。
【０１０５】
ステップＳ４３で、ＤＳＣ３０１２は「getCapability」を実行することにより、ＰＤプリンタ１０００がサポートしているcapabilityを取得することができ、プリンタ１０００がサポートしているcapabilityを設定した「jobStart」を送信することができる。そしてステップS3104へ進み処理を終了する。
【０１０６】
以上説明したように第１実施例によれば、プリンタ１０００が特定のタグをサポートしているかどうかが不明な場合に、その特定のタグの内容が特定の状態において、推定したあるべきプリンタ１０００の動作とを比較し、その結果が一致するか否かにより、プリンタ１０００がそのタグをサポートしているかどうかを判定することができる。その結果、互いに混乱が起きない様に適切な対応を行うことができる。
【０１０７】
［第２実施例］
前述の第１実施例では、capabilityChangedタグの場合の処理について説明したが、この第２実施例では、disconnectEnableタグに関する処理について説明する。このdisconnectEnableタグは、ＤＳＣ３０１２及びＰＤプリンタ１０００の両方においてオプションであり、サポートするか否かは各ベンダの任意の設計事項とする。この第２実施例では、前述の第１実施例とは逆に、ＤＳＣ３０１２はＰＤプリンタ１０００がdisconnectEnableをサポートしているか否かを取得するコマンドを持たないこととする。つまりＤＳＣ３０１２からＰＤプリンタ１０００への「getCapability」に対する返答スクリプトに、disconnectEnableに関する情報が含まれていないことになる。このdisconnectEnableのデフォルト値は「False」であり、仮にdisconnectEnableタグが「sendStatus」コマンドで省略されていた場合には「False」とみなされるものとする。このdisconnectEnableタグは「True」と「False」の２つの状態を持ち、「True」の状態は、ＵＳＢケーブルによるＤＳＣ３０１２とＰＤプリンタ１０００との間の接続を切断しても問題が発生しない状態を示し、「False」は切断すると問題が発生する状態を示す。
【０１０８】
具体的には、ＤＳＣ３０１２が「jobStart」コマンドを発行した後、ＰＤプリンタ１０００が「getImage」を発行して、印刷が指定された画像ファイルを取得する。ここで全ての画像ファイルの取得を完了する前にＵＳＢ接続が切断されてしまうと、その「jobStart」で要求されている印刷を完了することができなくなる。つまり、この状態においてdisconnectEnableは「False」であるべきである。一方、プリンタ１０００が印刷完了前に、全ての画像ファイルの取得を完了した場合には、現在印刷中ではあるが、ＵＳＢ接続が切断されても「jobStart」で要求されている印刷を完了することができる。つまり、この状態ではdisconnectEnableは「True」であり得る。
【０１０９】
上記の前提条件の下では、ＤＳＣ３０１２はＰＤプリンタ１０００から送信される「sendStatus」の中身を解析し、その結果、dinsconnectEnableが「False」を示していたとしても、それが本当にＰＤプリンタ１０００がdisconenctEnableタグをサポートしていて、現在ＵＳＢ接続を切断した場合に問題が起こるために「False」となっているのか、それともＰＤプリンタ１０００がdisconenctEnableタグをサポートしていないために「False」となっているのかの判別が付かない。よってＤＳＣ３０１２は、このような状態において、表示部２７００に表示するＵＩ表示により、ユーザに対して「ＵＳＢケーブルを抜かないで下さい」等のメッセージを表示して良いのかどうかの判別が付かない。
【０１１０】
図３０は、この第２実施例におけるＤＳＣ３０１２における処理を示すフローチャートで、この処理を実行するプログラムはＲＯＭ」３１０１に記憶されている。
【０１１１】
まずステップＳ５１で、ＤＳＣ３０１２は、自分が「jobStart」を発行していない状態で「getStatus」を発行し、最新のＰＤプリンタ１０００のstatusを取得する。次にステップＳ５２に進み、その取得したステータスに記載されているdinsconnectEnableの内容を確認する。ＤＳＣ３０１２が「jobStart」を発行する前であれば、ＰＤプリンタ１０００としてはＵＳＢ接続が切断されたとしても問題は発生しない筈なので、仮にＰＤプリンタ１０００がdisconnectEnableタグをサポートしていれば、その内容は「True」となっているはずと推定できる。またもしその内容が「True」では無く「False」になっていたとすれば、ＰＤプリンタ１０００は、disconnectEnableタグをサポートしていないという推定が成り立つ。よってステップＳ５３で、取得したdisconnectEnableタグの内容を、推定される内容と比較し、推定した内容と一致した場合にはステップＳ５４に進み、ＤＳＣ３０１２は、表示部２７００に表示するメッセージをdisconnectEnableタグの内容に準じて設定する。
【０１１２】
一方、ステップＳ５３で不一致の場合にはステップＳ５５に進み、表示部２７００に表示するメッセージの表示を、disconnectEnableタグの内容に準じて設定せずに、例えば、printServiceStatusタグの内容がアイドルになっている場合にＵＳＢ接続が切断でき、逆に、印刷中や停止状態になっている場合にはＵＳＢ接続が切断できないというように、printServiceStatusに準じてユーザに提示する。
【０１１３】
以上説明したように第２実施例によれば、「getCapability」等で実際にＰＤプリンタ１０００が特定のタグをサポートしているかどうか不明な場合においても、そのタグの内容が推定可能な状態で、実際に取得したタグの内容と、推定したあるべきタグ内容とを比較し、その結果が一致するか否かで、ＰＤプリンタ１０００がそのタグをサポートしているかどうかを判定することができる。これにより、ユーザが混乱を起こさない様な適切なＵＩ表示を行うことができる。
【０１１４】
［第３実施例］
この第３実施例では、jobEndReasonをサポートしているＤＳＣ３０１２とサポートしていないプリンタ１０００の間での処理について説明する。このjobEndReasonタグは、印刷ジョブが終了した理由を報告するもので、ＤＳＣ３０１２及びＰＤプリンタ１０００の両方においてオプションであり、このタグ機能をサポートするか否かは各ベンダの任意の設計事項とする。この第３実施例においては、前述の第２実施例と同様に、ＤＳＣ３０１２が、ＰＤプリンタ１０００がjobEndReasonをサポートしているか否かを取得するコマンドを持たないものとする。つまり「getCapability」に対する返答スクリプト中にjobEndReasonに関する情報は含まれない。このjobEndReasonのdefault値は「notEnded」であり、仮にjobEndReasonタグが「sendStatus」コマンド中で省略されていた場合には「notEnded」と見なされるものとする。
【０１１５】
このjobEndReasonタグは、「notEnded」（ジョブ未終了），「endedNormally」（正常終了），「endedByJobAbort」（停止命令による停止）及び「endedByprinterReason」（プリンタに起因する終了）の４つの状態をとり得る。「notEnded」状態は、まだ印刷ジョブが完了していないことを示し、「endedNormally」は印刷ジョブが正常に終了したことを示す。また「endedByJobAbort」は、ＤＳＣ３０１２からの「jobAbort」コマンドによって印刷ジョブが中断されたことを示し、「endedByprinterReason」は、ＰＤプリンタ１０００のオペレーション（例えば、ＰＤプリンタ１０００に設置されている印刷キャンセルボタンをユーザが押下した等）によって印刷ジョブが中断された事を示す。
【０１１６】
具体的には、「jobStart」コマンドがＤＳＣ３０１２から発行された後、ＰＤプリンタ１０００は「jobStart」で指定された印刷ジョブを実行するが、例えば印刷ジョブの完了とほぼ同時にＤＳＣ３０１２が印刷停止（jobAbort）を発行した場合を想定する。この場合、ＤＳＣ３０１２としては、印刷ジョブの完了理由が「jobAbort」であるか、正常終了なのかを区別できれば、それに応じたＵＩ表示を表示部２７００に表示することができる。また「jobAbort」を発行していない状態で印刷ジョブが終了し、printServiceStatusが印刷中からアイドル状態へ遷移した場合、それが正常終了なのか、プリンタ１０００の理由による中断なのかを区別できる場合には、それに応じた適正なＵＩ表示を行うことができる。
【０１１７】
一方、印刷ジョブの終了理由を取得できない場合には、ＤＳＣ３０１２は印刷ジョブが終了し、printServiceStatusが印刷中からアイドル状態に遷移した場合、ＤＳＣ３０１２はＵＩ表示に「印刷が完了しました」等のメッセージを表示して良いのかどうかの判別が付かない。このような問題を解決するのがこの第３実施例である。
【０１１８】
図３１は、本発明の第３実施例に係るＤＳＣ３０１２における処理を示すフローチャートで、この処理を実行するプログラムはＲＯＭ３１０１に記憶されている。
【０１１９】
まずステップＳ６１で、ＤＳＣ３０１２が「jobStart」を発行する。次にステップＳ６２に進み、ＰＤプリンタ１０００から送られる「sendStatus」を受信するために待機状態に移行する。次にステップＳ６３に進み、ＰＤプリンタ１０００から「sendStatus」を受信してprintServiceStatusの内容を取得する。次にステップＳ６４に進み、印刷ジョブを開始したＰＤプリンタ１０００の状態が印刷中（printing）へ遷移したかどうかを確認する。もし印刷中へ遷移していない場合にはステップＳ６２に戻って前述の処理を実行する。
【０１２０】
こうしてステップＳ６４で、ＰＤプリンタ１０００の状態が印刷中（printing）へ移行するとステップＳ６５に進み、ＰＤプリンタ１０００から送られる「sendStatus」を受信するために待機状態となる。そしてステップＳ６６に進み、ＰＤプリンタ１０００からステータスを受信し、その受信した「sendStatus」のprintServiceStatusの内容を確認する。そしてステップＳ６７に進み、印刷ジョブを完了したＰＤプリンタ１０００の状態がアイドル（待機状態）へ遷移したかどうかをみる。もし待機状態へ遷移していない場合にはステップＳ６５に戻る。
【０１２１】
そしてステップＳ６７で、ＰＤプリンタ１０００の状態がアイドル（待機状態）へ遷移するとステップＳ６８に進み、printServiceStatusが待機状態の時のjobEndReasonタグの内容を取得する。ここでＤＳＣ３０１２が「jobStart」を発行した後に、printServiceStatusの内容が待機状態へ遷移したのであれば、ＰＤプリンタ１０００としてはいかなる理由であれ、印刷ジョブは終了しているものと推定する。従って、仮にＰＤプリンタ１０００がjobEndReasonタグをサポートしていれば、その内容は「notEnded」以外となっているはずと推定できる。
【０１２２】
またもしその内容が「notEnded」になってればＰＤプリンタ１０００がjobEndReasonタグをサポートしていないという推定が成り立つ。よってステップＳ６９では、jobEndReasonの内容を、ここでは有り得ないと推定される内容「notEnded」と比較し、有り得ると推定される内容であればステップＳ７０に進み、ＤＳＣ３０１２は表示部２７００に、ユーザに対してのメッセージの表示を、jobEndReasonタグの内容に準じて設定する。
【０１２３】
一方、ステップＳ６９で、有り得ない「notEnded」の場合はステップＳ７１に進む。この場合ＤＳＣ３０１２は、ＵＩ表示のメッセージを、jobEndReasonタグの内容に準じて設定せずに、他のメッセージを表示する。例えば、printServiceStatusタグの内容が待機状態（idle）に遷移した場合、特に理由を説明せずに「印刷が終了しました」等と表示し、例えば中断された印刷ジョブの再開等のメニューは表示しないというように、printServiceStatusの内容に準じて行うことが好ましい。
【０１２４】
以上の説明したようにこの第３実施例によれば、「getCapability」等で、実際にＰＤプリンタ１０００が特定のタグをサポートしているかどうか不明な場合においても、そのタグの内容が推定可能な特定の状態において実際に取得したタグの内容と、推定したあるべきタグ内容とを比較し、その結果が一致するか否かでＰＤプリンタ１０００がそのタグ機能をサポートしているかどうかを判定することができる。これにより、ユーザに混乱を起こさない、適切なＵＩ表示を行うことができる。
【０１２５】
［他の実施の形態］
本実施例では、画像供給装置としてのDSC3012がプリンタの機能情報を要求することから始まって、お互いの機能情報を交換したが、画像記録装置としてのプリンタ1000が画像供給装置としてのＤＳＣ３０１２の機能情報を要求することから始めて、機能情報をお互いに取得することによっても達成できる。
【０１２６】
本発明の目的は前述したように、実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１２７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。
【０１２８】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含む。
【図面の簡単な説明】
【０１２９】
【図１】本発明の実施例に係るＰＤプリンタの概観斜視図である。
【図２】本実施例に係るＰＤプリンタの操作パネルの概観図である。
【図３】本実施例に係るＰＤプリンタの制御に係る主要部の構成を示すブロック図である。
【図４】本実施例に係るＰＤプリンタのＡＳＩＣの構成を示すブロック図である。
【図５】本実施例に係るＰＤプリンタとデジタルカメラとの接続を説明する図である。
【図６】本実施例に係るＮＣＤＰを実装したＰＤプリンタとデジタルカメラのソフトウェア構成を説明する概念図である。
【図７】本実施例に係るＮＣＤＰ通信手順の概要を説明する図である。
【図８】本実施例に係るＮＣＤＰにおけるコマンドを説明する図である。
【図９】本実施例に係るＮＣＤＰにおける「基本手順」による印刷手順を説明する図である。
【図１０】本実施例に係るＮＣＤＰにおける「推奨手順」による印刷手順を説明する図である。
【図１１】本実施例に係るＮＣＤＰにおける「推奨手順」におけるエラー発生時の印刷手順を説明する図である。
【図１２】本実施例に係るＮＣＤＰで送信されるCapabilityの一例を説明する図である。
【図１３】本実施例に係るＮＣＤＰ通信手順の概要を説明するフローチャートである。
【図１４】ＮＣＤＰ手順の開始を指示する命令（NCDPStart）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１５】ＮＣＤＰ手順において、カメラから各手順への移行命令を受取る（ProcedureStart）手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１６】ＮＣＤＰ手順の終了を指示する命令（NCDPEnd）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１７】ＮＣＤＰ手順においてＰＤプリンタからカメラに対してCapabilityを送信する命令（Capability）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１８】ＮＣＤＰ手順において、ＰＤプリンタからカメラに保持されている画像ファイルを取得する命令（GetImge）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１９】ＮＣＤＰ手順において、ＰＤプリンタからカメラに対してエラーステータスを送信する命令（StatusSend）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２０】ＮＣＤＰ手順において、ＰＤプリンタからカメラに対して１ページの印刷終了を送信する命令（PageEnd）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２１】ＮＣＤＰ手順において、ＰＤプリンタからカメラに対して印刷ジョブの終了命令（JobEnd）を発行する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２２】ＮＣＤＰ手順において、カメラからＰＤプリンタに対して印刷命令の発行（JobStart）する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２３】ＮＣＤＰ手順において、カメラからＰＤプリンタに対して印刷の中止命令（JobAbort）を発行する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２４】ＮＣＤＰ手順において、カメラからＰＤプリンタに対して印刷再開命令（JobContinue）を発行する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２５】本実施例に係るＤＳＣとＰＤプリンタとの間での「推奨手順」によるデータのやり取りを説明する図である。
【図２６】本実施例に係るＤＳＣにおける「推奨手順」での印刷指示を説明するフローチャートである。
【図２７】本実施例に係るＤＳＣの構成を示すブロック図である。
【図２８】本発明の第１実施例に係るＰＤプリンタにおける処理を説明するフローチャートである。
【図２９】本発明の第１実施例に係るＤＳＣにおける処理を説明するフローチャートである。
【図３０】本発明の第２実施例に係るＤＳＣにおける処理を説明するフローチャートである。
【図３１】本発明の第３実施例に係るＤＳＣにおける処理を説明するフローチャートである。
【図１】
2005059305.tif 000003
【図２】
2005059305.tif 000004
【図３】
2005059305.tif 000005
【図４】
2005059305.tif 000006
【図５】
2005059305.tif 000007
【図６】
2005059305.tif 000008
【図７】
2005059305.tif 000009
【図８】
2005059305.tif 000010
【図９】
2005059305.tif 000011
【図１０】
2005059305.tif 000012
【図１１】
2005059305.tif 000013
【図１２】
2005059305.tif 000014
【図１３】
2005059305.tif 000015
【図１４】
2005059305.tif 000016
【図１５】
2005059305.tif 000017
【図１６】
2005059305.tif 000018
【図１７】
2005059305.tif 000019
【図１８】
2005059305.tif 000020
【図１９】
2005059305.tif 000021
【図２０】
2005059305.tif 000022
【図２１】
2005059305.tif 000023
【図２２】
2005059305.tif 000024
【図２３】
2005059305.tif 000025
【図２４】
2005059305.tif 000026
【図２５】
2005059305.tif 000027
【図２６】
2005059305.tif 000028
【図２７】
2005059305.tif 000029
【図２８】
2005059305.tif 000030
【図２９】
2005059305.tif 000031
【図３０】
2005059305.tif 000032
【図３１】
2005059305.tif 000033