以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
図1は、本発明の実施の形態に係るフォトダイレクトプリンタ装置(以下、PDプリンタ装置)1000の概観斜視図である。このPDプリンタ装置1000は、ホストコンピュータ(PC)からデータを受信して印刷する通常のPCプリンタとしての機能と、メモリカードなどの記憶媒体に記憶されている画像データを直接読取って印刷したり、或いはデジタルカメラからの画像データを受信して印刷する機能を備えている。
図1において、本実施の形態に係るPDプリンタ装置1000の外殻をなす本体は、ケースM1001、上ケース1002、アクセスカバー1003及び排出トレイ1004の外装部材を有している。また、下ケース1001は、PDプリンタ装置1000の略下半部を、上ケース1002は本体の略上半部をそれぞれ形成しており、両ケースの組合せによって内部に後述の各機構を収納する収納空間を有する中空体構造をなし、その上面部及び前面部にはそれぞれ開口部が形成されている。更に、排出トレイ1004は、その一端部が下ケース1001に回転自在に保持され、その回転によって下ケース1001の前面部に形成される開口部を開閉させ得るようになっている。このため、記録動作を実行させる際には、排出トレイ1004を前面側へと回転させて開口部を開成させることにより、ここから記録シートが排出可能となると共に、排出された記録シートを順次積載し得るようになっている。また、排紙トレイ1004には、2枚の補助トレイ1004a,1004bが収納されており、必要に応じて各トレイを手前に引き出すことにより、用紙の支持面積を3段階に拡大、縮小させ得るようになっている。
アクセスカバー1003は、その一端部が上ケース1002に回転自在に保持され、上面に形成される開口部を開閉し得るようになっており、このアクセスカバー1003を開くことによって本体内部に収納されている記録ヘッドカートリッジ(不図示)あるいはインクタンク(不図示)等の交換が可能となる。なお、ここでは特に図示しないが、アクセスカバー1003を開閉させると、その裏面に形成された突起がカバー開閉レバーを回転させるようになっており、そのレバーの回転位置をマイクロスイッチなどで検出することにより、アクセスカバーの開閉状態を検出し得るようになっている。
また、上ケース1002の上面には、電源キー1005が設けられている。また、上ケース1002の右側には、液晶表示部1006や各種キースイッチ等を備える操作パネル1010が設けられている。この操作パネル1010の構造は、図2を参照して詳しく後述する。1007は自動給送部で、記録シートを装置本体内へと自動的に給送する。1008は紙間選択レバーで、プリントヘッドと記録シートとの間隔を調整するためのレバーである。1009はカードスロットで、ここにメモリカードを装着可能なアダプタが挿入され、このアダプタを介してメモリカードに記憶されている画像データを直接取り込んで印刷することができる。このメモリカード(PC)としては、例えばコンパクトフラッシュメモリ、スマートメディア、メモリスティック等がある。1011はビューワ(液晶表示部)で、このPDプリンタ装置1000の本体に着脱可能であり、PCカードに記憶されている画像の中からプリントしたい画像を検索する場合などに、1コマ毎の画像やインデックス画像などを表示するのに使用される。1012は後述するデジタルカメラを接続するためのUSB端子である。また、このPD装置1000の後面には、パーソナルコンピュータ(PC)を接続するためのUSBコネクタが設けられている。
図2は、本実施の形態に係るPDプリンタ装置1000の操作パネル1010の概観図である。
図において、液晶表示部1006には、その左右に印刷されている項目に関するデータを各種設定するためのメニュー項目が表示される。ここに表示される項目としては、例えば、印刷したい範囲の先頭写真番号、指定コマ番号(開始コマ指定/印刷コマ指定)、印刷を終了した範囲の最後の写真番号(終了)、印刷部数(部数)、印刷に使用する用紙(記録シート)の種類(用紙種類)、1枚の用紙に印刷する写真の枚数設定(レイアウト)、印刷の品位の指定(品位)、撮影した日付を印刷するかどうかの指定(日付印刷)、写真を補正して印刷するかどうかの指定(画像補正)、印刷に必要な用紙枚数の表示(用紙枚数)等がある。これら各項目は、カーソルキー2001を用いて選択、或いは指定される。2002はモードキーで、このキーを押下する毎に、印刷の種類(インデックス印刷、全コマ印刷、1コマ印刷等)を切り替えることができ、これに応じてLED2003の対応するLEDが点灯される。2004はメンテナンスキーで、プリントヘッドのクリーニング等、プリンタのメンテナンスを行わせるためのキーである。2005は印刷開始キーで、印刷の開始を指示する時、或いはメンテナンスの設定を確立する際に押下される。2006は印刷中止キーで、印刷を中止させる時や、メンテナンスの中止を指示する際に押下される。
次に図3を参照して、本実施の形態に係るPDプリンタ装置1000の制御に係る主要部の構成を説明する。尚、この図3において、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
図3において、3000は制御部(制御基板)を示している。3001はASIC(専用カスタムLSI)を示し、その構成は図4のブロック図を参照して詳しく後述する。3002はDSP(デジタル信号処理プロセッサ)で、内部にCPUを有し、後述する各種制御処理及び、輝度信号(RGB)から濃度信号(CMYK)への変換、スケーリング、ガンマ変換、誤差拡散等の画像処理等を担当している。3003はメモリで、DSP3002のCPUの制御プログラムを記憶するプログラムメモリ3003a、及び実行時のプログラムを記憶するRAMエリア、画像データなどを記憶するワークメモリとして機能するメモリエリアを有している。3004はプリンタエンジンで、ここでは、複数色のカラーインクを用いてカラー画像を印刷するインクジェットプリンタのプリンタエンジンが搭載されている。3005はデジタルカメラ(DSC)3012を接続するためのポートとしてのUSBコネクタである。3006はビューワ1011を接続するためのコネクタである。3008はUSBハブ(USB HUB)で、このPDプリンタ装置1000がPC3010からの画像データに基づいて印刷を行う際には、PC3010からのデータをそのままスルーし、USB3021を介してプリンタエンジン3004に出力する。これにより、接続されているPC3010は、プリンタエンジン3004と直接、データや信号のやり取りを行って印刷を実行することができる(一般的なPCプリンタとして機能する)。3009は電源コネクタで、電源3019により、商用ACから変換された直流電圧を入力している。PC3010は一般的なパーソナルコンピュータ、3011は前述したメモリカード(PCカード)、3012はデジタルカメラ(DSC:Digital Still Camera)である。
尚、この制御部3000とプリンタエンジン3004との間の信号のやり取りは、前述したUSB3021又はIEEE1284バス3022を介して行われる。
図4は、ASIC3001の構成を示すブロック図で、この図4においても、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
4001はPCカードインターフェース部で、装着されたPCカード3011に記憶されている画像データを読取ったり、或いはPCカード3011へのデータの書き込み等を行う。4002はIEEE1284インターフェース部で、プリンタエンジン3004との間のデータのやり取りを行う。このIEEE1284インターフェース部4002は、デジタルカメラ3012或いはPCカード3011に記憶されている画像データを印刷する場合に使用されるバスである。4003はUSBインターフェース部で、PC3010との間でのデータのやり取りを行う。4004はUSBホストインターフェース部で、デジタルカメラ3012との間でのデータのやり取りを行う。4005は操作パネル・インターフェース部で、操作パネル1010からの各種操作信号を入力したり、表示部1006への表示データの出力などを行う。4006はビューワ・インターフェース部で、ビューワ1011への画像データの表示を制御している。4007は各種スイッチやLED4009等との間のインターフェースを制御するインターフェース部である。4008はCPUインターフェース部で、DSP3002との間でのデータのやり取りの制御を行っている。4010はこれら各部を接続する内部バス(ASICバス)である。
以上の構成に基づく動作概要を以下に説明する。
<通常のPCプリンタモード>
これはPC3010から送られてくる印刷データに基づいて画像を印刷する印刷モードである。
このモードでは、PC3010からのデータがUSBコネクタ1013(図3)を介して入力されると、USBハブ3008、USB3021を介して直接プリンタエンジン3004に送られ、PC3010からのデータに基づいて印刷が行われる。
<PCカードからの直接プリントモード>
PCカード3011がカードスロット1009に装着或いは脱着されると割り込みが発生し、これによりDSP3002はPCカード3011が装着されたか或いは脱着(取り外された)されたかを検知できる。PCカード3011が装着されると、そのPCカード3011に記憶されている圧縮された(例えばJPEG圧縮)画像データを読込んでメモリ3003に記憶する。次に操作パネル101を使用して、その格納した画像データの印刷が指示されると、圧縮された画像データを解凍してメモリ3003に格納し、RGB信号からYMCK信号への変換、ガンマ補正、誤差拡散等を実行してプリンタエンジン3004で印刷可能な記録データに変換し、IEEE1284インターフェース部4002を介してプリンタエンジン3004に出力することにより印刷を行う。
<カメラからの直接プリントモード>
図5は本実施の形態に係るPDプリンタ装置1000とデジタルカメラ3012との接続を説明する図である。
図において、ケーブル5000は、PDプリンタ装置1000のコネクタ1012と接続されるコネクタ5001と、デジタルカメラ3012の接続用コネクタ5003と接続するためのコネクタ5002とを備えており、また、デジタルカメラ3012は、内部のメモリに保存している画像データを、接続用コネクタ5003を介して出力可能に構成されている。なお、デジタルカメラ3012の構成としては、内部に記憶手段としてのメモリを備えるものや、取外し可能なメモリを装着するためのスロットを備えたものなど、種々の構成を採用することができる。このように、図5に示すケーブル5000を介してPDプリンタ装置1000とデジタルカメラ3012とを接続することにより、デジタルカメラ3012からの画像データを直接PDプリンタ装置1000で印刷することができる。
ここで図5に示すように、PDプリンタ装置1000にデジタルカメラ3012が接続された場合は、操作パネル1010の表示部1006にはカメラマークのみが表示され、操作パネル1010における表示及び操作が無効になり、又ビューワ1011への表示も無効になる。従って、これ以降はデジタルカメラ3012でのキー操作及びデジタルカメラ3012の表示部(不図示)への画像表示のみが有効になるので、ユーザはそのデジタルカメラ3012を使用して印刷指定を行うことができる。
本実施の形態では、複数のメーカのデジタルカメラを接続してプリントすることができるPDプリンタ装置を提供することを目的とし、本実施の形態に係るPDプリンタ装置1000とデジタルカメラとを接続してプリントを行なう場合の通信規約について詳しく説明する。
本実施の形態においては、PDプリンタ装置1000とデジタルカメラ3012との間の通信制御を汎用ファイル、汎用フォーマットを用いて行い、インターフェースに依存しないNCDP(New Camera Direct Print)を提案する。
図6は、このNCDPの構成の一例を示す図である。
図において、600はUSBによるインターフェース、601はブルーツース(Bluetooth)によるインターフェースを示している。602はNCDPによるシステムを構築する際に組込まれるアプリケーションレイヤを示している。603は既存のプロトコル及びインターフェースを実行するためのレイヤで、ここではPTP(Picture Transfer Protocol),SCSI及びブルーツースのBIP(Basic Image Profile),USBインターフェース等が実装されている。本実施の形態に係るNCDPは、このようなプロトコルレイヤ等のアーキテクチャが実装されていて、その上にアプリケーションとして実装されることが前提である。ここではPDプリンタ装置1000は、USBホスト、カメラ3012はUSBスレーブとして規定されており、図6に示すように、それぞれ同じNCDP構成となっている。
図7は、本実施の形態に係るNCDPによる、PDプリンタ装置1000とデジタルカメラ(DSC)3012との間での通信手順の流れを説明する図である。
ここでは、図5に示すようにUSBケーブル5000によりPDプリンタ装置1000とDSC3012とが接続されたことが検知されると、これら機器間での通信が可能になる。これにより、これら機器に実装されているアプリケーションが実行されてNCDPによる手順701への移行が開始される。702はNCDPの初期状態を示し、ここでは互いの機種がNCDPを実行可能かどうかを判断し、可能であればNCDPによる手順701に移行している。もしここで、DSC3012がNCDPを実装していない場合には、NCDPによる通信制御は実行されない。こうしてNCDPに移行した後、703で示すように、DSC3012から「基本手順」による画像データの転送/印刷が指示されると、DSC3012から画像ファイルをPDプリンタ装置1000に転送して印刷する簡易印刷モードに移行する。また704で示すように、DSC3012から「推奨手順」による画像データの転送/印刷が指示されると、DSC3012とPDプリンタ装置1000との間で各種ネゴシエーションを行ってその印刷条件等を決定した後、画像ファイルをDSC3012からPDプリンタ装置1000に転送して印刷する、より多彩な印刷モードに移行する。また705は「拡張手順」による指示がDSC3012によりなされると、例えばDPOF,XHTML-print,SVG等の高度レイアウト機能、及び各社ベンダーユニークな仕様での印刷を行うモードが設定される。尚、この「拡張手順」による詳細仕様に関しては、DSCのメーカ各社個別の拡張仕様書で規定されるので、ここでは特に説明しない。尚、これら「基本手順」及び「推奨手順」による画像印刷に関しては、図9乃至図11を参照して後述する。
図8は、本実施の形態に係るNCDPにおいてプリントを行うために規定したコマンドを説明する図である。
図8において、「対応モード」はDSC3012から指示される、前述した「基本手順」、「推奨手順」及び「拡張手順」に対応している。「推奨手順」では全てのコマンドが使用できるのに対し、「基本手順」は簡易印刷モードであるため、NCDPへの移行及びその終了、「基本手順」、「推奨手順」及び「拡張手順」の各モードへの移行コマンド及びカメラ3012からの画像データの取得及びカメラ3012よりの印刷命令のみが使用可能である。尚、「拡張手順」では、NCDPへの移行及びその終了、「基本手順」、「推奨手順」及び「拡張手順」の各モードへの移行コマンドだけが用いられるように記載されているが、前述のように、各社の仕様に応じて他のコマンドが用いられても良いことはいうまでもない。例えば「拡張手順」においても「推奨手順」と同様にCapabilityコマンドを使用し、そのCapability内容に「拡張手順」に固有なベンダーユニークなパラメータ種類やパラメータ値が用いられている、という形態でも良い。
以下、前述した「基本手順」及び「推奨手順」による画像印刷について説明する。
図9は、「基本手順」による画像印刷を行う場合のNCDPの通信手順を説明する図である。この「基本手順」は、DSC3012からPDプリンタ装置1000に対して、1回のプリント命令毎に、印刷条件を設定しなくても1枚の画像ファイルを転送して印刷するだけの簡易印刷モードである。従って、画像の色補正やデータ変換などのプリント条件は、PDプリンタ装置1000が決定する。これに対応している画像フォーマットとしては、例えばVGAサイズ(640×480画素)のRGB画像、VGAサイズ(640×480画素)のJPEG画像とし、画像ファイルサイズとしては約1Mバイト以下としている。DSC3012はPDプリンタ装置1000がサポートしている画像フォーマットで送信する。この場合はエラーハンドリグは実行しない。
まず900で、PDプリンタ装置1000からDSC3012に対してNCDPへの移行を指示するコマンド(NCDPStart)を送信する。ここでDSC3012がNCDPを実装していればOKが返送される(901)。尚、このNCDPの確認手順を行う場合の一例としてPTPを用いた場合の具体例に関しては、図14を参照して詳しく後述する。
こうして互いにNCDPが実装されていることが確認されると、PDプリンタ装置1000からNCDPモードに移行するように命令(ProcedureStart)がDSC3012に送信される(902)。これに対して903で、DSC3012から簡易印刷モードである「基本手順」が送られてくると、これ以降は「基本手順」による印刷モードに移行する。この場合は、DSC3012における操作により、印刷したい画像が選択されて印刷が指示されると、印刷の開始を指示するコマンド(JobStart)がDSC3012からPDプリンタ装置1000に送られる(904)。これによりPDプリンタ装置1000は簡易印刷モードとなり、DSC3012に対してコマンド(GetImage)を送信してJPEG画像を要求する(905)。これによりDSC3012からJPEG画像(Image Data)がPDプリンタ装置1000に送信され(906)、PDプリンタ装置1000における印刷処理が開始される。こうして、指示された画像の印刷が終了すると、印刷ジョブの終了を示すコマンド(JobEnd)がPDプリンタ装置1000からDSC3012に送信される(907)。これに対してDSC3012から肯定応答(OK)が返送されると(908)、この「基本手順」による印刷処理が完了する。この「基本手順」は単純に画像指定情報のやり取りをすることが前提であるので、この「基本手順」でプリントすることが決まったら、後述のcapability情報の交換を行うことなく、直にプリント可能状態にすることができる。但し、この「基本手順」でやり取りするかどうかを、DSCとPDプリンタ装置の双方のCapabilityにより決定するようにしても良い。
本実施の形態においては「基本手順」「推奨手順」「拡張手順」のうち、PDプリンタ装置1000がいずれをサポートしているかをDSC3012が取得すると記載されているが、必ずしもこの方法に限るわけではなく、PDプリンタ装置1000の機種名やベンダー名等のプリンタ情報に基づいてDSC3012が適当な手順を選択する方法等を用いても良い。例えばDSC3012が「推奨手順をサポートしているプリンタの機種名リスト」を保持し、接続されたプリンタの機種名がリスト中にあった場合には推奨手順を選択し、リストに無かった場合には基本手順を選択する、としても良い。
図25は「ProcedureStart」コマンド時に、PDプリンタ装置1000からDSC3012に送られるスクリプトにプリンタのベンダー名及びプリンタ機種名が記載されている例、及び図26は、それに引き続いてDSC3012からPDプリンタ装置1000に送られるスクリプトにDSC3012のベンダー名及びDSC3012の機種名が記載されている例をそれぞれ示す図である。
また、本実施の形態においては「基本手順」においてJobStartコマンドは、画像の印刷のみを指定しており、画像フォーマットやファイルサイズは、固定的に決められているものとして説明している。これはCapability情報の送受信を行わなくてもプリントできるようにするためである。但し、このCapabilityの送受信を行わない場合であっても、画像フォーマットやプリントサイズ等の印刷条件を指定することは可能である。例えば、上記画像フォーマット等と同様に「プリンタ側が必ずサポートしている」又は「プリンタ側が自分のCapabilityに応じて適宜処理をする」という事が予めPDプリンタ装置1000或いはDSC3012で了解されている項目等については、DSC3012側がJobStartコマンド中で指定しても良い。このような構成にするためには、後述する「NCDPStart」で、お互いの機器情報を交換して、所定の機器である場合にのみ、Capability情報が無くても、印刷条件をプリントjob(script)の中で指定可能とするように処理を切替るのが好ましい。しかし、なるべく面倒な設定を省くための「基本手順」は、初心者のための操作手順を用意しておくために重要である。
図27は、「基本手順」時にJobStartコマンドで、DSC3012からPDプリンタ装置1000に送られるスクリプトにCapabilityに関する設定が一切されていない例を示す図、及び図28は「基本手順」時にJobStartコマンドでDSC3012からPDプリンタ装置1000に送られるスクリプトに「プリンタ側が必ずサポートしている」、又は「プリンタ側が自分のCapabilityに応じて適宜処理をする」という事が予めPDプリンタ装置1000とDSC3012との間で了解されている項目に関する設定がされている例を示す図である。
図10は、「推奨手順」による画像印刷を行う場合のNCDPの通信手順を説明する図で、前述の図9と共通する手順には同じ番号を付して、その説明を省略する。この「推奨手順」では、PDプリンタ装置1000とDSC3012との間でのネゴシエーションを前提とした「より多彩な印刷」モードが設定でき、1回の印刷指示で複数枚の写真印刷が可能になる。更に、DSC3012からPDプリンタ装置1000へプリント条件の情報をスクリプト(text)で送信するので、色設定やレイアウト印刷等の多くの印刷条件を反映させた印刷が可能になる。エラーハンドリングも実行可能となる。
図10において、図9の場合と同様にして、互いにNCDPが実装されていることを確認した後、この場合では、DSC3012から「推奨手順」が指示される(910)。この後はこの「推奨手順」による手順が実行される。まず911で示すように、PDプリンタ装置1000は、自機の備えている機能及び用紙設定等を含む機能をCapability情報として全てDSC3012に伝える。このCapability情報は、スクリプト形式(テキスト)でDSC3012に送信される。
このCapability情報の一例を図12に示す。
図12に示すように、このCapability情報は、印刷可能な用紙の種類及びサイズ、印刷品位、画像データのフォーマット、日付印刷の有無、ファイル名印刷の有無、レイアウト、画像補正の有無、更にはオプションとして、各カメラメーカの仕様に対応した機能の有無等の情報を含んでいる。
このようにCapability情報をスクリプト表記とすることにより、他の通信プロトコルのアーキテクチャへの移植を簡単にし、このような機能情報のやり取りを、より標準化し易くしている。尚、このスクリプト表記はXML準拠であっても良い。
このようなCapability情報を受信したDSC3012のユーザは、そのPDプリンタ装置1000が備えている機能の内のいずれを使用して印刷を行うかを判定し、印刷したい画像を選択すると共に、その画像の印刷条件をそのPDプリンタ装置1000の有している機能の中から選択して決定する。こうして印刷したい画像及び印刷条件などが決定されて印刷開始が指示されると、プリント命令(JobStart)がPDプリンタ装置1000に送られる。このStartJobの一例を図29に示す。これによりPDプリンタ装置1000から、その画像データを要求するコマンド(GetImage xn)が発行され(912)、それに応答してDSC3012から、対応する画像データ(ImageData)が、PDプリンタ装置1000が受信可能な画像フォーマット(Tiff,JPEG,RGBなど)で送信される(913)。ここで1枚の画像印刷に対して複数の画像データを送信できるようになっているのは、例えば2×2等のレイアウト印刷が指定されている場合は、1枚の用紙に対して4枚分の画像データを送信する必要があるためである。こうして、指示された画像の印刷が終了すると印刷ジョブの終了を示すコマンド(JobEnd)がPDプリンタ装置1000からDSC3012に送信される(907)。これに対してDSC3012から肯定応答(OK)が返送されると(908)、再び、この「推奨手順」による、次に画像の選択・印刷処理に移行する。
本実施の形態では、DSC3012からの要求が無くても、Capability情報をPrinterが発行してDSCへ通達しているが、この形態に限るわけではなく、DSC側からCapabilityをPrinterに対して要求し、その応答としてPrinterがCapabilityをDSC側へ通達する、という様な他の形態であっても良い。このような観点で本実施の形態を見た場合、
・「推奨手順への移行」を通達するProcedureStartコマンドを受信したことに応じてCapabilityを送信するので、「ProcedureStart」コマンドが、「Capability request」と同様の意味合いを持つ。
・Capability情報は、「Capability request」としての「ProcedureStart」コマンドの応答として送信される。
図11は、前述の「推奨手順」による画像印刷を行う場合のNCDPの通信手順において、PDプリンタ装置1000でエラーが発生した場合の通信手順を説明する図で、前述の図10と共通する手順には同じ番号を付して、その説明を省略する。
この例では、「推奨手順」での印刷処理の実行中に、PDプリンタ装置1000において給紙エラーが発生した場合の例を示している。この場合には914で、PDプリンタ装置1000からDSC3012に対して給紙エラーを示すステータス情報(Status)が送信される。これに対してDSC3012のユーザによる判断に基づいて、その印刷処理を継続するか(JobContinue)、中止するか(JobAbort)を示すコマンドがPDプリンタ装置1000に送信される(915)。これによりPDプリンタ装置1000では、中止の場合はその印刷処理を中止してプリントジョブの終了通知(JobEnd)を送信して印刷を中止する。或いは継続が指示された場合には、その給紙エラーの修復を待って、印刷処理を継続するように動作する。
次に、前述した処理手順を図13のフローチャートを参照して説明する。
図13は、図7に示す処理手順を説明するフローチャートである。
まずステップS1で、デジタルカメラ(DSC)3012とPDプリンタ装置1000との間の通信を確立し(700)、ステップS2で、これら機器がNCDPを実装済みかどうかを判定し、実装済みであればNCDPに移行する。次にステップS3に進み、DSC3012からの手順指示を受信して、その指示された手順に移行する。ここで「基本手順」が指示された時はステップS4からステップS5に進み、「基本手順」による印刷処理を実行する。また「推奨手順」が指示された時はステップS6からステップS7に進み、前述した「推奨手順」による印刷処理を実行する。更に「拡張手順」が指示された時はステップS8からステップS9に進み、各ベンダーに応じた「拡張手順」による印刷処理を実行する。それ以外の場合はステップS10に進み、このPDプリンタ装置1000とDSC3012とによる独自のモードでの印刷を実行する。
本実施の形態の図13中では、NCDPモードから「基本手順」「推奨手順」「拡張手順」「独自モード」へ遷移する形態を記述したが、他にもNCDPモードへ移行すると同時に「基本手順」選択状態となってすぐにJobStartを受け付けられる状態へとなり、その後、DSC3012若しくはPDプリンタ装置1000からの要請に従って他の手順、モードへと遷移する形態としても良い。
このように構成した場合には、プリント可能な状態に移行することを優先することができる。つまり、難しい設定が分からない初心者にとっては、面倒な設定を行わずに早く印刷したいという要求に応えることができる。一方、上記の手順の切り替えを認識可能な上級者であれば、手順の切り替え操作などを行って、より詳細な印刷条件の設定を行うことができる。このようにしてユーザの習得レベルに合わせたシステムを設計することができる。
次に上述したNCDPにおける各種コマンド(図8)を、汎用のPTPを用いて実現した(PTPによるラッパー)例を説明する。尚、本実施の形態では、PTPを用いたNCDPの場合で説明するが本発明はこれに限定されるものではなく、例えば、他のインターフェース、他のクラス(Class)上でダイレクトプリントサービスAPIを実装しても良い。
[NCDPStart]
図14は、NCDP手順の開始を指示する命令(NCDPStart)をPTPアーキテクチャを用いて実現した例を説明する図である。
PDプリンタ装置1000とDSC3012とが物理的に接続された後、まず1400で、PDプリンタ装置1000からDSC3012に対してGetDeviceInfoが送信され、DSC3012に対して、その保持しているオブジェクトに関する情報が要求される。これに対してDSC3012は、DeviceInfo Datasetにより、DSC3012に保持しているオブジェクトに関する情報をPDプリンタ装置1000に送信する。次に1402で、OpenSessionにより、DSC3012をリソースとして割り当て、必要に応じてデータオブジェクトにハンドルをアサインしたり、特別な初期化を行うための手順の開始要求が発行される。これに対してDSC3012から肯定応答(OK)が返送されるとPTPでの通信が開始される。次に1403で、DSC3012に対してGetObjectHandlesを送信して、スクリプト形式の全てのハンドルを要求する(Storage ID: FFFFFF, Object Type: Script)と、これに対して1404で、DSC3012に保持されている全てのハンドルリスト(ObjectHandleArray)が返送される。次に1405,1406において、PDプリンタ装置1000からi番目のオブジェクトハンドルの情報を取得する。ここで、このオブジェクトに、DSC3012の識別を示すキーワード(例えば合言葉「山」)が含まれていると、次に1407において、PDプリンタ装置1000からDSC3012に対してオブジェクト情報の送信を指示して(SendObjectInfo)、それに対して肯定応答(OK)を受信すると、SendObjectにより、オブジェクト情報をPDプリンタ装置1000からDSC3012に対して送信する。ここで、このオブジェクトには、前述のキーワードに対する応答キーワード(合言葉)として例えば「川」が含まれている。
このようにして、PDプリンタ装置1000とDSC3012の双方が互いに接続相手を認識できることになり、これ以降はNCDPによる手順(図7の701)に移行することができる。このようにファイルの受渡しができるトランスポートレイヤーであればキーワードの受渡しを確実に行うことができる。即ち、本実施の形態のNCDPにユニークなコマンド等を追加することなく、PTPアーキテクチャを使用してキーワードを交換することができる。尚、ここでキーワードとしては、上述の例に限定されるものでなく、DSC3012とPDプリンタ装置1000とが同じキーワードを使用してもよい。またこのキーワードによるネゴシエーションを行う時間を短縮するために、スクリプト形式のハンドルの最初にこのキーワードを入れておくことにより、互いの機器を確認するのに要する時間を短縮できる。
[ProcedureStart]
図15は、DSC3012からの、NCDPでの印刷モードへの移行手順を指示する命令を受信して、PDプリンタ装置1000からDSC3012に対して、そのモードに移行するための命令(ProcedureStart)(902)をPTPアーキテクチャを用いて実現した例を説明する図である。
ここではまず1501で、PDプリンタ装置1000がサポートしている手続「基本手順」、「推奨手順」、「拡張手順」をDSC3012に通知するためにSendObjectInfoにより、DSC3012に対して送信したいオブジェクト情報があることを伝える。これに対して肯定応答(OK)がDSC3012から送られてくると、1502でSendObjectにより、オブジェクトを送信する旨をDSC3012に伝え、次の1503のObjectDataで、このPDプリンタ装置1000がサポートしている手続に関する情報を送信する。次に1504で、DSC3012からPDプリンタ装置1000に対して、GetObject動作を起動したい(プッシュモードに移行)旨を伝える(RequestObjectTransfer)。これにより1505で、PDプリンタ装置1000からオブジェクト情報に関する情報を受信する旨が伝えられると(GetObjectInfo)、1506で、ObjectInfo Datasetにより、その情報がPDプリンタ装置1000に返送される。次に1507で、PDプリンタ装置1000からそのオブジェクト情報を指定してオブジェクト情報そのものを要求すると、Object Datasetにより、DSC3012が使用する手続(「基本」、「推奨」、「拡張」等)をPDプリンタ装置1000に知らせる(1508)。
これにより、DSC3012からPDプリンタ装置1000に対して、画像の印刷モードを指定することができる。
[NCDPEnd]
図16は、本実施の形態に係るNCDPにおける通信制御手順を終了する命令(NCDPEnd)をPTPアーキテクチャを用いて実現した例を説明する図である。
この手順では、1600において、PDプリンタ装置1000からDSC3012に対して送信したいオブジェクト情報があることを伝え(SendObjectInfo)、SendObjectによりDSC3012に対してオブジェクト情報の伝送を伝え、続くObjectDataにより、DSC3012に対してNCDPのモードから抜けることを通知する。これに対して肯定応答(OK)を受信すると、1601でCloseSessionを送信して、この通信を終了させる。これによりNCDPによる通信手順を終了する。
[Capability]
図17は、本実施の形態に係るNCDPにおける、PDプリンタ装置1000の機能をDSC3012に通知するCapability命令における通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
この手順では、1700において、PDプリンタ装置1000からDSC3012に対して送信したいオブジェクト情報があることをSendObjectInfoにより伝える。そして1701で、SendObjectによりDSC3012に対してオブジェクト情報の伝送を伝え、続くObject Dataにより、PDプリンタ装置1000が有している機能をスクリプト(Script)形式(図12)でDSC3012に送信する。
[GetImage]
図18は、本実施の形態に係るNCDPにおける、PDプリンタ装置1000がDSC3012に保持されている画像データ(JPEG画像)を取得する(GetImage)通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
まず1800で、DSC3012が保持しているオブジェクトに関する情報をPDプリンタ装置1000から要求されると、1801で、そのオブジェクトに関する情報(ObjectInfo Dataset)がDSC3012からPDプリンタ装置1000に送られる。次に、1802で、そのオブジェクトを指定して取得要求(GetObject)を発行すると、1803で、その要求された画像ファイル(Object Dataset)がDSC3012からPDプリンタ装置1000に対して送信される。この様にしてPDプリンタ装置1000は、DSC3012から所望の画像ファイルを取得することができる。
[StatusSend]
図19は、本実施の形態に係るNCDPにおける、PDプリンタ装置1000からDSC3012に対してエラー状態などを通知する(StatusSend)通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
まず1900で、PDプリンタ装置1000からDSC3012に対して送信したいオブジェクト情報がある旨をSendObjectInfoにより通知する。そして1901で、そのオブジェクト情報に関する情報セット(ObjectInfo Dataset)をDSC3012に送信し、DSC3012からの肯定応答(OK)に対して、PDプリンタ装置1000におけるエラー等のステータス情報をSendObjectおよびObject Datasetにより送信する。ここでPDプリンタ装置1000からDSC3012に送られるDataは、テキスト形式のデータ(Script)である。
[PageEnd]
図20は、本実施の形態に係るNCDPにおける、PDプリンタ装置1000からDSC3012に対して、1ページのプリント処理が終了したことを通知する(PageEnd)通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
[JobEnd]
図21は、本実施の形態に係るNCDPにおける、PDプリンタ装置1000からDSC3012に対して、プリントジョブが終了したことを通知する(JoeEnd)通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
図20,図21においては、図19の1900乃至1901の手順実行後、図20の1910で、PDプリンタ装置1000からDSC3012に対して1ページの印刷処理が終了したことが通知される。また図21の1911では、PDプリンタ装置1000からDSC3012に対して印刷ジョブが終了したことが通知される。ここでPDプリンタ装置1000からDSC3012に送信されるData(ページエンド、ジョブエンド)は、テキスト形式のデータ(Script)である。
[JobStart]
図22は、本実施の形態に係るNCDPにおける、DSC3012からPDプリンタ装置1000に対して、プリントジョブの開始を通知する(JobStart)通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
まず2200において、DSC3012からPDプリンタ装置1000に対してRequestObjectTransferを送り、PDプリンタ装置1000がGetObjectコマンドを発行するように促す。これにより2201で、PDプリンタ装置1000からGetObjectInfoが発行されると、DSC3012は送信したいオブジェクト情報に関する情報を送信し、これに対してPDプリンタ装置1000からオブジェクト情報が要求されると(GetObject:2203)、2204で、Object Datasetを送信して、DSC3012からPDプリンタ装置1000に対して印刷命令を発行する。ここでDSC3012からPDプリンタ装置1000に送信されるData(印刷開始命令)は、テキスト形式のデータ(Script)である。
[JobAbort]
図23は、本実施の形態に係るNCDPにおける、DSC3012からPDプリンタ装置1000に対してプリント中止命令を発行する(JobAbort)通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
[JobContinue]
図24は、本実施の形態に係るNCDPにおける、DSC3012からPDプリンタ装置1000に対してプリント再開命令を発行する(JobContinue)通信手順をPTPアーキテクチャを用いて実現した例を説明する図である。
図23及び図24において、図22の2200乃至2203の手順を実行した後、図23の2301で、DSC3012からPDプリンタ装置1000に対して印刷中止命令が発行され、図24の2401では、DSC3012からPDプリンタ装置1000に対して印刷再開命令が通知される。ここでDSC3012からPDプリンタ装置1000に送信されるData(印刷中止命令、印刷再開命令)は、テキスト形式のデータ(Script)である。
なお本発明は、複数の機器(例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能(カメラ側で行われる処理、プリンタ側で行われる各種印刷処理)を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
以上説明したように本実施の形態によれば、PDプリンタ装置をUSBホストにDSCをスレーブに設定し、印刷動作に入る前に、PDプリンタ装置が有しているCapabilityに関する情報をDSCに送信し、DSC側でそのCapability情報に基づいて最適な印刷モードを決定して印刷を行わせることができる。
またこのCapability情報の送信をスクリプトにより行うことにより、他の通信プロトコルへの移植が容易になり、標準化し易くなる。
また、デバイス間の通信手順は汎用ファイル、汎用フォーマットを用いて行い、その上位レイヤに、本実施の形態に係るアプリケーションの通信手順レイヤを規定することにより、各種インターフェース仕様に依存しない通信手順を規定することができる。
また、本実施の形態の印刷システムでは、不特定多数の装置同士が接続されるため、それらインターフェースも様々多様である。よって、各種インターフェースで標準にサポートされている仕様で情報をやり取りする必要が生じる。従って、これら装置間での送受信において必須となる機能情報は「ファイル転送」もしくは「オブジェクト転送」で実現させることにより、各種インターフェース仕様に容易に適合できるようにしている。
尚、画像供給デバイスとしてはデジタルカメラ以外にも、PDAや携帯電話、テレビジョン、ビデオ機器、画像記憶デバイス等が考えられる。
また、汎用インターフェースには、上述のUSBやIEEE1394等に加えてインターネット等のネットワークへの接続も含まれる。