(57)【要約】【課題】テレビなどのホスト機器からもデジタルカメラなどのスレーブ機器からもダイレクトプリントが簡単にできるようにする。【解決手段】スレーブとの間で印刷する場合と、ホストとの間で印刷する場合とで、同じ種類のスクリプトを送受信可能なように構成し、例えばＰＣなどから指示して印刷するための通信手順やＤＰＳのダイレクトプリントのプロトコルのように、全く別々のプロトコルで実現する場合と比べてプロトコルを実現するためのプログラムを共通化できるようにして、別々のプロトコルで実現する場合と比べて簡単に、かつＤＰＳスクリプトデータ２１１を記憶する領域を節約できるようにする。【選択図】図２
2011186663.tif 000002
【特許請求の範囲】
【請求項１】
スレーブとして機能する第１の外部装置と接続するとともに、ホストとして機能する第２の外部装置とも接続可能であり、前記第１の外部装置または第２の外部装置の指示に応じて画像データを印刷する印刷装置であって、
前記第１の外部装置と通信する第１の通信手段と、
前記第２の外部装置と通信する第２の通信手段と、
前記第１の外部装置とダイレクトプリントするためのプロトコルを用いて通信するように前記第１の通信手段を制御するとともに、前記第２の外部装置と前記プロトコルを用いて通信するように前記第２の通信手段を制御する制御手段とを備えることを特徴とする印刷装置。
【請求項２】
前記第１の通信手段は、前記第１の外部装置から画像データを受信し、
前記制御手段は、前記第２の外部装置からの要求に応じて、前記第１の通信手段により前記第１の外部装置から受信した画像データ、または記録媒体に保持する画像データを送信するように前記第２の通信手段を制御することを特徴とする請求項１に記載の印刷装置。
【請求項３】
前記記録媒体に保持する画像データに対する第１の識別ＩＤ群を管理するとともに、前記第１の外部装置から受信した画像データに対して、前記第１の識別ＩＤ群とは識別ＩＤが重複しないような第２の識別ＩＤ群を管理する管理手段をさらに備え、
前記制御手段は、前記管理手段によって管理される識別ＩＤ群に基づいて、画像データを前記第２の外部装置に送信するように前記第２の通信手段を制御することを特徴とする請求項２に記載の印刷装置。
【請求項４】
前記管理手段は、前記第１の外部装置により付与された識別ＩＤを用いて前記第２の識別ＩＤ群を管理するとともに、前記記録媒体に保持する画像データに対して前記第１の外部装置によって付与された識別ＩＤと重複しないような識別ＩＤを付与して、前記第１の識別ＩＤ群を管理することを特徴とする請求項３に記載の印刷装置。
【請求項５】
前記管理手段は、前記第１の外部装置から受信した画像データに対して、前記記録媒体に保持する画像データに対する識別ＩＤと重複しないような識別ＩＤに変換して前記第２の識別ＩＤ群を管理することを特徴とする請求項３に記載の印刷装置。
【請求項６】
前記記録媒体に保持する画像データに対する識別ＩＤと重複しないような識別ＩＤを付与するように前記第１の外部装置に要求する要求手段をさらに備え、
前記管理手段は、前記要求手段による要求に応じて前記第１の外部装置により付与された識別ＩＤを用いて前記第２の識別ＩＤ群を管理することを特徴とする請求項３に記載の印刷装置。
【請求項７】
前記制御手段は、前記第１の外部装置から印刷要求を受けた場合は、前記第２の外部装置との通信よりも前記第１の外部装置との通信を優先するように前記第１の通信手段及び第２の通信手段を制御することを特徴とする請求項１〜６の何れか１項に記載の印刷装置。
【請求項８】
前記制御手段は、前記第２の通信手段により前記第２の外部装置からの画像データを送信する要求を受信すると、前記受信した要求を複数の要求に分割して前記第１の外部装置に送信するように前記第１の通信手段を制御することを特徴とする請求項７に記載の印刷装置。
【請求項９】
請求項１〜８の何れか１項に記載の印刷装置と、前記第１の外部装置と、前記第２の外部装置とを備えることを特徴とするプリントシステム。
【請求項１０】
スレーブとして機能する第１の外部装置と接続するとともに、ホストとして機能する第２の外部装置とも接続可能であり、前記第１の外部装置または第２の外部装置の指示に応じて画像データを印刷する印刷装置の制御方法であって、
前記第１の外部装置と通信する第１の通信工程と、
前記第２の外部装置と通信する第２の通信工程と、
前記第１の外部装置とダイレクトプリントするためのプロトコルを用いて通信するように前記第１の通信工程における処理を制御するとともに、前記第２の外部装置と前記プロトコルを用いて通信するように前記第２の通信工程における処理を制御する制御工程とを備えることを特徴とする印刷装置の制御方法。
【請求項１１】
スレーブとして機能する第１の外部装置と接続するとともに、ホストとして機能する第２の外部装置とも接続可能であり、前記第１の外部装置または第２の外部装置の指示に応じて画像データを印刷する印刷装置を制御するためのプログラムであって、
前記第１の外部装置と通信する第１の通信工程と、
前記第２の外部装置と通信する第２の通信工程と、
前記第１の外部装置とダイレクトプリントするためのプロトコルを用いて通信するように前記第１の通信工程における処理を制御するとともに、前記第２の外部装置と前記プロトコルを用いて通信するように前記第２の通信工程における処理を制御する制御工程とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷装置、プリントシステム、印刷装置の制御方法及びプログラムに関し、特に、ダイレクトプリントを行うために用いて好適な技術に関する。
【背景技術】
【０００２】
近年、撮影した画像をデジタル画像データに変換するデジタルカメラ（撮像装置）が広く使用されるようになっている。このようなデジタルカメラで撮影した画像を印刷して写真にする場合は、通常、その撮影されたデジタル画像データを、デジタルカメラからＰＣ（パーソナルコンピュータ）に一旦取り込み、そのＰＣで画像処理を行った後、ＰＣからプリンタに出力して印刷する。これに対して最近は、ＰＣを介することなく、デジタルカメラからプリンタにデジタル画像データを直接伝送して印刷できるプリントシステム（以下、ダイレクトプリント）が開発されている。また、デジタルカメラで撮影された画像データを記憶しているメモリカードをプリンタに直接装着して画像を印刷するフォトダイレクト（ＰＤ）プリンタ等も開示されている（例えば、特許文献１及び２参照）。
【０００３】
このようなダイレクトプリントは、元々、同一メーカにより製造されたデジタルカメラとプリンタとの間でのみ実現できる機種限定の印刷機能であった。ところが近年では標準化が進み、異なるメーカにより製造されたデジタルカメラとプリンタとを接続してダイレクトプリントを行うことができる環境が整ってきた。例えば、ＣＩＰＡから正式に公開されているPictBridge（ＤＰＳ）と呼ばれる規格は、異なるメーカにより製造されたデジタルカメラとプリンタとを接続した場合でもダイレクトプリントを行うことができる代表的な規格である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−９３８８号公報
【特許文献２】特開２００４−２８７９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のダイレクトプリントではプリンタはホスト機器として動作し、デジタルカメラはスレーブ機器として動作することが前提である。近年、ＵＳＢを用いたホスト機能を備えたテレビが開発されている。ところが、テレビ及びプリンタが両方ともホスト機器となってしまうため、両者を接続してダイレクトプリントすることはできない。一方、特許文献２に記載されているように、前述したようにプリンタがスレーブ機器として動作して、ＰＣなどのホスト機器と接続してＰＣからプリンタに出力して印刷することは従来から行われていた。ところが、テレビがホスト機器、プリンタがスレーブ機器として動作した場合、ホスト機器であるテレビにプリンタのドライバをインストールする必要がある。このように、テレビなどのホスト機器からダイレクトプリントする場合には多くの手間がかかってしまうという問題点かある。
【０００６】
本発明は前述の問題点に鑑み、テレビなどのホスト機器からもデジタルカメラなどのスレーブ機器からもダイレクトプリントが簡単にできるようにすることを目的としている。
【課題を解決するための手段】
【０００７】
本発明の印刷装置は、スレーブとして機能する第１の外部装置と接続するとともに、ホストとして機能する第２の外部装置とも接続可能であり、前記第１の外部装置または第２の外部装置の指示に応じて画像データを印刷する印刷装置であって、前記第１の外部装置と通信する第１の通信手段と、前記第２の外部装置と通信する第２の通信手段と、前記第１の外部装置とダイレクトプリントするためのプロトコルを用いて通信するように前記第１の通信手段を制御するとともに、前記第２の外部装置と前記プロトコルを用いて通信するように前記第２の通信手段を制御する制御手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、テレビのようなホスト機器と接続した場合でも、デジタルカメラようなスレーブ機器と接続した場合でも簡単にダイレクトプリントを行うことができる。
【図面の簡単な説明】
【０００９】
【図１】ＰＤプリンタ及び周辺機器を示す図である。
【図２】実施形態に係るＰＤプリンタの内部構成例を示すブロック図である。
【図３】実施形態に係るデジタルカメラの内部構成例を示すブロック図である。
【図４】実施形態に係るデジタルテレビの内部構成例を示すブロック図である。
【図５】ダイレクト接続した際のレイヤー構造の一例を示す図である。
【図６】ＰＤプリンタとＤＳＣとの一般的な通信手順の一例を示す図である。
【図７】印刷開始要求のメッセージの一例を示す図である。
【図８】スクリプトを送信する通信手順の一例を示す図である。
【図９】接続が確立されるまでの通信手順の一例を示す図である。
【図１０】ダイレクトプリントの通信手順の一例を示す図である。
【図１１】第１の実施形態の通信手順及び各機器の動作の一例を示す図である。
【図１２】ハンドル番号のテーブルの一例を示す図である。
【図１３】第１の実施形態のＰＤプリンタの動作例を示すフローチャートである。
【図１４】画像データの送受信中に印刷する場合の通信手順の一例を示す図である。
【図１５】第２の実施形態の通信手順及び各機器の動作の一例を示す図である。
【図１６】第２の実施形態のＰＤプリンタの動作例を示すフローチャートである。
【図１７】第３の実施形態の通信手順及び各機器の動作の一例を示す図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
以下、本発明の第１の実施形態について図面を参照しながら説明する。まず、本実施形態における基本部分について説明する。なお、以下の説明では、印刷装置がデジタルカメラ（ＤＳＣ）などの他の機器とダイレクトに通信可能な環境において、ＤＳＣに装着された記憶媒体に記憶された画像データを印刷する方式をダイレクトプリントと呼ぶことにする。
【００１１】
図１（ａ）は、本実施形態のフォトダイレクトプリンタ（ＰＤプリンタ）１００の外観例を示す斜視図である。一方、図１（ｂ）は、図１（ａ）に示すＰＤプリンタ１００にデジタルカメラ３００及びデジタルテレビ４００をダイレクト接続している様子の一例を示す図である。
図１（ａ）において、ＰＤプリンタ１００は、パーソナルコンピュータ（ＰＣ）からデータを受信して印刷する通常のプリンタとしての機能を備えている。さらに、メモリカードなどの記憶媒体に記憶されている画像データを直接読み取って印刷する機能とデジタルカメラとダイレクトに通信することにより、デジタルカメラから画像データを受信して印刷する機能とを備えている。
【００１２】
ＰＤプリンタ１００本体は、下ケース１０１、上ケース１０２、アクセスカバー１０３及び排出トレイ１０４の外装部材を有している。また、下ケース１０１は、ＰＤプリンタ１００の略下半部を形成し、上ケース１０２は本体の略上半部を形成している。これらの下ケース１０１及び上ケース１０２の組合せによって、内部に後述の各機構を収納する収納空間を有する中空体構造をなし、その上面部及び前面部にはそれぞれ開口部が形成されている。さらに、排出トレイ１０４は、その一端部が下ケース１０１に回転自在に保持され、その回転によって下ケース１０１の前面部に形成される開口部を開閉させ得るようになっている。このため、印刷動作を実行させる際には、排出トレイ１０４を前面側へと回転させて開口部を開くことにより、開口部から記録シートを排出し、さらに排出された記録シートを順次積載し得るようになっている。また、排紙トレイ１０４には、２枚の補助トレイ１０４ａ，１０４ｂが収納されており、必要に応じて補助トレイ１０４ａ，１０４ｂを手前に引き出すことにより、用紙の支持面積を３段階に拡大、縮小させ得るようになっている。
【００１３】
アクセスカバー１０３は、その一端部が上ケース１０２に回転自在に保持され、上面に形成される開口部を開閉し得るようになっている。このアクセスカバー１０３を開くことによって本体内部に収納されている記録ヘッドカートリッジ（不図示）あるいはインクタンク（不図示）等の交換が可能となる。なお、ここでは特に図示しないが、アクセスカバー１０３を開閉させると、その裏面に形成された突起がカバー開閉レバーを回転させるようになっている。このレバーの回転位置をマイクロスイッチなどで検出することにより、アクセスカバーの開閉状態を検出し得るようになっている。
【００１４】
また、上ケース１０２の上面には、電源キー１０５が押下可能に設けられており、さらに、各種キースイッチ等を備える操作パネル１１０が設けられている。また、自動給送部１０７は、記録シートを装置本体内へ給送するためのものであり、紙間選択レバー１０８は、プリントヘッドと記録シートとの間隔を調整するためのレバーである。カードスロット１０９には、メモリカードを装着可能なアダプタが挿入される。メモリカードとしては、例えばＳＤカード等がある。用途としては、デジタルカメラからメモリカードを取り出して装着することにより、ＤＰＯＦ（Digital Print Order Format）に従った印刷機能として用いるものである。
【００１５】
接続端子１１２は、後述するデジタルカメラと接続するためのＵＳＢ（Universal Serial Bus）インターフェースである。通常、ＤＳＣとＰＣとを接続する手段として、ＵＳＢインターフェースを用いることが多い。本実施形態においてはＵＳＢインターフェースを用いているが、これ以外の通信手段でもよい。また、デジタルカメラとの接続作業を簡便なものとするため、図１（ａ）に示すように、前面に接続端子１１２が設けられている。さらに、本実施形態に係るＰＤプリンタ１００は、ＰＣから印刷指示を受信するためのインターフェース（図示せず）をさら備えている。通常、ＰＣと一旦接続すると、格別な事情がない限りは接続状態が維持されたままであることが多いことから、インターフェースの端子を背面に設けている。また、このＰＣと接続するインターフェースもＵＳＢインターフェースで構成されている。
【００１６】
一方、図１（ｂ）に示すダイレクトプリントシステムおいて、第１のＵＳＢケーブル１２０は、ＰＤプリンタ１００の接続端子１１２に接続するためのコネクタ１２１と、デジタルカメラ３００の接続端子１２３と接続するためのコネクタ１２２とを備えている。なお、デジタルカメラ３００は第１の外部装置として、ＰＣが有する接続端子に、逆側のコネクタ１２１を接続することにより、撮影した画像データをＰＣに転送することができる。また、デジタルカメラ３００は、ＵＳＢのスレーブ機能を備えており、接続端子１２３はＵＳＢ規格で定められているmini-Bのレセプタクルで実現される。一方、デジタルカメラ３００とＵＳＢケーブルにより接続して通信するために、ＰＤプリンタ１００はＵＳＢのホスト機能を備えており、接続端子１１２はＵＳＢ規格で定められているＡレセプタクルで実現される。
【００１７】
また、デジタルカメラ３００は、内部のメモリに保持している画像データを、接続端子１２３を介して出力することができる構成となっている。なお、デジタルカメラ３００の構成としては、内部に記憶手段としてのメモリを備えるものや、取外し可能なメモリを装着するためのスロットを備えたものなど、種々の構成を採用することができる。このように、図１（ｂ）に示す第１のＵＳＢケーブル１２０によりＰＤプリンタ１００とデジタルカメラ３００とを接続することにより、デジタルカメラ３００から画像データをＰＤプリンタ１００において直接印刷することができる。
【００１８】
また、図１（ｂ）において、本実施形態に係るＰＤプリンタ１００は、第２の外部装置であるデジタルテレビ（ＴＶ）４００と第２のＵＳＢケーブル１２４により接続されている。第２のＵＳＢケーブル１２４は、ＰＤプリンタ１００の不図示の接続端子に接続するための不図示のコネクタと、デジタルテレビ４００の接続端子１２６と接続するためのコネクタ１２５とを備えている。ＰＤプリンタ１００とデジタルテレビ４００とを第２のＵＳＢケーブル１２４により接続する際には、ＰＤプリンタ１００とＰＣとを接続するときに用いる接続端子に第２のＵＳＢケーブル１２４の一方のコネクタ（不図示）を挿入する。なお、本実施形態に係るＰＤプリンタ１００はＵＳＢのスレーブ機能をさらに備えており、ＰＤプリンタ１００の不図示の接続端子はＵＳＢ規格で定められているＢレセプタクルで実現される。一方、デジタルテレビ４００はＵＳＢのホスト機能を備えており、接続端子１２６はＵＳＢ規格で定められているＡレセプタクルで実現される。
【００１９】
図２は、本実施形態に係るＰＤプリンタ１００の内部構成例を示すブロック図である。
図２において、ＣＰＵ２０１は、ＰＤプリンタ１００全体の制御を司るものであり、ＲＯＭ２０２は、ＣＰＵ２０１の動作処理を実行させるプログラムやフォントの情報を記憶している。さらに、ＲＯＭ２０２は、ダイレクトプリントを行うための後述するＤＰＳスクリプトデータ２１１を記憶している。また、ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用されるものである。
【００２０】
操作パネル２０４は、図１（ａ）に示す操作パネル１１０に相当するものである。ＵＳＢホストコントローラ２０６は第１の通信手段として機能するＵＳＢのホスト側であり、デジタルカメラ３００と通信するためのインターフェース制御部である。また、第１のＵＳＢコネクタ２１２は、Ａレセプタクルで構成されるコネクタであり、図１（ａ）に示す接続端子１１２に相当するものである。ＵＳＢデバイスコントローラ２０７は第２の通信手段として機能するＵＳＢのスレーブ側であり、ＰＣやデジタルテレビ４００と通信するためのインターフェース制御部である。第２のＵＳＢコネクタ２１３は、Ｂレセプタクルで構成されるコネクタであり、図１で説明した不図示の接続端子である。
【００２１】
ストレージデバイス２０８は、各種情報を記憶するための記憶手段であり、カードインターフェース２０９は、記録媒体であるメモリカードなどの記憶メディア２１０を接続可能なコネクタである。このカードインターフェース２０９は、デジタルカメラ３００で撮影され、記憶されたメモリカード内の印刷指示に関する記述ファイルを読み取り、ＤＰＯＦに従って印刷する際に利用される。プリンタエンジン部２０５は、熱エネルギーを利用してインク液を吐出するプリントエンジンであるが、記録方式はこれにより限定されるものではない。
【００２２】
図３は、本実施形態に係るデジタルカメラ３００の内部構成例を示すブロック図である。
図３において、撮像部３０１は、主としてレンズ及びその駆動系で構成される光学ユニット、ＣＣＤ素子などで構成されている。信号処理部３０２は、撮像部３０１において生成された画像信号に所定の画像処理を施し、デジタル画像データを生成するためのものである。ＵＳＢデバイスコントローラ３０３はＵＳＢのスレーブ側であり、ＰＣ或いはＰＤプリンタ１００と接続するためのＵＳＢインターフェース制御部である。ＵＳＢコネクタ３０４は、mini-Bレセプタクルで構成されるコネクタであり、図１（ｂ）に示す接続端子１２３に相当する。
【００２３】
カードインターフェース３０５はメモリカードなどの記憶メディア３０６を接続するためのコネクタである。ＶＲＡＭ３０７は、ＬＣＤモニタなどの液晶表示部３０８に表示する表示データを作成するためのワークエリアであり、撮影した画像を確認したり、各種設定を行う際のメニューを表示したりするために使用される。ＣＰＵ３０９は、デジタルカメラ３００全体の制御を司るものであり、フラッシュＲＯＭ３１０は、ＣＰＵ３０９の動作処理を実行させるためのプログラムを記憶している。また、ＲＡＭ３１１は、ＣＰＵ３０９のワークエリアとして使用されるものである。操作部材３１３は各種操作を行うスイッチ群であり、ＳＷ制御部３１２は操作部材３１３の制御を行うためのものである。
【００２４】
図４は、本実施形態に係るデジタルテレビ（ＴＶ）４００の主要な内部構成例を示すブロック図である。
図４において、デジタルテレビ４００はシステムコントローラ４０１を備えており、システムコントローラ４０１が実行するプログラムや、画像データ、必要なデータ等は記憶装置４０２に記憶されている。
【００２５】
図４に示す構成において、放送波は、アンテナ４０３を介してチューナ４０４に送られ、高周波処理及び復調が行われる。チューナ４０４から出力される信号（パケット）はＤＥＭＵＸ回路４０５に送られ、パケットの復号が行われる。ＤＥＭＵＸ回路４０５において、パケットはＭＰＥＧデータと番組情報等の付属情報とに分別される。そして、ＤＥＭＵＸ回路４０５によって分別されたＭＰＥＧデータはＡＶデコーダ４０６に送られ、もう一方の付属情報はシステムコントローラ４０１に送られる。
【００２６】
システムコントローラ４０１は、ＤＥＭＵＸ回路４０５から送られてきた付属情報を記憶装置４０２に格納する。また、システムコントローラ４０１には、上下左右カーソルキー、決定キーを含む複数のキーが設けられた不図示のリモコン送信機から、リモコン受信機４０７を介してリモコン信号が入力される。そして、入力されたリモコン信号に応じて、システムコントローラ４０１により、チューナ４０４及びＤＥＭＵＸ回路４０５へ選局のための情報等が送られる。また、システムコントローラ４０１により、各種操作画面をディスプレイ４０８にオンスクリーン表示させるためのＯＳＤ制御信号が、ＯＳＤ表示回路４０９に送られる。そして、ＯＳＤ表示回路４０９により、電子番組ガイド、メニュー等の表示データが生成され、ＯＳＤ信号としてマルチプレクサ（合成回路）４１０に送られる。
【００２７】
一方、ＡＶデコーダ４０６においては、ＤＥＭＵＸ回路４０５から送られてきたＭＰＥＧデータが復調される。そして、ＡＶデコーダ４０６によって得られた映像信号は、映像処理回路４１１を介してマルチプレクサ４１０に送られる。マルチプレクサ４１０においては、映像処理回路４１１から出力された映像信号にＯＳＤ表示回路４０９から送られてきた表示データがスーパーインポーズ処理され、映像出力回路４１２に送られる。映像出力回路４１２から出力された映像信号は、ディスプレイ４０８に送られて映像として表示される。
【００２８】
一方、ＡＶデコーダ４０６によって得られた音声信号は、音声処理回路４１３に出力され、音声出力回路４１４を介してスピーカ４１５に送られる。ＵＳＢホストコントローラ４１６はＵＳＢのホスト側であり、本実施形態におけるＰＤプリンタ１００やデジタルカメラ３００と接続するためのＵＳＢインターフェース制御部である。ＵＳＢコネクタ４１７は、Ａレセプタクルで構成されるコネクタであり、図１（ｂ）に示す接続端子１２６に相当する。
【００２９】
デジタルテレビ４００とデジタルカメラ３００とをＵＳＢケーブルで接続する場合、デジタルテレビ４００がホストになり、スレーブであるデジタルカメラ３００から画像データを受信することができる。この場合、受信した画像データは記憶装置４０２に格納される。また、受信した画像データはシステムコントローラ４０１によりＡＶデコーダ４０６に送られ、ＡＶデコーダ４０６により画像データが復調されて表示用の表示イメージに変換される。その後、ＭＰＥＧデータと同様に映像処理回路４１１を介してマルチプレクサ４１０に送られ、最終的に映像信号としてディスプレイ４０８に送られる。
【００３０】
一方、デジタルテレビ４００とＰＤプリンタ１００とをＵＳＢケーブルで接続する場合、デジタルテレビ４００がホストになり、ＰＤプリンタ１００がスレーブとなる。すなわち、デジタルテレビ４００のＵＳＢコネクタ４１７と、ＰＤプリンタ１００の第２のＵＳＢコネクタ２１３とを第２のＵＳＢケーブル１２４により接続することとなる。これにより、デジタルテレビ４００は、ＵＳＢコネクタ４１７を介してＰＤプリンタ１００から画像データを受信することができる。この場合、受信した画像データは記憶装置４０２に格納される。また、受信した画像データは、前述した手順と同様に、最終的に映像信号としてディスプレイ４０８に送られる。
【００３１】
また、後述するように、ダイレクトプリント方式を拡張して、デジタルテレビ４００の記憶装置４０２に記憶された画像データをＰＤプリンタ１００において印刷することもできる。さらには、図１（ｂ）に示したデジタルカメラ３００とＰＤプリンタ１００とを第１のＵＳＢケーブル１２０により接続するとともに、ＰＤプリンタ１００とデジタルテレビ４００とを第２のＵＳＢケーブル１２４により接続した場合は、以下のようになる。この場合、ＰＤプリンタ１００を介して、デジタルカメラ３００の記憶メディア３０６に保持されている画像データをデジタルテレビ４００が受信することができる。また、ダイレクトプリント方式をさらに拡張して、デジタルテレビ４００の制御により、デジタルカメラ３００の記憶メディア３０６に保持されている画像データをＰＤプリンタ１００において印刷することができる。さらには、デジタルテレビ４００の制御により、ＰＤプリンタ１００の記憶メディア２１０に保持されている画像データをＰＤプリンタ１００において印刷するといった多種多様な使い方が可能である。
【００３２】
図５は、本実施形態に係るＰＤプリンタ１００、デジタルカメラ３００及びデジタルテレビ４００をダイレクト接続した際のレイヤー構造の一例を示す図である。
図５において、デジタルカメラ３００のＵＳＢスレーブ機能５０１とＰＤプリンタ１００のＵＳＢホスト機能５０２とがＵＳＢ通信方式により接続されている。また、ＰＤプリンタ１００のＵＳＢスレーブ機能５０３とデジタルテレビ４００のＵＳＢホスト機能５０４がＵＳＢ通信方式により接続されている。
【００３３】
図５に示すレイヤー構造において、ＵＳＢケーブルを用いて通信する場合、周知のＰＴＰ（Picture Transfer Protocol）を用いることになる。デジタルカメラ３００では、記憶メディア３０６に保持されている画像データを操作するファイルシステムレイヤーが記憶メディア３０６の上位に位置する。また、ＵＳＢスレーブ機能５０１の上位にＰＴＰのResponder側のレイヤーが位置する。さらに、ファイルシステムレイヤー、及びＰＴＰのResponder側のレイヤーの上位に、画像データ提供アプリケーション５０５が実装されている。
【００３４】
画像データ提供アプリケーション５０５には、ファイルシステムレイヤーが提供する画像データを操作するための機能を用いて、ＰＴＰコマンドによる画像データの操作機能が実装されている。以上のレイヤー構成により、第１のＵＳＢケーブル１２０により接続されているＰＤプリンタ１００から、ＰＴＰ仕様で定められているプロトコルに従って、デジタルカメラ３００の記憶メディア３０６に保持されている画像データを操作することが可能である。また、ダイレクトプリントを行うためのプロトコルレイヤー５０６は、ＰＴＰのResponder側のレイヤーの上位に位置し、ダイレクトプリントのプロトコルで定義されているスクリプトの送受信機能をＰＴＰのプロトコルを用いて実現している。
【００３５】
ＰＤプリンタ１００では、記憶メディア２１０に保持されている画像データを操作するファイルシステムレイヤーが記憶メディア２１０の上位に位置する。また、ＵＳＢホスト機能５０２の上位に位置するＰＴＰのInitiator側のレイヤーは、ＵＳＢ接続されているデジタルカメラ３００の記憶メディア３０６に保持された画像データの操作機能を提供する。さらに、ファイルシステムレイヤー、及びＰＴＰのInitiator側のレイヤーの上位には画像データ管理アプリケーション５０７が位置する。画像データ管理アプリケーション５０７は、ＵＳＢケーブルにより接続されているデジタルカメラ３００に保持されている画像データ、及びＰＤプリンタ１００の記憶メディア２１０に保持されている画像データを管理している。
【００３６】
また、ＰＤプリンタ１００では、ＵＳＢスレーブ機能５０３の上位にＰＴＰのResponder側のレイヤーが位置する。さらに、ファイルシステムレイヤー、ＰＴＰのResponder側のレイヤー、及びＰＴＰのInitiator側のレイヤーの上位に画像データ提供アプリケーション５０８が実装されている。画像データ提供アプリケーション５０８には、ファイルシステムレイヤーが提供する画像データを操作するための機能を用いて、ＰＴＰコマンドによる画像データの操作機能が実装されている。また、ＰＴＰのInitiator側のレイヤーを介して、第１のＵＳＢケーブル１２０により接続されているデジタルカメラ３００の記憶メディア３０６に保持されている画像データの操作機能が実装されている。
【００３７】
ダイレクトプリントのためのプロトコルレイヤー５０９は、ＰＴＰのResponder側のレイヤー、及びＰＴＰのInitiator側のレイヤーの上位に位置する。これにより、ダイレクトプリントのプロトコルで定義されているスクリプトの送受信機能をＰＴＰのプロトコルを用いて実現している。例えば、ダイレクトプリントのプロトコルレイヤー５０９が、第１のＵＳＢケーブル１２０により接続されているデジタルカメラ３００との間でダイレクトプリントのためのスクリプトを送受信する。これによって、デジタルカメラ３００の記憶メディア３０６に保持されている画像データを印刷することができる。また、例えば、ダイレクトプリントのプロトコルレイヤー５０９が、第２のＵＳＢケーブル１２４により接続されているデジタルテレビ４００との間でダイレクトプリントのためのスクリプトを送受信する。これによって、デジタルテレビ４００が管理する画像データを印刷することができる。
【００３８】
デジタルテレビ４００では、ＵＳＢホスト機能５０４の上位にＰＴＰのInitiator側のレイヤーが位置する。ＰＴＰのInitiator側のレイヤーは、第２のＵＳＢケーブル１２４により接続されているＰＤプリンタ１００の画像データ提供アプリケーション５０８が提供する画像データを操作するための機能を提供する。また、ＰＴＰのInitiator側のレイヤーの上位には画像データ管理アプリケーション５１０が位置する。画像データ管理アプリケーション５１０は、第２のＵＳＢケーブル１２４により接続されているＰＤプリンタ１００の記憶メディア２１０に保持されている画像データを管理している。さらに、ＰＤプリンタ１００を介して第１のＵＳＢケーブル１２０により接続されているデジタルカメラ３００に保持されている画像データをも管理している。また、図５には示していないが、デジタルテレビ４００の記憶装置４０２に保持されている画像データも管理している。ダイレクトプリントのためのプロトコルレイヤー５１１は、ＰＴＰのInitiator側のレイヤーの上位に位置する。これにより、ダイレクトプリントのプロトコルで定義されているスクリプトの送受信機能をＰＴＰのプロトコルを用いて実現している。
【００３９】
図６（ａ）は、ＰＴＰによる一般的な通信手順の一例を示す図である。容易に説明するため、本実施形態のＰＤプリンタ１００とデジタルカメラ３００とが接続された場合について説明する。この場合、ＰＤプリンタ１００がホストであり、デジタルカメラ３００がスレーブである。
まず、手順６００において、ＰＤプリンタ１００からデジタルカメラ３００に対してＰＴＰのコマンド"GetDeviceInfo"を送信する。この段階では、ＰＤプリンタ１００は、接続されているデバイスが不明であるため、接続されているデバイスを問い合わせるものである。これに対して手順６０１において、デジタルカメラ３００は、コマンド"DeviceInfo Dataset"により、デジタルカメラ３００に関する情報をＰＤプリンタ１００に送信（通知）する。
【００４０】
次に、手順６０２において、ＰＤプリンタ１００は、ＰＴＰコマンド"OpenSession"により、デジタルカメラ３００をリソースとして割り当てる。そして、必要に応じてデータオブジェクトにハンドル番号を割り当てたり、特別な初期化を行ったりするための手順を開始する。デジタルカメラ３００からＯＫのレスポンスを受け取ると、手順６０３において、ＰＤプリンタ１００は、デジタルカメラ３００に対してハンドル番号を要求する。これは、ＰＤプリンタ１００が、デジタルカメラ３００が有する未知のオブジェクト（撮影画像データやスクリプト等）を特定するため、デジタルカメラ３００が所有するオブジェクトにユニークに付けられた識別ＩＤを要求するものである。この要求により、手順６０４において、デジタルカメラ３００は、保持しているハンドルリストを返送する。以上の結果、ＰＤプリンタ１００では、デジタルカメラ３００がいくつのオブジェクトを保持しているのかが判明する。
【００４１】
この後、ＰＤプリンタ１００側が、ｉ番目のオブジェクトが何であるのかを問い合わせる場合には、ｉ番目のオブジェクトに関する属性情報（そのオブジェクトが画像であるのか、スクリプト等のテキストであるのか等の情報）を要求する。具体的には、手順６０５において、コマンド"GetObjectInfo(i)"を送信し、デジタルカメラ３００からその結果をコマンド"ObjectInfo i Dataset"として受信する。この手順を繰り返すことにより、ＰＤプリンタ１００側は、デジタルカメラ３００が所有している全てのオブジェクトの属性を知ることができる。また、属性が画像データである場合には、手順６０６において、ＰＤプリンタ１００は、その画像データを示すハンドル番号を用いて、コマンド"GetObject(i)"を発行する。その結果、デジタルカメラ３００からコマンド"Object i Data"として受信することにより画像データを得ることができる。
【００４２】
図６（ｂ）は、ダイレクトプリントのプロトコルであるＤＰＳ方式による一般的な通信手順の一例を示す図である。図６（ｂ）に示すものは、デジタルカメラ３００からＰＤプリンタ１００に対してプリント要求を発行して印刷を行う場合の大まかな信号フローを説明している。また、この処理手順は、ＰＤプリンタ１００とデジタルカメラ３００とが第１のＵＳＢケーブル１２０により接続され、互いにＤＰＳ仕様に準拠していることを確認した後に実行される。
【００４３】
まず、手順６２０において、デジタルカメラ３００は、コマンド"Configure Print Service"をＰＤプリンタ１００に送信して、ＰＤプリンタ１００の状態をチェックする。これに対してＰＤプリンタ１００は、手順６２１において、その時点でのＰＤプリンタ１００の状態（ここでは「アイドル」状態）を通知する。ここでは「アイドル」状態であるため、手順６２２において、デジタルカメラ３００はＰＤプリンタ１００のCapabilityを問い合わせる。そして、手順６２３において、そのCapabilityに応じた印刷開始要求"Start Job"を発行する。
【００４４】
このプリント開始要求に対してＰＤプリンタ１００は、手順６２４において、印刷が指示された画像データのハンドル番号に基づいてＰＴＰのコマンド"GetObjectInfo"により画像データ情報をデジタルカメラ３００に要求する。これに応答してデジタルカメラ３００は、手順６２５において、"ObjectInfo Dataset"としてその画像データ情報を送信する。ここで、画像データ情報にはファイル容量等の情報が含まれるものとする。そして、手順６２６において、ＰＤプリンタ１００は、その画像データ情報を受信して処理可能であると判断すると、その画像データをＰＴＰのコマンド"GetObject"によりデジタルカメラ３００に要求する。この結果、手順６２７において、デジタルカメラ３００は、"ObjectData"としてその要求された画像データをＰＤプリンタ１００に送る。これにより、ＰＤプリンタ１００は印刷処理を開始する。
【００４５】
そして、手順６２８においては、印刷中（Printing）であることを示すステータス情報を、ＰＤプリンタ１００からデジタルカメラ３００にコマンド"Notify Device Status"により送る。そして、１頁の印刷処理が終了すると、手順６２９において、次のページの処理開始時に、ＰＤプリンタ１００からコマンド"Notify Job Status"により、１頁の印刷が終了したことを通知する。なお、１頁だけの印刷である場合は、その印刷要求した１頁の印刷が終了すると、手順６３０において、コマンド"Notify Device Status"によりＰＤプリンタ１００が「アイドル」状態になったことを通知する。
【００４６】
図７は、デジタルカメラ３００からＰＤプリンタ１００に対して発行される印刷開始要求のメッセージの一例を示す図である。このようにＤＰＳではスクリプト形式で記述されたメッセージをやりとりすることにより、ダイレクトプリントによる印刷を実現している。図７において、７２０は、この印刷ジョブのコンフィグレーション（JobConfig）を示し、７２１はプリント情報（printInfo）を示している。
【００４７】
まず、コンフィグレーション７２０について説明する。７００は印刷する画質（quality）を示し、例えば「標準」、「高画質」などがある。７０１は用紙サイズ（paperSize）、７０２は用紙タイプ（paperType）を示し、例えば「普通紙」、「写真用紙」、「インクジェット専用紙」などがある。７０３は印刷する画像ファイルのタイプ（fileType）を指定するものであり、例えばＤＰＯＦに基づくものである場合は、この画像ファイルのタイプが指定される。７０４は日付印刷の有無（datePrint）を示し、７０５はファイル名の印刷の有無（fileNamePrint）を示している。また、７０６は画像最適化を行うかどうか（imageOptimize）を示し、７０７は固定サイズの印刷にするか否か（fixedSize）を示す。さらに、７０８は画像の指定された範囲の印刷を行うかどうか（cropping）を示している。また、プリント情報７２１は、画像ハンドルＩＤ（fileID）７０９と、日付情報（date）７１０とが含まれている。
【００４８】
図８（ａ）は、スレーブからホストに対してＤＰＳのメッセージであるスクリプトを送信する通信手順の一例を示す図である。
まず、手順８００において、スレーブからホストに対して、ＰＴＰで定義されるイベント通知を示すコマンド"RequestObjectTransfer"を発行する。これによりＰＴＰのコマンド"GetObject"の動作を起動したい旨を伝える。そして、手順８０１において、ホストからオブジェクトに関する情報を受信する旨がコマンド"GetObjectInfo"により伝えられる。
【００４９】
次に、手順８０２において、スレーブからコマンド"ObjectInfo Dataset"により、そのオブジェクトに関する情報を返送する。そして、手順８０３において、さらに成功を示すＯＫのコマンドをホストに送信する。次に、手順８０４において、ホストはスレーブに対してオブジェクトそのものを要求する。そして、手順８０５において、"ObjectData"として目的のスクリプトが送信されると、手順８０６において、さらに成功を示すＯＫのコマンドを送信する。
【００５０】
図８（ｂ）は、逆にホストからスレーブに対してＤＰＳのメッセージであるスクリプトを送信する通信手順の一例を示す図である。
まず、手順８２０、８２１において、ホストからスレーブに対して、ＰＴＰのコマンド"SendObjectInfo"により、送信したいスクリプトがあることを通知する。これに対して、手順８２２において、肯定応答（ＯＫ）がスレーブから送られてくると、手順８２３において、ＰＴＰのコマンド"SendObject"によりオブジェクトを送信する旨をスレーブに伝える。そして、次の手順８２４において、"ObjectData"として目的のスクリプトを送信する。これにより、手順８２５において、スレーブから成功を示すＯＫが送信される。
【００５１】
本実施形態におけるＰＤプリンタ１００とデジタルカメラ３００との間で、ダイレクトプリントによる印刷を実行する際には、ダイレクトプリントのプロトコルであるＤＰＳ方式を利用している。この場合、前述したようにＰＤプリンタ１００がホストとなり、デジタルカメラ３００がスレーブとなる。図６（ｂ）に示したＰＤプリンタ１００が発行するイベントのコマンド"Notify Device Status"や"Notify Job Status"のスクリプトは図８（ｂ）に示した通信手順に従って送信される。また、図６（ｂ）に示したデジタルカメラ３００が発行するリクエストのコマンド"Configure Print Service"や"Start Job"のスクリプトは、図８（ａ）に示した通信手順に従って送信される。
【００５２】
さらに、本実施形態におけるＰＤプリンタ１００は、ＵＳＢスレーブ機能５０３を備えており、ＵＳＢホスト機能５０４を備えたデジタルテレビ４００との間で、ダイレクトプリントによる印刷を行うことができる。この場合、ＤＰＳ方式で定められた手順と異なり、ＰＤプリンタ１００が発行するイベントのコマンド"Notify Device Status"や"Notify Job Status"のスクリプトは、図８（ａ）に示した通信手順に従って送信される。また、デジタルテレビ４００が発行するリクエストのコマンド"Configure Print service"や"Start Job"のスクリプトは、図８（ｂ）に示した通信手順に従って送信される。
【００５３】
このように、本実施形態のＰＤプリンタ１００は、ダイレクトプリントのプロトコルレイヤーによれば、スレーブとの間で印刷する場合と、ホストとの間で印刷する場合とで、同じ種類のスクリプトを送受信可能なように構成されている。したがって、例えばＰＣなどから指示して印刷するための通信手順やＤＰＳのダイレクトプリントのプロトコルのように、全く別々のプロトコルで実現する場合と比べてプロトコルを実現するためのプログラムを共通化できる。このため、デジタルテレビ４００においてプリンタドライバを不用にし、デジタルテレビ４００との通信を簡単に行うことができるとともに、プログラムを格納するＲＯＭ領域を少なくすることができる。例えば、デジタルカメラ３００とやりとりするスクリプトと、デジタルテレビ４００とやりとりするスクリプトとを共通化できるため、別々のプロトコルで実現する場合と比べて図２に示すＤＰＳスクリプトデータ２１１を記憶する領域を節約することができる。
【００５４】
また、前述したようにＰＤプリンタ１００は、通常のＰＣプリンタとして機能するために、ＵＳＢデバイスコントローラ２０７及び第２のＵＳＢコネクタ２１３を備えている。したがって、ＵＳＢスレーブ機能５０３を介してダイレクトプリントのスクリプトデータを送受信可能なように実行プログラムを構成することによって、デジタルテレビなどＵＳＢホスト機能を備えた機器との間でもダイレクトプリントによる印刷が可能になる。このようにデジタルテレビと接続するための、新たな通信インターフェース手段を加える必要がないため、既存のＤＰプリンタと比べて大幅なコストアップをせずに実現できる。
【００５５】
図９は、本実施形態のＰＤプリンタ１００とデジタルテレビ４００との間でダイレクトプリントするための接続が確立されるまでの通信手順の一例を示す図である。
まず、手順９００において、ホストであるデジタルテレビ４００の標準リクエストとしてコマンド"SetAddress"により、ＰＤプリンタ１００に対してＵＳＢデバイスアドレスを割り振る。スレーブであるＰＤプリンタ１００は、以降このＵＳＢデバイスアドレスにより送られてくるＵＳＢパケットに応答する。
【００５６】
次に、手順９０１において、デジタルテレビ４００は、標準リクエストとしてコマンド"GetDescriptor"により、ＰＤプリンタ１００にデバイス情報、インターフェース情報などを要求する。そして、手順９０２において、ＰＤプリンタ１００は、要求された情報をデジタルテレビ４００に送信する。本実施形態のＰＤプリンタ１００は、通常のＰＣプリンタとして動作するとともに、ＰＴＰのResponderとしても動作する。そのため、ＵＳＢのプリンタクラスのコンフィグレーションと、ＵＳＢのＰＴＰプロトコル（Still Image Class）のコンフィグレーションとを備えている構成となっている。したがって、ＰＣと接続した場合、ＰＣはプリンタクラスとしてコンフィグレーションを設定することができる。一方、ダイレクトプリント機能に対応したホストと接続した場合は、Still Image Classとしてコンフィギュレーションを設定することができる。
【００５７】
コマンド"GetDescriptor"の標準リクエストにより取得できる情報から、ホストであるデジタルテレビ４００はＵＳＢケーブルで接続されている機器がＰＴＰプロトコルを実装したデバイスであることを認識する。そこで、手順９０３において、標準リクエストとしてコマンド"SetConfigutation"により、デジタルテレビ４００は、ＰＤプリンタ１００に対して、ＵＳＢ機器としてのコンフィグレーションを設定する。これにより、手順９０４において、ＰＤプリンタ１００は肯定応答であるＯＫを返す。
【００５８】
次に、手順９０５において、デジタルテレビ４００はＰＤプリンタ１００に対してＰＴＰのコマンド"GetDeviceInfo"を送信する。この段階では、デジタルテレビ４００は、接続されているデバイスがＰＴＰに対応していることは認識しているが、使用可能なＰＴＰのコマンドなど、デバイスとしての属性情報が不明であるので、その属性情報について問い合わせている。これに対してＰＤプリンタ１００は、手順９０６において、コマンド"DeviceInfo Dataset"により、ＰＤプリンタ１００に関する情報をデジタルテレビ４００に送信（通知）する。
【００５９】
次に、手順９０７において、ＰＴＰのコマンド"OpenSession"により、ＰＤプリンタ１００をリソースとして割り当て、必要に応じてオブジェクト（画像データ等）にハンドル番号を割り当てるなど、特別な初期化を行うための手順を開始する。そして、手順９０８において、ＰＤプリンタ１００が肯定応答であるＯＫを返すと、手順９０９において、ＰＤプリンタ１００に対してハンドル番号を要求する。これは、デジタルテレビ４００が、ＰＤプリンタ１００が有するオブジェクトを特定するための通信であり、ＰＤプリンタ１００が所有するオブジェクトにユニークに付けられた識別ＩＤを要求するものである。この要求により、手順９１０において、ＰＤプリンタ１００は、デジタルカメラ３００に保持されているオブジェクトのハンドルリストを返送する。以上の結果、デジタルテレビ４００は、ＰＤプリンタ１００がいくつのオブジェクトを保持しているのかを知ることができる。
【００６０】
このネゴシエーションでは、双方が互いにダイレクトプリント機能を有するものであるのか否かを判定することが重要である。そして、この判定を行うために予め決められたスクリプトを問い合わせ、相手より意図した結果が返ってきた場合に、双方においてダイレクトプリントモードに移行する。したがって、デジタルテレビ４００としては、ＰＤプリンタ１００が保持しているオブジェクトの中で、その属性がスクリプトである属性を有するオブジェクトを探し出す必要がある。
【００６１】
そこで、手順９２０において、デジタルテレビ４００は、ハンドルｉのオブジェクトについてその属性が何であるのかを問い合わせるためのＰＴＰコマンド"GetObjectInfo（Handle i）"をＰＤプリンタ１００に送信する。その結果、返送されてくるｉ番目の属性（ObjectInfo i Dataset）を受信することによってｉを順番に指定しながら繰り返す。さらに、手順９２１において、デジタルテレビ４００は、ハンドルｉのオブジェクトについてそのオブジェクト自身を取得するためのＰＴＰのコマンド"GetObject（Handle i）"をＰＤプリンタ１００に送信する。その結果、返送されてくるｉ番目のオブジェクトデータ（Object i Dataset）を受信することによりｉを順番に指定しながら繰り返す。以上の手順により、ダイレクトプリント機能を有することを示すスクリプトが見つかると、デジタルテレビ４００は接続された機器がダイレクトプリントに対応していることを知ることができる。
【００６２】
そこで今度は、デジタルテレビ４００がダイレクトプリント機能を有することを示すスクリプトを通知することになる。まず、手順９１１及び手順９１２において、送信するスクリプトオブジェクトの属性情報をＰＴＰコマンド"SendObjectInfo"によって送信する。そして、手順９１３及び手順９１４において、送信するスクリプトオブジェクトをＰＴＰのコマンド"SendObject"によって送信する。以上の手順の結果、双方ともダイレクトプリントに対応するデバイスであることがわかり、デジタルテレビ４００とＰＤプリンタ１００との間でダイレクトプリントの接続が確立される。
【００６３】
図１０は、ダイレクトプリントのプロトコルであるＤＰＳ方式を拡張した形式で実現された、デジタルテレビ４００とＰＤプリンタ１００との間のダイレクトプリントの通信手順の一例を示す図である。図１０には、デジタルテレビ４００からＰＤプリンタ１００に対してプリント要求を発行して印刷する場合の大まかな流れを示している。なお、この処理手順は、ＰＤプリンタ１００とデジタルテレビ４００とが第２のＵＳＢケーブル１２４を介して接続された後、図９に示す手順で互いにダイレクトプリント機能を有していることを確認した後に実行される。
【００６４】
まず、手順１０００において、デジタルテレビ４００は、コマンド"Configure Print Service"をＰＤプリンタ１００に送信し、ＰＤプリンタ１００の状態をチェックする。これに対してＰＤプリンタ１００は、手順１００１において、その時点でのＰＤプリンタ１００の状態（ここでは「アイドル」状態）をデジタルテレビ４００に通知する。この時点では、ＰＤプリンタ１００が「アイドル」状態であるため、手順１００２において、デジタルテレビ４００はＰＤプリンタ１００のCapabilityを問い合わせる。そして、手順１００３において、そのCapabilityに応じたプリント開始要求（Start job）を発行する。
【００６５】
このプリント開始要求に対してＰＤプリンタ１００は、手順１００４において、印刷が指示された画像データの画像ハンドルに基づいて拡張されたＰＴＰの通知であるコマンド"RequestSendObject"を発行する。そして、ＰＴＰのコマンド"SendObject"の動作を起動したい旨を伝える。これにより、次の手順１００５において、デジタルテレビ４００は、オブジェクト情報を送信する旨をコマンド"SendObjectInfo"により伝え、手順１００６において、コマンド"ObjectInfo Dataset"によりその情報を送信する。
【００６６】
次に手順１００７において、デジタルテレビ４００は、オブジェクトそのものを送信する旨を伝え、手順１００８において、コマンド"ObjectData"により目的のオブジェクト（画像データ）をＰＤプリンタ１００に送る。これによりＰＤプリンタ１００は印刷処理を開始し、手順１００９において、ＰＤプリンタ１００は「印刷中（Printing）」を示すステータス情報をコマンド"Notify Device Status"によりデジタルテレビ４００に送る。そして、１頁のプリント処理が終了すると、手順１０１０において、ＰＤプリンタ１００は、次のページの処理開始時にＰＤプリンタ１００からコマンド"Notify Job Status"により、その旨をデジタルテレビ４００に通知する。なお、１頁だけの印刷である場合は、そのプリント要求した１頁の印刷が終了すると、手順１０１１において、コマンド"Notify Device Status"により、ＰＤプリンタ１００は「アイドル」状態になったことをデジタルテレビ４００に通知する。
【００６７】
図１１は、ＰＤプリンタ１００とデジタルカメラ３００とを第１のＵＳＢケーブル１２０により接続し、次にデジタルテレビ４００とＰＤプリンタ１００とを第２のＵＳＢケーブル１２４により接続したときの通信手順及び各機器の動作の一例を示す図である。前述したように、この接続形態では、ＰＤプリンタ１００は、デジタルカメラ３００の記憶メディア３０６に保持された画像データを操作することが可能である。また、デジタルテレビ４００は、ＰＤプリンタ１００の記憶メディア２１０に保持されている画像データと、ＰＤプリンタ１００を介して接続されているデジタルカメラ３００が保持する画像データとを操作することが可能である。
【００６８】
このとき、デジタルカメラ３００は記憶メディア３０６に保持されている画像データに対してユニークなハンドル番号を割り当てる。また、ＰＤプリンタ１００も記憶メディア２１０に保持されている画像データに対してユニークなハンドル番号を割り当てる。一方、デジタルテレビ４００は、ＰＤプリンタ１００の記憶メディア２１０に保持されている画像データと、デジタルカメラ３００の記憶メディア３０６に保持されている画像データとが、ユニークに割り当てられたハンドル番号で識別できるようにする必要がある。仮に、デジタルカメラ３００が割り当てたハンドル番号と、ＰＤプリンタ１００が割り当てたハンドル番号とをそのまま利用すると、同一のハンドル番号を持つ画像データが複数存在する可能性がある。この結果、画像データを送受信することが失敗する可能性がある。
【００６９】
そこで、本実施形態のＰＤプリンタ１００は以下のとおり動作する。まず、ＰＤプリンタ１００とデジタルカメラ３００とが最初に第１のＵＳＢケーブル１２０により接続される場合について説明する。この場合、まず手順１１００において、ＰＴＰのコマンド"GetNumObject(Image)"によりデジタルカメラ３００が保持する画像データの数を問い合わせる。デジタルカメラ３００では、手順１１２０において、ＣＰＵ３０９の制御によりカードインターフェース３０５を介して記憶メディア３０６に保持されている画像データのオブジェクト数を調査する。そして、手順１１０１において、オブジェクト数（Object Number）の情報をＰＤプリンタ１００に送信する。
【００７０】
次に、手順１１０２において、ＰＤプリンタ１００は、ＰＴＰのコマンド"GetObjectHandles(Image)"によりデジタルカメラ３００が保持する画像データのハンドル番号を要求する。そこで、デジタルカメラ３００は、手順１１２１において、記憶メディア３０６に保持されている画像データに対してハンドル番号を割り当てる。そして、手順１１０３において、ハンドルリストをＰＤプリンタ１００に返送する。なお、画像データに対するハンドル番号の割り当て動作は、デジタルカメラ３００の画像データ提供アプリケーション５０５によって行われる。
【００７１】
さらに、手順１１０４において、ＰＤプリンタ１００は、デジタルカメラ３００が使用する予定のハンドル番号を要求する。そして、手順１１０５において、デジタルカメラ３００は、ＵＳＢケーブル１２０による接続状態を保った状態で今後使用する可能性のあるハンドルリストを返送する。なお、図１１に示していないが、ＰＤプリンタ１００は、デジタルカメラ３００が保持するオブジェクトデータ（画像データ）のハンドル番号についても、割り当てられているハンドルリストと、今後使用する可能性のあるハンドルリストとを取得する。
【００７２】
次に、手順１１１６において、デジタルテレビ４００とＰＤプリンタ１００とが第２のＵＳＢケーブル１２４により接続されると、手順１１２２において、ＰＤプリンタ１００は、記憶メディア２１０に保持されている画像データに対してハンドル番号を割り当てる。このとき、手順１１０３及び手順１１０５において取得したハンドルリストに含まれるハンドル番号と重複しないように制御する。なお、デジタルカメラ３００の画像データに関するハンドルリストを管理したり、記憶メディア２１０に保持する画像データに対してハンドル番号を割り当てたりする動作は、管理手段として機能する画像データ管理アプリケーション５０７によって行われる。
【００７３】
デジタルテレビ４００は、図９に示す標準リクエストの処理により接続が確立されると、手順１１０６において、ＰＴＰのコマンド"GetNumObject(Image)"によりＰＤプリンタ１００が管理する画像データの数を問い合わせる。そして、手順１１０７において、ＰＤプリンタ１００は、手順１１０１により取得したデジタルカメラ３００のオブジェクト数とＰＤプリンタ１００の記憶メディア２１０に保持する画像データの数を足し合わせた数をObject Numberとして返送する。次に、手順１１０８において、デジタルテレビ４００は、ＰＴＰのコマンド"GetObjectHandles(Image)"によりＰＤプリンタ１００が管理する画像データのハンドル番号を要求する。そして、手順１１０９において、ＰＤプリンタ１００は、手順１１０３で取得したデジタルカメラ３００のハンドルリストと、手順１１２２で割り当てた記憶メディア２１０の画像データのハンドルリストとを１つにまとめたハンドルリストとして返送する。
【００７４】
その後、デジタルテレビ４００がハンドルｉを用いてオブジェクトに関する属性情報をコマンド"GetObjectInfo(i)"により要求したり、画像データをコマンド"GetObject(i)"により要求したりすることがある。この場合、ＰＤプリンタ１００は指定されたハンドルのオブジェクトに関する属性情報や画像データをデジタルテレビ４００に返送する。このとき、ＰＤプリンタ１００の画像データ提供アプリケーション５０８はハンドルｉの値により指定された画像データがデジタルカメラ３００に保持されているものか、ＰＤプリンタ１００に保持されているものかを判断する。前者の場合はデジタルカメラ３００から画像データを取得してデジタルテレビ４００に転送し、後者の場合は記憶メディア２１０から読み出してデジタルテレビ４００に転送するよう動作する。
【００７５】
すなわち、手順１１１０において、デジタルテレビ４００はＰＴＰのコマンド"GetObjectInfo(i)"によりオブジェクトに関する属性情報を要求する。そして、手順１１２３において、ハンドルｉの値からＰＤプリンタ１００が保持する画像データと判断した場合は、記憶メディア２１０から該当する画像データの属性情報を読み出す。そして、手順１１１１において、その画像データの属性情報（ObjectInfo i Dataset）をデジタルテレビ４００に返送する。
【００７６】
一方、手順１１１２に示すように、手順１１１０と同様にオブジェクトに関する属性情報を要求され、手順１１２４において、ハンドルｉの値からデジタルカメラ３００内の画像データと判断した場合は、以下のようになる。まず、手順１１１３において、同じハンドル値ｉを用いてコマンド"GetObjectInfo(i)"をデジタルカメラ３００に送信する。そして、手順１１１４において、デジタルカメラ３００は、ｉ番目の属性情報（ObjectInfo i Dataset）を記憶メディア３０６から読み出してＰＤプリンタ１００に送信する。そして、手順１１１５において、その属性情報をデジタルテレビ４００に送信する。
【００７７】
図１２（ａ）は、ＰＤプリンタ１００の画像データ管理アプリケーション５０７が管理手段として保持するハンドル番号のテーブルの一例を示す図であり、ハンドル番号の割り当て状況、及び割り当ての予定を示している。
図１２（ａ）において、項目１２００に示すハンドル番号"0x00000000"、及び項目１２０７に示すハンドル番号"0xFFFFFFFF"は、ＰＴＰ仕様で特別な意味を持つものであり、予約済みを意味している。項目１２０５は、ＰＤプリンタ１００の記憶メディア２１０に保持する画像データに振り分けるための第１の識別ＩＤ群である。また、項目１２０１及び項目１２０３は、デジタルカメラ３００の記憶メディア３０６に保持する画像データに振り分けられた第２の識別ＩＤ群である。すなわち、項目１２０１及び項目１２０３に示すハンドル番号は、デジタルカメラ３００が図１１の手順１１０３により返送した現在使用中のハンドルリストに記述された番号である。
【００７８】
項目１２０２及び項目１２０４に示すハンドル番号は、デジタルカメラ３００が図１１の手順１１０５により返送した今後使用する可能性のあるハンドルリストに記述された番号である。ＰＤプリンタ１００は、項目１２００〜項目１２０４、及び項目１２０７に示すハンドル番号を除いたハンドル番号を、記憶メディア２１０に保持する画像データに対して項目１２０５に割り当てる。また、項目１２０６に示す未使用のハンドル番号はＰＤプリンタ１００で今後付与する可能性があるハンドル番号として保持する。
【００７９】
このように、本実施形態におけるＰＤプリンタ１００は、デジタルカメラ３００が使用していないハンドル番号を、ＰＤプリンタ１００の記憶メディア２１０に保持されている画像データに対して割り当てるよう動作する。このため、デジタルカメラ３００が保持する画像データに対して、デジタルテレビ４００に表示するために新たなハンドル番号を割り当てる必要がなく、ハンドル番号を割り当てる時間を短縮することができる。また、ＰＤプリンタ１００がデジタルテレビ４００に表示するためのハンドル番号と、デジタルカメラ３００が返送したハンドル番号との対応づけをするための変換テーブルを備える必要がない。そのため、内部のＲＡＭ２０３のメモリ消費量を低減することができる。
【００８０】
また、デジタルカメラ３００に大量の画像データが保持されていた場合、変換テーブルの領域もそれだけ大きくなる。特にこのような場合、デジタルテレビ４００が指定するハンドル番号をデジタルカメラ３００が返送したハンドル番号に変換すると、変換するためにハンドル番号を探索する時間が多くかかるという問題も低減できる。さらに本実施形態のＰＤプリンタ１００は、デジタルカメラ３００に対して今後使用する可能性のあるハンドルリストを予め問い合わせる。このため、デジタルカメラ３００とＰＤプリンタ１００とで第１のＵＳＢケーブル１２０により接続された状態で、デジタルカメラ３００に新たな画像データが保存された場合でも、ハンドル番号は重複しないようにすることができる。すなわち、新たな画像データに対してデジタルカメラ３００が割り当てたハンドル番号は、ＰＤプリンタ１００の記憶メディア２１０に保持されている画像データのハンドル番号と重複しない。
【００８１】
図１３は、本実施形態におけるＰＤプリンタ１００において、まずデジタルカメラ３００とＰＤプリンタ１００とが第１のＵＳＢケーブル１２０により接続された場合の動作手順の一例を示すフローチャートである。なお、図１３に示す各処理は、ＣＰＵ２０１の制御により行われる。
まず、ステップＳ１３００において、デジタルカメラ３００とＰＤプリンタ１００とが第１のＵＳＢケーブル１２０により接続されると処理を開始する。デジタルカメラ３００はダイレクトプリントを行うためのプロトコルレイヤー５０６を搭載している。そこで、ステップＳ１３０１において、ＲＯＭ２０２からダイレクトプリント機能を有することを示すＤＰＳスクリプトデータ２１１を検知する。そして、ＵＳＢホストコントローラ２０６によりダイレクトプリント接続を開始して接続を確立する。次に、ステップＳ１３０２において、ＵＳＢホストコントローラ２０６により第１のＵＳＢコネクタ２１２を介して、デジタルカメラ３００が保持している画像データのハンドルリストを取得する。
【００８２】
次に、ステップＳ１３０３において、ＵＳＢデバイスコントローラ２０７によりデジタルテレビ４００と接続されたか否かを判断する。この判断の結果、デジタルテレビ４００と接続された場合は、ステップＳ１３０４において、図１２（ａ）に示したハンドル番号のテーブルを作成する。そして、ステップＳ１３０５において、図１１に示す手順１１２２のように、記憶メディア２１０に保持する画像データに対してオブジェクトハンドル（ハンドル番号）を割り当てる。
【００８３】
次に、ステップＳ１３０６において、デジタルテレビ４００からコマンド"GetObjectHandles(Image)"を受信するまで待機する。そして、このコマンドを受信すると、ステップＳ１３０７において、デジタルカメラ３００のハンドルリストと、記憶メディア２１０に保持されている画像データのハンドルリストとを１つにまとめたハンドルリストをデジタルテレビ４００に返送する。そして、ステップＳ１３０８において、図９に示した手順に従い、デジタルテレビ４００との間でダイレクトプリント機能を有することを示すスクリプトを相互にやりとりし、ダイレクトプリント接続を確立する。
【００８４】
一方、ステップＳ１３０３の判断の結果、デジタルテレビ４００が接続されていない場合は、ステップＳ１３０９において、デジタルカメラ３００、あるいはデジタルテレビ４００からプリント要求スクリプトを受信したかどうかを判断する。この判断の結果、プリント要求スクリプトを受信した場合は、ステップＳ１３１０において、プリンタエンジン部２０５により印刷を実行する。このとき、デジタルカメラ３００からプリント要求スクリプトを受信した場合は、図６（ｂ）に示した通信手順に従って、印刷を実行する。一方、デジタルテレビ４００からプリント要求スクリプトを受信した場合は、図１０に示した通信手順に従って、印刷を実行する。
【００８５】
一方、ステップＳ１３０９の判断の結果、プリント要求スクリプトを受信していない場合は、ステップＳ１３１１において、デジタルテレビ４００から画像ファイル取得コマンドを受信したか否かを判断する。この判断の結果、画像ファイル取得コマンドを受信していない場合は、ステップＳ１３０３に戻り、画像ファイル取得コマンドを受信した場合は、ステップＳ１３１２に進む。
【００８６】
そして、ステップＳ１３１２において、画像ファイル取得コマンドと同時に送信されるハンドル番号を参照し、指定された画像データがデジタルカメラ３００に保持されているものか、ＰＤプリンタ１００に保持されているものかを判断する。この判断の結果、デジタルカメラ３００が保持するものである場合は、ステップＳ１３１３において、ＵＳＢホストコントローラ２０６によりデジタルカメラ３００から該当する画像データを取得する。そして、ステップＳ１３１５において、ＵＳＢデバイスコントローラ２０７により、取得した画像データをデジタルテレビ４００に転送する。一方、ステップＳ１３１２の判断の結果、ＰＤプリンタ１００が保持するものである場合は、ステップ１３１４において、記憶メディア２１０からカードインターフェース２０９を介して該当する画像データを読み出す。そして、ステップＳ１３１５に進み、同様にデジタルテレビ４００へ転送する。
【００８７】
このように、デジタルテレビ４００から、デジタルカメラ３００に保持されている画像データを転送するよう要求されることがある。本実施形態におけるＰＤプリンタ１００は、該当する画像データを転送している状態において、デジタルカメラ３００からプリント要求スクリプトを受信すると、印刷を実行することができる。
【００８８】
図１４は、ＰＤプリンタ１００、デジタルカメラ３００及びデジタルテレビ４００との間で画像データの送受信中に印刷処理を行う場合の通信手順の一例を示す図である。図１４においては、画像データの送受信の途中で印刷要求を受けた場合について説明する。
まず、手順１４００において、デジタルテレビ４００が、デジタルカメラ３００に保持されている画像データ（Image1とする）を取得するために、ＰＴＰのコマンド"GetObject(Image1)"をＰＤプリンタ１００に送信する。すると、ＰＤプリンタ１００は、手順１４０１において、画像データの部分データを取得するために、ＰＴＰのコマンド"GetPartialObject(Image1,Offset)"をデジタルカメラ３００に送信する。ここで、Offsetとは、画像データ上のオフセット値を表す。この取得する部分データのサイズと画像データ上のオフセット値とを指定して、ＰＴＰのコマンド"GetPartialObject"を連続して送信することによって、画像データを順に分割して取得することができる。
【００８９】
次に、手順１４０２において、デジタルカメラ３００は、返送する部分データ（Partial Object Data）をＰＤプリンタ１００に送信する。そして、手順１４０３において、受信した部分データをデジタルテレビ４００に返送する。同様に、手順１４０４において、次の部分データをデジタルカメラ３００に要求し、手順１４０５において、デジタルカメラ３００は、返送する部分データ（Partial Object Data）をＰＤプリンタ１００に送信する。そして、手順１４０６において、ＰＤプリンタ１００は、デジタルテレビ４００にその部分データを返送する。このように、目的の画像データの全データの返送が完了するまで、同様の手順を繰り返す。
【００９０】
なお、部分データを送信している途中で手順１４０７に示すように、デジタルカメラ３００によりプリント開始要求（Start Job）が発行されることがある。この場合、ＰＤプリンタ１００は画像データを取得するための通信手順よりも優先して、印刷するための通信手順を実行する。具体的には、プリント開始要求に対してＰＤプリンタ１００は、手順１４０８において、印刷が指示された画像データのハンドル番号に基づいてＰＴＰのコマンド"GetObjectInfo"により画像データ情報をデジタルカメラ３００に要求する。これに応答してデジタルカメラ３００は、手順１４０９において、その画像データ情報（ObjectInfo Dataset）を送信する。
【００９１】
ＰＤプリンタ１００は、その画像データ情報を受信し、印刷処理が可能であると判断すると、手順１４１０において、ＰＴＰのコマンド"GetObject"によりデジタルカメラ３００にその画像データを要求する。これに伴い、手順１４１１において、デジタルカメラ３００は、その要求された画像データ（ObjectData）をＰＤプリンタ１００に送る。
【００９２】
これにより、ＰＤプリンタ１００において印刷処理を開始し、手順１４１２において、「印刷中（Printing）」を示すステータス情報を、コマンド"Notify Device Status"としてデジタルカメラ３００に送る。そして、１頁の印刷処理が終了すると、次のページの処理を開始する時に、手順１４１３において、ＰＤプリンタ１００は、コマンド"Notify Job Status"によりデジタルカメラ３００にその旨を通知する。なお、１頁だけの印刷である場合には、そのプリント要求した１頁の印刷が終了すると、手順１４１３の代わりに手順１４１４を行う。すなわち、手順１４１４において、コマンド"Notify Device Status"によりＰＤプリンタ１００が「アイドル」状態になったことをデジタルカメラ３００に通知する。
【００９３】
このように、印刷するための通信手順が完了すると、手順１４１５及び手順１４１６において、続きの部分データに関してそれぞれ手順１４０６及び手順１４０７と同様の処理を行う。画像データの最後の部分データを、手順１４０６及び手順１４０７と同様に手順１４１８及び手順１４１９により取得すると、手順１４２０において、デジタルテレビ４００に画像データの最後の部分データを返送する。そして、手順１４２１で成功を示すＯＫをデジタルテレビ４００に送信して処理を終了する。なお、ＰＤプリンタ１００において印刷処理に時間が多くかかる場合は、手順１４１３によるプリント終了のステータス情報「Notify Job Status」の送信を待たずに、画像データを取得するための通信手順を再開してもよい。
【００９４】
ＰＴＰ仕様では、単一のＰＴＰコマンドを実行しているときに別のＰＴＰコマンドを並行して実行することができない。このため、手順１４００におけるコマンド"GetObject"に対して、ＰＤプリンタ１００からデジタルカメラ３００に対して、そのままＰＴＰのコマンド"GetObject"を実行してしまうと、不都合が生じる。すなわち、指定した画像データの取得が完了するまで、デジタルカメラ３００からプリント要求を処理することができない。
【００９５】
そこで、本実施形態のＰＤプリンタによれば、図１４に示すように、ＰＴＰのコマンド"GetPartialObject"を複数回に分けて実行している。このように画像データを取得するためのＰＴＰコマンドを分割して実行するため、画像データを取得している途中にデジタルカメラからプリント要求が発生した場合に、印刷処理のための通信手順を優先して処理することができる。したがって、ユーザーの操作性が向上する。
【００９６】
以上説明したように、本実施形態のＰＤプリンタによれば、デジタルテレビのようなホストと接続した場合でも、デジタルカメラのようなスレーブと接続した場合でもダイレクトプリントによる印刷が可能である。また、スレーブとの間でダイレクトプリントによる印刷を実行する場合と、ホストとの間でダイレクトプリントによる印刷を実行する場合とで、同じ種類のスクリプトを送受信可能なように構成されている。したがって、プロトコルを実現するためのプログラムを共通化でき、デジタルテレビ４００においてプリンタドライバを不用にし、デジタルテレビ４００との通信を簡単に行うことができるとともに、プログラムを格納するＲＯＭ領域を少なくすることができる。
【００９７】
また、ホストの先に接続されているスレーブに保持されている画像データをスレーブの先に接続されているホストから操作可能に構成されている。例えばホストからプリント要求を受けて印刷処理を実行しながら、ホストがＰＤプリンタの先に接続されているスレーブの画像データを閲覧することが可能である。
【００９８】
また、デジタルテレビとＰＤプリンタとをＵＳＢにより接続する場合には、ホスト役となる機器がスレーブ役となる機器に電源供給可能な仕様がＵＳＢ規格の中で定義されている。このことから、ホスト役となる機器に関して電源の心配が少ないように考慮することが適当である。その場合、バッテリ電源で動作するＰＤプリンタが存在することから、デジタルテレビがホスト役となった方が好ましい。
【００９９】
また、本実施形態のＰＤプリンタによれば、デジタルカメラにおいて使用されていないハンドル番号を、ＰＤプリンタの記憶メディアに保持されている画像データに対して割り当てる。これにより、ハンドル番号を重複して用いることによって画像データの送受信が失敗することを回避することができる。また、ハンドル番号を割り当てる時間を短縮するとともに、ハンドル番号同士の対応づけをするための変換テーブルを不要にし、内部のＲＡＭのメモリ消費量を低減することできる。
【０１００】
（第２の実施形態）
第１の実施形態では、まず、ＰＤプリンタ１００とデジタルカメラ３００とをＵＳＢケーブル１２０により接続し、次に、デジタルテレビ４００とＰＤプリンタ１００とをＵＳＢケーブル１２４により接続した。そして、このときの通信手順、各機器の動作、及びＰＤプリンタ１００の画像データ管理アプリケーション５０７が保持するハンドル番号のテーブルについて説明した。本実施形態では、まず、デジタルテレビ４００とＰＤプリンタ１００とを接続し、次にＰＤプリンタ１００とデジタルカメラ３００とを接続した場合の動作について説明する。なお、本実施形態におけるＰＤプリンタ１００、デジタルカメラ３００、デジタルテレビ４００の構成は第１の実施形態で説明したものと同様であるため、説明は省略する。
【０１０１】
図１５は、デジタルテレビ４００とＰＤプリンタ１００とを接続し、次にＰＤプリンタ１００とデジタルカメラ３００とを接続した場合の通信手順及び各機器の動作の一例を示す図である。
まず、デジタルテレビ４００とＰＤプリンタ１００とが最初にＵＳＢケーブル１２４により接続された場合について説明する。この場合、手順１５００において、デジタルテレビ４００は、ＰＴＰのコマンド"GetNumberObject(Image)"によりＰＤプリンタ１００が保持する画像データの数を問い合わせる。そして、ＰＤプリンタ１００は、手順１５３０において、記憶メディア２１０に保持されている画像データのオブジェクト数を調査する。そして、手順１５０１において、Object Numberとしてデジタルテレビ４００に送信する。
【０１０２】
次に、手順１５０２において、デジタルテレビ４００は、ＰＴＰのコマンド"GetObjectHandles(Image)"によりＰＤプリンタ１００が保持する画像データのハンドル番号を要求する。そこでＰＤプリンタ１００は、手順１５３１において、画像データに対してハンドル番号を割り当てる。そして、手順１５０３において、ハンドルリストをデジタルテレビ４００に返送する。その後、手順１５０４において、デジタルテレビ４００がハンドルｉを用いてオブジェクトに関する属性情報をコマンド"GetObjectInfo(i)"により要求したり、画像データをコマンド"GetObject(i)"により要求したりする場合がある。すると、ＰＤプリンタ１００は、手順１５０５において、指定されたハンドル番号のオブジェクト（画像データ）に関する属性情報や画像データをデジタルテレビ４００に返送する。
【０１０３】
次に、ＰＤプリンタ１００とデジタルカメラ３００とがＵＳＢケーブル１２０により接続されると、手順１５０６において、接続を開始する。そして、手順１５０７において、ＰＤプリンタ１００は、ＰＴＰのコマンド"GetNumObject(Image)"によりデジタルカメラ３００が保持する画像データの数を問い合わせる。デジタルカメラ３００は、手順１５０８において、記憶メディア３０６に保持されている画像データのオブジェクト数を調査し、Object NumberとしてＰＤプリンタ１００に送信する。次に、手順１５０９において、ＰＤプリンタ１００は、ＰＴＰのコマンド"GetObjectHandles(Image)"によりデジタルカメラ３００が保持する画像データのハンドル番号を要求する。そこで、デジタルカメラ３００は、手順１５３２において、画像データに対してハンドル番号を割り当てる。そして、手順１５１０において、ハンドルリストをＰＤプリンタ１００に返送する。これにより、手順１５３３において、デジタルカメラ３００とＰＤプリンタ１００との接続の確立が完了する。
【０１０４】
次に、手順１５１１において、ＰＤプリンタ１００はデジタルテレビ４００に対して、ＰＴＰにより定義されるイベント通知としてイベント"StorageAdded"を発行する。このイベント通知を受けてデジタルテレビ４００は、手順１５１２において、ＰＴＰのコマンド"GetNumObject(Image)"によりＰＤプリンタ１００が管理する画像データの数を問い合わせる。ＰＤプリンタ１００は手順１５１３において、手順１５０８で取得したデジタルカメラ３００のObject NumberとＰＤプリンタ１００の記憶メディア２１０に保持する画像データの数とを足し合わせた数をObject Numberとして返送する。
【０１０５】
次に、手順１５１４において、デジタルテレビ４００はＰＴＰのコマンド"GetObjectHandles(Image)"によりＰＤプリンタ１００が管理する画像データのハンドル番号を要求する。これに対してＰＤプリンタ１００は、手順１５３４において、デジタルカメラ３００のハンドルリストの各ハンドル番号をＰＤプリンタ１００が管理するハンドル番号に変換する。そして、手順１５１５において、手順１５３１で割り当てた記憶メディア２１０に保持する画像データのハンドルリストと１つにまとめたハンドルリストをデジタルテレビ４００に返送する。
【０１０６】
手順１５１６において、図１１の手順１１１２と同様に、デジタルテレビ４００がオブジェクトに関する属性情報や画像データを要求したりする場合がある。この場合も第１の実施形態と同様に、がデジタルカメラ３００に保持されているものか、ＰＤプリンタ１００に保持されているものかを判断する。後者の場合は、記憶メディア２１０から読み出してデジタルテレビ４００に転送するよう動作する。
【０１０７】
ここで、手順１５３５においてハンドルｉの値からデジタルカメラ３００が保持する画像データと判断した場合は、第１の実施形態とは異なり、デジタルテレビ４００が指定したハンドル番号ｉをデジタルカメラ３００が割り当てたハンドル番号ｊに変換する。そして、手順１５１７において、ＰＤプリンタ１００は、コマンド"GetObjectInfo(j)"をデジタルカメラ３００に送信する。その結果、デジタルカメラ３００は、手順１５１８において、返送するｊ番目の属性（ObjectInfo i dataset）を送信する。そして、ＰＤプリンタ１００は、手順１５１９において、そのデータをデジタルテレビ４００に送信する。
【０１０８】
図１２（ｂ）は、ＰＤプリンタ１００の画像データ管理アプリケーション５０７が管理手段として保持するハンドル番号のテーブルの一例を示す図であり、ハンドル番号の割り当て状況、及び割り当ての予定を示している。項目１２２０、及び項目１２２７に示すハンドル番号は、図１２（ａ）と同様、予約済みを意味している。項目１２２１及び項目１２２２に示すハンドル番号は、ＰＤプリンタ１００が図１５の手順１５０３で返送した現在使用中のハンドルリストに記述された番号である。
【０１０９】
項目１２２３に示すハンドル番号は、ＰＤプリンタ１００が今後付与する可能性があるハンドル番号である。項目１２２４はＰＤプリンタ１００がデジタルカメラ３００の画像データに対して割り当てたハンドル番号である。項目１２２５は、デジタルカメラ３００が図１５の手順１５１０で返送したハンドルリストに記述されたハンドル番号（元ハンドル）と、ＰＤプリンタ１００が割り当てたハンドル番号（割当ハンドル）との対応を示した表である。この表を参照してＰＤプリンタ１００の画像データ管理アプリケーション５０７は、相互のハンドル番号の変換を行う。また、項目１２２６に示すハンドル番号は未使用のハンドル番号である。
【０１１０】
このように、本実施形態におけるＰＤプリンタ１００も、ＰＤプリンタ１００が使用していないハンドル番号を、デジタルカメラ３００に保持されている画像データに対して割り当てるよう動作する。このとき、ハンドル番号を変換するためのテーブルを不要にし、同一のハンドル番号を持つ画像データが複数存在しないよう制御するため、ハンドル番号が重複することによって画像データの送受信が失敗することを回避することができる。
【０１１１】
なお、図１５の手順１５０６でＰＤプリンタ１００とデジタルカメラ３００とが接続された場合に、デジタルテレビ４００とＰＤプリンタ１００との接続を一旦解除してもよい。この場合、手順１５０７〜手順１５１０に従ってデジタルカメラ３００の画像データのハンドル番号を取得した後に、デジタルテレビ４００とＰＤプリンタ１００との接続を再度確立する。そして、第１の実施形態の図１１の手順１１０６以降の手順に従ってハンドル番号を割り当ててもよい。
【０１１２】
このとき、第１の実施形態と同様に、デジタルカメラ３００が使用していないハンドル番号を、ＰＤプリンタ１００の記憶メディア２１０に保持されている画像データに対して割り当てるよう動作する。このため、ハンドル番号が重複することによって画像データの送受信が失敗することを回避することができ、ハンドル番号を割り当てる時間を短縮することができる。さらに、ハンドル番号同士を対応づけるための変換テーブルを持つ必要がなく、内部のＲＡＭのメモリ消費量を低減することができる。
【０１１３】
図１６は、本実施形態におけるＰＤプリンタ１００において、まずデジタルテレビ４００とＰＤプリンタ１００とを接続した場合の動作手順の一例を示すフローチャートである。なお、図１６に示す各処理は、ＣＰＵの制御により行われる。
まず、ステップＳ１６００において、デジタルテレビ４００とＰＤプリンタ１００とがＵＳＢケーブル１２４により接続されると処理を開始する。そして、ステップＳ１６０１において、図１３のステップＳ１３０１と同様にＲＯＭ２０２からダイレクトプリント機能を有することを示すＤＰＳスクリプトデータ２１１を検知する。そして、ＵＳＢデバイスコントローラ２０７によりダイレクトプリント接続を開始して接続を確立する。
【０１１４】
次に、ステップＳ１６０２において、デジタルテレビ４００からコマンド"GetObjectHandles(Image)"を受信するまで待機する。そして、このコマンドを受信すると、ステップＳ１６０３において、図１２（ｂ）に示したハンドル番号のテーブルを作成する。そして、ステップＳ１６０４において、図１５に示す手順１５３１のように、記憶メディア２１０に保持する画像データに対してオブジェクトハンドル（ハンドル番号）を割り当てる。そして、ステップＳ１６０５において、ハンドルリストとしてデジタルテレビ４００に返送する。
【０１１５】
次に、ステップＳ１６０６において、ＵＳＢホストコントローラ２０６によりデジタルカメラ３００と接続されたか否かを判断する。この判断の結果、デジタルカメラ３００と接続された場合は、ステップＳ１６０７において、デジタルカメラ３００が保持している画像データのハンドルリストを取得する。次に、ステップＳ１６０８において、ＰＴＰで定義されるイベント"StorageAdded"を発行する。そして、ステップＳ１６０９において、デジタルテレビ４００からコマンド"GetObjectHandles(Image)"を受信するまで待機する。そして、このコマンドを受信すると、ステップＳ１６１０において、デジタルカメラ３００のハンドルリストの各ハンドル番号に対応する画像データに対して、ＰＤプリンタ１００が管理するハンドル番号を割り当てる。
【０１１６】
次に、ステップＳ１６１１において、記憶メディア２１０に保持する画像データのハンドルリストとを１つにまとめたハンドルリストをデジタルテレビ４００に返送する。そして、ステップＳ１６１９において、図１３のステップＳ１３０８と同様の手順によりダイレクトプリント接続を確立する。
【０１１７】
一方、ステップＳ１６０６の判断の結果、デジタルカメラ３００が接続されていない場合は、ステップＳ１６１２において、デジタルカメラ３００、あるいはデジタルテレビ４００からプリント要求スクリプトを受信したかどうかを判断する。この判断の結果、プリント要求スクリプトを受信した場合は、ステップＳ１６１３において、図１３のステップＳ１３１０と同様の手順により印刷を実行する。一方、ステップＳ１６１２の判断の結果、プリント要求スクリプトを受信していない場合は、ステップＳ１６１４に進む。なお、ステップＳ１６１４〜Ｓ１６１８の処理は、それぞれ図１３のステップＳ１３１１〜Ｓ１３１５と同様の処理であるため、説明は省略する。
【０１１８】
以上のように、本実施形態のＰＤプリンタによれば、まずＰＤプリンタ１００とデジタルテレビ４００とを接続し、次に、デジタルカメラ３００とＰＤプリンタ１００とを順に接続した場合であっても同様の効果が得られる。すなわち、同一のハンドル番号を持つ画像データが複数存在しないよう制御するため、ハンドル番号が重複することによって画像データの送受信が失敗することを回避することができる。
【０１１９】
（第３の実施形態）
第２の実施形態では、ＰＤプリンタ１００が使用していないハンドル番号を、デジタルカメラ３００に保持されている画像データに対して割り当てるよう動作した。これにより、ハンドル番号が重複することによって画像データの送受信が失敗することを回避していた。本実施形態では別の方法によって、ハンドル番号が重複して画像データの送受信が失敗することを回避できるようにする。なお、本実施形態におけるＰＤプリンタ１００、デジタルカメラ３００、及びデジタルテレビ４００の構成は第１の実施形態で説明したものと同様であるため、説明は省略する。
【０１２０】
図１７は、本実施形態における通信手順及び各機器の動作の一例を示す図である。第２の実施形態と同様、図１７では、まず、デジタルテレビ４００とＰＤプリンタ１００とを接続し、次に、ＰＤプリンタ１００とデジタルカメラ３００を接続したときの動作を示している。また、図１７の手順１７００〜手順１７０８、手順１７３０及び手順１７３１についてはそれぞれ、図１５の手順１５００〜手順１５０８、手順１５３０及び手順１５３１と同様であるため、説明は省略する。
【０１２１】
手順１７０９において、ＰＤプリンタ１００は、拡張されたＰＴＰコマンドを用いてデジタルカメラ３００が使用可能なハンドル番号をデジタルカメラ３００に通知する。デジタルカメラ３００に通知するハンドル番号は、以下のようにして決定する。まず、ＰＤプリンタ１００が記憶メディア２１０に記憶されている画像データに対して割り当てたハンドル番号や、今後使用する予定のハンドル番号をハンドルリストから除外する。そして、手順１７０８でデジタルカメラ３００がObject Numberとして送信した値を参考にして通知するハンドル番号を決定する。このとき、デジタルカメラ３００に画像データが追加された場合などには、新たにハンドル番号を割り当てる必要があるため、今後使用する可能性があるハンドル番号の分も考慮に入れて余分に割り当てるよう制御してもよい。そして、手順１７１０において、デジタルカメラ３００は完了を示すＯＫをＰＤプリンタ１００に返送する。
【０１２２】
次に、手順１７１１において、ＰＤプリンタ１００は、ＰＴＰのコマンド"GetObjectHandles(Image)"によりデジタルカメラ３００が保持する画像データのハンドル番号を要求する。そして、手順１７１２において、デジタルカメラ３００は画像データに対して手順１７０９で通知されたハンドル番号を割り当てる。そして、手順１７１２において、ハンドルリストをＰＤプリンタ１００に返送する。以上により手順１７３３において、デジタルカメラ３００とＰＤプリンタ１００との接続の確立が完了する。なお、手順１７１３〜手順１７１６についてはそれぞれ、図１５の手順１５１１〜手順１５１４と同様の手順であるため、説明は省略する。
【０１２３】
手順１７１６でデジタルテレビ４００からＰＤプリンタ１００が管理する画像データのハンドル番号が要求されると、手順１７１７において、ＰＤプリンタ１００は、ハンドルリストをデジタルテレビ４００に返送する。このとき、手順１７１２で取得したデジタルカメラ３００のハンドルリストと、記憶メディア２１０に保持する画像データのハンドルリストを１つにまとめたハンドルリストをデジタルテレビ４００に返送する。
【０１２４】
手順１７１８において、図１５の手順１５１６と同様にデジタルテレビ４００がオブジェクトに関する属性情報や画像データを要求したりすることがある。すると、ＰＤプリンタ１００は、第２の実施形態と同様、手順１７３４において、ハンドルｉの値により指定された画像データがデジタルカメラ３００に保持されているものか、ＰＤプリンタに保持されているものかを判断する。
【０１２５】
そして、手順１７３４においてハンドルｉの値からデジタルカメラ３００が保持する画像データと判断した場合は、図１１の手順１１１３〜手順１１１５と同様の処理を行うこととなる
【０１２６】
図１２（ｃ）は、ＰＤプリンタ１００の画像データ管理アプリケーション５０７が管理手段として保持するハンドル番号のテーブルの一例を示す図であり、ハンドル番号の割り当て状況、及び割り当ての予定を示している。項目１２４０、及び項目１２４８は、図１２（ａ）と同様、予約済みを意味している。項目１２４１及び項目１２４２に示すハンドル番号は、ＰＤプリンタ１００が図１７の手順１７０３で返送した現在使用中のハンドルリストに記述された番号である。
【０１２７】
項目１２４３に示すハンドル番号は、ＰＤプリンタ１００が今後付与する可能性があるハンドル番号である。項目１２４４はＰＤプリンタ１００がデジタルカメラ３００の画像データに対して割り当てたハンドル番号である。項目１２４４のうちの項目１２４５に示すハンドル番号は、図１７の手順１７１２によりデジタルカメラ３００から返送されたハンドル番号である。また、項目１２４６に示すハンドル番号は、ＰＤプリンタ１００がデジタルカメラ３００に使用可能なハンドル番号として通知したもののうち、デジタルカメラ３００で未使用なハンドル番号である。さらに、項目１２４７に示すハンドル番号は未使用のハンドル番号である。
【０１２８】
以上のように、本実施形態のＰＤプリンタによれば、同一のハンドル番号を持つ画像データが複数存在しないよう制御する。このため、ハンドル番号が重複することにより画像データの送受信が失敗することを回避でき、ハンドル割り当ての時間を短縮することができる。さらにハンドル番号同士の対応づけをするための変換テーブルを不要にし、内部のＲＡＭのメモリ消費量を低減できる。
【０１２９】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１３０】
２０１  ＣＰＵ、２０５  プリンタエンジン部、２０６  ＵＳＢホストコントローラ、２０７  ＵＳＢデバイスコントローラ
【図１】
2011186663.tif 000003
【図２】
2011186663.tif 000004
【図３】
2011186663.tif 000005
【図４】
2011186663.tif 000006
【図５】
2011186663.tif 000007
【図６】
2011186663.tif 000008
【図７】
2011186663.tif 000009
【図８】
2011186663.tif 000010
【図９】
2011186663.tif 000011
【図１０】
2011186663.tif 000012
【図１１】
2011186663.tif 000013
【図１２】
2011186663.tif 000014
【図１３】
2011186663.tif 000015
【図１４】
2011186663.tif 000016
【図１５】
2011186663.tif 000017
【図１６】
2011186663.tif 000018
【図１７】
2011186663.tif 000019