(57)【要約】【課題】  ＤＰＯＦにより設定された印刷条件に従った印刷を、その接続したプリンタ装置が実現できるという保証がないため、ＤＰＯＦで設定された印刷条件での印刷を行えない場合がある。【解決手段】  ＤＳＣ３０１２は、画像データと画像データの記録に関するＤＰＯＦ４９０を記憶する記憶媒体と、ＰＤプリンタ装置１０００との接続により、そのプリンタ装置の有する機能に関する情報を取得し、その取得した機能に関する情報に基づいて画像データの記録に関するＣＤＰＳジョブコマンド４９１を設定し、ＤＰＯＦ及びＣＤＰＳコマンドに基づいてＰＤプリンタ装置１０００に対して記録を指示する。ＰＤプリンタ装置１０００は、この指示された記録条件に従って記憶媒体に記憶されている画像データを取得して記録する。【選択図】  図４９
2006012118.tif 000002
【特許請求の範囲】
【請求項１】
画像供給デバイスと記録装置とを直接接続し、前記画像供給デバイスから前記記録装置にデータを送信して記録を行う記録システムであって、
前記画像供給デバイスは、
画像データと、前記画像データの記録に関する第１記録条件を記憶する記憶媒体と、
前記記録装置との接続により前記記録装置の有する機能に関する情報を取得する取得手段と、
前記取得手段により取得した前記機能に関する情報に基づいて前記画像データの記録に関する第２記録条件を設定する設定手段と、
前記第１及び第２記録条件に基づいて前記記録装置に対して記録を指示する記録指示手段とを有し、
前記記録装置は、
前記記録指示手段により指示された記録条件に従って前記記憶媒体に記憶されている画像データを取得して記録するように制御する記録制御手段を有することを特徴とする記録システム。
【請求項２】
前記画像供給デバイスは、前記第１記録条件或いは前記第２記録条件のいずれを優先的に用いて前記記録装置に記録を指示するかを選択する選択手段を更に有することを特徴とする請求項１に記載の記録システム。
【請求項３】
前記画像供給デバイスは、更に、
前記第１記録条件と前記第２記録条件とを比較する比較手段と、
前記比較手段による比較により、前記第１記録条件と前記第２記録条件とが異なると判断された場合にいずれかを選択する記録条件選択手段を有することを特徴とする請求項１又は２に記載の記録システム。
【請求項４】
前記画像供給デバイスは、更に、
前記第１記録条件と前記第２記録条件とを比較する比較手段と、
前記比較手段による比較により、前記第１記録条件と前記第２記録条件とが異なると判断された場合に警告を表示する警告表示手段を有することを特徴とする請求項１又は２に記載の記録システム。
【請求項５】
前記第１記録条件は、ＤＰＯＦにより指示されていることを特徴とする請求項１乃至４のいずれか１項に記載の記録システム。
【請求項６】
前記画像供給デバイスは、前記第１記録条件を入力する入力手段と、前記入力手段により入力された情報に基づいて前記ＤＰＯＦを作成する手段とを有することを特徴とする請求項５に記載の記録システム。
【請求項７】
前記記録指示手段は、前記第２記録条件に前記第１記録条件で選択された画像データを含む前記第２記録条件用のコマンド列を作成することを特徴とする請求項１に記載の記録システム。
【請求項８】
前記第２記録条件は、前記画像供給デバイスと前記記録装置との間で共通のプロトコルに基づく記録条件であることを特徴とする請求項１乃至７のいずれか１項に記載の記録システム。
【請求項９】
画像データと、前記画像データの記録に関する第１記録条件を記憶する記憶媒体と、
前記記録装置との接続により前記記録装置の有する機能に関する情報を取得する取得手段と、
前記取得手段により取得した前記機能に関する情報に基づいて前記画像データの記録に関する第２記録条件を設定する設定手段と、
前記第１及び第２記録条件に基づいて前記記録装置に対して記録を指示する記録指示手段と、
を有することを特徴とする画像供給デバイス。
【請求項１０】
前記第１記録条件或いは前記第２記録条件のいずれを優先的に用いて前記記録装置に記録を指示するかを選択する選択手段を更に有することを特徴とする請求項９に記載の画像供給デバイス。
【請求項１１】
前記第１記録条件と前記第２記録条件とを比較する比較手段と、前記比較手段による比較により、前記第１記録条件と前記第２記録条件とが異なると判断された場合にいずれかを選択する記録条件選択手段を更に有することを特徴とする請求項９又は１０に記載の画像供給デバイス。
【請求項１２】
前記第１記録条件と前記第２記録条件とを比較する比較手段と、前記比較手段による比較により、前記第１記録条件と前記第２記録条件とが異なると判断された場合に警告を表示する警告表示手段を更に有することを特徴とする請求項９又は１０に記載の画像供給デバイス。
【請求項１３】
前記第１記録条件は、ＤＰＯＦにより指示されていることを特徴とする請求項９乃至１２のいずれか１項に記載の画像供給デバイス。
【請求項１４】
前記第１記録条件を入力する入力手段と、前記入力手段により入力された情報に基づいて前記ＤＰＯＦを作成する手段とを有することを特徴とする請求項１３に記載の画像供給デバイス。
【請求項１５】
前記記録指示手段は、前記第２記録条件に前記第１記録条件で選択された画像データを含む前記第２記録条件用のコマンド列を作成することを特徴とする請求項９に記載の画像供給デバイス。
【請求項１６】
前記第２記録条件は、前記画像供給デバイスと前記記録装置との間で共通のプロトコルに基づく記録条件であることを特徴とする請求項９乃至１５のいずれか１項に記載の画像供給デバイス。
【請求項１７】
画像供給デバイスと記録装置とを直接接続し、前記画像供給デバイスから前記記録装置にデータを送信して記録を行う記録制御方法であって、
画像データと、前記画像データの記録に関する第１記録条件を記憶媒体に記憶する記憶工程と、
前記記録装置との接続により前記記録装置の有する機能に関する情報を取得する取得工程と、
前記取得工程で取得した前記機能に関する情報に基づいて前記画像データの記録に関する第２記録条件を設定する設定工程と、
前記記憶工程で前記記憶媒体に記憶された前記第１記録条件及び第２記録条件に基づいて前記記録装置に対して記録を指示する記録指示工程と、
前記記録指示工程で指示された記録条件に従って前記記憶媒体に記憶されている画像データを取得して記録するように制御する記録制御工程と、
を有することを特徴とする記録制御方法。
【請求項１８】
前記第１記録条件或いは前記第２記録条件のいずれを優先的に用いて前記記録装置に記録を指示するかを選択する選択工程を更に有することを特徴とする請求項１７に記載の記録制御方法。
【請求項１９】
前記第１記録条件と前記第２記録条件とを比較する比較工程と、前記比較工程による比較により、前記第１記録条件と前記第２記録条件とが異なると判断された場合にいずれかを選択する記録条件選択工程と更にを有することを特徴とする請求項１７又は１８に記載の記録制御方法。
【請求項２０】
前記第１記録条件と前記第２記録条件とを比較する比較工程と、前記比較工程による比較により、前記第１記録条件と前記第２記録条件とが異なると判断された場合に警告を表示する警告表示工程を更に有することを特徴とする請求項１７又は１８に記載の記録制御方法。
【請求項２１】
前記第１記録条件は、ＤＰＯＦにより指示されていることを特徴とする請求項１７乃至２０のいずれか１項に記載の記録制御方法。
【請求項２２】
前記第１記録条件を入力する入力工程と、前記入力工程により入力された情報に基づいて前記ＤＰＯＦを作成する工程とを有することを特徴とする請求項２１に記載の記録制御方法。
【請求項２３】
前記記録指示工程では、前記第２記録条件に前記第１記録条件で選択された画像データを含む前記第２記録条件用のコマンド列を作成することを特徴とする請求項１７に記載の記録制御方法。
【請求項２４】
前記第２記録条件は、前記画像供給デバイスと前記記録装置との間で共通のプロトコルに基づく記録条件であることを特徴とする請求項１７乃至２３のいずれか１項に記載の記録制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルカメラなどの画像供給デバイスと記録装置とを有し、画像供給デバイスよりの記録指示に従って画像を記録する技術に関する。
【背景技術】
【０００２】
近年、簡単な操作で画像を撮影してデジタル画像データに変換できるデジタルカメラ（撮像装置）、所謂、デジカメが広く使用されるようになってきている。このようなカメラで撮影した画像を印刷して写真として使用する場合には、通常、一旦、その撮影されたデジタル画像データを、デジタルカメラからＰＣ（コンピュータ）に取り込み、そのＰＣで画像処理を行った後、そのＰＣからカラープリンタに出力して印刷するのが一般的である。
【０００３】
これに対して最近は、ＰＣを介することなく、直接、デジタルカメラからカラープリンタにデジタル画像データを伝送して印刷することができるカラープリントシステムや、デジタルカメラに搭載され、撮像した画像を記憶しているメモリカードを、直接、カラープリンタに装着し、そのメモリカードに記憶されている、撮影された画像を印刷できる、所謂フォトダイレクト（ＰＤ）プリンタ等も開発されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
デジタルカメラにより撮影された画像を印刷する印刷システムでは、ＤＰＯＦを使用して、印刷したい画像やその枚数等を指示していた。これはデジタルカメラで、印刷したい画像の選択情報やその手順等を、撮影した画像データを記憶しているメモリカード等の記憶媒体に保存しておき、その記憶媒体を装着しているデジタルカメラを接続するか、或いはその記憶媒体そのものをプリンタ装置に装着することによって、ＰＣを介さずに、所望の印刷条件で印刷できるようにしたものである。この記憶媒体に保持される内容としては、一般的には印刷したい画像情報、及び用紙サイズや枚数等の印刷条件の設定等である。しかしながら、ＤＰＯＦファイルの作成は、通常オフライン（プリンタに接続されていない状態）で行われるため、そのＤＰＯＦにより設定された印刷条件に従った印刷を、その接続したプリンタ装置が実現できるという保証がないため、ＤＰＯＦで設定された印刷条件での印刷を行えない場合が発生した。
【０００５】
本発明は上記従来例に鑑みてなされたもので、記憶媒体に記憶されている画像データの記録条件と、画像供給デバイスと接続されて記録に使用される記録装置の機能を使用した記録条件とを使用して記録を行うことを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明の記録システムは以下のような構成を備える。即ち、  画像供給デバイスと記録装置とを直接接続し、前記画像供給デバイスから前記記録装置にデータを送信して記録を行う記録システムであって、
前記画像供給デバイスは、
画像データと、前記画像データの記録に関する第１記録条件を記憶する記憶媒体と、
前記記録装置との接続により前記記録装置の有する機能に関する情報を取得する取得手段と、
前記取得手段により取得した前記機能に関する情報に基づいて前記画像データの記録に関する第２記録条件を設定する設定手段と、
前記第１及び第２記録条件に基づいて前記記録装置に対して記録を指示する記録指示手段とを有し、
前記記録装置は、
前記記録指示手段により指示された記録条件に従って前記記憶媒体に記憶されている画像データを取得して記録するように制御する記録制御手段を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、記憶媒体に記憶されている画像データの記録条件と、画像供給デバイスと接続されて記録に使用される記録装置の機能を使用した記録条件とを使用して好適な記憶を行うことができる。
【発明を実施するための最良の形態】
【０００８】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【０００９】
図１は、本発明の実施の形態に係るフォトダイレクトプリンタ装置（以下、ＰＤプリンタ装置）１０００の概観斜視図である。このＰＤプリンタ装置１０００は、ホストコンピュータ（ＰＣ）からデータを受信して印刷する通常のＰＣプリンタとしての機能と、メモリカードなどの記憶媒体に記憶されている画像データを直接読取って印刷したり、或いはデジタルカメラからの画像データを受信して印刷する機能を備えている。
【００１０】
図１において、本実施の形態に係るＰＤプリンタ装置１０００の外殻をなす本体は、ケースＭ１００１、上ケース１００２、アクセスカバー１００３及び排出トレイ１００４の外装部材を有している。また、下ケース１００１は、ＰＤプリンタ装置１０００の略下半部を、上ケース１００２は本体の略上半部をそれぞれ形成しており、両ケースの組合せによって内部に後述の各機構を収納する収納空間を有する中空体構造をなし、その上面部及び前面部にはそれぞれ開口部が形成されている。さらに、排出トレイ１００４は、その一端部が下ケース１００１に回転自在に保持され、その回転によって下ケース１００１の前面部に形成される開口部を開閉させ得るようになっている。このため、記録動作を実行させる際には、排出トレイ１００４を前面側へと回転させて開口部を開成させることにより、ここから記録シートが排出可能となると共に、排出された記録シートを順次積載し得るようになっている。また、排紙トレイ１００４には、２枚の補助トレイ１００４ａ，１００４ｂが収納されており、必要に応じて各トレイを手前に引き出すことにより、用紙の支持面積を３段階に拡大、縮小させ得るようになっている。
【００１１】
アクセスカバー１００３は、その一端部が上ケース１００２に回転自在に保持され、上面に形成される開口部を開閉し得るようになっており、このアクセスカバー１００３を開くことによって本体内部に収納されている記録ヘッドカートリッジ（不図示）あるいはインクタンク（不図示）等の交換が可能となる。なお、ここでは特に図示しないが、アクセスカバー１００３を開閉させると、その裏面に形成された突起がカバー開閉レバーを回転させるようになっており、そのレバーの回転位置をマイクロスイッチなどで検出することにより、アクセスカバーの開閉状態を検出し得るようになっている。
【００１２】
また、上ケース１００２の上面には、電源キー１００５が設けられている。また、上ケース１００２の右側には、液晶表示部１００６や各種キースイッチ等を備える操作パネル１０１０が設けられている。この操作パネル１０１０の構造は、図２を参照して詳しく後述する。１００７は自動給送部で、記録シートを装置本体内へと自動的に給送する。１００８は紙間選択レバーで、プリントヘッドと記録シートとの間隔を調整するためのレバーである。１００９はカードスロットで、ここにメモリカードを装着可能なアダプタが挿入され、このアダプタを介してメモリカードに記憶されている画像データを直接取り込んで印刷することができる。このメモリカード（ＰＣ）としては、例えばコンパクトフラッシュ（登録商標）メモリ、スマートメディア、メモリスティック等がある。１０１１はビューワ（液晶表示部）で、このＰＤプリンタ装置１０００の本体に着脱可能であり、ＰＣカードに記憶されている画像の中からプリントしたい画像を検索する場合などに、１コマ毎の画像やインデックス画像などを表示するのに使用される。１０１２は後述するデジタルカメラを接続するためのＵＳＢ端子である。また、このＰＤプリンタ装置１０００の後面には、パーソナルコンピュータ（ＰＣ）を接続するためのＵＳＢコネクタが設けられている。
【００１３】
図２は、本実施の形態に係るＰＤプリンタ装置１０００の操作パネル１０１０の概観図である。
【００１４】
図において、液晶表示部１００６には、その左右に印刷されている項目に関するデータを各種設定するためのメニュー項目が表示される。ここに表示される項目としては、例えば、印刷したい範囲の先頭写真番号、指定コマ番号（開始コマ指定／印刷コマ指定）、印刷を終了した範囲の最後の写真番号（終了）、印刷部数（部数）、印刷に使用する用紙（記録シート）の種類（用紙種類）、１枚の用紙に印刷する写真の枚数設定（レイアウト）、印刷の品位の指定（品位）、撮影した日付を印刷するかどうかの指定（日付印刷）、写真を補正して印刷するかどうかの指定（画像補正）、印刷に必要な用紙枚数の表示（用紙枚数）等がある。これら各項目は、カーソルキー２００１を用いて選択、或いは指定される。２００２はモードキーで、このキーを押下する毎に、印刷の種類（インデックス印刷、全コマ印刷、１コマ印刷等）を切り替えることができ、これに応じてＬＥＤ２００３の対応するＬＥＤが点灯される。２００４はメンテナンスキーで、プリントヘッドのクリーニング等、プリンタのメンテナンスを行わせるためのキーである。２００５は印刷開始キーで、印刷の開始を指示する時、或いはメンテナンスの設定を確立する際に押下される。２００６は印刷中止キーで、印刷を中止させる時や、メンテナンスの中止を指示する際に押下される。
【００１５】
次に図３を参照して、本実施の形態に係るＰＤプリンタ装置１０００の制御に係る主要部の構成を説明する。尚、この図３において、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
【００１６】
図３において、３０００は制御部（制御基板）を示している。３００１はＡＳＩＣ（専用カスタムＬＳＩ）を示し、その構成は図４のブロック図を参照して詳しく後述する。３００２はＤＳＰ（デジタル信号処理プロセッサ）で、内部にＣＰＵを有し、後述する各種制御処理及び、輝度信号（ＲＧＢ）から濃度信号（ＣＭＹＫ）への変換、スケーリング、ガンマ変換、誤差拡散等の画像処理等を担当している。３００３はメモリで、ＤＳＰ３００２のＣＰＵの制御プログラムを記憶するプログラムメモリ３００３ａ、及び実行時のプログラムを記憶するＲＡＭエリア、画像データなどを記憶するワークメモリとして機能するメモリエリアを有している。３００４はプリンタエンジンで、ここでは、複数色のカラーインクを用いてカラー画像を印刷するインクジェットプリンタのプリンタエンジンが搭載されている。３００５はデジタルカメラ（ＤＳＣ）３０１２を接続するためのポートとしてのＵＳＢコネクタである。３００６はビューワ１０１１を接続するためのコネクタである。３００８はＵＳＢハブ(USB HUB)で、このＰＤプリンタ装置１０００がＰＣ３０１０からの画像データに基づいて印刷を行う際には、ＰＣ３０１０からのデータをそのままスルーし、ＵＳＢ３０２１を介してプリンタエンジン３００４に出力する。これにより、接続されているＰＣ３０１０は、プリンタエンジン３００４と直接、データや信号のやり取りを行って印刷を実行することができる（一般的なＰＣプリンタとして機能する）。３００９は電源コネクタで、電源３０１９により、商用ＡＣから変換された直流電圧を入力している。ＰＣ３０１０は一般的なパーソナルコンピュータ、３０１１は前述したメモリカード（ＰＣカード）、３０１２はデジタルカメラ（ＤＳＣ：Digital Still Camera)である。
【００１７】
尚、この制御部３０００とプリンタエンジン３００４との間の信号のやり取りは、前述したＵＳＢ３０２１又はＩＥＥＥ１２８４バス３０２２を介して行われる。
【００１８】
図４は、ＡＳＩＣ３００１の構成を示すブロック図で、この図４においても、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
【００１９】
４００１はＰＣカードインターフェース部で、装着されたＰＣカード３０１１に記憶されている画像データを読取ったり、或いはＰＣカード３０１１へのデータの書き込み等を行う。４００２はＩＥＥＥ１２８４インターフェース部で、プリンタエンジン３００４との間のデータのやり取りを行う。このＩＥＥＥ１２８４インターフェース部４００２は、デジタルカメラ３０１２或いはＰＣカード３０１１に記憶されている画像データを印刷する場合に使用されるバスである。４００３はＵＳＢインターフェース部で、ＰＣ３０１０との間でのデータのやり取りを行う。４００４はＵＳＢホストインターフェース部で、デジタルカメラ３０１２との間でのデータのやり取りを行う。４００５は操作パネル・インターフェース部で、操作パネル１０１０からの各種操作信号を入力したり、表示部１００６への表示データの出力などを行う。４００６はビューワ・インターフェース部で、ビューワ１０１１への画像データの表示を制御している。４００７は各種スイッチやＬＥＤ４００９等との間のインターフェースを制御するインターフェース部である。４００８はＣＰＵインターフェース部で、ＤＳＰ３００２との間でのデータのやり取りの制御を行っている。４０１０はこれら各部を接続する内部バス（ＡＳＩＣバス）である。
【００２０】
図５は、本発明の実施の形態に係るＤＳＣ３０１２の代表的な構成例を示すブロック図である。但し、本実施の形態のＰＤプリンタ装置１０００に接続可能なデジタルカメラの中には、後述する表示部２７００を有していない機器も存在する可能性がある。
【００２１】
同図において、３１００はＤＳＣ３０１２全体の制御を司るＣＰＵであり、３１０１はＣＰＵ３１００の処理手順を記憶しているＲＯＭである。３１０２はＣＰＵ３１００のワークエリアとして使用されるＲＡＭであり、３１０３は各種操作を行うスイッチ群で、各種スイッチやカーソルキー等が含まれている。２７００は液晶表示部であり、撮像した画像を確認したり、各種設定を行う際のメニューを表示するために使用される。３１０５は光学ユニットであり、主としてレンズ及びその駆動系で構成される。３１０６はＣＣＤ素子であり、３１０７はＣＰＵ３１００の制御下において光学ユニット３１０５を駆動制御するドライバである。３１０８は記憶媒体３１０９（コンパクトフラッシュ(登録商標)メモリカード、スマートメディア等）を接続するためのコネクタであり、３１１０はＰＣ或いは実施形態におけるＰＤプリンタ１０００と接続するためのＵＳＢインターフェース（ＵＳＢのスレーブ側）である。
【００２２】
本実施の形態では、上述したＰＤプリンタ装置１０００とＤＳＣ３０１２とを接続して印刷を行う場合の例を中心に説明するが、このＰＤプリンタ装置１０００のような画像出力装置に各メーカのデジタルカメラ、更には携帯電話やメモリデバイス等のデバイス（ＤＳＰＤ：Digital Still Photography Devices）を接続し、そこから取得した画像データに基づいてプリントできるＰＤプリンタ装置を提供することを目的とし、本実施の形態に係るＰＤプリンタ装置１０００とこれらＤＳＰＤの一例であるＤＳＣ３０１２とを接続してプリントを行なう場合の通信規約について記述する。尚、本実施の形態においては、ＰＤプリンタ装置とＤＳＣとの間の通信制御を汎用ファイル、汎用フォーマットを用いて行い、インターフェースに依存しない新規なＣＤＰＳ（Canon Direct Print Service）を提案する。
【００２３】
ＤＳＣと画像出力装置との間で、様々な通信プロトコルアーキテクチャ、例えば、ＵＳＢ上のＰＴＰ（Still Image Class）やMass Storage Class、もしくはBlue Tooth上のOBEX、更にはUPｎP等に対しての取り決めを行うために、ここではプリントサービス機能の概念を用いている。このプリントサービス機能とはアプリケーション層における実行機能の集合体であり、各種インターフェースに依存していない。
【００２４】
又、実際の画像データ及びデバイス間の通信制御は汎用ファイル、汎用フォーマットを用いて行う（例えば、XML書式を用いて記述する）ためインターフェースに依存してない。
【００２５】
このようなＤＳＣと画像出力装置とを接続したシステムにおいては、そのオペレーションは、どちらか一方のオペレーション部（例えば、デジタルカメラの液晶画面や、プリンタ上の操作部）を用いて行われるが、システム全体を考えた場合に、両方の装置が同様の機能を備えているような場合に、そのオペレーション部をどちらの装置で実行させるかを決定する必要が生じる。そこで、本実施の形態に係るシステムでは、後述するDiscovery処理（移行処理）の後に、オペレーション部やその他の機能を、各装置間でどのように分担させるかを決定する仕組みを取り入れて汎用性を広めたものとしている。
【００２６】
［通信概要説明］
図６は、本実施の形態に係るデジタルカメラ（ＤＳＣ）３０１２と画像出力装置の代表例である、本実施の形態に係るＰＤプリンタ装置１０００との間の通信の概要を説明する図である。尚、ここでは、これらＤＳＣ３０１２とＰＤプリンタ装置１０００とＵＳＢで接続されており、その間の通信はＰＴＰを用いている。このＵＳＢ接続において、ＰＤプリンタ装置１０００がホスト側、ＤＳＣ３０１２がスレーブ側とする。
【００２７】
以下、この手順を順に説明する。尚、ここでは、ＤＳＣ３０１２は前述の図５の構成を有し、印刷における予備印刷条件の設定、印刷開始指示をＤＳＣ３０１２から行う例で説明する。
（１）まず最初に、ＵＳＢケーブルによりＤＳＣ３０１２とＰＤプリンタ装置１０００とを物理的に接続する。
（２）次に、ＰＤプリンタ装置１０００のＵＳＢホストコントローラ（ＵＳＢタスク）がＤＳＣ３０１２を認識し、イメージクラス・ＰＴＰでの接続を行う。これが図６の６００で示す「通信の確立」状態である。
（３）次にＰＤプリンタ装置１０００から、本実施の形態で規定する通信規約（ＣＤＰＳ）に移行するための処理（６０１）に移る。この時、ＤＳＣ３０１２とＰＤプリンタ装置１０００との間での情報のやりとりに基づいて、両者間でＣＤＰＳサービスを実行可能であるか否か、サービスが実行可能である場合には、「標準」又は「拡張」のうちのいずれの手順で実行するかの確認及び決定が行われる（６１０）。また、この処理６０１では、印刷画像の決定及び印刷条件の設定、印刷開始の指示等をＤＳＣ３０１２或いはＰＤプリンタ装置１０００のいずれが担当するか等の決定も行われる。
（４）この処理６０１の結果、「標準」手順６０２でのサービスを実行する場合には、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して、「プリンタ側で提供出来るサービス」を通達する（６０３）。具体的には、ＰＤプリンタ装置１０００で対応可能な用紙サイズや紙種、印刷品位、レイアウト可能な組み合わせ等である。
（５）ＤＳＣ３０１２では、６０３で送られてきたサービス内容に従い、ユーザが操作するＵＩメニューを作成して表示部２７００に表示する。これによりユーザは、印刷画像の設定及び写真選択（これらをまとめて「ジョブ」という）をＵＩメニューを介して行う（６１１）。
（６）こうして「ジョブ」の設定が終了し、印刷開始指示がＤＳＣ３０１２においてユーザより行われると、ＤＳＣ３０１２からＰＤプリンタ装置１０００に「ジョブ」の通達が行われる（６０４）。
（７）次にＰＤプリンタ装置１０００は、６０４で送られてきた「ジョブ」の内容に従ってＰＤプリンタ装置１０００の設定を行った後、必要な画像ファイルをＤＳＣ３０１２から取得して（６０５）写真の印刷を行う（６１３）。
（８）ここで、「ジョブ」の実行中に、ＰＤプリンタ装置１０００で何らかのエラーが発生した場合には、ＤＳＣ３０１２に対して、その発生したエラーの内容を通知してユーザに対応を求める（６０６）（本実施の形態では、「印刷続行／中止」の選択とする）。こうしてユーザがＤＳＣ３０１２のＵＩを使用してその対応を決定すると（６１２）、その内容がＰＤプリンタ装置１０００に送られて対応するエラー処理６１４が実行される。
（９）このようにして、画像ファイルの転送と印刷処理（→エラーの送受信）を繰り返し、「ジョブ」が完了すると、再びＤＳＣ３０１２での「ジョブ」設定状態（６１１）となる。
（１０）また、上述の６１０で、ＣＤＰＳの「拡張手順」のサービスを行うと決定された場合には、６０７で示す、各ベンダに固有の手順及び「拡張」処理を実行する。尚、この「拡張手順」での処理は各ベンダにより規定されるので、ここでは説明しない。
【００２８】
［階層構造］
図７は、ＤＳＣ３０１２と画像出力装置の代表であるＰＤプリンタ装置１０００とを接続した場合の機能を階層構造で示す図である。
【００２９】
図において、７００及び７０３はアプリケーション部を示し、７０１及び７０２は物理層で、ここではＵＳＢとブルーツース（Bluetooth）の例で示している。ＤＳＣ３０１２及びＰＤプリンタ装置１０００のそれぞれは７００と７０３で示す部分をそれぞれ組込むことにより、本ＣＤＰＳシステムを構築することができる。但し、７０１，７０２で示すように、プロトコル層のＰＴＰやＢＩＰ，ＭＳＣ（Mass Storage Class）上のファイルシステム等のアーキテクチャの実装が前提である。又、各アプリケーション部分７００，７０３に、このプリントサービス機能の実態が存在しており、ＣＤＰＳからそれぞれのプロトコルに変換する部分でプリントサービス機能が実行される。
【００３０】
このようにして、物理的なインターフェースに依存しない形でのダイレクトプリントサービスを実現できる。
【００３１】
［システム全体の機能］
図８は、上述のＤＳＣ３０１２とＰＤプリンタ装置１０００とが接続された時、これらを一体のシステムと見なした時の機能構成を示す図である。
【００３２】
前述の階層構造によりインターフェースに依存しないことを規定した事に続いて、ＤＳＰＤｓ及び画像出力装置の「機能」に対しての非依存を実現するために、よりハイレベルでの要素（オブジェクト）の定義を行う。本実施の形態においては、ＤＳＣとＰＤプリンタ装置１０００との間での各種機能の切り分けや分担を行わず、このダイレクトプリントシステム全体として必要な機能構成要素の定義及びその役割について説明する。
【００３３】
ここではシステム全体の機能を大きく４つの機能（８００〜８０３）に分けている。
【００３４】
＜ＣＤＰＳ初期化処理（CDPS Initialize）＞
ＣＤＰＳ初期化処理８００は、他のＣＤＰＳの機能に先立って最初に起動される。ここでは、ＣＤＰＳモードへの移行（標準・拡張）等を判定し、その判定結果を「Service Discovery」８０４として、各機能に通達する。これは前述の図６の６０１に相当している。
【００３５】
＜操作制御（Operation Controller）＞
ユーザ８１２との対話を行うＵＩ部分の管理（操作制御：Operation Controller）８０１は、ＣＤＰＳ初期化処理８００からの「Service Discovery」８０４を受信して起動される。この操作制御８０１は、プリント制御（Print Controller）８０３からプリントデバイス８１０（プリンタエンジン３００４）で印刷可能なサービス「Service」８０７を取得し、また記憶制御（Storage Controller）８０２から、ＰＣカード３０１１等の記憶デバイス８１１が保持している画像情報リスト「Data List」８０５を取得する。そして、これら「Service」８０７及び「Data List」８０５の記述に基づいてＵＩメニューを作成する。こうして作成されたＵＩメニューを介して入力されるユーザの指示に基づいて、出力設定指示書「Job」８０８を作成してプリント制御８０３に通達する。
【００３６】
＜記憶制御（Storage Controller）＞
記憶制御８０２は、写真画像が保持された記憶媒体、例えば前述のＰＣカード３０１１の管理を行う。この記憶制御８０２は、ＣＤＰＳ初期化処理８００からの「Service Discovery」８０４を受信して起動する。また、操作制御８０１からの要請に従って、記憶デバイス８１１に保持されている画像情報リスト「Data List」８０５を作成し、それを操作制御８０１に通達する。また、プリント制御８０３からの要請に従って、記憶デバイス８１１に保存されている画像ファイル「Job Data」８０６をプリント制御８０３に送出する。
【００３７】
＜プリント制御＞
・プリント制御（Print Controller）８０３は、写真画像の印刷を行うプリントデバイス８１０の管理を行う。このプリント制御８０３は、ＣＤＰＳ初期化処理８００からの「Service Discovery」８０４を受信して起動し、操作制御８０１にプリントデバイス８１０で印刷可能なサービス「Service」８０７を通達する。また、操作制御８０１から出力設定指示書「Job」８０８を取得すると、その「Job」８０８の記述に基づいて、「Data List」８０５に記載された記述方法で、記憶制御８０２に対して記憶デバイス８１１に保存されている画像ファイル「Job Data」８０６を要求して取得する。これに基づいて、プリントデバイス８１０が処理可能なプリントデータを作成してプリントデバイス８１０に出力することにより印刷が行われる。
【００３８】
図９は、図８の各機能による処理の流れを説明するフローチャートである。
【００３９】
まずステップＳ１で、ＣＤＰＳ初期化処理８００がＣＤＰＳモードへ移行できるか否かを判定し、その判定に基づいて、各機能へ「Service Discovery」８０４を通達し、各機能を起動する。次にステップＳ２に進み、プリント制御８０３は、プリントデバイス８１０が提供できるプリントサービス「Service」８０７を操作制御８０１に通達する。次にステップＳ３に進み、操作制御８０１は、記憶制御８０２から記憶デバイス８１１に保持されている画像情報リスト「Data List」８０５を取得する。次にステップＳ４に進み、操作制御８０１は「Service」８０７及び「Data List」８０５に基づいて印刷設定用のＵＩを構成して表示する。このＵＩに従って入力されるユーザ８１２の指示に基づいて、印刷すべき画像と、その印刷モードの選択等を規定する印刷設定指示書「Job」８０８を作成し、その作成された「Job」８０８を印刷制御８０３に通達する。次にステップＳ５に進み、印刷制御８０３は、その「Job」８０８の記述に従ってプリントデバイス８１０に対して印刷設定を行う。次に、記憶制御８０２に対して、「Data List」に記載された記述方法で、記憶デバイス８１１に保持されている、印刷に必要な画像ファイル「Job Data」８０６を要求して、それを取得する。そしてプリントデバイス８１０が処理可能な印刷データを作成する。次にステップＳ６に進み、その印刷データをプリントデバイス８１０に出力して印刷する。そしてステップＳ７では、印刷処理の終了が指示されたかを調べ、終了指示が入力されない時はステップＳ４に戻り、前述の処理を実行する。そして印刷処理の終了が指示されると、この処理を終了する。
【００４０】
以上説明したように、上述した各機能がＤＳＣ３０１２或いはＰＤプリンタ装置１０００のいずれに存在するかに関わらず、上述した階層構造、４つの機能８００〜８０３及び上記４つの機能間でやりとりされる５つの情報群８０４〜８０８を、このＣＤＰＳの基本構成とする。
【００４１】
［ＤＳＣとＰＤプリンタ装置によるＣＤＰＳ構成］
図１０は、ＤＳＣ３０１２とＰＤプリンタ装置１０００とが接続された状態でのＣＤＰＳ構成の一例を示す図である。ここでは、ＤＳＣ３０１２とＰＤプリンタ装置１０００の両者が、上述した４つの機能８００〜８０４を保持している場合を示している。この場合、記憶デバイス８１１とプリントデバイス８１０は、論理的にはこのＣＤＰＳシステムの外部に位置しており、いずれの側に接続されているかは確定していない。
【００４２】
本実施の形態のＣＤＰＳでは、ＤＳＣ３０１２とＰＤプリンタ装置１０００が物理的かつ論理的に接続された後、ＤＳＣ３０１２及びＰＤプリンタ装置１０００両方のＣＤＰＳ初期化（CDPS Initialize）８００が対話を行って、他の３機能８０１〜８０３及び記憶デバイス８１１、プリントデバイス８１０の処理機能のそれぞれを、ＤＳＣ３０１２或いはＰＤプリンタ装置１０００のいずれが担当して管理するかを決定する事を特徴としている。
【００４３】
図１１は、本実施の形態におけるＣＤＰＳでの機能分担処理を説明するフローチャートである。
【００４４】
まずステップＳ１１で、ＤＳＣ３０１２における機能８００〜８０３のそれぞれのサポートレベルをＰＤプリンタ装置１０００に通達する。次にステップＳ１２に進み、ＰＤプリンタ装置１０００は、ＤＳＣ３０１２から受信した各機能のサポートレベルと、ＰＤプリンタ装置１０００自身のサポートレベルとを比較し、よりユーザビリティの高い機能がＤＳＣ３０１２とＰＤプリンタ装置１０００のいずれに実装されているかを判定し、各機能をいずれで分担するかを決定する。そしてステップＳ１３に進み、その決定した各機能の担当情報と管理情報をＤＳＣ３０１２に通達する。そしてステップＳ１４に進み、ＤＳＣ３０１２とＰＤプリンタ装置１０００のそれぞれにおいて、自分が担当するように決定された各機能を起動し、ステップＳ１５でＣＤＰＳを開始する。
【００４５】
尚、ここで「拡張手順」を実行する場合には、ステップＳ１２の時点で、ＤＳＣ３０１２とＰＤプリンタ装置１０００が拡張手順のサポートをしていることが判明し、その後のやりとりは各ベンダ固有となるのでここでは説明しない。
【００４６】
また、各機能が必ずしも、ＤＳＣ３０１２とＰＤプリンタ装置１０００の両方でサポートされている必要はないが、少なくともＤＳＣ３０１２或いはＰＤプリンタ装置１０００のいずれかでサポートされている必要がある。特に、ＣＤＰＳ初期化８００に関しては、仮にＤＳＣ３０１２がＣＤＰＳ初期化８００をサポートしていなくても、インターフェースの接続状況によってはＰＤプリンタ装置１０００のＣＤＰＳ初期化８００によって、このシステムはＣＤＰＳモードに移行することが可能である。
【００４７】
［ＣＤＰＳ構成例−１］
図１２は、ＵＳＢ上でイメージクラス（Image Class）のＰＴＰ（Picture Transfer Protocol）で、ＤＳＣ３０１２とＰＤプリンタ装置１０００とを接続した場合のＣＤＰＳの構成例１を説明する図で、前述の図８及び図１０と共通する部分は同じ記号で示し、それらの説明を省略する。尚、ここでは、液晶表示部２７００が設けられているＤＳＣ３０１２と、液晶ビューワ１０１１が取付けられていないＰＤプリンタ装置１０００とを接続した場合で説明する。即ち、この例では、ＤＳＣ３０１２には、ＣＤＰＳ初期化８００、操作制御８０１及び記憶制御８０２が存在しており、ＰＤプリンタ装置１０００は、図１０のような機能構成を備えているものとする。
【００４８】
ここではまず、ＰＤプリンタ装置１０００のＣＤＰＳ初期化８００が、ＤＳＣ３０１２のＣＤＰＳ初期化８００との間で、各機能の分担及び管理について情報交換をしようとする。これに対してＤＳＣ３０１２は、操作制御８０１及び記憶制御８０２の機能をサポートしている旨（液晶表示部２７００有り等）を伝える。これによりＰＤプリンタ装置１０００のＣＤＰＳ初期化８００は、ＰＤプリンタ装置１０００の操作制御８０１及び記憶制御８０２のサポートレベル（液晶ビューワ無し、等）と比較し、以下の様にシステム構成を決定する。そして、ＰＤプリンタ装置１０００のＣＤＰＳ初期化８００に対して、「ＣＤＰＳ移行可」と返答し、かつＤＳＣ３０１２に下記の決定内容を通達する。
（１）操作制御８０１、記憶制御８０２は、ＤＳＣ３０１２が担当及び管理する。
（２）ＰＤプリンタ装置１０００は、プリント制御８０３を担当、管理する。
（３）記憶デバイス８１１はＤＳＣ３０１２にあり、ＤＳＣ３０１２の記憶制御８０２が、この記憶デバイス８１１を管理する。
（４）プリントデバイス８１０（プリンタエンジン３００４）はＰＤプリンタ装置１０００にあり、ＰＤプリンタ装置１０００のプリント制御８０３が印刷処理を管理する。尚、上述した処理は、無線ＬＡＮ（Wireless LAN）のＴＣＰ／ＩＰ等の他のインターフェースを介して接続された場合でも同様に行われる。
【００４９】
［ＣＤＰＳ構成例−２］
図１３は、ＵＳＢ上でイメージクラス（Image Class）のＰＴＰ（Picture Transfer Protocol）で、ＤＳＣ３０１２とＰＤプリンタ装置１０００とを接続した場合のＣＤＰＳの構成例２を説明する図で、前述の図８及び図１０と共通する部分は同じ記号で示し、それらの説明を省略する。尚、ここでは、液晶表示部２７００が設けられていないＤＳＣ３０１２と、液晶ビューワ１０１１が取付けられているＰＤプリンタ装置１０００とを接続した場合、或いはＤＳＣ３０１２がＣＤＰＳ初期化８００を備えていない例で説明する。なお、ＰＤプリンタ装置１０００は、図１０のような機能構成を備えているものとする。
【００５０】
ＰＤプリンタ装置１０００のＣＤＰＳ初期化８００が、ＤＳＣ３０１２のＣＤＰＳ初期化８００と各機能の分担及び管理について情報交換をしようとした場合について考えると、ＤＳＣ３０１２はＣＤＰＳ初期化８００を有していないのでそれに応答できない。そこで、ＰＤプリンタ装置１０００のPTP Wrapper層が、以下の様にシステム構成を決定して、ＰＤプリンタ装置１０００のＣＤＰＳ初期化８００に対して「ＣＤＰＳ移行可」と応答する。
（１）操作制御８０１、記憶制御８０２及びプリント制御８０３は、いずれもＰＤプリンタ装置１０００が担当及び管理する。
（２）記憶デバイス８１１はＤＳＣ３０１２に有り、標準のＰＴＰでＰＤプリンタ装置１０００の記憶制御８０２が、この記憶デバイス８１１への画像アクセスを管理する。
（３）プリントデバイス８１０はＰＤプリンタ装置１０００にあり、ＰＤプリンタ装置１０００のプリント制御８０３がこれを管理する。
【００５１】
尚、このような場合は、ＤＳＣ３０１２がＣＤＰＳ初期化８００を有していない場合に限らず、ＤＳＣ３０１２が例え表示器２７００を有していても、その解像度や操作性が、ＰＤプリンタ装置１０００のビューワ１０１１やそのビューワ１０１１を使用したＵＩに比べて劣ると、ＰＤプリンタ装置１０００のＣＤＰＳ初期化８００が判断した場合も同様に図１３に示すような構成となる。
【００５２】
［ＣＤＰＳ構成例−３］
図１４は、ＭＳＣ（Mass Storage Class）での接続時のＣＤＰＳの構成例３を説明する図で、前述の図８及び図１０と共通する部分は同じ記号で示し、それらの説明を省略する。尚、この例は例えば、液晶表示器２７００がないＤＳＣ３０１２をＭＳＣで液晶ビューワ１０１１を装着したＰＤプリンタ装置１０００と接続した例で説明する。
【００５３】
この場合には、ＰＤプリンタ装置１０００のＣＤＰＳ初期化８００がＤＳＣ３０１２のＣＤＰＳ初期化８００と、各装置における各機能の分担及び管理について情報交換をしようとする。しかし、標準バルクオンリーのＭＳＣでは、ＤＳＣ３０１２と双方向の情報のやり取りが極めて困難である。そのため、ＰＤプリンタ装置１０００のMass Storage Class Wrapper層８２０が、以下の様にシステム構成を決定して、ＰＤプリンタ装置１０００のＣＤＰＳ初期化８００に対して「ＣＤＰＳ移行可」と応答する。
（１）操作制御８０１、記憶制御８０２及びプリント制御８０３は、いずれもＰＤプリンタ装置１０００が担当して管理する。
（２）記憶デバイス８１１はＤＳＣ３０１２にあり、標準のＭＳＣでＰＤプリンタ装置１０００の記憶制御８０２が管理する。
（３）プリントデバイス８１０はＰＤプリンタ装置１０００にあり、ＰＤプリンタ装置１０００のプリント制御８０３がプリントデバイス８１０を管理する。
【００５４】
［ＣＤＰＳ出力手順］
本実施の形態に係るＣＤＰＳにおける出力手順は以下の２通りを有している。  ＜標準手順＞
本実施の形態に係るＣＤＰＳでは、下記の機能及び情報に従う手順が定義されている。
・ＣＤＰＳ初期化（CDPS Initialize）機能
・操作制御（Operation Controller）機能
・記憶制御（Storage Controller）機能
・プリント制御（Print Controller）機能
・サービスディスカバー（Service Discover）情報
・サービス（Service）情報
・ジョブ（Job）情報
・ジョブデータ（Job Data）情報
＜拡張手順＞
各ベンダ固有の仕様に基づく各種フォーマットの出力にも対応可能な手順が下記のそれぞれに対して定義されている。
・ＸＨＴＭＬ
・ＳＶＧ
・固有フォーマット。
【００５５】
［ＣＤＰＳ機能説明］
本実施の形態のＣＤＰＳでは、ＤＳＣ３０１２とＰＤプリンタ装置１０００の双方のＰＴＰの上位層で任意にアプリケーションを扱えるよう、即ち、ＤＳＣ３０１２とＰＤプリンタ装置１０００間の機能（例えば印刷するにはオブジェクトの受け渡し等、様々なＰＴＰプロトコルのやり取りが必要）をモデリングするために、図１５に示すようなプリントサービス機能を設けた。上述の図７のアプリケーション層７００，７０３では、基本的には図１５に示すプリントサービス機能を用いることによりダイレクトプリントを行うことができる。尚、このプリントサービス機能には必須機能（図１５（Ａ））とオプション機能（図１５（Ｂ））とがあり、ＣＤＰＳをサポートする装置は、この内の必須機能を全て用意する必要がある。
【００５６】
図１５（Ａ）（Ｂ）は、本実施の形態に係るＣＤＰＳにおけるサービス機能の一覧を示す図である。以下、順次これらの機能について説明する。
(a) CDPS _ServiceDiscovery（サービスディスカバリ）
ＣＤＰＳへの移行を行う機能である。この戻り値はスクリプトで、ＣＤＰＳの手順「標準」或いは「拡張」が指示されており、いずれの手順が選択されたかを受信する。尚、「拡張」手順時は、CDPS_ServiceDiscovery機能のみが使用される。
(b) CDPS_Service（プリンタ→操作制御）
ＰＤプリンタ装置の機能を記載したスクリプトをパラメータとして通知する。ＰＤプリンタ装置の機能を記載したスクリプトを引数とし、その戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
(c)CDPS_PageStart（プリンタ→操作制御）
プリント開始を通知（１ページ毎）する。パラメータは、プリント機能を記載したスクリプトで、その戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
(d) CDPS_PageEnd（プリンタ→操作制御）
プリント終了を通知（１ページ毎で排紙時）する機能である。パラメータは、プリント機能を記載したスクリプトで、その戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
(e) CDPS_JobEnd（プリンタ→操作制御）
プリントジョブの終了を通知する。パラメータは、プリント機能を記載したスクリプトで、その戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
(f) CDPS_Error（プリンタ→操作制御）
エラー（Warning/Fatal）を通知する機能である。パラメータは、プリント機能を記載したスクリプトで、その戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
(g) CDPS_JobData（プリンタ→ストレージ(Storage)）
ストレージからＪＰＥＧ等のイメージを取得する機能である。取得する画像データのハンドル名を記載したスクリプトを引数とし、戻り値は取得した画像データのバイト数と画像データそのものである。
(h)CDPS_DataList（プリンタ→ストレージ(Storage)）
ＳｔｏｒａｇｅからＪＰＥＧ等の画像情報のリストを取得する機能である。ＰＤプリンタ装置の機能を記載したスクリプトを引数とし、その戻り値は画像データのリストを記載したスクリプトである。
(i) CDPS_Job（操作制御→プリンタ）
プリント命令を通知する機能である。プリント命令を記載したスクリプトを引数とし、戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
(j) CDPS_JobAbort（操作制御→プリンタ）
プリント中止命令を通知する機能である。プリンタの機能を記載したスクリプトを引数とし、戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
(k) CDPS_JobContinue（操作制御→プリンタ）
プリント再開命令を通知する機能である。プリンタの機能を記載したスクリプトを引数とし、戻り値は通信の結果、即ち、通信の成否（"TRUE" or "FALSE"）を示す。
【００５７】
以上がＣＤＰＳにおける必須機能である。
【００５８】
本ＣＤＰＳは、更に、図１５（Ｂ）に示すように、オプション機能として、CDPS_PartialJobData機能を備えている。
【００５９】
このCDPS_PartialJobData（プリンタ→ストレージ）は、ストレージからＪＰＥＧ等の画像データを取得する機能である。取得した画像データのハンドル名を記載したスクリプトを引数とし、その戻り値は、取得した画像データのバイト数と画像データそのものである。尚、これ以外にも、ＤＰＯＦファイルを受信して、そのＤＰＯＦフォーマットを解析し、そのＤＰＯＦにより指示された印刷を行うように指示するＤＰＯＦ指示コマンドも設けられている。
【００６０】
［スクリプトのフォーマットの説明］
以下、上述のサービスディスカバリ（CDPS _ServiceDiscovery）に使用するスクリプトの内容、及び、それ以外の機能で使用するスクリプトのフォーマットについて説明する。
【００６１】
＜各種機能コマンドの書式＞
（１）サービスディスカバリ（CDPS_ServiceDiscovery）のスクリプトの書式
サービスディスカバリ（CDPS_ServiceDiscovery）に使用するスクリプトの内容（UniCodeで記述する）で、ＣＤＰＳモードに移行する際に使用する。これにより互いのキーワードを認識し合う。
【００６２】
CanonDirectPrintService(UILevel=X)（デバイス情報で、ＵＩレベル情報（Ｘ）は０から４）CanonDirectPrintService(HostUI)（ホスト（ＰＤプリンタ装置）のＵＩを使用する場合）或いはCanonDirectPrintService(DeviceUI)（デバイス（ＤＳＣ）側のＵＩを使用する場合）
（２）CDPS_PageStart，CDPS_PageEnd，CDPS_JobEnd，CDPS_DataList、CDPS_JobAbort，CDPS_JobContinueにおけるスクリプトの書式
＜?XML version="1.0" encoding="UTF-16"?＞
＜!ELEMENT command ( "CDPS_PageStart" | "CDPS_PageEnd" | "CDPS_JobEnd" | "CDPS_JobAbort" | "CDPS_JobContinue" )＞
（３）CDPS_Serviceのスクリプトの書式
＜?XML version="1.0" encoding="UTF-16"?＞
＜command ( CDPS_Service )＞
＜capabiliby＞
＜--Printer Capabilityを記述--＞
＜/capability＞
（４）CDPS_Jobのスクリプトの書式
＜?XML version="1.0" encoding="UTF-16"?＞
＜command ( CDPS_Service )＞
＜job＞
＜capability＞
＜--Printer Capability(PrintMode)を記述--＞
＜/capability＞
＜printlist＞
＜--Image File Hnadleおよび日付などの付加情報を記述--＞
＜/printlist＞
＜/job＞
（５）CDPS_Errorのスクリプトの書式
＜?XML version="1.0" encoding="UTF-16"?＞
＜command ( "CDPS_Error")＞
＜!ELEMENT status ( "fatal" | "warning" )＞
＜!ELEMENT reason ( "printer_occupied" | "printer_busy" | "ink_low" | "lever_error" | "load_error" | ... )＞
なお、ここで「status」は、このエラーが、ジョブに復帰できるエラーか否かを記載する。例えば、"fatal"は復帰不能、"warning"は復帰可能を示す。また「reason」は、そのエラー原因を記載する。
（６）CDPS_JobData，CDPS_PartialJobDataのスクリプトの書式
＜?XML version="1.0" encoding="UTF-16"?＞
＜！ELEMENT command ( "CDPS_JobData" | "CDPS_PartialJobData" )＞＜image (#PCDATA )＞
＜offset (#PCDATA )＞
＜size (#PCDATA )＞
尚、ここで「image」はファイルのハンドル名を記載し、「offset」は先頭からのオフセットのバイト数を記載し、「size」は取得する画像データのバイト数を記載する。但し、CDPS_JobDataの場合、オプション機能の部分取得を用いない場合は、これら「offset」及び「size」は無効である。
【００６３】
＜Capabilityのフォーマット＞
C  DPS_Service機能およびCDPS_Job機能で用いられる＜capability＞の書式を以下に示す。
【００６４】
＜capability＞
＜--［ネゴが必須でない項目］--＞
＜!ELEMENT quality ( "draft" | "normal" | "fine" )＞＜!ELEMENT paper_size ( "L" | "2L" | "card" | "4x6" | "A4" | "letter" | ...)＞
＜!ELEMENT paper_type ( "plain" | "photo" )＞
但し、「quality」は印刷品位を表し、「速い(draft)」、「普通(normal)」、「綺麗(finw)」を指定する。「paper_size」は用紙サイズ（L,2L,カード、4x6,A4、レターサイズ等）を表し、「paper_type」は用紙種類を表し、「普通紙(plain)」、「写真専用紙(photo)」を指定する。
【００６５】
＜--［ネゴが必須の項目］--＞
＜!ELEMENT image_type ( "bmp" | "jpeg" | "tiff" | ...)＞＜!ELEMENT date ( "on" | "off" )＞
＜!ELEMENT file_name ( "on" | "off" )＞
＜!ELEMENT image_optimize ( "on" | "off" )＞
＜size_per_page (#PCDATA)＞
＜!ATTLIST layout L ( "borderless"|"1x1"|・・・| "index(3x5)") "borderless"2L ( "borderless"|"1x1"|・・・|"index(5x7)") "borderless"...＞
但し、「image_type」は、サポートしている画像フォーマットを表す。「date」は日付印刷のオン／オフを表わしている。「file_name」は、ファイル名の印刷のオン／オフを表し、「image_ooptimize」は、画像補正のオン／オフを表わしている。「size_per_page」は、読み込み可能な画像データのサイズを表し、「layout」は各種用紙種類に対して可能なレイアウトを表す。
【００６６】
＜option＞
＜!ATTLIST vendor image_optimize ( "DiPS" | "auto" | ・・・ ) "auto"trimming_x (#PCDATA) "0"
trimming_y (#PCDATA) "0"
trimming_w (#PCDATA) "0"
trimming_h (#PCDATA) "0"
...＞
＜/option＞
＜/capability＞
尚、この「option」で囲まれた部分は、各ベンダーに固有のPrinter Capabilityを表し、ここにはベンダー名と共に記載する。
【００６７】
＜Jobフォーマット＞
C  DPS_Job機能で用いられる＜job＞の書式を以下に示す。
【００６８】
＜job＞
＜capabitily＞
＜--上述のCapabilityフォーマット--＞
＜/capability＞
＜printlist＞
＜image (#PCDATA)＞
＜date (#PCDATA)＞
＜file_name (#PCDATA)＞
＜--上記imege,data,file_nameを繰り返す--＞
＜/printlist＞
＜/job＞
但し、上記「capability」で囲まれた部分は、以下に続く画像の印刷設定を表している。また、「printlist」で囲まれた部分は、このジョブ内で印刷する画像及び付加情報（日付、ファイル名）などを表わしている。
【００６９】
＜Jobフォーマットの具体例＞
次に、このＪｏｂフォーマットの具体例を説明する。
（Ａ）Ｌ版の写真用紙にHandle1の画像を日付を入れてフチなしで印刷する。
【００７０】
＜?XML version="1.0" encoding="UTF-16"?＞
＜command(CDPS_job)＞
＜job＞
＜capabitily＞
＜papersize("L")＞：用紙サイズ（Ｌ判）
＜papertype("Photo")＞：写真用紙
＜date("on")＞：日付印刷オン
＜layout("borderless")＞：縁ナシ印刷
＜/capability＞
＜printlist＞
＜image ("handle1")＞：ハンドル１の画像
＜date ("2002/05/30")＞：日付（２００２年５月３０日）
＜/printlist＞
＜/job＞
（Ｂ）Ｌ版の写真用紙に２×２のレイアウトでハンドル１〜６の６つの画像を印刷する。
【００７１】
＜?XML version="1.0" encoding="UTF-16"?＞
＜command(CDPS_job)＞
＜job＞
＜capabitily＞
＜papersize("L")＞：用紙サイズ（Ｌ判）
＜papertype("Photo")＞：写真用紙
＜date("off")＞：日付印刷オフ
＜layout("2ｘ2")＞：レイアウト２×２
＜/capability＞
＜printlist＞
＜image ("handle1")＞
＜image ("handle2")＞
＜image ("handle3")＞
＜image ("handle4")＞
＜image ("handle5")＞
＜image ("handle6")＞：ハンドル１〜６の画像指定
＜/printlist＞
＜/job＞
（Ｃ）ハンドル１で示すＤＰＯＦファイルによる画像の選択及び用紙サイズ・レイアウト設定に基づく印刷を行う。
【００７２】
＜?XML version="1.0" encoding="UTF-16"?＞
＜command(CDPS_job)＞
＜job＞
＜printlist＞
＜image ("handle1")＞：ハンドル１＝DPOFファイル
＜/printlist＞
＜/job＞
（Ｄ）Ｌ版の写真用紙に２×２のレイアウトでハンドル１で示すＤＰＯＦファイルによる写真選択設定に基づく印刷を行う。。
【００７３】
＜?XML version="1.0" encoding="UTF-16"?＞
＜command(CDPS_job)＞
＜job＞
＜capabitily＞
＜papersize("L")＞：用紙サイズ（Ｌ判）
＜papertype("Photo")＞：写真用紙
＜date("off")＞：日付印刷オフ
＜layout("2ｘ2")＞：レイアウト２×２
＜/capability＞
＜printlist＞
＜image ("handle1")＞：ハンドル１＝DPOFファイル
＜/printlist＞
＜/job＞
［ＣＤＰＳの「標準」手順の流れの説明］
図１６は、本実施の形態に係るＣＤＰＳの基本的な処理の流れを説明する図で、ここでは上述した機能８００乃至８０３の間で送受信されているＣＤＰＳ機能を上から下方向に時系列的に表記してある。図中、破線上「Ａ」「Ｂ」「Ｃ」「Ｄ」で記述されている場所は、代表的と思われる機能分担の切り分け個所を示している。また前述の図８と共通する部分は同じ記号で示し、それらの説明を省略する。
【００７４】
前述のＣＤＰＳ初期化８００により、ＣＤＰＳモードへの移行がＰＤプリンタ装置１０００からＤＳＣ３０１２に通達されると（８０４）、これに応答してＤＳＣ３０１２から、ＤＳＣ３０１２がサポートしているレベル（「標準」、「拡張」、及びサポートしている機能）がＰＤプリンタ装置１０００に知らされる（８２１）。これに基づいてＰＤプリンタ装置１０００は、上述した機能８００〜８０３のそれぞれをＤＳＣ３０１２或いはＰＤプリンタ装置１０００のいずれで実施するかを決定し、その結果をＤＳＣ３０１２に伝える（８２２）。
【００７５】
８２３は、操作制御８０１から記憶制御８０２に対する、記憶デバイス８１１に記憶されている画像データのデータリストの要求を示しており、８２４はそれに応答して、記憶制御８０２が記憶デバイス８１１から読み出したデータを示している。これにより８０５で、記憶制御８０２から操作制御８０１に対してリストデータが送られ、ユーザ８１２の操作により、８２５で、印刷モードや印刷したい画像が選択されてプリントジョブが作成され、操作制御８０１に知らされる。これにより操作制御８０１からプリント制御８０３に対して、作成されたＵＩメニューを介して入力されるユーザ８１２の指示に基づいて、出力設定指示書「CDPS_Job」８０８を作成してプリント制御８０３に通達する。そして８２６では、プリント制御８０３から記憶制御８０２に対して、その画像データが要求される。これにより記憶デバイス８１１から画像データ８２７が読み出され、印刷に必要な画像ファイル「Job Data」８０６が記憶制御８０２からプリント制御８０３に送られる。これによりプリント制御９０３において画像処理等が実行されて印刷データが作成され、プリントデバイス８１０に対して、その印刷データ８２８が送られて印刷が実行される。
【００７６】
ここで、もし印刷中にエラーが発生した場合には、エラー情報８２９がプリント制御８０３から操作制御８０１に送られる。このエラーに対してユーザ８１２が「印刷中止」或いは「印刷続行」を指示すると（８３１）、それに対応して、例えば「印刷中止」指令８３０が操作制御８０１からプリント制御８０３に送られる（このコマンドは図１５（Ａ）に示される）。そしてプリント制御８０３から操作制御８０１に対してプリントジョブの終了が通知される（８３２）。
【００７７】
図１７は、ＤＳＣ３０１２が操作制御８０１と記憶制御８０２とを受け持ち、ＰＤプリンタ装置１０００がプリント制御８０３を受け持つ場合を説明する図である。この場合の機能の切り分け位置は、前述した図１６の「Ｃ」で示す位置となる。なお、この例はＰＴＰの場合で示しているが、ＴＣＰ／ＩＰ等の他の接続でも、ＤＳＣ３０１２の操作制御８０１、記憶制御８０２を用いた場合には同様となる。
【００７８】
この場合には、ＰＤプリンタ装置１０００は８２２において、機能８００〜８０３の内、操作制御８０１と記憶制御８０２をＤＳＣ３０１２で実施し、プリント制御８０３をＰＤプリンタ装置１０００で実行するように伝える。これにより、ＤＳＣ３０１２とＰＤプリンタ装置１０００との間での機能分担が図１７のように決定される。
【００７９】
図１８は、ＤＳＣ３０１２の記憶デバイス８１１をMass Storageとして扱い、ＰＤプリンタ装置１０００が操作制御８０１、記憶制御８０２及びプリント制御８０３を受け持つ場合を説明する図である。この場合の機能の切り分け位置は、前述した図１６の「Ａ」で示す位置となる。なお、この例はＰＴＰの場合で示しているが、ＴＣＰ／ＩＰ等の他の接続でも、ＤＳＣ３０１２の操作制御８０１、記憶制御８０２を用いた場合には同様となる。
【００８０】
この場合には、ＰＤプリンタ装置１０００は８２２において、機能８００〜８０３のの全ての機能をＰＤプリンタ装置１０００で実行するように伝える。これにより、ＤＳＣ３０１２とＰＤプリンタ装置１０００との間での機能分担が図１８のように決定される。
【００８１】
尚、ＰＴＰ等の他の接続でも、ＤＳＣ３０１２のリソースを全く用いない場合には同様となる。また、ＤＳＣ３０１２がＣＤＰＳ初期化機能８００（CDPS Initialize）を有していない（ＣＤＰＳに対応していない機種）場合も同様となる
。
【００８２】
以下、上述したＣＤＰＳにおけるサービス機能のコマンドをＰＴＰにより実施した場合の例を説明する。
【００８３】
［プリントサービス機能のＰＴＰによる実現例］
＜ＣＤＰＳサービスディスカバリ（CDPS_ServiceDiscovery）機能＞
図１９は、ＣＤＰＳディスカバリー機能の手順を説明する図である。
【００８４】
ＰＤプリンタ装置１０００とＤＳＣ３０１２とが物理的に接続されてＰＴＰに入ると、まず１４００で、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対してGetDeviceInfoが送信され、ＤＳＣ３０１２に対して、その保持しているオブジェクトに関する情報が要求される。これに対してＤＳＣ３０１２は、DeviceInfo Datasetにより、ＤＳＣ３０１２に保持しているオブジェクトに関する情報をＰＤプリンタ装置１０００に送信する。次に１４０２で、OpenSessionにより、ＤＳＣ３０１２をリソースとして割り当て、必要に応じてデータオブジェクトにハンドルをアサインしたり、特別な初期化を行うための手順の開始要求が発行されてＤＳＣ３０１２から肯定応答（ＯＫ）が返送されるとＰＴＰでの通信が開始される。次に１４０３で、ＤＳＣ３０１２に対してスクリプト形式の全てのハンドルを要求する（Storage ID: FFFFFF, Object Type: Script）と、これに対して１４０４で、ＤＳＣ３０１２に保持されている全てのハンドルリストが返送される。次に１４０５，１４０６において、ＰＤプリンタ装置１０００からｉ番目のオブジェクトハンドルの情報を取得する。ここで、このオブジェクトに、ＤＳＣ３０１２の識別を示すキーワード（例えば「山」）が含まれていると、次に１４０７において、ＰＤプリンタ装置１０００からオブジェクト情報の送信を指示して（SendObjectInfo）、それに対して肯定応答（ＯＫ）を受信すると、SendObjectにより、オブジェクト情報をＰＤプリンタ装置１０００からＤＳＣ３０１２に対して送信する。ここで、このオブジェクトには、前述のキーワードに対する応答キーワード（合言葉）として例えば「川」が含まれている。
【００８５】
このようにして、ＰＤプリンタ装置１０００とＤＳＣ３０１２の双方が互いに接続相手を認識できることになり、これ以降はＣＤＰＳによる手順に移行することができる。このようにファイルの受渡しができるトランスポートレイヤーであればキーワードの受渡しを確実に行うことができる。即ち、本実施の形態のＣＤＰＳにユニークなコマンド等を追加することなく、キーワードを交換することができる。尚、ここでキーワードとしては、上述の例に限定されるものでなく、同じキーワードであっても良い。またこのキーワードによるネゴシエーションを行う時間を短縮するために、スクリプト形式のハンドルの最初（ｉ＝１）にこのキーワードを入れておくことにより、互いの機器を確認するのに要する時間を短縮できる。
【００８６】
図２０は、CDPS_ServiceDiscoveryの手順の続きを説明する図である。
【００８７】
ここではまず１５０１で、ＰＤプリンタ装置１０００がサポートしている手続「標準手順」、「拡張手順」をＤＳＣ３０１２に通知するためにSendObjectInfoにより、ＤＳＣ３０１２に対して送信したいオブジェクト情報があることを伝える。これに対して肯定応答（ＯＫ）がＤＳＣ３０１２から送られてくると、１５０２でSendObjectによりオブジェクトを送信する旨をＤＳＣ３０１２に伝え、次の１５０３のObjectDataで、このＰＤプリンタ装置１０００がサポートしている手続に関する情報（「標準」／「拡張」）を送信する。次に１５０４で、ＤＳＣ３０１２からＰＤプリンタ装置１０００に対して、GetObject動作を起動したい（プッシュモードに移行）旨を伝える。これにより１５０５で、ＰＤプリンタ装置１０００からオブジェクト情報に関する情報を受信する旨が伝えられると（GetObjectInfo）、１５０６で、ObjectInfo Datasetにより、ＤＳＣ３０１２からＰＤプリンタ装置１０００に対してオブジェクトの情報が通知され、１５０７で、そのオブジェクト情報を指定してオブジェクト情報そのものが要求されると、Object Datasetにより、ＤＳＣ３０１２が使用する手続（「標準」、「拡張」等）をＰＤプリンタ装置１０００に知らせる（１５０８）。
【００８８】
これにより、ＤＳＣ３０１２からＰＤプリンタ装置１０００に対して、画像の印刷モードを指定することができる。
【００８９】
＜CDPS_Service（標準）＞
図２１は、本実施の形態に係るＣＤＰＳにおけるプリンタ機能の通知手順を説明する図である。
【００９０】
この手順では、１６００において、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報があることを伝え、SendObjectとObjectDataにより、ＤＳＣ３０１２に対してプリンタの機能を通知する。
【００９１】
＜CDPS_JobData（標準）＞
図２２は、本実施の形態に係るＣＤＰＳにおける、ＰＤプリンタ装置１０００がＤＳＣ３０１２に保持されている画像データ（ＪＰＥＧ画像）を取得する場合（CDPS_JobData）の通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００９２】
まず１８００で、ＤＳＣ３０１２（或いはストレージ）が保持しているオブジェクトに関する情報を要求すると、１８０１で、そのオブジェクトに関する情報（Object Dataset）がＤＳＣ３０１２からＰＤプリンタ装置１０００に送られる。次に、１８０２で、そのオブジェクトを指定して取得要求（GetObject）を発行すると、１８０３で、その要求された画像ファイル（Object Dataset）がＤＳＣ３０１２からＰＤプリンタ装置１０００に対して送信される。この様にしてＰＤプリンタ装置１０００は、ＤＳＣ３０１２から所望の画像ファイルを取得することができる。なお、この場合の戻り値は、「Data_Size」と「Image_Data」である。
【００９３】
＜CDPS_PageStart（標準）＞
図２３は、本実施の形態に係るＣＤＰＳにおけるプリント開始通知処理の手順を説明する図である。
【００９４】
この手順では、１７００において、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報（印刷開始通知）があることを伝え、１７０１で、SendObjectとObjectDataにより、ＤＳＣ３０１２に対してプリント開始を通知する。
【００９５】
＜CDPS PageEnd（標準）＞
図２４は、本実施の形態に係るＣＤＰＳにおける、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して、１ページのプリント処理を通知する通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００９６】
この手順では、１９１０において、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報（印刷終了通知）があることを伝え、１９１１で、SendObjectとObjectDataにより、ＤＳＣ３０１２に対して１ページのプリント終了を通知する。
【００９７】
＜CDPS_JobEnd（標準）＞
図２５は、本実施の形態に係るＣＤＰＳにおける、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して、プリントジョブが終了したことを通知する通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【００９８】
１９１０で、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して１ページ印刷処理が終了したことが通知され、１９１１で、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して印刷ジョブが終了したことが通知される。
【００９９】
＜CDPS Error（標準）＞
図２６は、本実施の形態に係るＣＤＰＳにおける、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対してエラー状態などを通知する通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【０１００】
まず１９００で、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して送信したいオブジェクト情報（エラー情報）がある旨をSendObjectInfoにより通知する。ＤＳＣ３０１２からの肯定応答（ＯＫ）に対して、ＰＤプリンタ装置１０００におけるエラー等のステータス情報をSendObjectおよびObjectDataにより送信する（１９０２）。
【０１０１】
＜CDPS Job（標準）＞
図２７は、本実施の形態に係るＣＤＰＳにおける、ＤＳＣ３０１２（操作制御）からＰＤプリンタ装置１０００に対して、プリントジョブの開始を通知する通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【０１０２】
まず２２００において、ＤＳＣ３０１２からＰＤプリンタ装置１０００に対してRequestObjectTransferを送り、ＤＳＣ３０１２が指示書を発行したい旨を通知する。これにより２２０１で、ＰＤプリンタ装置１０００からGetObjectInfoが発行されると、ＤＳＣ３０１２は送信したいオブジェクト情報に関する情報を送信し、これに対してＰＤプリンタ装置１０００からオブジェクト情報が要求されると（GetObject：２２０３）、２２０４で、Object Dataset（プリント指示書）を送信して、ＤＳＣ３０１２からＰＤプリンタ装置１０００に対して印刷命令を発行する。
【０１０３】
＜CDPS_JobAbort（標準）＞
図２８は、本実施の形態に係るＣＤＰＳにおけるＤＳＣ３０１２（操作制御）からＰＤプリンタ装置１０００（印刷制御）に対してプリント中止命令（CDPS_JobAbort）を発行する通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【０１０４】
＜CDPS_JobContinue（標準）＞
図２９は、本実施の形態に係るＣＤＰＳにおける、ＤＳＣ３０１２（操作制御）からＰＤプリンタ装置１０００（印刷制御）に対してプリント再開命令（CDPS_JobContinue）を発行する通信手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【０１０５】
図２８及び図２９において、図２７と同様の手順実行後、図２８の２３０１で、ＤＳＣ３０１２からＰＤプリンタ装置１０００に対して印刷中止指示書が発行され、図２９の２４０１では、ＤＳＣ３０１２からＰＤプリンタ装置１０００に対して印刷継続指示書が通知される。
【０１０６】
＜CDPS_PartialJobData（標準）＞
図３０は、本実施の形態に係るＣＤＰＳにおける、ＰＤプリンタ装置１０００（印刷制御）がＤＳＣ３０１２（ストレージ）に保持されている画像データ（ＪＰＥＧ画像）を取得する場合の部分画像の取得通信手順（オプション）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【０１０７】
まず１９２０で、ＤＳＣ３０１２が保持しているオブジェクトに関する情報を要求すると、１９２１で、そのオブジェクトに関する情報（Object Dataset）がＤＳＣ３０１２からＰＤプリンタ装置１０００に送られる。次に、１９２２で、そのオブジェクトを指定して取得要求（GetObject）を発行する。尚、この部分画像取得機能は、前述したように、所望の画像データの先頭からバイト数（offset）と、取得したい画像データのバイト数（size）が指示されているので、１９２３では、その要求された画像ファイル（Object Dataset）の部分画像データがＤＳＣ３０１２からＰＤプリンタ装置１０００に対して送信される。この様にしてＰＤプリンタ装置１０００は、ＤＳＣ３０１２から所望の部分画像データを取得することができる。なお、この場合の戻り値は、「Data_Size」と「Image_Data」である。
【０１０８】
図３１は、本実施の形態に係るＣＤＰＳにおける、ＰＤプリンタ装置１０００（印刷制御）がＤＳＣ３０１２（ストレージ）に保持されている画像データ（ＪＰＥＧ画像）を取得する部分画像取得機能を受信した場合のＤＳＣ或いはストレージにおける処理を説明するフローチャートである。
【０１０９】
まずステップＳ２１で、＜image (#PCDATA )＞に含まれる画像ファイルのハンドル名を取得し、次にステップＳ２２に進み、「offset」により、先頭からのオフセットのバイト数を取得し、次にステップＳ２３では、「size」により、取得する画像データのバイト数を取得する。こうしてステップＳ２４に進み、記憶デバイス８１１の、指定された画像ファイルのオフセット位置から、指定されたバイト数の画像データを読込む。そしてステップＳ２５に進み、その読み出した部分画像データを、要求元であるＰＤプリンタ装置１０００或いは印刷制御に送出する。
【０１１０】
以上の説明では、物理層のＵＳＢの上にＰＴＰアーキテクチャを用いた場合で説明したが、以下、それ以外のアーキテクチャを用いた例を説明する。
【０１１１】
［ＭＳＣアーキテクチャ］
ここでは、ＭＳＣ（Mass Storage Class）を用いた例を説明する。ここでは図７の一番左側のインターフェースが使用される。この場合は、ＤＳＣ３０１２のＵＩを使用せずに、ＰＤプリンタ装置１０００のＵＩを使用する。従って、前述の操作制御８０１、記憶制御８０２及び印刷制御８０３は全てＰＤプリンタ装置１０００に配置されていることになる。そして基本的にはＰＤプリンタ装置１０００のファイルシステムを利用して、画像ファイルのOpen、Read、Close及びディレクトリ操作等（ファイル操作）により、前述したGetJobData及びGetPartialJobData、GetDataList（Fileシステムによる）を実行する。
【０１１２】
＜CDPS_ServiceDiscovery（標準／拡張）＞
この場合、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対してCDPS_ServiceDiscoveryが送られるが、ＤＳＣ３０１２は、前述したＣＤＰＳ初期化機能を有していなくても、それに対して応答がない場合には、ＰＤプリンタ装置１０００は自動的に「標準」で受信が確立したことにしてＭＳＣ（バルクオンリー）に移行し、操作制御８０１、記憶制御８０２及び印刷制御８０３をＰＤプリンタ装置１０００側とし、CDPS_GetPartialDataを「サポート済み」とする。
【０１１３】
＜CDPS_JobData（標準）＞
ＰＤプリンタ装置１０００は、プリント命令により指定された画像データを取得する。ここではＰＤプリンタ装置１０００からＤＳＣ３０１２に対して「Recieve Command」が発行され、これに応答して画像データ「Image Data」をＤＳＣ３０１２からＤＳＣ３０１２に送信する。実際には、ＰＤプリンタ装置１０００に構築されたファイルシステムを介して記憶デバイス８１１の画像データをＳＣＳＩコマンドを用いて取得する。尚、この時の戻り値は、「Data Size」と「Image Data」である。
【０１１４】
＜CDPS_PartialJobData（オプション）＞
この手順は上述の「CDPS_JobData」の場合と基本的に同じで、部分的に画像データを取得する点のみが異なる。尚、この場合の戻り値も「Data Size」と「Image Data」である。
【０１１５】
［Bluetoothアーキテクチャ］
ここでは、ブルーツース（Bluetooth）を用いた例を説明する。ここでは図７の一番右側のインターフェースが使用される。この実施の形態では、物理層の上位の通信層として２つのデバイス間のセッションを確立して、オブジェクトの送受信等を行うことができる、Bluetooth Still Image Profileを用いて上位のアプリケーションレイヤーの取り決めを記述している。
【０１１６】
このBluetooth Still Image Profileの場合には、前述の接続に加えて、ＤＳＣ（Host）→ＰＤプリンタ装置（Slave）の向きの接続をもう一つ形成し、ＤＳＣから通常の「PutImage」コマンドを発行することにより情報の発信を行う。尚、ここでは便宜上、
接続１：ＰＤプリンタ装置（ホスト）→ＤＳＣ（スレーブ）
接続２：ＰＤプリンタ装置（スレーブ）→ＤＳＣ（ホスト）
とする。
【０１１７】
以下、このブルーツースにおいて、各サービス機能のプロトコルを説明する。尚、図３２乃至図４３のサービス機能は、前述の図１９乃至図３０に示すサービス機能に対応しているので、ここでは簡単に説明する。
【０１１８】
＜CDPS_ServiceDicovery（標準／拡張）＞
図３２は、ブルーツースにおいて、ＣＤＰＳへの移行手順のプロトコルを示す。ここでも図１９と同様に、キーワード（山、川）により接続相手を認識している。またＤＳＣ３０１２は、このキーワードにＤＳＣが備えているＵＩのサポートレベルを通知する。これによりＰＤプリンタ装置１０００は、ＤＳＣ或いはＰＤプリンタ装置１０００のいずれのＵＩを使用するかをキーワードに付加してＤＳＣ３０１２に通知する。
【０１１９】
＜CDPS_ServiceDiscovery（標準／拡張）＞
図３３は、ブルーツースにおいて、ＣＤＰＳへの移行手順のプロトコルの続きを示す図で、ＤＳＣ３０１２とＰＤプリンタ装置１０００との間でのＣＤＰＳモードでの通信が確立される。
【０１２０】
＜CDPS_Service（標準）＞
図３４は、ブルーツースにおいて、ＰＤプリンタ装置の機能の通知手順のプロトコルを示す図で、ＰＤプリンタ装置１０００からＤＳＣ３０１２に対して、ＰＤプリンタ装置１０００の機能が通知される。
【０１２１】
＜CDPS_JobData（標準）＞
図３５は、ブルーツースにおいて、ＰＤプリンタ装置１０００がプリント命令によりＤＳＣ３０１２から画像データを取得するプロトコルを示す図で、この場合の戻り値は、「Data Size」と「Image Data」である。
【０１２２】
＜CDPS_PageStart（標準）＞
図３６は、ブルーツースにおいて、ＰＤプリンタ装置１０００からＤＳＣ３０１２にプリント開始を通知するプロトコルを示す図である。
【０１２３】
＜CDPS_PageEnd（標準）＞
図３７は、ブルーツースにおいて、ＰＤプリンタ装置１０００からＤＳＣ３０１２に１ページのプリント終了を通知するプロトコルを示す図である。
【０１２４】
＜CDPS_JobEnd（標準）＞
図３８は、ブルーツースにおいて、ＰＤプリンタ装置１０００からＤＳＣ３０１２にプリントジョブの終了を通知するプロトコルを示す図である。
【０１２５】
＜CDPS_Error（標準）＞
図３９は、ブルーツースにおいて、ＰＤプリンタ装置１０００からＤＳＣ３０１２にプリンタのエラーを通知するプロトコルを示す図である。
【０１２６】
＜CDPS_Job（標準）＞
図４０は、ブルーツースにおいて、ＤＳＣ３０１２からＰＤプリンタ装置１０００にプリント命令を発行するプロトコルを示す図である。
【０１２７】
＜CDPS_JobAbort（標準）＞
図４１は、ブルーツースにおいて、ＤＳＣ３０１２からＰＤプリンタ装置１０００にプリント中止命令を発行するプロトコルを示す図である。
【０１２８】
＜CDPS_JobContinue（標準）＞
図４２は、ブルーツースにおいて、ＤＳＣ３０１２からＰＤプリンタ装置１０００にプリント再開命令を発行するプロトコルを示す図である。
【０１２９】
＜CDPS_PartialJobData（オプション）＞
図４３は、ブルーツースにおいて、ＰＤプリンタ装置１０００がプリント命令によりＤＳＣ３０１２から部分画像データを取得するプロトコルを示す図で、この場合の戻り値は、「Data Size」と「Image Data」である。
【０１３０】
図４４（Ａ）〜（Ｃ）は、図１１のフローチャートにおいて、上述した各種制御機能（操作制御８０１、記憶制御８０２及びプリント制御８０３）をどのように分担するかを決定するための基準となるＤＳＣ３０１２及びＰＤプリンタ装置１０００それぞれのサポートレベルを説明するための図で、図４４（Ａ）は操作制御８０１のサポートレベルを示し、図４４（Ｂ）は記憶制御８０２のサポートレベル、そして図４４（Ｃ）は、プリント制御８０３のサポートレベルをそれぞれ示している。ここでＤＳＣ３０１２は、レベル「０」〜「４」のサポートレベルの設定が可能であり、ＰＤプリンタ装置１０００は、レベル「１」〜「３」のサポートレベルの設定が可能である。もしここで、ＤＳＣ３０１２とＰＤプリンタ装置１０００とが同じサポートレベルの場合は、いずれの機能を優先するかは、判断する側の裁量に任せるものとする。
【０１３１】
例えば図４４（Ａ）の操作制御８０１のサポートレベルにおいては、レベル「４」はＤＳＣ３０１２の機能を使用するように主張するレベル、レベル「３」はビューワと操作ボタンを備えていることを示している。レベル「２」は操作ボタンのみ、レベル「１」は最小限の機能しか有していないことを示し、レベル「０」は、その機能をサポートしていないことを示している。
【０１３２】
また図４４（Ｂ）の記憶制御８０２のサポートレベルにおいては、レベル「４」はＤＳＣ３０１２の機能を使用するように主張するレベル、レベル「３」はハンドル機能を備えていることを示している。レベル「２」は画像ファイルシステムを有し、レベル「１」は記憶デバイス８１１にアクセスできる機能しか有していないことを示し、レベル「０」は、その機能をサポートしていないことを示している。
【０１３３】
更に図４４（Ｃ）の印刷制御８０３のサポートレベルにおいては、レベル「４」はＤＳＣ３０１２の機能を使用するように主張するレベル、レベル「３」はレンダリング機能を備えていることを示している。レベル「２」は階調処理のみ、レベル「１」はＪＰＥＧの復号機能しか有していないことを示し、レベル「０」は、その機能をサポートしていないことを示している。
【０１３４】
この様にして示されるＰＤプリンタ装置１０００及びＤＳＣ３０１２のそれぞれの機能を比較し、各機能毎に、いずれの機能を使用すると最も効率が良いかを判断して、前述の図１２乃至図１４，及び図１７，図１８に示すような機能分担が実施される。
【０１３５】
［実施の形態１］
次に本発明の実施の形態１に係るＤＣＳ３０１２とＰＤプリンタ装置１０００とを接続した印刷システムの例で説明する。この実施の形態１に係る印刷システムでは、ＤＳＣ３０１２に記憶されているＤＰＯＦファイルを用いて、上述した本実施の形態に係るＣＤＰＳによる印刷を行う場合で説明する。尚、このＤＰＯＦファイルは、ＤＳＣ３０１２の表示部２７００に表示された内容を基に、操作ボタンやスイッチ３１０３を使用して作成されたものであってもよく、或いはＰＣ３０１０とＤＳＣ３０１２とが接続された状態で、ＰＣ３０１０による操作に基づいて作成され多ものでもよい。いずれの場合も、このＤＰＯＦファイルは、メモリカード３１０９に画像データとともに記憶されている。
【０１３６】
図４５は、上述したＤＰＯＦファイルのデータ例を示す図である。
【０１３７】
図示の場合、印刷対象の画像はそれぞれ、
../DCIM/105GANON/IMG_0572.JPG
../DCIM/105GANON/IMG_0573.JPG
で示されている２行である。
【０１３８】
この意味は、「ＤＣＩＭ」というディレクトリがあって、その中に「１０５ＧＡＮＯＮ」という更なるディレクトリがあり、その中のファイル名「IMG_0572.JPG」或いは「IMG_0573.JPG」が印刷対象として指定されたことを示している。
【０１３９】
図４６は、本実施の形態１に係るＤＳＣ３０１２からＰＤプリンタ装置１０００に対して印刷指示を行う場合の、ＤＳＣ３０１２における処理を説明するフローチャートである。
【０１４０】
まずステップＳ４００で、前述のようにしてＤＰＯＦファイルが作成される。次にステップＳ４０１に進み、その作成したＤＰＯＦファイルがメモリカードに記憶される。尚、このＤＰＯＦファイルが作成される場合は、通常、ＤＳＣ３０１２はオフラインの状態（ＰＣやプリンタに接続されていない状態）で行われる。そしてステップＳ４０２で、ＤＳＣ３０１２とプリンタ装置とが接続されたかを調べ、接続されるとステップＳ４０３に進み、接続されたプリンタが前述のＣＤＰＳに対応しているかどうかをみる。ＣＤＰＳに対応していない時はステップＳ４０７に進み、メモリカード３１０９に記憶されているＤＰＯＦファイルをプリンタ装置に送信して、そのＤＰＯＦファイルに基づく印刷を指示する。
【０１４１】
一方、ステップＳ４０３でＣＤＰＳに対応していると判定されると（ここでは前述のＰＤプリンタ装置１０００が接続されたとする）ステップＳ４０４に進み、ＣＤＰＳによる初期化を実行し、プリンタ装置からのCapabilityを取得する。次にステップＳ４０５に進み、その接続されたＰＤプリンタ装置１０００の機能を参照して、ＤＰＯＦファイルで指定されていない、オペレータが印刷したい印刷方法を指示する。この印刷方法には、例えば印刷に使用する用紙タイプ、印刷品位、レイアウト等が含まれている。こうして印刷方法の指示入力が終了して、操作ボタン３１０により印刷の開始が指示されるとステップＳ４０６に進み、メモリカードに記憶されているＤＰＯＦファイルにより選択されている画像とその印刷方法とが指示された内容がＰＤプリンタ装置１０００に送られて印刷が実行される。
【０１４２】
尚、ステップＳ４０５では、プリンタ装置の有する機能とは別にデフォルトの印刷条件を設定することも可能である。
【０１４３】
この方法を用いれば、例えば旅先等で、このＤＳＣ３０１２を使用して写真を撮影した時に、このＤＳＣ３０１２でどの写真を何枚出力するかを設定してメモリカード３１０９に記憶しておく。そして帰宅してから、接続したプリンタ装置の機能に合せて印刷方法を設定して印刷することができる。
【０１４４】
これによれば、ＤＳＣ３０１２は、記憶している画像情報の中からＤＰＯＦファイルで指示された画像と、接続しているプリンタ装置に対応した印刷方法をプリンタ装置に送るだけであるため、ＤＳＣ３０１２の構成を簡略化できる。
【０１４５】
［実施の形態１の変形例］
この実施の形態では、ＣＤＰＳの印刷指定コマンドであるCDPS_job中で、印刷に使用するＤＰＯＦファイルを指定することにより、ＣＤＰＳの印刷指定のみを転送するだけで印刷方法の設定を完了することができる。前述の実施の形態１に比べて、画像の選択と、その印刷方法との関連をより明瞭にできる。
【０１４６】
この場合も図４６のフローチャートと同様にして実現可能であるが、ステップＳ４０６での処理が若干異なる。即ち、このステップＳ４０６では、ステップＳ４０５で入力された印刷指示に基づくＣＤＰＳコマンドを作成し、画像を指定するハンドルに、その印刷しようしているＤＰＯＦファイルを設定する。
【０１４７】
以下、具体例を説明する。
【０１４８】
ここでは例えば、Ｌ版の用紙に２×２のレイアウトでハンドル１で示すＤＰＯＦファイルに基づく印刷を行うCDPS_jobの例を示す。
【０１４９】
＜?XML version="1.0" encoding="UTF-16"?＞
＜command(CDPS_job)＞
＜job＞
＜capabitily＞
＜papersize("L")＞：用紙サイズ（Ｌ判）
＜papertype("Photo")＞：写真用紙
＜date("off")＞：日付印刷オフ
＜layout("2ｘ2")＞：レイアウト２×２
＜/capability＞
＜printlist＞
＜image ("handle1")＞：ハンドル１＝DPOFファイル
＜/printlist＞
＜/job＞
以上のコマンド列において、＜capabitily＞において、レイアウトまでの用紙サイズ、用紙タイプ、日付印刷の指定、レイアウトは、ＰＤプリンタ装置１０００のcapabitilyに基づいてＤＳＣ３０１２で作成されたもので、ＣＤＰＳが備えているコマンドに相当している。そして、＜image ("handle1")＞：ハンドル１＝DPOFファイルにより、印刷したい画像をＤＰＯＦファイルにより指定している。
【０１５０】
これにより、本実施の形態に係るＣＤＰＳとＤＰＯＦファイルとの関連付けを容易にできる。尚、この実施の形態１では、ＤＳＣ３０１２とＰＤプリンタ装置１０００とが、共にこのＤＰＯＦファイルの解読機能を有していることが前提である。
【０１５１】
［実施の形態２］
次に本発明の実施の形態２について説明する。この例では、ＤＳＣ３０１２でＤＰＯＦファイルを解析し、ＰＤプリンタ装置１０００に送信する際には、上述のＣＤＰＳに基づくコマンド列で送信する場合で説明する。
【０１５２】
この場合の処理を図４７のフローチャートを参照して説明する。尚、図４６と共通する部分は同じ番号を付して、その説明を省略する。この図４７では、ステップＳ４００〜Ｓ４０５，Ｓ４０７は同じ処理である。
【０１５３】
ステップＳ４０５で、接続されているプリンタ装置１０００に対応する印刷方法が入力されて指示されるとステップＳ４１６に進み、メモリカード３１０９に記憶されているＤＰＯＦファイルを読み出して解析する。そして、そのＤＰＯＦファイルで選択されている画像を特定する画像指定情報をＣＤＰＳコマンド列に組込んだＣＤＰＳジョブコマンドを作成する。そしてステップＳ４１８に進み、そのＣＤＰＳジョブコマンドに基づいてＰＤプリンタ装置に対して印刷を指示する。
【０１５４】
その具体例を以下に説明する。
【０１５５】
例えば、Ｌ版の用紙に２×２のレイアウトでハンドル１で示す画像（ＤＰＯＦファイルで特定されている）を印刷するように指示するCDPS_jobの例を示す。
【０１５６】
＜?XML version="1.0" encoding="UTF-16"?＞
＜command(CDPS_job)＞
＜job＞
＜capabitily＞
＜papersize("L")＞：用紙サイズ（Ｌ判）
＜papertype("Photo")＞：写真用紙
＜date("off")＞：日付印刷オフ
＜layout("2ｘ2")＞：レイアウト２×２
＜/capability＞
＜printlist＞
＜image ("handle1")＞： DPOFファイルの１番目に指定されている画像のハンドル
＜image ("handle2")＞： DPOFファイルの２番目に指定されている画像のハンドル
・・・
＜image ("handleN")＞： DPOFファイルのＮ番目に指定されている画像のハンドル
＜/printlist＞
＜/job＞
この場合、プリンタ装置は、ＣＤＰＳコマンドのみをサポートしておれば良いのでプリンタ装置の構成を簡略化できる。
【０１５７】
また、ＤＰＯＦファイルに記載された印刷設定と、ＣＤＰＳスクリプトに記載された印刷設定が異なっていた場合には、ＤＰＯＦファイルに基づく設定を優先させるか、ＣＤＰＳによる指示を優先させるかの、いずれかを指定できるようにしても良い。
【０１５８】
ＤＰＯＦファイルを優先させる場合には、写真を撮影して印刷を指定した人の意図を反映した印刷が可能になり、逆にＣＤＰＳによる設定を優先させることにより、よりプリンタ装置の機能に基づいた印刷が実現出来る。
【０１５９】
［実施の形態３］
図４８は本発明の実施の形態３に係る処理を説明するフローチャートで、前述の図４６のフローチャートのステップＳ４０４以降の処理で示している。
【０１６０】
ここではステップＳ４０４で、ＣＤＰＳ対応の確認が取れて、ＣＤＰＳ初期化を実行した後、ステップＳ４８０で、ＤＰＯＦファイルによる指示と、capabilityに基づいて設定された印刷方法のいずれを用いて印刷を行うかを判定する。これはデフォルトでいずれかに設定されていてもよく、或いは操作ボタン３１０３を使用し表示部２７００のメニュー画面等で指定されていてもよい。ＣＤＰＳを用いて印刷を行う場合はステップＳ４８２に進み、前述のステップＳ４０５と同様にして、ＰＤプリンタ装置１０００により印刷方法を指示するためのデータを入力する。こうして作成されたＣＤＰＳスクリプトが、メモリカード３１０９に記憶されているＤＰＯＦファイルと矛盾しないかをみる。矛盾しない場合はステップＳ４８４に進み、ＣＤＰＳにＤＰＯＦファイルを組込んだ形式（前述の実施の形態１或いは２）のＣＤＰＳコマンドを作成し、ステップＳ４８５で、その基づく印刷をプリンタ装置に対して指示する。
【０１６１】
一方、ステップＳ４８３で、矛盾があると判定されるとステップＳ４８６に進み、表示部２７００に矛盾がある旨を警告表示する。そして、ステップＳ４８７で、ＣＤＰＳにより指示された内容とＤＰＯＦファイルにより指定された内容のいずれかが選択されるのを待ち、選択された印刷指示内容に設定する。
【０１６２】
又ステップＳ４８０で、ＤＰＯＦファイルを使用して印刷を行う場合はステップＳ４８１に進み、そのＤＰＯＦファイルをＰＤプリンタ装置１０００に送信して印刷を行う。
【０１６３】
これによれば、元々記憶されていたＤＰＯＦファイルにおける印刷設定内容と、プリンタに接続して入力された事項に基づく印刷設定内容との齟齬により、ユーザの意図に反した画像印刷を防止できる。
【０１６４】
尚、上述のレにおいて、ＤＰＯＦに基づく印刷を実行している場合には、ＤＰＯＦに基づく印刷中であることをＤＳＣ３０１２の表示部２７００に表示し、逆にＣＤＰＳのみの印刷条件に基づく印刷処理中は、その旨を表示部２７００に表示するようにしてもよい。又、ＤＰＯＦとＣＤＰＳの両方の印刷条件に基づく印刷中は、その旨を表示するようにしても良い。
【０１６５】
又このような表示は、１枚の用紙の印刷毎に切替えても良い。これにより、各印刷ページ（或いは画像）毎に印刷条件が異なっている場合にも対応できる。
【０１６６】
又印刷している印刷条件に、ＤＰＯＦの内容が反映されているか否かを識別できるような表示を表示部２７００に行うようにしても良い。
【０１６７】
以上説明した実施の形態における機能構成を図４９（ａ）（ｂ）を参照して説明する。
【０１６８】
図４８（ａ）は、上述の実施の形態１に係る構成を示す図で、ＤＳＣ３０１２にはＤＰＯＦファイル４９０が記憶されている。この状態でＰＤプリンタ装置１０００と接続されて互いにＣＤＰＳ対応であることが判明した後、ＰＤプリンタ装置１０００が有する印刷機能に応じて、新たにユーザが入力した印刷方法の指示によりＣＤＰＳジョブコマンド４９１が作成される。そしてＰＤプリンタ装置１０００への印刷指示に際しては、ＤＰＯＦファイル４９０とＣＤＰＳジョブコマンド４９１とが組み合わされた形式でＰＤプリンタ装置１０００に送信される。
【０１６９】
ＰＤプリンタ装置１０００では、ＤＳＣ３０１２から送信された内容をＣＤＰＳ解析部４９２（ＣＤＰＳ対応であるため当然常備している）とＤＰＯＦ解析部４９３により解析し、それに基づいた印刷処理を実行する。
【０１７０】
図４８（ｂ）は、上述の実施の形態２に係る構成を示す図で、前述と同様にＤＳＣ３０１２にはＤＰＯＦファイル４９０が記憶されている。この状態でＰＤプリンタ装置１０００と接続されて互いにＣＤＰＳ対応であることが判明した後、ＰＤプリンタ装置１０００が有する印刷機能に応じて、新たにユーザが入力した印刷方法の指示によりＣＤＰＳコマンド列４９１が作成される。そしてＰＤプリンタ装置１０００への印刷指示に際しては、ＰＤプリンタ装置１０００がＤＰＯＦ解析部４９３を有していないため、ＤＰＯＦファイル４９０を解析して（４９３）、ＣＤＰＳコマンド列に、ＤＰＯＦファイル４９０で指示された画像を示すハンドルを組込んだＣＤＰＳジョブコマンド４９１ａを作成し、それがＰＤプリンタ装置１０００に送信される。
【０１７１】
ＰＤプリンタ装置１０００はＤＰＯＦ解析部４９３を備えておらず、ＤＳＣ３０１２から送信された内容をＣＤＰＳ解析部４９２（ＣＤＰＳ対応であるため当然常備している）により解析し、それに基づいた印刷処理を実行する。
【０１７２】
図５０は、上述の実施の形態１におけるＰＤプリンタ１０００における印刷処理を説明するフローチャートである。なお、ＤＳＣが接続された際の初期の通信確立処理は既に完了しているものとして説明する。
【０１７３】
先ず、ステップＳ５１１において、ＤＰＯＦファイル或いはＤＰＯＦを含むＣＤＰＳスクリプト、或いはＣＤＰＳスクリプトを、接続中のＤＳＣ３０１２より取得する。次いでステップＳ５１２に進み、ステップＳ５１１で取得したファイル或いはスクリプトを解析し、印刷条件及び印刷すべき画像のハンドルを取得する。そして、ステップＳ５１３でそのハンドルで示されるデータ（画像データ）を要求する（GetObjectコマンドで実現できる）。その結果、送られてくる画像データを受信し（ステップＳ５１４）、印刷処理を行う（ステップＳ５１５）。そして、上記処理を全要求に対して行ったと判断するまで、ステップＳ５１２以降の処理を繰り返す。
【０１７４】
以上の結果、デジタルカメラとプリンタとをダイレクトに通信する状況下においても、ユーザの意図した通りの画像のみを印刷することが可能となる。
【０１７５】
なお本発明は、複数の機器（例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１７６】
また、本発明の目的は、前述した実施形態の機能(カメラ側で行われる処理、
プリンタ側で行われる各種印刷処理)を実現するソフトウェアのプログラムコー
ドを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１７７】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるャｃ鰍ノ書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１７８】
以上説明したように本実施の形態によれば、ＰＤプリンタ装置をＵＳＢホストに、ＤＳＣをスレーブに設定し、印刷動作に入る前に、ＰＤプリンタ装置とＤＳＣとの間でフォトダイレクト印刷に必要な機能を分担させ、最適な乃至はＤＳＣ側の所望の印刷モードを決定して印刷を行わせることができる。また、機能分担の際、例えばＤＳＣ３０１２がＣＤＰＳ自体をサポートしていなかった場合、図１１中のステップＳ１１で、ＤＳＣ３０１２における機能８００〜８０３のそれぞれのサポートレベルをＰＤプリンタ装置１０００に通達する事自体が不可能である。その場合であっても、ＤＳＣ３０１２の各機能８００〜８０３のそれぞれのサポートレベルを０と見做し、それら機能８００〜８０３を全てＰＤプリンタ装置１０００側でサポートする様にすれば、ＣＤＰＳ非対応のＤＳＣ３０１２との間でも、実質的にＣＤＰＳのリソースを共通利用してダイレクトプリントを行う事が可能となる。この「サポートレベルを０と見做す」という処理は図７中のいずれの階層で実現しても構わない。このようにリソースを共通利用する事により、対応機器及び非対応機器両者とのダイレクトプリント実現において、開発期間短縮・コスト削減・リソース削減・信頼性の向上等の効果が期待できる。
【０１７９】
また、本実施例ではＰＤプリンタ装置をＵＳＢホストに、ＤＳＣをスレーブに設定したが、特にこの組み合わせに拘る必要は無く、本発明の主旨である機能分担が好適に行われるのであればいずれの機器がホスト・スレーブを担当しても構わない。
【０１８０】
またこのCapability情報や各種指示をスクリプトにより行うことにより、他の通信プロトコルへの移植が容易になり、標準化し易くなる。
【０１８１】
また、デバイス間の通信手順は汎用ファイル、汎用フォーマットを用いて行い、その上位レイヤに、本実施の形態に係るアプリケーションの通信手順レイヤを規定することにより、各種インターフェース仕様に依存しない通信手順を規定することができる。
【０１８２】
また、本実施の形態の記録システムでは、不特定多数の装置同士が接続されるため、それらインターフェースも様々多様である。よって、各種インターフェースで標準にサポートされている仕様で情報をやり取りする必要が生じる。従って、これら装置間での送受信において必須となる機能情報は「ファイル転送」もしくは「オブジェクト転送」で実現させることにより、各種インターフェース仕様に容易に適合できるようにしている。
【０１８３】
尚、画像供給デバイスとしてはデジタルカメラ以外にも、ＰＤＡや携帯電話、テレビジョン、ビデオ機器、画像記憶デバイス等が考えられる。
【０１８４】
また、汎用インターフェースには、上述のＵＳＢやＩＥＥＥ１３９４等に加えてインターネット等のネットワークへの接続も含まれる。
【図面の簡単な説明】
【０１８５】
【図１】本発明の実施の形態に係るＰＤプリンタ装置の概観斜視図である。
【図２】本実施の形態に係るＰＤプリンタ装置の操作パネルの概観図である。
【図３】本実施の形態に係るＰＤプリンタ装置の制御に係る主要部の構成を示すブロック図である。
【図４】本実施の形態に係るＰＤプリンタ装置のＡＳＩＣの構成を示すブロック図である。
【図５】本実施の形態に係るデジタルカメラの構成を示すブロック図である。
【図６】本実施の形態に係るＣＤＰＳ通信手順の概要を説明する図である。
【図７】本実施の形態に係るＣＤＰＳを実装したＰＤプリンタ装置とデジタルカメラのインターフェース及びソフトウェア構成を説明する概念図である。
【図８】本実施の形態に係るＣＤＰＳにおけるサービス機能の概念図である。
【図９】本実施の形態に係るＣＤＰＳにおける印刷までの処理の概要を説明するフローチャートである。
【図１０】本実施の形態に係るＣＤＰＳにおけるＤＳＣとＰＤプリンタ装置におけるサービス機能の概念図である。
【図１１】本実施の形態に係るＰＤプリンタ装置とＤＳＣとを接続してからＣＤＰＳが開始されるまでの処理の概要を説明するフローチャートである。
【図１２】本実施の形態に係るＣＤＰＳにおけるＤＳＣとＰＤプリンタ装置との機能分担例を示す図である。
【図１３】本実施の形態に係るＣＤＰＳにおけるＤＳＣとＰＤプリンタ装置との機能分担例を示す図である。
【図１４】本実施の形態に係るＣＤＰＳにおけるＤＳＣとＰＤプリンタ装置との機能分担例を示す図で、ここではＤＳＣをマスストレージとして扱っている。
【図１５】本実施の形態に係るＣＤＰＳにおける機能コマンドを説明する図である。
【図１６】本実施の形態に係るＣＤＰＳにおけるＤＳＣとＰＤプリンタ装置との間でのサービス機能と、処理の流れを説明するフロー図である。
【図１７】本実施の形態に係るＣＤＰＳにおけるＤＳＣとＰＤプリンタ装置との間でのサービス機能の分担例と、処理の流れを説明するフロー図である。
【図１８】本実施の形態に係るＣＤＰＳにおけるＤＳＣとＰＤプリンタ装置との間でのサービス機能の分担例と、処理の流れを説明するフロー図である。
【図１９】ＣＤＰＳのサービスディスカバリ（CDPS_ServiceDiscovery）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２０】ＣＤＰＳにおいて、カメラが使用する手続を通知する（CDPS_ServiceDiscovery）手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２１】ＣＤＰＳにおけるプリンタ機能の通知（CDPS_Service）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２２】ＣＤＰＳにおいて、ＰＤプリンタ装置が画像ファイルを取得する機能（CDPS_JobData）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２３】ＣＤＰＳにおいてＰＤプリンタ装置からカメラに対してプリント開始を指示する機能（CDPS_PageStart）をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２４】ＣＤＰＳにおいて、ＰＤプリンタ装置からカメラに対して１ページのプリント終了を送信する機能（CDPS_PageEnd）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２５】ＣＤＰＳにおいて、ＰＤプリンタ装置からカメラに対して印刷ジョブの終了命令（CDPS_JobEnd）を発行する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２６】ＣＤＰＳにおいて、ＰＤプリンタ装置からカメラに対してエラーステータスを送信する機能（CDPS_Error）の手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２７】ＣＤＰＳにおいて、操作制御から印刷制御に対して印刷命令の発行（CDPS_Job）する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２８】ＣＤＰＳにおいて、操作制御から印刷制御に対して印刷中止を発行（CDPS_JobAbort）する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図２９】ＣＤＰＳにおいて、操作制御から印刷制御に対して印刷再開を発行（CDPS_JobContinue）する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図３０】ＣＤＰＳにおいて、印刷制御からストレージに対して部分画像の取得を発行（CDPS_PrintJobData）する手順をＰＴＰアーキテクチャを用いて実現した例を説明する図である。
【図３１】ＣＤＰＳにおける部分画像の取得処理を説明するフローチャートである。
【図３２】ブルーツースでのＣＤＰＳへの移行コマンドの通信プロトコルを説明する図である。
【図３３】ブルーツースでのＣＤＰＳへの移行コマンドの通信プロトコルを説明する図である。
【図３４】ブルーツースでのプリンタ機能の通知処理の通信プロトコルを説明する図である。
【図３５】ブルーツースでのストレージから画像データを取得する処理の通信プロトコルを説明する図である。
【図３６】ブルーツースでのプリント開始通知の通信プロトコルを説明する図である。
【図３７】ブルーツースでのプリント終了通知の通信プロトコルを説明する図である。
【図３８】ブルーツースでのプリントジョブの終了通知の通信プロトコルを説明する図である。
【図３９】ブルーツースでのプリンタのエラー通知の通信プロトコルを説明する図である。
【図４０】ブルーツースでのプリント命令の発行処理の通信プロトコルを説明する図である。
【図４１】ブルーツースでのプリント中止命令の発行処理の通信プロトコルを説明する図である。
【図４２】ブルーツースでのプリントジョブの再開命令発行処理の通信プロトコルを説明する図である。
【図４３】ブルーツースにおける、部分画像の取得処理の通信プロトコルを説明する図である。
【図４４】各種制御機能（操作制御、記憶制御及びプリント制御）をどのように分担するかを決定するための基準となるＤＳＣ及びＰＤプリンタ装置それぞれのサポートレベルを説明するための図である。
【図４５】ＤＰＯＦファイルの一例を説明する図である。
【図４６】本発明の実施の形態１に係るＤＳＣによる制御処理を説明するフローチャートである。
【図４７】本発明の実施の形態２に係るＤＳＣによる制御処理を説明するフローチャートである。
【図４８】本発明の実施の形態３に係るＤＳＣによる制御処理を説明するフローチャートである。
【図４９】本発明の実施の形態１乃至２の概要を説明する機能ブロック図である。
【図５０】本発明の実施の形態に係るプリンタ装置による印刷処理を説明するフローチャートである。
【図１】
2006012118.tif 000003
【図２】
2006012118.tif 000004
【図３】
2006012118.tif 000005
【図４】
2006012118.tif 000006
【図５】
2006012118.tif 000007
【図６】
2006012118.tif 000008
【図７】
2006012118.tif 000009
【図８】
2006012118.tif 000010
【図９】
2006012118.tif 000011
【図１０】
2006012118.tif 000012
【図１１】
2006012118.tif 000013
【図１２】
2006012118.tif 000014
【図１３】
2006012118.tif 000015
【図１４】
2006012118.tif 000016
【図１５】
2006012118.tif 000017
【図１６】
2006012118.tif 000018
【図１７】
2006012118.tif 000019
【図１８】
2006012118.tif 000020
【図１９】
2006012118.tif 000021
【図２０】
2006012118.tif 000022
【図２１】
2006012118.tif 000023
【図２２】
2006012118.tif 000024
【図２３】
2006012118.tif 000025
【図２４】
2006012118.tif 000026
【図２５】
2006012118.tif 000027
【図２６】
2006012118.tif 000028
【図２７】
2006012118.tif 000029
【図２８】
2006012118.tif 000030
【図２９】
2006012118.tif 000031
【図３０】
2006012118.tif 000032
【図３１】
2006012118.tif 000033
【図３２】
2006012118.tif 000034
【図３３】
2006012118.tif 000035
【図３４】
2006012118.tif 000036
【図３５】
2006012118.tif 000037
【図３６】
2006012118.tif 000038
【図３７】
2006012118.tif 000039
【図３８】
2006012118.tif 000040
【図３９】
2006012118.tif 000041
【図４０】
2006012118.tif 000042
【図４１】
2006012118.tif 000043
【図４２】
2006012118.tif 000044
【図４３】
2006012118.tif 000045
【図４４】
2006012118.tif 000046
【図４５】
2006012118.tif 000047
【図４６】
2006012118.tif 000048
【図４７】
2006012118.tif 000049
【図４８】
2006012118.tif 000050
【図４９】
2006012118.tif 000051
【図５０】
2006012118.tif 000052