(57)【要約】【課題】ダイレクトプリントシステムにおいて、デジタルカメラとダイレクトに通信可能なプリンタが用紙のサイズなどを自動的に検出する機能を有するか否かをデジタルカメラのユーザインターフェース上に表示できるようにする。【解決手段】デジタルカメラと、前記デジタルカメラとダイレクトに通信可能なプリンタとからなるプリントシステムであって、前記プリンタは、用紙のサイズ及び種類を自動的に検出する機能を有することを示す情報を前記デジタルカメラに送信する送信手段を有し、前記デジタルカメラは、前記プリンタが前記機能を有していることをユーザに通知するユーザインターフェースを有する。【選択図】　図２５
2004129221.tif 000002
【特許請求の範囲】
【請求項１】
プリンタとダイレクトに通信可能なデジタルカメラであって、
前記プリンタから前記プリンタの機能に関する情報を受信する受信手段と、
前記プリンタが用紙のサイズを自動的に検出する機能を有している場合、前記プリンタが前記機能を有していることをユーザに通知するユーザインターフェースとを有することを特徴とするデジタルカメラ。
【請求項２】
プリンタとダイレクトに通信可能なデジタルカメラであって、
前記プリンタから前記プリンタの機能に関する情報を受信する受信手段と、
前記プリンタが用紙の種類を自動的に検出する機能を有している場合、前記プリンタが前記機能を有していることをユーザに通知するユーザインターフェースとを有することを特徴とするデジタルカメラ。
【請求項３】
プリンタとダイレクトに通信可能なデジタルカメラであって、
前記プリンタから前記プリンタの機能に関する情報を受信する受信手段と、
前記プリンタが用紙のサイズ及び種類を自動的に検出する機能を有している場合、前記プリンタが前記機能を有していることをユーザに通知するユーザインターフェースとを有することを特徴とするデジタルカメラ。
【請求項４】
デジタルカメラとダイレクトに通信可能なプリンタであって、
用紙のサイズを自動的に検出する用紙サイズ検出手段と、
用紙のサイズを自動的に検出する機能を有していることを示す情報を前記デジタルカメラに送信する送信手段とを有することを特徴とするプリンタ。
【請求項５】
デジタルカメラとダイレクトに通信可能なプリンタであって、
用紙の種類を自動的に検出する用紙種類検出手段と、
用紙の種類を自動的に検出する機能を有していることを示す情報を前記デジタルカメラに送信する送信手段とを有することを特徴とするプリンタ。
【請求項６】
デジタルカメラとダイレクトに通信可能なプリンタであって、
用紙のサイズを自動的に検出する用紙サイズ検出手段と、
用紙の種類を自動的に検出する用紙種類検出手段と、
用紙のサイズ及び種類を自動的に検出する機能を有していることを示す情報を前記デジタルカメラに送信する送信手段とを有することを特徴とするプリンタ。
【請求項７】
画像出力装置とダイレクトに通信可能な画像入力装置であって、
前記画像出力装置から前記画像出力装置の機能に関する情報を受信する受信手段と、
前記情報に基づいて用紙のサイズの選択が不要であると判定した場合にはその旨をユーザに通知するユーザインターフェースとを有することを特徴とする画像入力装置。
【請求項８】
前記ユーザインターフェースは、ユーザが用紙のサイズを選択できないようにすることを特徴とする請求項８に記載の画像入力装置。
【請求項９】
前記画像出力装置は、用紙のサイズを自動的に検出する機能を有する装置であることを特徴とする請求項７又は８に記載の画像入力装置。
【請求項１０】
前記ユーザインターフェースは、前記画像出力装置が用紙のサイズを自動的に検出する機能を有することをユーザに通知することを特徴とする請求項７〜９の何れか１項に記載の画像入力装置。
【請求項１１】
前記画像入力装置は、デジタルカメラであることを特徴とする請求項７〜１０の何れか１項に記載の画像入力装置。
【請求項１２】
前記画像出力装置は、プリンタであることを特徴とする請求項７〜１１の何れか１項に記載の画像入力装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタルカメラ及びデジタルカメラとダイレクトに通信可能なプリンタに関するものである。
【０００２】
【従来の技術】
通常、デジタルカメラで撮影した画像をプリントする場合、そのデジタルカメラの記録媒体に記憶された画像をパーソナルコンピュータ（以下、ＰＣ）で読み取り、ＰＣ上のアプリケーションを用いて、接続されたプリンタで印刷するという作業を踏む。
【０００３】
つまり、画像データの流れとしては、デジタルカメラ→ＰＣ→プリンタという手順になり、ＰＣの所有を必須としている。また、デジタルカメラに記憶されている画像を印刷するのに、一々ＰＣを起動しなければならないという問題もある。
【０００４】
かかる点に着目し、デジタルカメラとプリンタとをダイレクトに接続し、デジタルカメラが通常備えている表示器上でプリント指示を与えるシステム（以下、フォトダイレクトプリントシステムという）が提案されている。
【０００５】
上記フォトダイレクトプリントシステムを採用することのメリットは、ＰＣを起動せずとも、手軽に印刷できる点は勿論であるが、ＰＣを必須とするものでもないから、システム構築が安価にできる点が挙げられる。また、プリンタにデジタルカメラを接続した際、各種指示、特に、印刷させようとする画像を確認するための手段として、デジタルカメラが通常備える表示器を利用するので、プリンタ側に画像確認のための格別な表示器を必要とせず、更に、コストを更に削減できることも見逃せないメリットとなる。
【０００６】
【発明が解決しようとする課題】
しかしながら、従来のフォトダイレクトプリントシステムでは、デジタルカメラとダイレクトに通信可能なプリンタが用紙のサイズなどを自動的に検出する機能を有するか否かをデジタルカメラに通知することも、その機能を有するか否かをデジタルカメラのユーザインターフェース上に表示することも提案されていなかった。また、その機能を利用して用紙のサイズなどの選択を簡単にすることも提案されていなかった。
【０００７】
本発明は、かかる問題点に鑑みなされたものであり、デジタルカメラとダイレクトに通信可能なプリンタが用紙のサイズなどを自動的に検出する機能を有するか否かをデジタルカメラのユーザインターフェース上に表示できるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
上記の課題を解決するため、本願の請求項１に記載の発明によれば、プリンタとダイレクトに通信可能なデジタルカメラであって、前記プリンタから前記プリンタの機能に関する情報を受信する受信手段と、前記プリンタが用紙のサイズを自動的に検出する機能を有している場合、前記プリンタが前記機能を有していることをユーザに通知するユーザインターフェースとを有することを特徴とする。
【０００９】
また本願の請求項２に記載の発明によれば、プリンタとダイレクトに通信可能なデジタルカメラであって、前記プリンタから前記プリンタの機能に関する情報を受信する受信手段と、前記プリンタが用紙の種類を自動的に検出する機能を有している場合、前記プリンタが前記機能を有していることをユーザに通知するユーザインターフェースとを有することを特徴とする。
【００１０】
また本願の請求項３に記載の発明によれば、プリンタとダイレクトに通信可能なデジタルカメラであって、前記プリンタから前記プリンタの機能に関する情報を受信する受信手段と、前記プリンタが用紙のサイズ及び種類を自動的に検出する機能を有している場合、前記プリンタが前記機能を有していることをユーザに通知するユーザインターフェースとを有することを特徴とする。
【００１１】
また本願の請求項４に記載の発明によれば、デジタルカメラとダイレクトに通信可能なプリンタであって、用紙のサイズを自動的に検出する用紙サイズ検出手段と、用紙のサイズを自動的に検出する機能を有していることを示す情報を前記デジタルカメラに送信する送信手段とを有することを特徴とする。
【００１２】
また本願の請求項５に記載の発明によれば、デジタルカメラとダイレクトに通信可能なプリンタであって、用紙の種類を自動的に検出する用紙種類検出手段と、用紙の種類を自動的に検出する機能を有していることを示す情報を前記デジタルカメラに送信する送信手段とを有することを特徴とする。
【００１３】
また本願の請求項６に記載の発明によれば、デジタルカメラとダイレクトに通信可能なプリンタであって、用紙のサイズを自動的に検出する用紙サイズ検出手段と、用紙の種類を自動的に検出する用紙種類検出手段と、用紙のサイズ及び種類を自動的に検出する機能を有していることを示す情報を前記デジタルカメラに送信する送信手段とを有することを特徴とする。
【００１４】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施の形態を説明する。
【００１５】
（第１の実施の形態）
図１は、本発明の第１の実施の形態に係るフォトダイレクトプリンタ（以下、ＰＤプリンタ）１０００の概観斜視図である。このＰＤプリンタ１０００は、ホストコンピュータ（ＰＣ）からデータを受信して印刷する通常のＰＣプリンタとしての機能と、メモリカードなどの記憶媒体に記憶されている画像データを直接読み取って印刷する機能と、デジタルカメラからの画像データを受信して印刷する機能とを備えている。
【００１６】
図１において、第１の実施の形態に係るＰＤプリンタ１０００の外殻をなす本体は、下ケース１００１、上ケース１００２、アクセスカバー１００３及び排出トレイ１００４の外装部材を有している。また、下ケース１００１は、ＰＤプリンタ１０００の略下半部を、上ケース１００２は本体の略上半部をそれぞれ形成しており、両ケースの組合せによって内部に後述の各機構を収納する収納空間を有する中空体構造をなし、その上面部及び前面部にはそれぞれ開口部が形成されている。さらに、排出トレイ１００４は、その一端部が下ケース１００１に回転自在に保持され、その回転によって下ケース１００１の前面部に形成される開口部を開閉させ得るようになっている。このため、記録動作を実行させる際には、排出トレイ１００４を前面側へと回転させて開口部を開成させることにより、ここから記録シートが排出可能となると共に、排出された記録シートを順次積載し得るようになっている。また、排紙トレイ１００４には、２枚の補助トレイ１００４ａ，１００４ｂが収納されており、必要に応じて出すことにより、用紙の支持面積を３段階に拡大、縮小させ得るようになっている。
【００１７】
アクセスカバー１００３は、その一端部が上ケース１００２に回転自在に保持され、面に形成される開口部を開閉し得るようになっており、このアクセスカバー１００３を開くことによって本体内部に収納されている記録ヘッドカートリッジ（不図示）あるいはインクタンク（不図示）等の交換が可能となる。なお、ここでは特に図示しないが、アクセスカバー１００３を開閉させると、その裏面に形成された突起がカバー開閉レバーを回転させるようになっており、そのレバーの回転位置をマイクロスイッチなどで検出することにより、アクセスカバーの開閉状態を検出し得るようになっている。
【００１８】
また、上ケース１００２の上面には、電源キー１００５が押下可能に設けられている。また、上ケース１００２の右側には、液晶表示部１００６や各種キースイッチ等を備える操作パネル１０１０が設けられている。この操作パネル１０１０の構造は、図２を参照して詳しく後述する。１００７は自動給送部で、記録シートを装置本体内へと自動的に給送する。１００８は紙間選択レバーで、プリントヘッドと記録シートとの間隔を調整するためのレバーである。１００９はカードスロットで、ここにメモリカードを装着可能なアダプタが挿入され、このアダプタを介してメモリカードに記憶されている画像データを直接取り込んで印刷することができる。このメモリカード（ＰＣ）としては、例えばコンパクトフラッシュ（登録商標）メモリ、スマートメディア、メモリスティック等がある。１０１１はビューワ（液晶表示部）で、このＰＤプリンタ１０００の本体に着脱可能であり、ＰＣカードに記憶されている画像の中からプリントしたい画像を検索する場合などに、１コマ毎の画像やインデックス画像などを表示するのに使用される。１０１２は後述するデジタルカメラを接続するためのＵＳＢ端子である。また、このＰＤプリンタ１０００の後面には、パーソナルコンピュータ（ＰＣ）を接続するためのＵＳＢコネクタが設けられている。
【００１９】
図２は、第１の実施の形態に係るＰＤプリンタ１０００の操作パネル１０１０の概観図である。
【００２０】
図２において、液晶表示部１００６には、その左右に印刷されている項目に関するデータを各種設定するためのメニュー項目が表示される。ここに表示される項目としては、例えば、印刷したい範囲の先頭写真番号、指定コマ番号（開始コマ指定／印刷コマ指定）、印刷を終了した範囲の最後の写真番号（終了）、印刷部数（部数）、印刷に使用する用紙（記録シート）の種類（用紙種類）、１枚の用紙に印刷する写真の枚数設定（レイアウト）、印刷の品位の指定（品位）、撮影した日付を印刷するかどうかの指定（日付印刷）、写真を補正して印刷するかどうかの指定（画像補正）、印刷に必要な用紙枚数の表示（用紙枚数）等がある。
【００２１】
これら各項目は、カーソルキー２００１を用いて選択、或いは指定される。２００２はモードキーで、このキーを押下する毎に、印刷の種類（インデックス印刷、全コマ印刷、１コマ印刷等）を切り替えることができ、これに応じてＬＥＤ２００３の対応するＬＥＤが点灯される。２００４はメンテナンスキーで、プリントヘッドのクリーニング等、プリンタのメンテナンスを行わせるためのキーである。２００５は印刷開始キーで、印刷の開始を指示する時、或いはメンテナンスの設定を確立する際に押下される。２００６は印刷中止キーで、印刷を中止させる時や、メンテナンスの中止を指示する際に押下される。
【００２２】
次に図３を参照して、第１の実施の形態に係るＰＤプリンタ１０００の制御に係る主要部の構成を説明する。尚、この図３において、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
【００２３】
図３において、３０００は制御部（制御基板）を示している。３００１はＡＳＩＣ（専用カスタムＬＳＩ）を示し、その構成は図４のブロック図を参照して詳しく後述する。２はＤＳＰ（デジタル信号処理プロセッサ）で、内部にＣＰＵを有し、後述する各種制御処理及び、輝度信号（ＲＧＢ）から濃度信号（ＣＭＹＫ）への変換、スケーリング、ガンマ変換、誤差拡散等の画像処理等を担当している。３００３はメモリで、ＤＳＰ３００２のＣＰＵの制御プログラムを記憶するプログラムメモリ３００３ａ、及び実行時のプログラムを記憶するＲＡＭエリア、画像データなどを記憶するワークメモリとして機能するメモリエリアを有している。３００４はプリンタエンジンで、ここでは、複数色のカラーインクを用いてカラー画像を印刷するインクジェットプリンタのプリンタエンジンが搭載されている。３００５はデジタルカメラ３０１２を接続するためのポートとしてのＵＳＢコネクタである。３００６はビューワ１０１１を接続するためのコネクタである。３００８はＵＳＢハブ（ＵＳＢ　ＨＵＢ）で、このＰＤプリンタ１０００がＰＣ３０１０からの画像データに基づいて印刷を行う際には、ＰＣ３０１０からのデータをそのままスルーし、ＵＳＢ３０２１を介してプリンタエンジン３００４に出力する。これにより、接続されているＰＣ３０１０は、プリンタエンジン３００４と直接、データや信号のやり取りを行って印刷を実行することができる（一般的なＰＣプリンタとして機能する）。３００９は電源コネクタで、電源３０１１により、商用ＡＣから変換された直流電圧を入力している。ＰＣ３０１０は一般的なパーソナルコンピュータ、３０１１は前述したメモリカード（ＰＣカード）、３０１２はデジタルカメラ（ＤＳＣ：Ｄｉｇｉｔａｌ　Ｓｔｉｌｌ　Ｃａｍｅｒａともいう）である。
【００２４】
また、３０３１はＰＤプリンタ１０００にセットされている用紙の種類（普通紙、写真専用紙（画像の印刷に適した光沢紙）等）を自動的に検出するセンサ（以下、用紙タイプセンサと呼ぶ）である。３０３２はＰＤプリンタ１０００にセットされている用紙のサイズ（Ｌサイズ、２Ｌサイズ、カードサイズ、Ａ４サイズ、はがきサイズ、レターサイズ等）を自動的に検出するセンサ（以下、用紙サイズセンサと呼ぶ）である。
【００２５】
尚、この制御部３０００とプリンタエンジン３００４との間の信号のやり取りは、前述したＵＳＢ３０２１又はＩＥＥＥ１２８４バス３０２２を介して行われる。
【００２６】
図４は、ＡＳＩＣ３００１の構成を示すブロック図で、この図４においても、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
【００２７】
４００１はＰＣカードインターフェース部で、装着されたＰＣカード３０１１に記憶されている画像データの読み取り、ＰＣカード３０１１へのデータの書き込み等を行う。４００２はＩＥＥＥ１２８４インターフェース部で、プリンタエンジン３００４との間のデータのやり取りを行う。このＩＥＥＥ１２８４インターフェース部４００２は、デジタルカメラ３０１２或いはＰＣカード３０１１に記憶されている画像データを印刷する場合に使用されるバスである。４００３はＵＳＢインターフェース部で、ＰＣ３０１０との間でのデータのやり取りを行う。４００４はＵＳＢホストインターフェース部で、デジタルカメラ３０１２との間でのデータのやり取りを行う。４００５は操作パネル・インターフェース部で、操作パネル１０１０からの各種操作信号の入力、表示部１００６への表示データの出力などを行う。４００６はビューワ・インターフェース部で、ビューワ１０１１への画像データの表示を制御している。４００７は各種スイッチやＬＥＤ４００９等との間のインターフェースを制御するインターフェース部である。４００８はＣＰＵインターフェース部で、ＤＳＰ３００２との間でのデータのやり取りの制御を行っている。４０１０はこれら各部を接続する内部バス（ＡＳＩＣバス）である。
【００２８】
図２６は、第１の実施の形態におけるＤＳＣ３０１２のブロック構成図である。なお、ハードウェアそのものは、公知であるので簡単に説明する（ファームウェアはＮＣＤＰ対応になっている）。
【００２９】
図２６において、３１はＤＳＣ３０１２全体の制御を司るＣＰＵであり、３２はＣＰＵ３１の処理手順（ファームウェア）を記憶しているＲＯＭである（ただし、ファームウェアは適宜バージョンアップが行われることを想定し、書き込み可能な不揮発性メモリ、例えばフラッシュメモリで構成される）。３３はＣＰＵ３３のワークエリアとして使用されるＲＡＭであり、３４は各種操作を行うスイッチ群である。３５は液晶表示器であり、撮像した画像を確認したり、各種設定を行う際のメニューを表示するために使用される。これら３４、３５は、第１の実施の形態では、ダイレクトプリントシステムとして機能した場合、システム全体としてユーザインターフェースとして機能するようになる。３６は光学ユニットであり、主としてレンズ及びその駆動系で構成される。３７はＣＣＤ素子であり、３８はＣＰＵ３１の制御下において光学ユニット３６を制御するドライバである。３９は記憶媒体４０（コンパクトフラッシュ（登録商標）メモリカード、スマートメディア等）を接続するためのコネクタであり、４１はＰＣ或いは第１の実施の形態におけるＰＤプリンタ１０００と接続するためのＵＳＢインターフェース（ＵＳＢのスレーブ側）である。
【００３０】
以上が第１の実施の形態におけるＰＤプリンタ１０００及びＤＳＣ３０１２の構成の説明である。以下、かかる構成に基づく動作概要を以下に説明する。
【００３１】
＜通常のＰＣプリンタモード＞
これはＰＣ３０１０から送られてくる印刷データに基づいて画像を印刷する印刷モードである。
【００３２】
このモードでは、ＰＣ３０１０からのデータがＵＳＢコネクタ１０１３（図３）を介して入力されると、ＵＳＢハブ３００８、ＵＳＢ３０２１を介して直接プリンタエンジン３００４に送られ、ＰＣ３０１０からのデータに基づいて印刷が行われる。
【００３３】
＜ＰＣカードからの直接プリントモード＞
ＰＣカード３０１１がカードスロット１００９に装着或いは脱着されると割り込みが発生し、これによりＤＳＰ３００２はＰＣカード３０１１が装着されたか或いは脱着（取り外された）されたかを検知できる。ＰＣカード３０１１が装着されると、そのＰＣカード３０１１に記憶されている圧縮された（例えばＪＰＥＧ圧縮）画像データを読込んでメモリ３００３に記憶する。その後、その圧縮された画像データを解凍して再度メモリ３００３に格納する。次に、操作パネル１０１を使用して、その格納した画像データの印刷が指示されると、ＲＧＢ信号からＹＭＣＫ信号への変換、ガンマ補正、誤差拡散等を実行してプリンタエンジン３００４で印刷可能な記録データに変換し、ＩＥＥＥ１２８４インターフェース部４００２を介してプリンタエンジン３００４に出力することにより印刷を行う。
【００３４】
＜カメラからの直接プリントモード＞
図５は、第１の実施の形態に係るＰＤプリンタ１０００とデジタルカメラ３０１２とを接続する状態を示す図である。
【００３５】
図５において、ケーブル５０００は、ＰＤプリンタ１０００のコネクタ１０１２と接続されるコネクタ５００１と、デジタルカメラ３０１２の接続用コネクタ５００３と接続するためのコネクタ５００２とを備えており、また、デジタルカメラ３０１２は、内部のメモリに保存している画像データを、接続用コネクタ５００３を介して出力可能に構成されている。なお、デジタルカメラ３０１２の構成としては、内部に記憶手段としてのメモリを備えるものや、取り外し可能なメモリを装着するためのスロットを備えたものなど、種々の構成を採用することができる。このように、図５に示すケーブル５０００を介してＰＤプリンタ１０００とデジタルカメラ３０１２とを接続することにより、デジタルカメラ３０１２からの画像データを直接ＰＤプリンタ１０００で印刷することができる。
【００３６】
ここで図５に示すように、ＰＤプリンタ１０００にデジタルカメラ３０１２が接続され、ネゴシエーションの結果、ダイレクトプリントモードへ移行した場合は、操作パネル１０１０の表示部１００６にはカメラマークのみが表示され、操作パネル１０１０における表示及び操作が無効になり、又ビューワ１０１１への表示も無効になる。従って、これ以降はデジタルカメラ３０１２でのキー操作及びデジタルカメラ３０１２の表示部（不図示）への画像表示のみが有効になるので、ユーザはそのデジタルカメラ３０１２を使用して印刷指定を行うことができる。また、デジタルカメラ３０１２とＰＤプリンタ１０００の操作部とを同時に操作してしまうことに起因するエラーも防止できる。
【００３７】
第１の実施の形態においては、ＰＤプリンタ１０００とデジタルカメラ３０１２との間の通信制御を汎用ファイル、汎用フォーマットを用いて行い、インターフェースに依存しないＮＣＤＰ（Ｎｅｗ　Ｃａｍｅｒａ　Ｄｉｒｅｃｔ　Ｐｒｉｎｔ）を提案する。
【００３８】
図６は、このＮＣＤＰの構成の一例を示す図である。
【００３９】
図６において、６００はＵＳＢによるインターフェース、６０１はブルーツース（Ｂｌｕｅｔｏｏｔｈ）によるインターフェースを示している。６０２はＮＣＤＰによるシステムを構築する際に組込まれるアプリケーションレイヤを示している。６０３は既存のプロトコル及びインターフェースを実行するためのレイヤで、ここではＰＴＰ（Ｐｉｃｔｕｒｅ　Ｔｒａｎｓｆｅｒ　Ｐｒｏｔｏｃｏｌ），ＳＣＳＩ及びブルーツースのＢＩＰ（Ｂａｓｉｃ　Ｉｍａｇｅ　Ｐｒｏｆｉｌｅ），ＵＳＢインターフェース等が実装されている。第１の実施の形態に係るＮＣＤＰは、このようなプロトコルレイヤ等のアーキテクチャが実装されていて、その上にアプリケーションとして実装されることが前提である。ここではＰＤプリンタ１０００はＵＳＢホスト、デジタルカメラ３０１２はＵＳＢデバイスとして規定されており、図６に示すように、それぞれ同じＮＣＤＰ構成となっている。
【００４０】
詳細は後述するが、第１の実施の形態におけるＮＣＤＰを用いることのメリットは、ＰＤプリンタ１０００とＤＳＣ３０１２が互いにＮＣＤＰへの移行する際、及び移行した後において、互いに情報のやりとりを行う場合には、一連の情報、一連の動作手順をスクリプトで記述したファイル（テキストファイル）を生成し、それを相手側デバイスに送信し、受信側では受信したスクリプトを解釈して処理することにある。この結果、或る情報を相手側に伝えたい場合において、その情報が複数の要素で構成されている場合、１つ１つの要素をハンドシェークでやりとりすることが少なくでき、情報伝達に係るオーバーヘッドがなくなり、情報伝達の効率が向上するからである。例えば、ＤＳＣ３０１２側で、印刷させたい画像が複数存在する場合、その印刷させたい画像を好きなだけ選択し、それぞれに対して印刷条件を設定した場合、その一連の処理手順がスクリプトとして記述されてＰＤプリンタ１０００に通知することが可能になる。ＰＤプリンタ１０００側では、受信したスクリプトを解釈し、処理することになる。
【００４１】
図７は、第１の実施の形態に係るＮＣＤＰによる、ＰＤプリンタ１０００とＤＳＣ３０１２との間での通信手順の流れを説明する図である。
【００４２】
ここでは、図５に示すようにＵＳＢケーブル５０００によりＰＤプリンタ１０００とＤＳＣ３０１２とが接続されたことが検知されると、これら機器間での通信が可能になる。これにより、これら機器に実装されているアプリケーションが実行されてＮＣＤＰによる手順７０１への移行が開始される。７０２はＮＣＤＰの初期状態を示し、ここでは互いの機種がＮＣＤＰを実行可能かどうかを判断し、可能であればＮＣＤＰによる手順７０１に移行している。もしここで、ＤＳＣ３０１２がＮＣＤＰを実装していない場合には、ＮＣＤＰによる通信制御は実行されない。こうしてＮＣＤＰに移行した後、７０３で示すように、ＤＳＣ３０１２から「基本手順」による画像データの転送／印刷が指示されると、ＤＳＣ３０１２から画像ファイルをＰＤプリンタ１０００に転送して印刷する簡易印刷モードに移行する。また７０４で示すように、ＤＳＣ３０１２から「推奨手順」による画像データの転送／印刷が指示されると、ＤＳＣ３０１２とＰＤプリンタ１０００との間で各種ネゴシエーションを行ってその印刷条件等を決定した後、画像ファイルをＤＳＣ３０１２からＰＤプリンタ１０００に転送して印刷するより多彩な印刷モードに移行する。また７０５は「拡張手順」による指示がＤＳＣ３０１２によりなされると、例えばＤＰＯＦ，ＸＨＴＭＬ−ｐｒｉｎｔ，ＳＶＧ等の高度レイアウト機能、及び各社ベンダーユニークな仕様での印刷を行うモードが設定される。尚、この「拡張手順」による詳細仕様に関しては、ＤＳＣのメーカ各社個別の拡張仕様書で規定されるので、ここでは特に説明しない。尚、これら「基本手順」及び「推奨手順」による画像印刷に関しては、図９乃至図１１を参照して後述する。
【００４３】
図８は、第１の実施の形態に係るＮＣＤＰにおいてプリントを行うために規定したコマンドを説明する図である。
【００４４】
図８において、「対応モード」はＤＳＣ３０１２から指示される、前述した「基本手順」、「推奨手順」及び「拡張手順」に対応している。「推奨手順」では全てのコマンドが使用できるのに対し、「基本手順」は簡易印刷モードであるため、ＮＣＤＰへの移行及びその終了、「基本手順」、「推奨手順」及び「拡張手順」の各モードへの移行コマンド及びカメラ３０１２からの画像データの取得及びカメラ３０１２よりの印刷命令のみが使用可能である。尚、「拡張手順」では、ＮＣＤＰへの移行及びその終了、「基本手順」、「推奨手順」及び「拡張手順」の各モードへの移行コマンドだけが用いられるように記載されているが、前述のように、各社の仕様に応じて他のコマンドが用いられても良いことはいうまでもない。
【００４５】
以下、前述した「基本手順」及び「推奨手順」による画像印刷について説明する。
【００４６】
図９は、「基本手順」による画像印刷を行う場合のＮＣＤＰの通信手順を説明する図である。この「基本手順」は、ＤＳＣ３０１２からＰＤプリンタ１０００に対して１枚の画像ファイルを転送して印刷するだけの簡易印刷モードであり、対応している画像フォーマットとしては、ＶＧＡサイズ（６４０×４８０画素）のＲＧＢ画像、ＶＧＡサイズ（６４０×４８０画素）のＪＰＥＧ画像とし、ＤＳＣ３０１２はＰＤプリンタ１０００がサポートしている画像フォーマットで送信する。この場合はエラーハンドリングを実行しない。
【００４７】
まず９００で、ＰＤプリンタ１０００からＤＳＣ３０１２に対してＮＣＤＰへの移行を指示するコマンド（ＮＣＤＰ　Ｓｔａｒｔ）を送信する。ここでＤＳＣ３０１２がＮＣＤＰを実装していればＯＫが返送される（９０１）。尚、このＮＣＤＰの確認手順を行う場合の一例としてＰＴＰを用いた場合の具体例に関しては、図１４を参照して詳しく後述する。
【００４８】
こうして互いにＮＣＤＰが実装されていることが確認されると、ＰＤプリンタ１０００からモードに移行するように命令（Ｐｒｏｃｅｄｕｒｅ　Ｓｔａｒｔ）がＤＳＣ３０１２に送信される（９０２）。これに対して９０３で、ＤＳＣ３０１２から簡易印刷モードである「基本手順」が送られてくると、これ以降は「基本手順」による印刷モードに移行する。この場合は、ＤＳＣ３０１２における操作により印刷したい画像が選択されて印刷が指示されると、印刷の開始を指示するコマンド（Ｊｏｂ　Ｓｔａｒｔ）がＤＳＣ３０１２からＰＤプリンタ１０００に送られる（９０４）。これによりＰＤプリンタ１０００は簡易印刷モードとなり、ＤＳＣ３０１２に対してコマンド（Ｇｅｔ　Ｉｍａｇｅ）を送信してＪＰＥＧ画像を要求する（９０５）。これによりＤＳＣ３０１２からＪＰＥＧ画像がＰＤプリンタ１０００に送信され（９０６）、ＰＤプリンタ１０００における印刷処理が開始される。こうして、指示された画像の印刷が終了すると印刷ジョブの終了を示すコマンド（Ｊｏｂ　Ｅｎｄ）がＰＤプリンタ１０００からＤＳＣ３０１２に送信される（９０７）。これに対してＤＳＣ３０１２から肯定応答（ＯＫ）が返送されると（９０８）、この「基本手順」による印刷処理が完了する。
【００４９】
この様にカメラからモード指定することは、プリント操作を行うべき装置からモードを指定することになるので、カメラを操作する使用者の意図に沿ったモードを指定しやすい。
【００５０】
図１０は、「推奨手順」による画像印刷を行う場合のＮＣＤＰの通信手順を説明する図で、前述の図９と共通する手順には同じ番号を付して、その説明を省略する。この「推奨手順」では、ＰＤプリンタ１０００とＤＳＣ３０１２との間でのネゴシエーションを前提とした「より多彩な印刷」モードが設定でき、複数枚の写真印刷やレイアウト印刷が可能になる。また、エラーハンドリングも実行可能となる。
【００５１】
図１０において、図９の場合と同様にして、互いにＮＣＤＰが実装されていることを確認した後、この場合では、ＤＳＣ３０１２から「推奨手順」が指示される（９１０）。この後はこの「推奨手順」による手順が実行される。まず９１１で示すように、ＰＤプリンタ１０００は、ＰＤプリンタ１０００のＣａｐａｂｉｌｉｔｙ情報（ＰＤプリンタ１０００が備える機能などを含む）を生成し、それをＤＳＣ３０１２に送信する。このＣａｐａｂｉｌｉｔｙ情報は、スクリプト形式（一連の手順や情報をテキスト形式で記述されたファイル）でＤＳＣ３０１２に送信される。
【００５２】
このＣａｐａｂｉｌｉｔｙ情報の一例を図１２に示す。
【００５３】
図１２に示すように、このＣａｐａｂｉｌｉｔｙ情報は、印刷可能な用紙の種類及びサイズ、印刷品位、画像データのフォーマット、日付印刷の有無、ファイル名印刷の有無、レイアウト、画像補正の有無、更にはオプションとして、各カメラメーカの仕様に対応した機能の有無等の情報を含んでいる。
【００５４】
Ｃａｐａｂｉｌｉｔｙ情報の一項目である「ＰａｐｅｒＳｉｚｅ」は、ＰＤプリンタにセットできる用紙のサイズを記述する項目である。但し、ＰＤプリンタが自機にセットされている用紙のサイズを自動的に検出する機能を備えている場合、「ＰａｐｅｒＳｉｚｅ」には「Ａｕｔｏ」を記述することができる。この場合、Ｃａｐａｂｉｌｉｔｙ情報には＜ＰａｐｅｒＳｉｚｅ＝Ａｕｔｏ＞が記述される。Ｃａｐａｂｉｌｉｔｙ情報の一項目である「ＰａｐｅｒＴｙｐｅ」は、ＰＤプリンタにセットできる用紙の種類を記述する項目である。但し、ＰＤプリンタが自機にセットされている用紙の種類を自動的に検出する機能を備えている場合、「ＰａｐｅｒＴｙｐｅ」には「Ａｕｔｏ」を記述することができる。この場合、Ｃａｐａｂｉｌｉｔｙ情報には＜ＰａｐｅｒＴｙｐｅ＝Ａｕｔｏ＞が記述される。
【００５５】
このようにＣａｐａｂｉｌｉｔｙ情報をスクリプト表記とし、更にこの表記をＸＭＬ準拠とすることにより、他の通信プロトコルのアーキテクチャへの移植を簡単にし、このような機能情報のやり取りを、より標準化し易くしている。この理由は、例えば１つ１つの要素を、それぞれ専用のコマンドで記述した場合と比較すると判りやすい。例えば、図１２における、ＰＤプリンタ１０００が処理可能なイメージタイプを通知する記述を「＜ＩｍａｇｅＴｙｐｅ＝…＞」にＤＳＣ３０１２に通知する際にそれ専用のコマンドが必要になるし、そもそも将来、新たに付加される機能について考慮した場合に備えてコマンドを用意しておくのは無理がある。スクリプトで記述することで、一連の情報を複数行のテキストとして記述できるし、もし解釈できない要素があったとしても無視すれば良いので、発展性が否定されることはない。これは他のスクリプトについても同じことが言えることを付言しておく。
【００５６】
このようなＣａｐａｂｉｌｉｔｙ情報を受信したＤＳＣ３０１２は、印刷したい画像及びその画像の印刷条件（種類、サイズ、フチ、日付など）をユーザに選択させることができるようになる。印刷条件をユーザに選択させる場合、ＤＳＣ３０１２は、印刷条件を設定するためのユーザインターフェース（以下、「印刷条件設定メニュー」と呼ぶ）を表示器３５に表示する。
【００５７】
図２８Ａ及び図２８Ｂは、表示器３５に表示される印刷条件設定メニューの一例を示す図である。図２８Ａは、ＤＳＣ３０１２にダイレクトに接続されたＰＤプリンタが用紙のサイズ及び種類を自動的に検出する機能を備えたＰＤプリンタ（つまり、ＰＤプリンタ１０００）である場合に表示器３５に表示される印刷条件設定メニューの一例を示す図である。また、図２８Ｂは、ＤＳＣ３０１２にダイレクトに接続されたＰＤプリンタが用紙のサイズ及び種類を自動的に検出する機能を備えていないＰＤプリンタである場合に表示器３５に表示される印刷条件設定メニューの一例を示す図である。
【００５８】
図２８Ａ及び図２８Ｂにおいて、「用紙サイズ」は、用紙のサイズ（Ｌサイズ、２Ｌサイズ、カードサイズ、Ａ４サイズ、はがきサイズ、レターサイズ等）をユーザに選択させる項目である。但し、ＤＳＣ３０１２にダイレクトに接続されたＰＤプリンタが用紙のサイズを自動的に検出する機能を備えている場合、「用紙サイズ」には「自動選択」が表示され、用紙のサイズの選択が不要になる。「用紙種類」は、用紙の種類（普通紙、写真専用紙等）をユーザに選択させる項目である。但し、ＤＳＣ３０１２にダイレクトに接続されたＰＤプリンタが用紙の種類を自動的に検出する機能を備えている場合、「用紙種類」には「自動選択」が表示され、用紙の種類の選択が不要になる。「フチ」は、用紙の４辺に所定の余白領域（印刷をしない領域）を設けるか否かをユーザに選択させる項目である。「日付」は、撮影日付を所定の位置（例えば、右下）に付加して印刷するか否かをユーザに選択させる項目である。なお、第１の実施の形態のＤＳＣ３０１２は、各項目をコンボボックス形式（選択可能な候補のリストを表示し、その中から１つの候補を選択させる形式）で表示するものとする。
【００５９】
図２９は、印刷条件設定メニューを表示器３５に表示する手順の一例を説明するフローチャートを示す図である。
【００６０】
ステップＳ２９１において、ＣＰＵ３１は、ＤＳＣ３０１２にダイレクトに接続されたＰＤプリンタ（以下、「接続プリンタ」と呼ぶ）のＣａｐａｂｉｌｉｔｙ情報を解析する。
【００６１】
ステップＳ２９２において、ＣＰＵ３１は、Ｃａｐａｂｉｌｉｔｙ情報の一項目である「ＰａｐｅｒＳｉｚｅ」が「Ａｕｔｏ」であるか否かを判定する。言い換えれば、ＣＰＵ３１は、接続プリンタが用紙のサイズを自動的に検出する機能を備えているか否かを判定する。「ＰａｐｅｒＳｉｚｅ」が「Ａｕｔｏ」である場合にはステップＳ２９４に進み、「ＰａｐｅｒＳｉｚｅ」が「Ａｕｔｏ」でない場合にはステップＳ２９３に進む。
【００６２】
ステップＳ２９３において、ＣＰＵ３１は、「ＰａｐｅｒＳｉｚｅ」に記述されたサイズを「用紙サイズ」に選択できるように表示する。この場合、ユーザは、接続プリンタにセットされている用紙のサイズと同じサイズを選択する必要がある。その理由は、接続プリンタにセットされている用紙のサイズと異なるサイズを選択した場合、用紙のサイズに最適な印刷画像が得られない可能性があるためである。
【００６３】
ステップＳ２９４において、ＣＰＵ３１は、「用紙サイズ」に「自動選択」を表示し、用紙のサイズの選択を不要にする。この場合、ユーザは接続プリンタが用紙のサイズを自動的に検出する機能を備えていることを知ることができる。またこの場合、ユーザは接続プリンタにセットされている用紙のサイズと同じサイズを選択する必要がなくなり、操作が簡単になる。
【００６４】
ステップＳ２９５において、ＣＰＵ３１は、Ｃａｐａｂｉｌｉｔｙ情報の一項目である「ＰａｐｅｒＴｙｐｅ」が「Ａｕｔｏ」であるか否かを判定する。言い換えれば、ＣＰＵ３１は、接続プリンタが用紙の種類を自動的に検出する機能を備えているか否かを判定する。「ＰａｐｅｒＴｙｐｅ」が「Ａｕｔｏ」である場合にはステップＳ２９７に進み、「ＰａｐｅｒＴｙｐｅ」が「Ａｕｔｏ」でない場合にはステップＳ２９６に進む。
【００６５】
ステップＳ２９６において、ＣＰＵ３１は、「ＰａｐｅｒＴｙｐｅ」に記述されている種類を「用紙種類」に選択できるように表示する。この場合、ユーザは接続プリンタにセットされている用紙の種類と同じ種類を選択する必要がある。その理由は、接続プリンタにセットされている用紙の種類と異なる種類を選択した場合、用紙の種類に最適な印刷画像が得られない可能性があるためである。
【００６６】
ステップＳ２９７において、ＣＰＵ３１は、「自動選択」を「用紙種類」に表示し、用紙の種類の選択を不要にする。この場合、ユーザは接続プリンタが用紙の種類を自動的に検出する機能を備えていることを知ることができる。またこの場合、ユーザは接続プリンタにセットされている用紙の種類と同じ種類を選択する必要がなくなり、操作が簡単になる。
【００６７】
ステップＳ２９８において、ＣＰＵ３１は、「フチ」及び「日付」に「あり」又は「なし」を選択できるように表示する。
【００６８】
印刷したい画像が選択され、印刷条件（種類、サイズ、フチ、日付など）が設定され、印刷開始が指示されると、プリント命令（Ｊｏｂ　Ｓｔａｒｔ）がＤＳＣ３０１２からＰＤプリンタ１０００に送られる（９０４）。これによりＰＤプリンタ１０００から、その画像データを要求するコマンド（Ｇｅｔ　Ｉｍａｇｅ　ｘｎ）が発行され（９１２）、それに応答してＤＳＣ３０１２から、対応する画像データが、ＰＤプリンタ１０００が受信可能な画像フォーマット（Ｔｉｆｆ，ＪＰＥＧ，ＲＧＢなど）で送信される（９１３）。ここで１枚の画像印刷に対して複数の画像データを送信できるようになっているのは、例えば２×２等のレイアウト印刷が指定されている場合は、１枚の用紙に対して４枚分の画像データを送信する必要があるためである。こうして、指示された画像の印刷が終了すると印刷ジョブの終了を示すコマンド（Ｊｏｂ　Ｅｎｄ）がＰＤプリンタ１０００からＤＳＣ３０１２に送信される（９０７）。これに対してＤＳＣ３０１２から肯定応答（ＯＫ）が返送されると（９０８）、再び、この「推奨手順」による、次に画像の選択・印刷処理に移行する。
【００６９】
図１１は、前述の「推奨手順」による画像印刷を行う場合のＮＣＤＰの通信手順において、ＰＤプリンタ１０００でエラーが発生した場合の通信手順を説明する図で、前述の図１０と共通する手順には同じ番号を付して、その説明を省略する。
【００７０】
この例では、「推奨手順」での印刷処理の実行中に、ＰＤプリンタ１０００において給紙エラーが発生した場合の例を示している。この場合には９１４で、ＰＤプリンタ１０００からＤＳＣ３０１２に対して給紙エラーを示すステータス情報（Ｓｔａｔｕｓ）が送信される。これに対してＤＳＣ３０１２のユーザによる判断による指示内容に基づいて、その印刷処理を継続するか（Ｊｏｂ　Ｃｏｎｔｉｎｕｅ）、中止するか（Ｊｏｂ　Ａｂｏｒｔ）を示すコマンドがＰＤプリンタ１０００に送信される（９１５）。これによりＰＤプリンタ１０００では、中止の場合はその印刷処理を中止してプリントジョブの終了通知（Ｊｏｂ　Ｅｎｄ）を送信して印刷を中止する。或いは継続が指示された場合には、その給紙エラーの修復を待って、印刷処理を継続するように動作する。
【００７１】
次に、前述した処理手順を図１３のフローチャートを参照して説明する。
【００７２】
図１３は、図７に示す処理手順を説明するフローチャートである。
【００７３】
まずステップＳ１で、ＤＳＣ３０１２とＰＤプリンタ１０００との間の通信を確立し（７００）、ステップＳ２で、これら機器がＮＣＤＰを実装済みかどうかを判定し、実装済みであればＮＣＤＰに移行する。次にステップＳ３に進み、ＤＳＣ３０１２からの手順指示を受信して、その指示された手順に移行する。ここで「基本手順」が指示された時はステップＳ４からステップＳ５に進み、「基本手順」による印刷処理を実行する。また「推奨手順」が指示された時はステップＳ６からステップＳ７に進み、前述した「推奨手順」による印刷処理を実行する。更に「拡張手順」が指示された時はステップＳ８からステップＳ９に進み、各ベンダーに応じた「拡張手順」による印刷処理を実行する。それ以外の場合はステップＳ１０に進み、このＰＤプリンタ１０００とＤＳＣ３０１２とによる独自のモードでの印刷を実行する。
【００７４】
次に上述したＮＣＤＰにおける各種コマンド（図８）を、画像転送のためにＰＩＭＡ（Ｐｈｏｔｏｇｒａｐｈｉｃ　ａｎｄ　Ｉｍａｇｉｎｇ　Ｍａｎｕｆａｃｔｕｒｅｒｓ　Ａｓｓｏｃｉａｔｉｏｎ）にて定められた標準プロトコルＰＴＰを用いて実現した（ＰＴＰによるラッパー）例を説明する。尚、第１の実施の形態では、ＰＴＰを用いたＮＣＤＰの場合で説明するが本発明はこれに限定されるものではなく、例えば、他のインターフェース、他のクラス（Ｃｌａｓｓ）上でダイレクトプリントサービスＡＰＩを実装しても良い。
【００７５】
［ＮＣＤＰ　Ｓｔａｒｔ］
図１４は、ＮＣＤＰ手順の開始を指示する命令（ＮＣＤＰ　Ｓｔａｒｔ）を、標準画像転送プロトコルＰＴＰを用いて実現した例を説明する図である。より詳しくは、図７における「ＮＣＤＰへ移行」を決定付づけるため、ＤＳＣ３０１２とＰＤプリンタ１０００が、第１の実施の形態で説明するフォトダイレクトプリントシステムとして機能できるか否かのネゴシエーションの手順を示している。
【００７６】
まず手順１４００で、ＰＤプリンタ１０００からＤＳＣ３０１２に対してＰＴＰコマンドＧｅｔ　Ｄｅｖｉｃｅ　Ｉｎｆｏが送信され、ＤＳＣ３０１２に対して、その保持しているオブジェクトに関する情報が要求される。これは、ＰＤプリンタ１０００に接続されたデバイスが何であるのか問い合わせるものであると言えば判りやすい。これに対してＤＳＣ３０１２は、Ｄｅｖｉｃｅ　Ｉｎｆｏ　Ｄａｔａｓｅｔにより、ＤＳＣ３０１２に関する情報をＰＤプリンタ１０００に送信（通知）する。ただし、この情報はＰＴＰ規格で規定されているカメラに関する属性情報であり、ダイレクトプリントに関する情報を含むものではない。次に手順１４０２で、ＰＴＰコマンドＯｐｅｎ　Ｓｅｓｓｉｏｎにより、ＤＳＣ３０１２をリソースとして割り当て、必要に応じてデータオブジェクトにハンドルをアサインしたり、特別な初期化を行うための手順が開始される。
【００７７】
手順１４０３では、ＤＳＣ３０１２に対してハンドルを要求する。これは、ＰＤプリンタ１０００にとっては、ＤＳＣ３０１２が有する未知のオブジェクト（撮影画像やスクリプト等である）を特定するため、そのオブジェクトにユニークに付けられた番号を要求するものである。この要求により、手順１４０４で、ＤＳＣ３０１２に保持されているハンドルリストが返送される（何個のオブジェクトがあるかを通知することと等価）。
【００７８】
以上の結果、ＰＤプリンタ１０００は、ＤＳＣ３０１２が幾つのオブジェクトを保持しているのかが判明する。ネゴシエーションでは、双方がＮＣＤＰへの移行が行える機能を有するものであるのか否かを判定することが重要である。そして、この判定はパスワード、例えば、一方は“ＮＣＤＰ＿ＣＡＭＥＲＡ”、もう一方は“ＮＣＤＰ＿ＰＲＩＮＴＥＲ”なるパスワードを記述したスクリプトを投げかけ、双方が、相手より意図した結果が返ってきた場合に、ＮＣＤＰによるダイレクトプリントモードに移行する。
【００７９】
従って、上記のようにして、ＰＤプリンタ１０００側としては、ＤＳＣ３０１２が保持しているオブジェクトの中で、その属性がスクリプトである属性を有するオブジェクトを探し出す必要がある。
【００８０】
このため、ＰＤプリンタ１０００は、先ず、ハンドル“１”についてのオブジェクトについてその属性が何であるのかを問い合わせるためのＰＴＰコマンドＧｅｔ　Ｏｂｊｅｃｔ　Ｉｎｆｏ（Ｈａｎｄｌｅ　ｉ）をＤＳＣ３０１２に出力し（この場合、ｉ＝１となる）、その結果、返送されてくるｉ番目の属性（Ｏｂｊｅｃｔ　Ｉｎｆｏ　ｉ　Ｄａｔａｓｅｔ）を受信することを、１乃至オブジェクトの最大数まで行う。より正確には、属性として画像ではなく、パスワード（合言葉）が記述されているスクリプトであるオブジェクトを探し出すと考えれば判りやすい。ＰＴＰコマンドＧｅｔ　Ｏｂｊｅｃｔ　Ｉｎｆｏではオプションとしてオブジェクトのタイプを指定することができるが、デジタルカメラによってはこのオプションがサポートされていない場合を想定しなければならないため、このようにスクリプトオブジェクトの検索が必要になる。
【００８１】
ＰＤプリンタ１０００側がスクリプトであるオブジェクトのハンドル（仮にハンドル“ｊ”）を検出すると、そのハンドル“ｊ”で示されるデータを要求するＰＴＰコマンド「Ｇｅｔ　Ｏｂｊｅｃｔ（Ｈａｎｄｌｅ　ｊ）」を、ＤＳＣ３０１２に出力する。この結果、ＤＣＳ３０１２は「Ｏｂｊｅｃｔ　ｊ　Ｄａｔａ」として、パスワード“ＮＣＤＰ＿ＣＡＭＥＲＡ”が記述されたスクリプトをＰＤプリンタ１０００に出力する。
【００８２】
ＰＤプリンタ１０００は、この結果、接続中のＤＳＣ３０１２がＮＣＤＰ対応のデジタルカメラであることを知ることができる。そこで、今度はＰＤプリンタ１０００がＮＣＤＰ対応プリンタであることを示すパスワード“ＮＣＤＰ＿ＰＲＩＮＴＥＲ”を通知することになるが、それに先立って送信するオブジェクトの属性情報をＳｅｎｄ　Ｏｂｊｅｃｔ　Ｉｎｆｏによって送信する。そして、Ｓｅｎｄ　Ｏｂｊｅｃｔによってパスワード“ＮＣＤＰ＿ＰＲＩＮＴＥＲ”をＤＳＣ３０１２に通知する。なお、ここでのパスワードは一例であって、上記に限らないのは勿論である。
【００８３】
以上の手順の結果、双方ともＮＣＤＰに対応するデバイスであることがわかり、これ以降は、第１の実施の形態におけるＮＣＤＰによるフォトダイレクトプリントモードへ移行することになる。
【００８４】
以上説明した手順をフローチャートとして示すと図２５に示すような手順となる。
【００８５】
先ず、ＰＤプリンタ１０００は先ずステップＳ２１において、デバイス情報要求（Ｇｅｔ　Ｄｅｖｉｃｅ　Ｉｎｆｏ）をＤＳＣ３０１２に出力する（ＤＳＣ３０１２はこの要求に対して、ステップＳ４１で、自身のデバイスの属性を示す情報をＰＤプリンタ１０００に通知する（Ｄｅｖｉｃｅ　Ｉｎｆｏ　Ｄａｔａ　Ｓｅｔ））。
【００８６】
次に、ＰＤプリンタ１０００はステップＳ２２でセッションを開始を宣言し（Ｏｐｅｎ　Ｓｅｓｓｉｏｎ）、ＤＳＣ３０１２はこの宣言を受け取り、ステップＳ４２でＰＤプリンタ１０００にＯＫの通知を行う。
【００８７】
ＰＤプリンタ１０００は、ステップＳ２３において、ＤＳＣ３０１２が保持しているオブジェクトのハンドルを要求する（Ｇｅｔ　Ｏｂｊｅｃｔ　Ｈａｎｄｌｅｓ）。これにより、ＤＳＣ３０１２は、ステップＳ４３において、自身が保持しているオブジェクト（画像やスクリプト）をＰＤプリンタ１０００に通知し（Ｏｂｊｅｃｔ　Ｈａｎｄｌｅ　Ａｒｒａｙ）、ＰＤプリンタ１０００はこれを受信する（ステップＳ２４）。
【００８８】
次に、ＰＤプリンタ１０００は受信した情報からハンドル数がわかるので、ステップＳ２５で、初期値としてハンドルを示す変数ｉに“１”と代入し、ステップＳ２６でｉ番目のオブジェクトに対する属性を要求する（Ｇｅｔ　Ｏｂｊｅｃｔ（Ｈａｎｄｌｅ　ｉ））。この結果、ＤＳＣ３０１２からは該当するオブジェクトの属性を送信してくるので（Ｏｂｊｅｃｔ　Ｉｎｆｏ　ｉ　Ｄａｔａｓｅｔ）、それを受信し、スクリプトであるか否かを判断する（ステップＳ２７）。もし、スクリプト以外である（撮像画像である）と判断した場合には、ステップＳ２８で変数ｉを１つインクリメントし、ステップＳ２６の処理を繰り返す。
【００８９】
さて、ｉ番目のオブジェクトがスクリプトであると判断した場合、処理はステップＳ２７に進んで、ｉ番目のオブジェクトの内容の転送を要求する（Ｇｅｔ　Ｏｂｊｅｃｔ（Ｈａｎｄｌｅ　ｉ））。すなわち、パスワード（合言葉）を期待して、それを要求することになる。この結果、ＤＳＣ３０１２は、ステップＳ４５で、指定されたオブジェクトの内容をＰＤプリンタ１０００に通知する（Ｏｂｊｅｃｔ　ｉ　Ｄａｔａ）ので、ＰＤプリンタ１０００はそれがパスワード“ＮＣＤＰ＿ＣＡＭＥＲＡ”であるかどうかを判断する（ステップＳ２９）。もし、“ＮＣＤＰ＿ＣＡＭＥＲＡ”でなく、別なスクリプトがたまたま返送されてきたと判断した場合には、ステップＳ３１で変数ｉが最後のものであるか否かを判断し、否であればステップＳ２８に戻り、上記処理を繰り返す。こうして、最後のハンドラに到達しても、パスワード“ＮＣＤＰ＿ＣＡＭＥＲＡ”をＤＳＣ３０１２が通知してこないと判断した場合、接続中のＤＳＣ３０１２はＮＣＤＰ未対応のデジタルカメラであると判断し、これ以上の処理を打ち切るため、例えばエラー通知を操作部に備えられたＬＥＤを点灯させたり、ネゴシエーション失敗を意味するメッセージを表示させ、本処理を終了する。
【００９０】
一方、ＤＳＣ３０１２よりパスワード“ＮＣＤＰ＿ＣＡＭＥＲＡ”が通知された場合、処理はステップＳ３３に進み、ＰＤプリンタ１０００がＮＣＤＰ対応であること示す手順（Ｓｅｎｄ　Ｏｂｊｅｃｔ　Ｉｎｆｏの送信及びＯＫの受信）を経て、パスワード“ＮＣＤＰ＿ＰＲＩＮＴＥＲ”を記述したスクリプトをＤＳＣ３０１２に通知（Ｓｅｎｄ　Ｏｂｊｅｃｔ）し、ＤＳＣ３０１２より受信したスクリプトはもはや不要であるので、そのスクリプトを削除し、ＮＣＤＰモードに移行する。
【００９１】
ＤＳＣ３０１２側は、パスワード“ＮＣＤＰ＿ＰＲＩＮＴＥＲ”を受信したことは判明すると（ステップＳ４６）、ステップＳ４７に済んで、ＰＤプリンタ１０００より受信したスクリプトを削除し、ＮＣＤＰモードへ移行する。
【００９２】
ネゴシエーションの処理手順は以上であるが、上記例はＰＤプリンタ１０００及びＤＳＣ３０１２の双方がＮＣＤＰをサポートしている場合のものである点に注意されたい。
【００９３】
第１の実施の形態におけるネゴシエーションはＰＴＰを利用しているわけであるから、ＮＣＤＰ未対応のＵＳＢ接続機能を有するデジタルカメラであっても、ステップＳ４１から、ステップＳ４４、Ｓ４５、Ｓ４６の処理が実行される。ただし、Ｓ４５の処理は存在しないので、無意味なデータ（スクリプト）であるものとして、単純にそのデータを受信し、保存し、Ｓ４４、Ｓ４５を繰り返すだけとなる。
【００９４】
ここで、特に注目したい点は、第１の実施の形態の場合、パスワードの発信元となるのは必ずＤＳＣ３０１２側になることである（ＤＳＣ３０１２がＮＣＤＰ未対応であっても、最初のスクリプトを送信する側であることに変わりはない）。つまり、パスワード“ＮＣＤＰ＿ＣＡＭＥＲＡ”に応えるパスワード“ＮＣＤＰ＿ＰＲＩＮＴＥＲ”を発するのはＰＤプリンタ１０００側であって、しかも、最初のパスワード“ＮＣＤＰ＿ＣＡＭＥＲＡ”があってはじめて、それに応えるパスワード“ＮＣＤＰ＿ＰＲＩＮＴＥＲ”を発するようにした。
【００９５】
かかる手順にした理由は、もし、最初のパスワードをＰＤプリンタ１０００が発するようにしてしまうと、ＤＳＣ３０１２がＮＣＤＰに対応である場合には問題は発生しないが、もしＤＳＣ３０１２がＮＣＤＰ未対応である場合には、ステップＳ４７の処理に進むことができないわけであるから、意味のないスクリプトファイル（ゴミファイル）を受信しては、記憶されてしまうからである。
【００９６】
かかる点、上記のように、互いに認証する際の最初の認証情報（上記のパスワード又は合言葉）を出力する装置をＤＳＣ３０１２とし、ＰＤプリンタ１０００がそれに応える認証情報を出力することで、ＰＤプリンタ１０００に接続されているデバイスが如何なるものであったしても、そのデバイスにゴミが蓄積してしまうことを回避できるようになる。なぜなら、ＰＤプリンタ１０００は、ＤＳＣ３０１２からのスクリプト中に、期待している認証情報が存在しない場合は、それに応える認証情報は出力しないからである。
【００９７】
また、上記処理によれば、ＮＣＤＰ対応のデジタルカメラであれば、パスワードを記述しているスクリプトを保持しているので、必ず、ＮＣＤＰによるプリントシステムへの移行が約束される。ただし、上記から容易に想到できるように、ネゴシエーションを高速化させるには、ＤＳＣ３０１２側が有するオブジェクトのうち、その小さいハンドル番号に認証情報（合言葉）を含むスクリプトを割り当てることである。すなわち、ＤＳＣ３０１２がＮＣＤＰ対応である場合には、ハンドル要求（Ｇｅｔ　Ｏｂｊｅｃｔ　Ｈａｎｄｌｅｓ）を受信した場合、合言葉を含むスクリプト（認証情報）に対してハンドル番号“１”を割り当て、それ以降に撮像し記憶保持している画像についてハンドル番号を割り当て、その結果をＰＤプリンタ１０００に通知する。
【００９８】
この結果、ステップＳ２６乃至Ｓ２８のループ処理、或いは、ステップＳ２６乃至Ｓ３１、Ｓ２８のループ処理が実質的になくなり、一気にステップＳ３３、Ｓ３４へと処理が進むことになり、ネゴシエーションを高速なものとすることができる。
【００９９】
ＤＳＣ３０１２側の処理としては、例えば、図２７に示す手順で処理すれば良いであろう（同手順のプログラムはＤＳＣ３０１２内のＲＯＭ３２に格納されている）。なお、同図の処理は、ＰＤプリンタ１０００より、ハンドル要求コマンド（Ｇｅｔ　Ｏｂｊｅｃｔ　Ｈａｎｄｌｅｓ）を受信した場合の処理であって、このコマンドを受信したとき、上位処理からコールされるものである。従って、Ｇｅｔ　Ｏｂｊｅｃｔ　Ｈａｎｄｌｅｓを受信したか否かの判断は、既に上位処理で行われていることに注意されたい。
【０１００】
先ず、ステップＳ５１で、ＲＡＭ３３内に、オブジェクトとハンドルとを対応させるためのテーブル（もしくは変数領域）を確保する。次いで、ステップＳ５２に進んで、ＮＣＤＰ対応であることを示すスクリプトを記述しているオブジェクトを先頭のハンドルに割り当てるべく、テーブルにセットする。この後、ステップＳ５３で、残りのオブジェクト（通常は撮像して記憶保持されている画像データ）に対するハンドラを割り当て、テーブルにセットし、その結果を、ＯｂｊｅｃｔＨａｎｄｌｅ　ＡｒｒａｙとしてＰＤプリンタ１０００に通知する。
【０１０１】
この結果、ＤＳＣ３０１２及びＰＤプリンタ１０００間で、オブジェクトを指し示す際の情報の共有（共通）化が可能となり、これ以降の処理においては、ＤＳＣ３０１２内のオブジェクトをハンドル番号を用いてやりとりがなされることになる。
【０１０２】
なお、ＰＤプリンタ１０００側が、ＤＳＣ３０１２に対してスクリプトであるか否かを判断する順序を、最終ハンドルから遡るように処理する場合には、ＤＳＣ３０１２がハンドルをＰＤプリンタ１０００に通知するとき、最後のハンドルにパスワードとなるスクリプトを割り当てれば良いであろう。
【０１０３】
なお、ＮＣＤＰ対応であることを示すスクリプトを記述しているオブジェクトに対するハンドル番号を最初にすることが、もっとも効果的であるが、必ずしも最初でなくとも、最初の番号付近であれば十分効果的である。つまり、ＮＣＤＰ対応であることを示すスクリプトを記述しているオブジェクトを最後の番号に対応させてしまわないようにすれば、最後の番号に対応させる場合よりも、高速化を図ることが出来る。
【０１０４】
［Ｐｒｏｃｅｄｕｒｅ　Ｓｔａｒｔ］
図１５は、ＤＳＣ３０１２からの、モードへの移行手順を指示する命令を受信して、そのモードに移行するための命令（Ｐｒｏｃｅｄｕｒｅ　Ｓｔａｒｔ）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【０１０５】
ここではまず１５０１で、ＰＤプリンタ１０００がサポートしている手続「基本手順」、「推奨手順」、「拡張手順」をＤＳＣ３０１２に通知するためにＰＴＰコマンドＳｅｎｄ　Ｏｂｊｅｃｔ　Ｉｎｆｏにより、ＤＳＣ３０１２に対して送信したいオブジェクト情報があることを伝える。これに対して肯定応答（ＯＫ）がＤＳＣ３０１２から送られてくると、１５０２でＰＴＰコマンドＳｅｎｄ　Ｏｂｊｅｃｔによりオブジェクトを送信する旨をＤＳＣ３０１２に伝え、次の１５０３のＯｂｊｅｃｔ　Ｄａｔａで、このＰＤプリンタ１０００がサポートしている手続に関する情報を送信する。次に１５０４で、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、ＰＴＰで定義されるイベント通知Ｒｅｑｕｅｓｔ　Ｄａｔａ　Ｔｒａｎｓｆｅｒをカメラが発行し、ＰＴＰコマンドＧｅｔ　Ｏｂｊｅｃｔ動作を起動したい旨を伝える。これにより１５０５で、ＰＤプリンタ１０００からオブジェクト情報に関する情報を受信する旨が伝えられると（Ｇｅｔ　Ｏｂｊｅｃｔ　Ｉｎｆｏ）、１５０６で、Ｏｂｊｅｃｔ　Ｉｎｆｏ　Ｄａｔａｓｅｔにより、その情報が返送され、次に１５０７で、そのオブジェクト情報を指定してオブジェクト情報そのものが要求されると、Ｏｂｊｅｃｔ　Ｄａｔａｓｅｔにより、ＤＳＣ３０１２が使用する手続「基本」、「推奨」、「拡張」等）をＰＤプリンタ１０００に知らせる（１５０８）。
【０１０６】
これにより、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、画像の印刷モードを指定することができる。
【０１０７】
［ＮＣＤＰ　Ｅｎｄ］
図１６は、第１の実施の形態に係るＮＣＤＰにおける通信制御手順を終了する命令（ＮＣＤＰ　Ｅｎｄ）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【０１０８】
この手順では、１６００において、ＰＤプリンタ１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報があることを伝え、Ｏｂｊｅｃｔ　Ｄａｔａにより、ＤＳＣ３０１２に対してＮＣＤＰのモードから抜けることを通知する。これに対して肯定応答（ＯＫ）を受信すると、１６０１でＰＴＰコマンドＣｌｏｓｅ　Ｓｅｓｓｉｏｎを送信して、この通信を終了させる。これによりＮＣＤＰによる通信手順を終了する。
【０１０９】
［Ｃａｐａｂｉｌｉｔｙ］
図１７は、第１の実施の形態に係るＮＣＤＰにおける、ＰＤプリンタ１０００の機能をＤＳＣ３０１２に通知するＣａｐａｂｉｌｉｔｙ命令における通信手順をＰＴＰプロトコルを用いて実現した例を説明する図である。
【０１１０】
この手順では、１７００において、ＰＤプリンタ１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報があることをＰＴＰコマンドＳｅｎｄ　Ｏｂｊｅｃｔ　Ｉｎｆｏにより伝える。そして１７０１で、ＰＴＰコマンドＳｅｎｄ　ＯｂｊｅｃｔによりＤＳＣ３０１２に対してオブジェクト情報の伝送を伝え、続くＯｂｊｅｃｔ　Ｄａｔａにより、ＰＤプリンタ１０００が有している機能をスクリプト（Ｓｃｒｉｐｔ）形式（図１２）でＤＳＣ３０１２に送信する。
【０１１１】
［Ｇｅｔ　Ｉｍａｇｅ］
図１８は、第１の実施の形態に係るＮＣＤＰにおける、ＰＤプリンタ１０００がＤＳＣ３０１２に保持されている画像データ（ＪＰＥＧ画像）を取得する（Ｇｅｔ　Ｉｍａｇｅ）通信手順をＰＴＰプロトコルを用いて実現した例を説明する図である。
【０１１２】
まず１８００で、ＤＳＣ３０１２が保持しているオブジェクトに関する情報を要求すると、１８０１で、そのオブジェクトに関する情報（Ｏｂｊｅｃｔ　Ｄａｔａｓｅｔ）がＤＳＣ３０１２からＰＤプリンタ１０００に送られる。次に、１８０２で、そのオブジェクトを指定して取得要求（Ｇｅｔ　Ｏｂｊｅｃｔ）を発行すると、１８０３で、その要求された画像ファイル（Ｏｂｊｅｃｔ　Ｄａｔａｓｅｔ）がＤＳＣ３０１２からＰＤプリンタ１０００に対して送信される。この様にしてＰＤプリンタ１０００は、ＤＳＣ３０１２から所望の画像ファイルを取得することができる。
【０１１３】
［Ｓｔａｔｕｓ　Ｓｅｎｄ］
図１９は、第１の実施の形態に係るＮＣＤＰにおける、ＰＤプリンタ１０００からＤＳＣ３０１２に対してエラー状態などを通知する（Ｓｔａｔｕｓ　Ｓｅｎｄ）通信手順をＰＴＰプロトコルを用いて実現した例を説明する図である。
【０１１４】
まず１９００で、ＰＤプリンタ１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報がある旨をＰＴＰコマンドＳｅｎｄ　Ｏｂｊｅｃｔ　Ｉｎｆｏにより通知する。そして１９０１で、そのオブジェクト情報に関する情報セット（Ｏｂｊｅｃｔ　Ｄａｔａｓｅｔ）をＤＳＣ３０１２に送信し、ＤＳＣ３０１２からの肯定応答（ＯＫ）に対して、ＰＤプリンタ１０００におけるエラー等のステータス情報をＰＴＰコマンドＳｅｎｄ　ＯｂｊｅｃｔおよびＯｂｊｅｃｔ　Ｄａｔａｓｅｔにより送信する。
【０１１５】
［Ｐａｇｅ　Ｅｎｄ］
図２０は、第１の実施の形態に係るＮＣＤＰにおける、ＰＤプリンタ１０００からＤＳＣ３０１２に対して、１ページのプリント処理が終了したことを通知する（Ｐａｇｅ　Ｅｎｄ）通信手順をプロトコルを用いて実現した例を説明する図である。
【０１１６】
［Ｊｏｂ　Ｅｎｄ］
図２１は、第１の実施の形態に係るＮＣＤＰにおける、ＰＤプリンタ１０００からＤＳＣ３０１２に対して、プリントジョブが終了したことを通知する（Ｊｏｂ　Ｅｎｄ）通信手順をＰＴＰプロトコルを用いて実現した例を説明する図である。図２０，図２１においては、図１９の１９００乃至１９０１の手順実行後、図２０の１９１０で、ＰＤプリンタ１０００からＤＳＣ３０１２に対して１ページ印刷処理が終了したことが通知され、図２１の１９１１では、ＰＤプリンタ１０００からＤＳＣ３０１２に対して印刷ジョブが終了したことが通知される。
【０１１７】
［Ｊｏｂ　Ｓｔａｒｔ］
図２２は、第１の実施の形態に係るＮＣＤＰにおける、ＤＳＣ３０１２からＰＤプリンタ１０００に対して、プリントジョブの開始を通知する（Ｊｏｂ　Ｓｔａｒｔ）通信手順をＰＴＰプロトコルを用いて実現した例を説明する図である。
【０１１８】
まず２２００において、ＤＳＣ３０１２からＰＤプリンタ１０００に対してＰＴＰで定義されるイベント通知Ｒｅｑｕｅｓｔ　Ｏｂｊｅｃｔ　Ｔｒａｎｓｆｅｒを送り、ＰＤプリンタ１０００がＰＴＰコマンドＧｅｔ　Ｏｂｊｅｃｔコマンドを発行するように促す。これにより２２０１で、ＰＤプリンタ１０００からＰＴＰコマンドＧｅｔ　Ｏｂｊｅｃｔ　Ｉｎｆｏが発行されると、ＤＳＣ３０１２は送信したいオブジェクト情報に関する情報を送信し、これに対してＰＤプリンタ１０００からオブジェクト情報が要求されると（Ｇｅｔ　Ｏｂｊｅｃｔ：２２０３）、２２０４で、Ｏｂｊｅｃｔ　Ｄａｔａｓｅｔを送信して、ＤＳＣ３０１２からＰＤプリンタ１０００に対して印刷命令を発行する。
【０１１９】
［Ｊｏｂ　Ａｂｏｒｔ］
図２３は、第１の実施の形態に係るＮＣＤＰにおける、ＤＳＣ３０１２からＰＤプリンタ１０００に対してプリント中止命令を発行する（Ｊｏｂ　Ａｂｏｒｔ）通信手順をＰＴＰプロトコルを用いて実現した例を説明する図である。
【０１２０】
［Ｊｏｂ　Ｃｏｎｔｉｎｕｅ］
図２４は、第１の実施の形態に係るＮＣＤＰにおける、ＤＳＣ３０１２からＰＤプリンタ１０００に対してプリント再開命令を発行する（Ｊｏｂ　Ｃｏｎｔｉｎｕｅ）通信手順をＰＴＰプロトコルを用いて実現した例を説明する図である。
【０１２１】
図２３及び図２４において、図２２の２２００乃至２２０３の手順を実行した後、図２３の２３０１で、ＤＳＣ３０１２からＰＤプリンタ１０００に対して印刷中止命令が発行され、図２４の２４０１では、ＤＳＣ３０１２からＰＤプリンタ１０００に対して印刷再開命令が通知される。
【０１２２】
なお、第１の実施の形態のＤＳＣ３０１２は、「ＰａｐｅｒＳｉｚｅ」に「ｕｐＴｏＰｒｉｎｔｅｒ」（ＰＤプリンタ１０００で選択での選択が可能であることを意味する情報）が記述されているか否かに応じてＤＳＣ３０１２のユーザインターフェースに「自動選択」（ユーザによる選択が不要であることを意味する情報）を表示することも可能である。また、第１の実施の形態のＤＳＣ３０１２は、「ＰａｐｅｒＴｙｐｅ」に「ｕｐＴｏＰｒｉｎｔｅｒ」（ＰＤプリンタ１０００での選択が可能であることを意味する情報）が記述されているか否かに応じてＤＳＣ３０１２のユーザインターフェースに「自動選択」（ユーザによる選択が不要であることを意味する情報）を表示することも可能である。
【０１２３】
また、第１の実施の形態は、ＤＳＣ３０１２の代わりにＤＳＣ３０１２と同様の機能を有する画像入力装置で実施することも可能である。また、第１の実施の形態は、ＰＤプリンタ１０００の代わりにＰＤプリンタ１０００と同様の機能を有する画像出力装置で実施することも可能である。
【０１２４】
また、第１の実施の形態では、フォトダイレクトプリントシステムを構築する際に、ＰＤプリンタ１０００がＵＳＢホスト、ＤＳＣ３０１２がＵＳＢデバイスとして説明した。上記の如く、昨今のデジタルカメラの多くは、ＰＣとの通信のためにＵＳＢデバイス機能を搭載しているという状況、プリンタメーカー数よりもデジタルカメラメーカーの数が多い点、更に、ホスト役となる装置が電源の心配の少ない点について考察した場合、プリンタ側がホスト役を担った方が、各メーカにとって負担が少なく、本発明の目的とするシステムを構築する際に各メーカにとってもメリットが十分にあり、ひいてはエンドユーザにとっても好ましい形態である。
【０１２５】
また、第１の実施の形態では、デジタルカメラ３０１２とプリンタ１０００とがダイレクトに通信する手段としてＵＳＢケーブルで直接接続する例を示したが、例えばＢｌｕｅｔｏｏｔｈ、ＩＥＥＥ８０２．１１のような無線通信によってもダイレクト通信が可能であるので、上記例により本発明が限定されるものではない。
【０１２６】
（他の実施の形態）
本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１２７】
また、本発明の目的は、前述した実施の形態の機能（カメラ側で行われる処理、プリンタ側で行われる各種印刷処理）を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれる。
【０１２８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれる。
【０１２９】
また、実施形態では、フォトダイレクトプリントシステムを構築する際に、プリンタ装置がＵＳＢホスト、ＤＳＣがＵＳＢデバイスとして説明した。上記の如く、昨今のデジタルカメラの多くは、ＰＣとの通信のためにＵＳＢデバイス機能を搭載しているという状況、プリンタメーカー数よりもデジタルカメラメーカーの数が多い点、更に、ホスト役となる装置が電源の心配の少ない点について考察した場合、プリンタ側がホスト役を担った方が、各メーカにとって負担が少なく、本発明の目的とするシステムを構築する際に各メーカにとってもメリットが十分にあり、ひいてはエンドユーザにとっても好ましい形態である。
【０１３０】
また、実施形態では、デジタルカメラとプリンタとがダイレクトに通信する手段としてＵＳＢケーブルで直接接続する例を示したが、例えばＢｌｕｅｔｏｏｔｈのような無線通信によってもダイレクト通信が可能であるので、上記例により本発明が限定されるものではない。
【０１３１】
【発明の効果】
以上説明したように本発明によれば、ＤＳＣをユーザインターフェース装置として使用するにあたってプリンタが用紙の種類・サイズ等を自動判別可能な場合によりわかりやすいユーザインターフェースを提供できる。
【図面の簡単な説明】
【図１】第１の実施の形態に係るＰＤプリンタの概観斜視図である。
【図２】第１の実施の形態に係るＰＤプリンタの操作パネルの概観図である。
【図３】第１の実施の形態に係るＰＤプリンタの制御に係る主要部の構成を示すブロック図である。
【図４】第１の実施の形態に係るＰＤプリンタのＡＳＩＣの構成を示すブロック図である。
【図５】第１の実施の形態に係るＰＤプリンタとデジタルカメラとを接続した状態を示す図である。
【図６】第１の実施の形態に係るＮＣＤＰを実装したＰＤプリンタとデジタルカメラのソフトウェア構成を説明する概念図である。
【図７】第１の実施の形態に係るＮＣＤＰ通信手順の概要を説明する図である。
【図８】第１の実施の形態に係るＮＣＤＰにおけるコマンドを説明する図である。
【図９】第１の実施の形態に係るＮＣＤＰにおける「基本手順」による印刷手順を説明する図である。
【図１０】第１の実施の形態に係るＮＣＤＰにおける「推奨手順」による印刷手順を説明する図である。
【図１１】第１の実施の形態に係るＮＣＤＰにおける「推奨手順」におけるエラー発生時の印刷手順を説明する図である。
【図１２】第１の実施の形態に係るＮＣＤＰで送信されるＣａｐａｂｉｌｉｔｙの一例を説明する図である。
【図１３】第１の実施の形態に係るＮＣＤＰ通信手順の概要を説明するフローチャートである。
【図１４】ＮＣＤＰ手順の開始を指示する命令（ＮＣＤＰ　Ｓｔａｒｔ）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１５】ＮＣＤＰ手順において、カメラから各手順への移行命令を受取る（Ｐｒｏｃｅｄｕｒｅ　Ｓｔａｒｔ）手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１６】ＮＣＤＰ手順の終了を指示する命令（ＮＣＤＰ　Ｅｎｄ）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１７】ＮＣＤＰ手順においてＰＤプリンタからカメラに対してＣａｐａｂｉｌｉｔｙを送信する命令（Ｃａｐａｂｉｌｉｔｙ）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１８】ＮＣＤＰ手順において、ＰＤプリンタからカメラに保持されている画像ファイルを取得する命令（Ｇｅｔ　Ｉｍａｇｅ）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図１９】ＮＣＤＰ手順において、ＰＤプリンタからカメラに対してエラーステータスを送信する命令（Ｓｔａｔｕｓ　Ｓｅｎｄ）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２０】ＮＣＤＰ手順において、ＰＤプリンタからカメラに対して１ページの印刷終了を送信する命令（Ｐａｇｅ　Ｅｎｄ）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２１】ＮＣＤＰ手順において、ＰＤプリンタからカメラに対して印刷ジョブの終了命令（Ｊｏｂ　Ｅｎｄ）を発行する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２２】ＮＣＤＰ手順において、カメラからＰＤプリンタに対して印刷命令の発行（Ｊｏｂ　Ｓｔａｒｔ）する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２３】ＮＣＤＰ手順において、カメラからＰＤプリンタに対して印刷の中止命令（Ｊｏｂ　Ａｂｏｒｔ）を発行する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２４】ＮＣＤＰ手順において、カメラからＰＤプリンタに対して印刷再開命令（Ｊｏｂ　Ｃｏｎｔｉｎｕｅ）を発行する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２５】第１の実施の形態におけるネゴシエーションの手順を示すフローチャートである。
【図２６】第１の実施の形態におけるデジタルカメラのブロック構成図である。
【図２７】第１の実施の形態におけるデジタルカメラが所有するオブジェクトの問い合わせ（Ｇｅｔ　Ｏｂｊｅｃｔ　Ｈａｎｄｌｅｓ）があった場合の、デジタルカメラ側の処理手順を示すフローチャートである。
【図２８Ａ】、
【図２８Ｂ】印刷条件設定メニューの一例を示す図である。
【図２９】印刷条件設定メニューを表示する手順の一例を示すフローチャートである。
【図１】
2004129221.tif 000003
【図２】
2004129221.tif 000004
【図３】
2004129221.tif 000005
【図４】
2004129221.tif 000006
【図５】
2004129221.tif 000007
【図６】
2004129221.tif 000008
【図７】
2004129221.tif 000009
【図８】
2004129221.tif 000010
【図９】
2004129221.tif 000011
【図１０】
2004129221.tif 000012
【図１１】
2004129221.tif 000013
【図１２】
2004129221.tif 000014
【図１３】
2004129221.tif 000015
【図１４】
2004129221.tif 000016
【図１５】
2004129221.tif 000017
【図１６】
2004129221.tif 000018
【図１７】
2004129221.tif 000019
【図１８】
2004129221.tif 000020
【図１９】
2004129221.tif 000021
【図２０】
2004129221.tif 000022
【図２１】
2004129221.tif 000023
【図２２】
2004129221.tif 000024
【図２３】
2004129221.tif 000025
【図２４】
2004129221.tif 000026
【図２５】
2004129221.tif 000027
【図２６】
2004129221.tif 000028
【図２７】
2004129221.tif 000029
【図２８Ａ】
2004129221.tif 000030
【図２８Ｂ】
2004129221.tif 000031
【図２９】
2004129221.tif 000032