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