以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
図1は、本発明の実施の形態に係る印刷システムの概要を説明する図である。
ここでは、本実施の形態に係るアダプタ1200をPD(Photo-Direct)プリンタ1000のUSB端子に取り付け、そのアダプタ1200の赤外線送受信部1202に対しカメラ付き携帯電話1100の赤外線送受信部1101から赤外線で画像データを送信して印刷を行わせる場合を示している。尚、後述するように、アダプタ120が画像情報を受信するときは、必ずしもプリンタに接続されている必要はない。但し、この場合は、アダプタ1200は電源を有している必要がある。
尚、図1では、アダプタ1200は赤外線により画像データを受信しているが、本発明はこれに限定されるものでなく、カメラ等のUSB端子を有する機器とUSBケーブルを介して接続する形態も含まれる。またアダプタ1200が画像データを記憶できるメモリ容量の不揮発メモリを有している場合には、そのアダプタ1200をカメラ等のUSB端子を有する機器に接続して画像データを記憶し、その後、そのアダプタ1200をPDプリンタ1000のUSB端子に取り付けて印刷する形態も含まれるものとする。
また後述するように、このアダプタ1200がオフライン状態、即ち、PDプリンタ1000に接続されていない状態でも、カメラ付き携帯電話1100からの画像情報を受信して記憶しておき、その後、PDプリンタ1000に接続されたときに、その画像情報の印刷先であるプリンタであることが確認できると、そのプリンタに、その記憶している画像情報に基づく印刷データを送信して印刷させることができる。
図2(A),(B)は、本実施の形態1に係るアダプタ1200の外観図である。
この実施の形態に係るアダプタ1200は、CPUやメモリを有し、各種操作ボタンによる操作指示に応じて各種制御を行えるインテリジェント機能を有している。1201は、印刷中断時の印刷再開を指示するための印刷続行ボタンである。印刷続行ボタン1201は、印刷ジョブの実行中以外においては他の機能を持たせてもよく、例えば印刷時の用紙サイズの選択するための用紙サイズ選択ボタンとして機能してもよい。また、用紙サイズの選択、印刷再開のそれぞれについて別個に操作ボタンを用意しても良い。また用紙サイズ以外に、レイアウト、印刷枚数、日付設定その他印刷結果に関わる各種設定を行う操作ボタンを別個に用意しても良い。1202は、赤外線通信のための赤外線送受信部である。1203は、PDプリンタ1000のダイレクト印刷用端子に接続するためのUSB端子である。1204は、アダプタ1200の状態を表す状態表示LEDである。このLED1204の表示を、印刷待機状態、印刷受付状態、画像転送状態、印刷実行中状態、印刷エラー状態、転送エラー状態などに応じて、その発光色や点灯、点滅のパターンを変更することでアダプタ1200の状態をユーザに通知する。このLED1204は、アダプタ1200の状態を表す以外に、各種UIとして機能するものを具備してもよく、例えば用紙サイズ表示を行うLED等が考えられる(不図示)。その場合、各LEDの上部には、用紙サイズを示す文字列(A4、ハガキ、カードなど)が印刷され(不図示)、操作ボタン1201を押下することで、そのLEDの表示が切り替わるようにしても良い。また用紙サイズ以外に、レイアウト、印刷枚数、日付設定、その他印刷結果に関わる各種設定結果を表示するLEDを別個に容易しても良い。また、数値を好適に表示するために7セグメント等のLEDやLCDなどを用いてもかまわない。
また用紙サイズを示す文字列は、前述したようにアダプタ1200の筐体に直接印刷する以外に、シールを添付することなどによって表示してもかまわない。この場合、世界各国の印刷文化圏に好適な用紙サイズ(例として、日本ではA4、L判、ハガキ、米国ではレター、4×6、カード)を印刷したシールを用意し、これらのサイズに対応するようにアダプタの内部ROM(後述)を差し替える。これによりアダプタの筐体を共通にしたままで、シールを張り替えることにより、世界各国でのより好適な利用が可能である。1205はダイレクト印刷規格のロゴシールである。これにより、USB端子1203を同じダイレクト印刷規格に対応したPDプリンタ1000に接続可能であることをユーザに認識させる。尚、このようなロゴシールを貼付する以外に、アダプタ1200の筐体に直接ロゴを印刷したり、刻印したりしてもかまわない。
また図2では、LEDやボタンといったUIを具備したアダプタを示したが、これらUIを排したアダプタも考えられる。このとき、アダプタがダイレクト印刷用のアダプタであることを明確にするためにも、ロゴシールの貼付はますます有用である。
図2(B)は、同じく本実施の形態1に係るアダプタ1210を示し、前述した赤外線通信の代わりに、後述するUSBケーブルを用いる場合の概観図である。尚、1211,1213〜1215は、前述の図2(A)の1201,1203〜1205のそれぞれと対応している。
1212は、デジタルカメラ(DSC)などの画像供給源とのUSB通信のためのUSB端子である。ここで、PDプリンタ1000と画像供給源との接続は有線で行われ、取り回しの利便性を考えると、アダプタ1210は外見上はケーブルのような形状となる。このとき、アダプタ1210のUSB端子は、USB−Aコネクタの形状となるため、ユーザがアダプタの接続方向を誤る恐れがある。そこで、アダプタ1210をPDプリンタ1000へ接続する側のUSB端子1203の近傍にロゴシール1215を添付、又は印刷、刻印することにより、前述した効果に加えて、アダプタ1210の接続方向を誤ってしまうことを防ぐことも可能である。
図3は、本実施の形態に係るアダプタ1200の制御に係る主要部の構成を説明するブロック図で、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
CPU3201は、ROM3203に記憶された制御プログラムに従って、後述する各種制御処理を担当している。ROM3202は、CPU3201により実行される処理手順(プログラム)を記憶している。ここではこのプログラムが適宜バージョンアップされることを想定し、書き込み可能な不揮発性メモリ、例えばフラッシュメモリで構成されてもよい。RAM3203は、CPU3201のワークエリアとして使用される。このRAM3203は、電源遮断時に、その内容が消去される揮発性のメモリであってもよいし、書き込み可能な不揮発性メモリ、例えばフラッシュメモリで構成されてもよい。またこれらを混在させ、目的に応じて別個のRAMを利用するようにしてもかまわない。一例としては、印刷画像ファイルや、後述する各プリンタからのCapabilityを、そのプリンタのIDなどに対応付けて保持する領域のみを不揮発性メモリに割り当てることで、アダプタ1200の電源遮断後であっても画像ファイルを保持し、アダプタ1200の電源再投入時に画像の再印刷を実現できる。3204は、このアダプタ用の電源で、バッテリで構成されている。但し、このアダプタ1200が、常にUSB接続された状態で使用される場合には、この電源3204はなくても良い。
図4は、本発明の実施の形態に係るフォトダイレクトプリンタ装置(以下、PDプリンタ)1000の概観斜視図である。このPDプリンタ1000は、ホストコンピュータ(PC)からデータを受信して印刷する通常のPCプリンタとしての機能と、メモリカードなどの記憶媒体に記憶されている画像データを直接読取って印刷したり、或いはデジタルカメラやPDAなどからの画像データを受信して印刷する機能を備えている。
図において、本実施の形態に係るPDプリンタ1000の外殻をなす本体は、下ケース1001、上ケース1002、アクセスカバー1003及び排出トレイ1004の外装部材を有している。また、下ケース1001は、PDプリンタ1000の略下半部を、上ケース1002は本体の略上半部をそれぞれ形成しており、両ケースの組合せによって内部に後述の各機構を収納する収納空間を有する中空体構造をなし、その上面部及び前面部にはそれぞれ開口部がされている。さらに、排出トレイ1004は、その一端部が下ケース1001に回転自在に保持され、その回転によって下ケース1001の前面部に形成される開口部を開閉させ得るようになっている。このため、記録動作を実行させる際には、排出トレイ1004を前面側へと回転させて開口部を開成させることにより、ここから記録されたシート(普通紙、専用紙、樹脂シート等を含む。以下単にシートとする)が排出可能となると共に、排出されたシートを順次積載し得るようになっている。また排紙トレイ1004には、2枚の補助トレイ1004a,1004bが収納されており、必要に応じて各トレイを手前に引き出すことにより、シートの支持面積を3段階に拡大、縮小させ得るようになっている。
アクセスカバー1003は、その一端部が上ケース1002に回転自在に保持され、上面に形成される開口部を開閉し得るようになっており、このアクセスカバー1003を開くことによって本体内部に収納されている記録ヘッドカートリッジ(不図示)或いはインクタンク(不図示)等の交換が可能となる。尚、ここでは特に図示しないが、アクセスカバー1003を開閉させると、その裏面に形成された突起がカバー開閉レバーを回転させるようになっており、そのレバーの回転位置をマイクロスイッチなどで検出することにより、アクセスカバー1003の開閉状態を検出し得るようになっている。
また、上ケース1002の上面には、電源キー1005が設けられている。また、上ケース1002の右側には、液晶表示部1006や各種キースイッチ等を備える操作パネル1010が設けられている。この操作パネル1010の構造は、図5を参照して詳しく後述する。1007は自動給送部で、シートを装置本体内へと自動的に給送する。1008は紙間選択レバーで、プリントヘッドとシートとの間隔を調整するためのレバーである。1009はカードスロットで、ここにメモリカードを装着可能なアダプタが挿入され、このアダプタを介してメモリカードに記憶されている画像データを直接取り込んで印刷することができる。このメモリカード(PC)としては、例えばコンパクトフラッシュ(登録商標)メモリ、スマートメディア、メモリスティック等がある。1011はビューワ(液晶表示部)で、このPDプリンタ1000の本体に着脱可能であり、PCカードに記憶されている画像の中からプリントしたい画像を検索する場合などに、1コマ毎の画像やインデックス画像などを表示するのに使用される。1012は前述のアダプタ1200、或は後述するデジタルカメラを接続するためのUSB端子である。また、このPD装置1000の後面には、パーソナルコンピュータ(PC)を接続するためのUSBコネクタが設けられている。
図5は、本実施の形態に係るPDプリンタ1000の操作パネル1010の概観図である。
図において、液晶表示部1006には、その左右に印刷されている項目に関するデータを各種設定するためのメニュー項目が表示される。ここに表示される項目としては、例えば、複数ある写真画像ファイルの内、印刷したい写真画像の先頭番号、指定コマ番号(開始コマ指定/印刷コマ指定)、印刷を終了したい最後の写真番号(終了)、印刷部数(部数)、印刷に使用するシートの種類(用紙種類)、1枚のシートに印刷する写真の枚数設定(レイアウト)、印刷の品位の指定(品位)、撮影した日付を印刷するかどうかの指定(日付印刷)、写真を補正して印刷するかどうかの指定(画像補正)、印刷に必要なシートの枚数表示(用紙枚数)等がある。これら各項目は、カーソルキー2001を用いて選択、或いは指定される。2002はモードキーで、このキーを押下する毎に、印刷の種類(インデックス印刷、全コマ印刷、1コマ印刷、指定コマ印刷等)を切り替えることができ、これに応じてLED2003の対応するLEDが点灯される。2004はメンテナンスキーで、プリントヘッドのクリーニング等、プリンタのメンテナンスを行わせるためのキーである。2005は印刷開始キーで、印刷の開始を指示する時、或いはメンテナンスの設定を確立する際に押下される。2006は印刷中止キーで、印刷を中止させる時や、メンテナンスの中止を指示する際に押下される。
次に図6を参照して、本実施の形態に係るPDプリンタ1000の制御に係る主要部の構成を説明する。
図6は、本実施の形態に係るPDプリンタ1000の制御に係る主要部の構成を示すブロック図で、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
図において、3000は制御部(制御基板)を示している。3001はASIC(専用カスタムLSI)を示している。3002はDSP(デジタル信号処理プロセッサ)で、内部にCPUを有し、後述する各種制御処理及び、輝度信号(RGB)から濃度信号(CMYK)への変換、スケーリング、ガンマ変換、誤差拡散等の画像処理等を担当している。3003はメモリで、DSP3002のCPUの制御プログラムを記憶するプログラムメモリ3003a、及び実行時のプログラムを記憶するRAMエリア、画像データなどを記憶するワークメモリとして機能するメモリエリアを有している。3004はプリンタエンジンで、ここでは、複数色のカラーインクを用いてカラー画像を印刷するインクジェットプリンタのプリンタエンジンが搭載されている。3005はデジタルカメラ(DSC)3012を接続するためのポートとしてのUSBコネクタである。3006はビューワ1011を接続するためのコネクタである。1013はPC3010を接続するためのポートとしてのUSBコネクタである。3008はUSBハブ(USBHUB)で、このPDプリンタ1000がPC3010からの画像データに基づいて印刷を行う際には、PC3010からのデータをそのままスルーし、USB3021を介してプリンタエンジン3004に出力する。これにより、接続されているPC3010は、プリンタエンジン3004と直接、データや信号のやり取りを行って印刷を実行することができる(一般的なPCプリンタとして機能する)。3009は電源コネクタで、電源3019により、商用ACから変換された直流電圧を入力している。PC3010は一般的なパーソナルコンピュータ、3011は前述したメモリカード(PCカード)、3012はデジタルカメラ(DSC:Digital Still Camera)である。尚、この制御部3000とプリンタエンジン3004との間の信号のやり取りは、前述したUSB3021を介して行われる。
このように本実施の形態に係るPDプリンタ1000は、直接画像データを受け取ることができるDSC3012の場合には、USB端子1012に接続されたDSC3012からのデータを直接受信して印刷することができる。また、直接画像データを受け取ることができないDSC3012や携帯電話などの場合には、USB端子1012に接続されたアダプタ1200を介して画像データを入力して印刷することになる。
図7(A)(B)は、本実施の形態に係るカメラ付き携帯電話1100の外観図で、図7(A)は操作面、図7(B)は、その背面を示している。
図において、1101は赤外線通信のための赤外線送受信部である。前述したアダプタ1200との赤外線送受信以外にも、他のカメラ付き携帯電話1100との間での赤外線送受信、TVなどのリモコン受光部を持つ電子機器に対しての赤外線送信などが可能である。液晶表示部1102は、携帯電話として使用する際に各種情報を表示する以外にも、カメラ起動時にはファインダーとして画像を表示したり、また撮影した画像などを表示することも可能である。操作ボタン1103は、携帯電話として使用する際にダイヤル番号の入力に使用される以外にも、メール文書の作成やカメラ起動時にも操作される。尚、これら操作ボタン1103の機能は、携帯電話1100の内部状態により多種多様に変化する。1104は撮像用レンズで、被写体を捉えて操作ボタン1103を操作することにより、光学ズーム操作やピント調整などを行ったり、撮像をすることが可能である。1105はメモリーカードを接続するためのメモリーカードスロットで、撮像した画像を保存/参照する以外にも、携帯電話内部の各種情報を保存/参照することができる。
図8は、本実施の形態に係るカメラ付き携帯電話1100の制御に係る主要部の構成を示すブロック図で、前述の図面と共通する部分は同じ記号を付与して、それらの説明を省略する。
CPU3103は、このカメラ付き携帯電話1100全体の動作を制御している。ROM3101は、CPU3103の処理手順(ファームウェア)を記憶している。このROM3101は、プログラムが適宜バージョンアップが行われることを想定し、書き込み可能な不揮発性メモリ、例えばフラッシュメモリで構成されてもよい。RAM3102は、CPU3103のワークエリアとして使用される。このRAM3102は、通常の揮発性メモリで構成してもよく、また、電源を切断してもワークエリアの内部状態を保持するために不揮発性メモリで構成してもよい。3106はCCD素子である。3107はドライバで、CPU3103の制御下において光学ユニット1101を制御する。3109はメモリーカードで、メモリーカードスロット1105に取り付けられる。このメモリカード3109は、通常コンパクトフラッシュ(登録商標)メモリカード、スマートメディア等が用いられる。
図9は、本発明の実施の形態に係るアダプタ1200をPDプリンタ1000に接続し、図1に示すように、アダプタ1200の赤外線送受信部1202に対しカメラ付き携帯電話1100の赤外線送受信部1101を向けた際のPDプリンタ1000、アダプタ1200、カメラ付き携帯電話1100のそれぞれが構築するプロトコルスタックの概要を示す図である。
PDプリンタ1000は、物理インターフェースとしてUSBホスト端子を用い、USBで標準に規定されているSICD(Still Image Capture Device)クラスのUSBホストとして働く。トランスポート制御は、このSICDを利用したPTPによって実現される。PDプリンタ1000内部のダイレクト印刷アプリケーションは、このPTPを利用してダイレクト印刷のための情報を、画像データの供給源と交換することによりダイレクト印刷プリンタとして機能する。
カメラ付き携帯電話1100は、物理インタフェイスとしてIrDA(Infrared Data Association)のSIR装置、又はFIR装置を用い、赤外線無線端末装置として動作する。上位のプロトコルとして、リンクアクセスにIrLAP(Link Access Protocol)を、リンク管理にIrLMP(Link Mahagement Protocol)を用い、トランスポート制御はこのIrLMPを利用したIrTinyTP(Tiny Transport Protocol)によって実現される。カメラ付き携帯電話1100内部のデータ転送アプリケーションは、このIrTinyTP上のIrOBEX(Object Exchange Protocol)を利用してデータ転送を行うことにより、赤外線データ通信端末として機能する。
なお、他のプロトコル構成によっても赤外線データ通信端末を実現でき、例えばデータ転送アプリケーションはIrTran−P(Transfer Picture)を用いた画像転送や、IrCOMMによるシリアル/パラレルポートエミュレーションを用いたデータ転送によっても実現可能である。
本実施の形態に係るアダプタ1200は、PDプリンタ1000及びカメラ付き携帯電話1100に対応するプロトコルスタックを両方とも具備し、図示したProtocol Translatorによって相互の通信プロトコルを変換する。例としては、カメラ付き携帯電話1100より赤外線で送信された画像データを受け取り、その受信した画像データを用いてProtocol Translatorによってダイレクト印刷用情報を生成し、PDプリンタ1000へダイレクト印刷ジョブを発行する。
尚、図9では、は画像データの供給源としてIrDA端子を具備したカメラ付き携帯電話1100を示したが、これ以外にもIrDA端子を具備し画像情報を転送できる端末であればカメラ付きでない携帯電話、PHS、PDA、デジタルスチルカメラその他の端末であってもよい。
また画像情報を転送するために画像供給源が具備する通信手段がIrDA以外のものであってもよく、例えばBlueTooth、802.11xなどの無線通信手段や、USB、IEEE1394、イーサネット(登録商標)などの有線通信手段であってもよい。
図10〜図13は、これらBlueTooth、802.11x、USB,IEEE1394を用いた際のプロトコルスタックの構成の一例を示す図である。
これらプロトコルスタックの各層の説明については省略するが、基本的には前述のIrDAによる例と同じく、画像ソース端末から受け取った画像データを用いてProtocol Translatorによってダイレクト印刷用情報を生成し、PDプリンタ1000へダイレクト印刷ジョブを発行する。これら各種の通信手段を用いた画像供給源としては、前述の携帯電話など以外にもカーナビゲーションシステム、PC、ゲーム機、デジタルTVその他の機器が考えられる。
図14は、本実施の形態に係るアダプタ1200とPDプリンタ1000とをUSBで接続してダイレクト印刷を行う場合の通信処理の流れを説明する図である。この処理フローでは、ダイレクト印刷を図9の左側のPTPアーキテクチャ上で実現した場合で説明する。
PDプリンタ1000とアダプタ1200とが物理的に接続された後、まず1401で、PDプリンタ1000とアダプタ1200との間で初期化が行われる。ここで互いの機器がダイレクト印刷に対応していることを確認する。次に1402で、アダプタ1200はPDプリンタ1000に対してCapabilityを要求して、PDプリンタ1000のCapabilityを取得する。次に1403で、アダプタ1200はPDプリンタ1000に対してジョブを発行して印刷を依頼する。次に1404で、PDプリンタ1000はアダプタ1200に対して、その時点でのプリンタの状態(ステータス)を通知し、印刷処理の開始を通知する。次に1405で、PDプリンタ1000はアダプタ1200に対して画像ファイルを要求し、印刷処理に必要な画像ファイルを取得する。そして1406で、PDプリンタ1000が印刷処理を実行し、印刷処理を完了すると1407で、PDプリンタ1000からアダプタ1200に対してプリンタの状態を通知を行い、印刷処理の完了を通知する。ここで1401〜1404,1407は、スクリプトの交換により情報を伝達しており、1405はPTPオペレーションをそのまま利用した純粋なファイル転送であり、GetObject, GetPartialObject等のファイル転送オペレーションを持いる。また1406は、純粋にPDプリンタ1000内部の処理である。
以下、図15〜図19を参照して、各処理の詳細を説明する。
図15は、USBによるダイレクト印刷時の初期化処理の流れを示す図で、図14の初期化処理1401の詳細説明図である。
PDプリンタ1000とアダプタ1200とが物理的に接続された後、まず1501で、PDプリンタ1000からアダプタ1200に対してGetDeviceInfoが送信され、アダプタ1200に対して、その保持しているオブジェクトに関する情報が要求される。これに対して1502でアダプタ1200は、DeviceInfo Datasetにより、アダプタ1200に保持しているオブジェクトに関する情報をPDプリンタ1000に送信する。次に1503で、OpenSessionにより、アダプタ1200をリソースとして割り当て、必要に応じてデータオブジェクトにハンドルをアサインしたり、特別な初期化を行うための手順の開始要求が発行されてアダプタ1200から肯定応答(OK)が返送されるとPTPでの通信が開始される。
次に1504で、アダプタ1200に対してスクリプト形式の全てのハンドルを要求する(Storage ID: FFFFF, Object Type Script)。これに対して1505で、アダプタ1200に保持されている全てのハンドルリストが返送される。次に1506,1507で、PDプリンタ1000からi番目のオブジェクトハンドルの情報を取得する。ここで、このオブジェクトに、アダプタ1200の識別を示すキーワード(例えば「山」)が含まれていると、次に1508で、PDプリンタ1000からオブジェクト情報の送信を指示して(SendObjectInfo)、それに対して肯定応答(OK)を受信すると、SendObjectにより、オブジェクト情報をPDプリンタ1000からアダプタ1200に対して送信する。ここで、このオブジェクトには、前述のキーワードに対する応答キーワード(合言葉)として例えば「川」が含まれている。このようにして、PDプリンタ1000とアダプタ1200の双方が互いに接続相手を認識できることになり、これ以降はダイレクト印刷を開始することができる。
図16(A)(B)は、USBによるダイレクト印刷時のスクリプト転送処理を説明するフローで、図14の1402〜1404,1407でのPTPレベルでの共通の振る舞いを示す。
図16(A)は、PDプリンタ1000からアダプタ1200に対してスクリプトを伝達する処理のフローである。
まず最初、PDプリンタ1000は、SendObjectInfoにより、アダプタ1200に対してオブジェクト情報の送信要求を伝える。次にObjectInfo Datasetを送信して、そのオブジェクト情報を通知する。アダプタ1200は、そのオブジェクト情報を受信して解析し、オブジェクトの本体が受信可能であれば受信予定のオブジェクトに割り当てるオブジェクトハンドル番号と共にOKを応答する。このOKの応答に続いて、PDプリンタ1000は、SendObjectにより、アダプタ1200に対してオブジェクト本体の送信要求を伝える。そしてObject Dataを送信して、そのオブジェクトの本体をスクリプト(Script)形式でアダプタ1200に送信する。アダプタ1200はそのオブジェクトの本体を受信し、オブジェクト本体を受信完了したらOKを応答する。
図16(B)は、アダプタ1200からPDプリンタ1000に対してスクリプトを伝達する処理のフローを示す。
まずアダプタ1200からPDプリンタ1000に対してRequestObjectTransferを送り、PDプリンタ1000が所定のオブジェクトハンドルのオブジェクト取得を行うように促す。これにより、PDプリンタ1000は、GetObjectInfoによりアダプタ1200に対して所定のオブジェクトハンドルのオブジェクトのオブジェクト情報の取得要求を伝える。アダプタ1200は、このGetObjectInfoを受信すると、送信したいオブジェクトのオブジェクト情報ObjectInfo Datasetを送信し、送信が完了したらOKを応答する。このOKの応答に続いて、PDプリンタ1000は、GetObjectによりオブジェクト本体の伝送要求を伝える。アダプタ1200は、このGetObjectを受信すると、送信したいオブジェクトのオブジェクト本体を送信し、送信が完了したらOKを応答する。
以上の様にしてUSBでのダイレクト印刷時には、スクリプトをPDプリンタ1000とアダプタ1200との間でやり取りする事で情報交換を行う。
図17〜図19は、本実施の形態においてUSBでのダイレクト印刷時に交換されるスクリプトの例である。
図17(A)(B)は、USBでのダイレクト印刷時におけるCapabilityを取得するためのスクリプトの一例を示す図、図14のCapabilityの要求1402で使用される。
図17(A)は、アダプタ1200からPDプリンタ1000に対して送信されるCapability要求スクリプトを示し、本例ではPDプリンタ1000がサポートしている画像フォーマットの種類を要求している。
図17(B)は、PDプリンタ1000からアダプタ1200に対して送信されるCapability要求スクリプト(図17(A))に対する応答スクリプトの一例を示し、本例ではPDプリンタ1000はJPEG及びPNGの2種類のフォーマットをサポートしている場合を示す。
このCapability取得スクリプトは、他にも印刷用紙のサポートサイズや、印刷用紙種類、また各印刷用紙のサイズに対応したレイアウト印刷機能、固定サイズ印刷機能、印刷品位、画像補正、画像切り取り、日付印刷、ファイル名印刷等のCapability情報のやり取りに利用される。
図18は、USBでのダイレクト印刷時におけるジョブ発行スクリプトを説明する図で、図14のジョブ発行1403で使用される。
図18(A)は、アダプタ1200からPDプリンタ1000に対して送信されるジョブ発行スクリプトを示し、この例ではオブジェクトハンドル番号「00000001」のJPEG画像1枚の印刷を要求している。
図18(B)は、PDプリンタ1000からアダプタ1200に対して送信されるジョブ発行スクリプト(図18(A))に対する応答スクリプトの一例を示し、この例ではPDプリンタ1000が印刷ジョブを受け付けて、OKを応答している。
図18(C)は、PDプリンタ1000からアダプタ1200に対して送信されるジョブ発行スクリプト(図18(A))に対する他の応答スクリプトの例を示し、この例ではPDプリンタ1000が印刷ジョブを実行できずに拒否してNGで応答している。
このジョブ発行スクリプトは、他にもCapabilityの取得スクリプトで説明したように、画像フォーマット以外の用紙サイズ等を指定する場合にも利用される。また複数の画像を1回のジョブ発行スクリプトで指定することや、各画像の部数指定、切り取り領域指定、日付指定、ファイル名指定にも利用される。
また図18(C)の拒否内容もNGだけでなく、他の画像供給源からの画像データを印刷しているためなのか、それとも印刷ジョブの設定が間違っているからなのか、等の理由を通知する場合にも利用される。
図19(A)(B)は、USBでのダイレクト印刷時のステータス通知スクリプトの一例を示し、図14のステータス通知1404及び1407で使用される。
図19(A)は、PDプリンタ1000からアダプタ1200に対して送信されるステータス通知スクリプトを示し、この例では、PDプリンタ1000が印刷状態でなく、印刷開始可能な待機状態(IDLE)であるステータスを通知している。
図19(B)は、アダプタ1200からPDプリンタ1000に対して送信されるステータス通知スクリプト(図19(A))に対する応答スクリプトの一例を示し、この例ではOKを応答している。
このステータス通知スクリプトは、他にもエラーの発生状況や発生したエラーの種別、ページ数や印刷写真枚数等の印刷中のジョブの状況、ケーブルを外してもPDプリンタ1000が印刷ジョブを完遂出来る状態で有るか否か、次の印刷ジョブを受け付け可能であるか否か、Capability情報が更新されたか否か、印刷ジョブの終了理由等のやり取りに利用される。
また、このステータスは、PDプリンタ1000からアダプタ1200に対して通知するだけではなく、アダプタ1200からPDプリンタ1000に対して要求する場合も有り得る。
更に、スクリプトの交換は、前述のCapabilityの取得、ジョブの発行、ステータスの通知以外にも、印刷ジョブの中断、エラーからの復帰、バージョン情報、機器名、シリアル番号、ベンダ名等の認証情報の確認・交換、等のコマンドにも利用される。
図20は、本実施の形態に係るアダプタ1200と携帯電話1100との間での、IrDA時の初期化及びファイル転送の処理の流れを示す図である。このフローではファイル転送を図9の右側のIrOBEXアーキテクチャ上で実施した場合で説明する。
まず2011で、携帯電話1100はアダプタ1200に対して接続確認(CONNECT)を発行する。これにより2012で、アダプタ1200が接続を許可する場合にはSUCCESS応答を返す。次に2013で、携帯電話1100は転送したいファイルのファイル名やサイズ等の情報とファイル本体を含む全体データのうちの先頭パケットを送信する(PUT)。アダプタ1200は先頭パケットを正常に受信したら、2014で次のデータを送付可能である旨を示すCINTINUE応答を返す。次に2015で、携帯電話1100は次のパケットを送信し、2016でアダプタ1200は次のパケットを正常に受信したら、次のデータを送付可能である旨を示すCONTINUE応答を返す。同様にして、2017〜2018が処理される。そして2019で、携帯電話1100は最終パケットを送信し、2020でアダプタ1200は最後のパケットを正常に受信したら、データの受信が完了した旨を示すSUCCESS応答を返す。
以上説明したように、携帯電話1100からPUTで送信された画像に対し、アダプタ1200はPTPのオブジェクトハンドルを割り振り、そのオブジェクトハンドルを利用したダイレクト印刷をPDプリンタ1000に対して依頼する事となる。
尚、図10の右側のBT接続時の処理の流れも、図20の説明とほぼ同等であるため、その説明を省略する。
また図11の右側のUSB接続時の処理フローは、純粋なPTPのSendObjectInfo/SendObjectを利用するため、その説明を省略する。
図21は、本発明の一実施例の処理フローチャートで、ここではPDプリンタ1000がアダプタ1200と接続された場合に、アダプタ1200が実行する初期化処理を説明している。これは不図示の検出器によりアダプタ1200がPDプリンタ1000と接続されたことを検出することにより開始される。
まずステップS101で、アダプタ1200とPDプリンタ1000間のI/Fを初期化する。本実施例では、PDプリンタ1000とアダプタ1200とは前記の通りUSBで接続されるものとする。また本実施例では、トランスポート層としてPTP層が採用されているが、この通信仕様は本発明を限定するものではない。またPTPによるUSB接続の初期化方法は公知の技術であるのでここでの詳細な説明は省略する。こうしてUSB接続の初期化が完了するとプリンタとアダプタとの間でデータの送受信の準備が完了する。
次にステップS102で、PDプリンタ1000から、そのプリンタが有しているダイレクトプリントCapabilityを取得する。即ち、今回接続されたプリンタがどの様なダイレクトプリント仕様を有しているかの情報を取得する。このCapabilityの取得は、アダプタ1200からの要求で実行されるが、PDプリンタ1000からPUSHされる形態であっても良い。そしてアダプタ1200は、PDプリンタ1000からのCapabilityの取得を完了するとステップS103で、そのプリンタとの接続をソフト的に切断する。
ここでソフト的に切断する理由は以下の通りである。アダプタ1200は複数種のプリンタに接続されることが想定される。プリンタの構成によっては、ダイレクトプリンタのための通信が確立している間、それ以外の外部機器との通信を拒絶する場合がある。即ち、アダプタ1200が接続されている間は、PCからの印刷ができなくなる仕様のプリンタがある。この種のプリンタに接続される機器が、同じダイレクト印刷の仕様を有するデジタルカメラであれば、通常、ダイレクト印刷が完了した時点でデジタルカメラとプリンタとが分離されるため、プリンタがPCからのデータを受信して印刷できなくなるといった問題が生じる虞は少ない。しかし本実施例のアダプタ1200の場合には、ダイレクト印刷の要否に係わりなく常にプリンタに接続され続ける場合が想定される。よってアダプタ形式でのダイレクト印刷にあっては、プリンタとアダプタとの通信が必要になる場合以外は、アダプタとプリンタとの接続が切られていることが望ましい。しかし、自動的に、アダプタとプリンタとの接続を物理的に切断することは困難なので、ここではソフト的(非物理的)に通信を切断する。本実施例では、アダプタ1200の電気的な接続を切断(Open)し、アダプタ1200がプリンタ1000から抜かれたのと同様な状況を作ることでソフト的(非物理的)に切断している。
本実施例では、前述のようにアダプタとプリンタとの間はPTP接続であり、アダプタ側がスレーブ接続となっているので、プログラム的に通信を切断することが困難であった。しかし、I/Fの仕様によってはアダプタからプログラム的に接続を切断することが可能な場合もある。この様なI/Fが採用されている場合には、前述した電気的な切断ではなく、プログラム的にその接続を切断する仕様であっても勿論良い。
次にステップS104で、アダプタ1200は、その取得したプリンタ1000のCapabilityに応じて、アダプタ1200におけるUI表示を構築する。ここでは例えば、プリンタ1000のCapabilityの1つとして「用紙サイズ」がある。この場合、プリンタ1000がA4サイズをサポートできる場合には、アダプタ1200はA4サイズが選択できるようにUIを構築し、もしA4サイズをサポートできなければ、A4サイズを選択できないようにアダプタのUIを構築する。以下同様にして、「紙種」や「日付印刷の可否」など、ダイレクト印刷に関するそれぞれのCapabilityに応じてアダプタのUIを再構築する。そしてこれ以降、アダプタ1200は、PDプリンタ1000から取得したCapabilityに応じて、その構築したUIに基づいてユーザにダイレクト印刷のサービスを提供する。
次にステップS105で、RAM3203に保存されている画像データを基に、接続されたPDプリンタ1000に対応する印刷データを作成し、その印刷データをアダプタ1200からPDプリンタ1000に送信して印刷を行う。こうして印刷が終了するとステップS106で、アダプタ1200がPDプリンタ1000から物理的に分離されたかどうかを判定し、分離された場合、即ち、アダプタ1200がPDプリンタ1000から取り外された場合はステップS107に進み、アダプタ1200は、そのPDプリンタ1000のCapabilityをキャンセルして、ステップS108で、アダプタのUIを更新する。本実施例では、この時点でアダプタ1200が表示するUIは、デフォルト設定に戻される。即ち、ダイレクト印刷を行う上で必ず有しているマンダトリ機能にUI選択機能が制限される。尚、後述する実施の形態のアダプタでは、ステップS107でのCapabilityをキャンセル時、そのCapabilityをRAM3203に不揮発に記憶している。
図22は、本実施例に係るアダプタ1200がPDプリンタ1000に接続されている状態で、アダプタ1200が携帯電話1100からの画像データを受信してダイレクト印刷が行われる場合の動作を説明するフローチャートである。
まずステップS201で、携帯電話1100とアダプタ1200とが接続されたことを検出すると、アダプタ1200と携帯電話1100の間でI/Fの初期化を行う。次にステップS202で、通信の初期化後、アダプタ1200は携帯電話1100からのダイレクト印刷の要求が入力されるのを待ち、印刷要求が入力されるとステップS203に進み、携帯電話1100からの印刷データを受信する。この印刷データとしては、ダイレクト印刷の対象となる画像データと、そのダイレクト印刷の印刷条件を記したデータなどが送られてくる場合がある。よってアダプタ1200は、印刷命令の受信とともにPDプリンタ1000との間でダイレクト印刷を行うための通信の確立を行うことができるが、本実施例では、この段階では、PDプリンタ1000との通信の確立は行わない。
こうしてステップS204で、携帯電話1100からのデータ受信を完了するとステップS205に進み、アダプタ1200は、携帯電話1100に対して印刷データの受信が正常終了したことを伝えて携帯電話1100との一連のジョブを終了させる。このとき携帯電話1100は、仕様によってはダイレクト印刷を行っていると理解していない場合がある。即ち、携帯電話1100としては、USBホスト(ここではアダプタ1200)に対してファイル転送をしているだけの場合がある。
前述のように本実施例では、携帯電話1100は必ずしも特別のダイレクト印刷アプリケーションを搭載している必要はなく、単に選択されたデータ(画像データ)を通信が確立している接続先にファイル転送するものでも良い。この場合、アダプタ1200は、その画像データをPDプリンタ1000が理解できる仕様に変換してPDプリンタ1000にデータ転送を行うので、結果としてダイレクト印刷が可能になっている。特にこのような場合には、画像データを転送するだけの携帯電話1100では、データの転送が完了した段階でジョブが終了するので、アダプタ1200は速やかにジョブを終了させる必要がある。よって本実施例では、携帯電話1100からのデータ転送が終了した段階で、携帯電話1100との間のジョブを終了させる。
こうしてダイレクト印刷用の全てのデータを受信したアダプタ1200は、この段階でPDプリンタ1000とのI/Fの接続を再開する。即ち、ステップS206で、アダプタ1200がPDプリンタ1000と物理的に接続されている場合はステップS207で、そのPDプリンタ1000との間でI/Fの初期化を行って通信を確立する。次にステップS208で、携帯電話1100からの受信データを、PDプリンタ1000との間のダイレクト印刷プロトコルのデータ仕様に変換する。そしてステップS209で、順次、PDプリンタ1000にダイレクト印刷データを転送する。こうしてステップS210で、ダイレクト印刷データの転送が完了するとステップS211に進み、再度、PDプリンタ1000とアダプタ1200との接続を、前述と同様にソフト的(電気的)に切断し、再びステップS202に戻って、携帯電話1100からの印刷要求が入力されるのを待つ。以上が本実施例に係るアダプタ1200におけるダイレクト印刷動作の説明である。
ここでアダプタ1200の電源は、アダプタが独自に備える構成であっても良いが、本実施例では、USBを介してPDプリンタ1000から供給されている。この場合、アダプタ1200は、携帯電話1100から受信した印刷データを保持するための不揮発性メモリを備えるのが望ましい。これはアダプタ1200が携帯電話1100からの印刷データを受信している段階で、かつPDプリンタ1000とのI/Fが確立されていない場合、PDプリンタ1000の電源がオフされる可能性があるため、その受信したデータを不揮発に保存できるのは有効である。
またアダプタ1200が格納するデータは、携帯電話1100から受信したデータをそのものであってもよいが、ダイレクト印刷のために、圧縮などの加工を行って記憶するようにしても良い。
尚、この動作は、PDプリンタ1000がアダプタ1200と接続されたことを検出した場合で説明したが、PDプリンタ1000の電源がオフ状態からオンされた場合にも同様の処理が実行される。
以上の構成により、以下のような効果が得られる。
(A)プリンタと携帯電話との間で共通のダイレクト印刷仕様のプロトコルを有していない場合でも、アダプタを介することにより、プリンタと携帯電話との間でダイレクト印刷を可能にできる。
(B)携帯電話からのデータ転送中等のように、プリンタがダイレクト印刷動作に入れない状態で、携帯電話がプリンタを占有してしまうことが避けられるので、プリンタの稼働率を向上できる。
(C)携帯電話からのデータ転送中は、その携帯電話からのデータ受信を最優先するので、携帯電話をいち早く解放できる。これはデジタルカメラをはじめデータ供給機器がバッテリ駆動のモバイル機の場合に特に有効となる。
(D)プリンタがデータ受信可能状態(レディ状態)でなくても、画像データの供給源からダイレクト印刷用のデータを受信できる。特に、プリンタとの接続に関係なく、携帯電話と接続して携帯電話からの印刷データを受信できる。
上記実施例では、アダプタ1200が画像供給源から印刷データを受信した後、プリンタがレディ状態にならなかった場合、或はプリンタの電源がオフされた場合、又はプリンタが接続されていない場合等でも、ダイレクト印刷が行える場合について説明した。この例では、ダイレクト印刷の途中で、PDプリンタ1000が復帰不可能な状態になった場合でも、ダイレクト印刷を完結できる場合について説明する。
図22のステップS209のダイレクト印刷開始から、ステップS211のダイレクト印刷完了の間で、PDプリンタ1000が復帰不可能なエラーを起こした場合、この処理はステップS207の「プリンタとアダプタ間I/Fの初期化」に戻って、PDプリンタ1000の復帰を待つ。通常、プリンタが復帰不可能(この時、印刷の継続も不可能)なエラーを起こした場合、そのプリンタを復帰するためにプリンタの電源のオフ/オン、或はそれに相当するプリンタの初期化処理が行われる。この時、当然I/Fの初期化も行われる。よって、アダプタ1200とPDプリンタ1000との接続は一旦切断され、プリンタが復帰した後、再度I/Fが確立される。よってダイレクト印刷の動作として、アダプタ1200がステップS207の「プリンタとアダプタ間I/Fの初期化」の段階で待機していることにより、ダイレクト印刷の再開が可能となる。
この時、アダプタ1200がPDプリンタ1000から電力を供給されている場合は、PDプリンタ1000の初期化と同時に、その電力供給が断たれ、アダプタ1200が初期化されてしまう場合が考えられる。このような場合には、アダプタ1200はステップS207の「プリンタとアダプタ間I/Fの初期化」に戻る前に、レジューム機能を用いて電源が再投入された場合、ステップS207の段階から復帰できるように制御される仕様であっても良い。電源再投入時に電源オフ時の作業に復帰させるレジューム機能は公知の技術であるのでここでの詳細な説明は省略する。
また、このような自動復帰の仕様ではなく、アダプタ1200のUIを用いて、ユーザが自動復帰を指示したときにのみ、保持されている最新のダイレクト印刷データを用いて印刷を行う仕様であっても良い。この場合でも、再度、携帯電話を立ち上げてダイレクト印刷用の画像を選択し、ダイレクト印刷を指示する手間が省け、使い勝手の向上に大きく寄与できる。
また同様に、PDプリンタ1000が接続されていない状態で、携帯電話1100からダイレクト印刷のデータを受信した場合(この時、アダプタ1200は独自の電源3204を有している)、アダプタ1200は、ステップS206の「プリンタとアダプタ間I/F接続」の状態で待機する仕様とすることにより、アダプタ1200がPDプリンタ1000に接続された時に、自動的にダイレクト印刷を開始できる。また自動復帰の仕様ではなく、アダプタ1200のUIを用いてユーザが自動復帰を指示したときのみ、そのアダプタに保持されている最新のダイレクト印刷データを用いて印刷を行う仕様であっても良い。
以上のような構成とすることにより、
(A)ダイレクト印刷の途中でプリンタが復帰不可能なエラーを生じた場合でも、再度、携帯電話からアダプタにダイレクト印刷のジョブを転送しなくても、ダイレクト印刷を再開できる。
(B)ダイレクト印刷用データを携帯電話から受信した段階でアダプタ1200がPDプリンタ1000と接続されていない状況であっても、アダプタ1200がPDプリンタ1000と接続された時点で、ダイレクト印刷を開始できる。
また上記実施例で、携帯電話1100とアダプタ1200との接続を簡易なダイレクト印刷接続としたが本発明はこれに限る必要は無く、アダプタ1200とPDプリンタ1000との接続に用いるダイレクト印刷接続と異なる接続であれば良い。よって上記実施例において、携帯電話1100とアダプタ1200との接続が純粋な転送接続であっても良い。
尚、上記説明では、画像供給源が携帯電話1100の場合で説明したが、本発明はこれに限定されるものでなく、DSC3012、TV、ゲーム機器、PDA等であっても良い。
[実施の形態1]
前述の実施例では、画像供給源(携帯電話など)とアダプタ1200、アダプタとPDプリンタ1000のそれぞれが接続される端子を別個に具備したアダプタ1200の場合で説明した、これに対して実施の形態1では、画像供給源とアダプタ1200、アダプタ1200とPDプリンタ1000のそれぞれが接続される端子を1個の端子で共有するアダプタの場合で説明する。
図23は、本発明の実施の形態1に係るアダプタ1220の概観図で、前述の図2と共通する部分は同じ記号で示し、その説明を省略する。
どちらの接続においてもアダプタ1220がUSBスレーブになる場合、このアダプタ1220にはUSB−Aコネクタ1203が一個のみ設けられている。従って、この場合のアダプタ1220の構成は、前述の図3において、赤外線用の端子(IrDA)1202が省略されたものとなる。
このアダプタ1220の使われ方として、PDプリンタ1000とアダプタ1220と画像供給源の三者が同時に接続されないことが前提となる。前述の実施例では、PDプリンタ1000とアダプタとが物理的に接続されていなくても印刷予約が可能であると説明した。即ち、通常の状態では、PDプリンタ1000とアダプタとが物理的に接続されていることを前提とし、PDプリンタ1000とアダプタとが物理接続をされていない時の印刷予約時に行える印刷設定は、PDプリンタ1000がダイレクト印刷を行う上で必ず有しているマンダトリ機能に限定していた。
これに対して本実施の形態1では、前述したように、PDプリンタ1000とアダプタ1220、画像供給源の三者が同時に接続されないことが前提となるため、PDプリンタ1000とアダプタ1220とが物理的に接続されていない時の印刷予約時には、その後に印刷を実行するために使用されるであろうPDプリンタ1000のCapabilityを反映した印刷設定を行える手段を用意しなければならない。
また、アダプタ1220のUSB−Aコネクタ1203を、PDプリンタ1000との接続用と画像供給源との接続用で兼用する場合、アダプタ1220がUSBホストに接続された時に、そのホストがPDプリンタ1000なのか画像供給源なのか、或はそれ以外の機器なのかを正しく判別できる必要がある。
図24(A)(B)は、本実施の形態1に係るアダプタ1220の使用時の概略を説明する図である。図24(A)は、画像供給源であるPC3010にアダプタ1220を接続し、そのPC3010からアダプタ1220に画像データを転送することで、その画像の印刷予約を実現している。ここでは、画像供給源としてPC3010を図示したが、USBホストとしてPTP転送を行える機器であればこれに限定されるものでなく、例えばゲーム機などであっても良い。
図24(B)は、画像の印刷が予約されたアダプタ1220をPDプリンタ1000に接続して印刷を実現する場合を示している。この場合、予約された画像印刷ジョブはエリア1221に記憶されている。この印刷ジョブに基づいてPDプリンタ1000により印刷を終えると、アダプタ1220は、そのエリア1221に記憶されていた、印刷に用いた各種情報(画像、印刷設定情報など)を自動的に消去する。
図25は、本実施の形態1に係るアダプタ1220をUSBホスト(画像供給源、PDプリンタを含む)へ接続した際のアダプタにおける動作を示すフローチャートである。尚、この処理を実行するプログラムはROM3203に記憶されており、CPU3201の制御の下で実行される。
この処理は、プリンタを指定した印刷ジョブが予め記憶されているアダプタを使用することを前提としており、アダプタ1220をUSBホストへ接続することにより開始される。アダプタ1220がUSBホストへ接続されると、アダプタ1220はPTP接続によりホストと通信を開始する。その後、ステップS301で、アダプタ1220は、USBホストに対してダイレクト印刷接続を確立しようとする。ここでの動作は図14における初期化処理1401に相当している。ステップS301でダイレクト印刷接続が確立された場合はステップS302に進む。尚、ステップS301で、一定時間が経過してもダイレクト印刷接続が確立されない場合は、アダプタ1220がPDプリンタ1000以外の機器(例えばPCやカメラ)と接続されたと判断してステップS306に進む。
ステップS302では、USBホストであるPDプリンタ1000と接続されると、アダプタ1220は、前回PDプリンタ1000と接続された時に取得して記憶しているCapability情報が、今回接続したPDプリンタ1000のCapability情報と整合するか否かを判定する。この判定方法としては、前回接続されたPDプリンタ1000の機種名情報をRAM3203に不揮発に記憶しておき、それと比較することにより判定する方法等が考えられるが、このような判定を行うことなく、接続されたプリンタから毎回無条件にCapability情報を取得しても良い。尚、この場合はステップS303の取得処理は不要になる。ステップS302で、Capability情報の整合が取れると判定するとステップS304に進み、不整合ならばステップS303に進む。尚、製品購入後の初めての場合のように、アダプタ1220に前回接続されたプリンタ情報が記憶されていない場合もステップS303に進み、接続されているPDプリンタ1000から、そのCapability情報を取得してRAM3203に記録する。
次にステップS304で、アダプタ1220は、RAM3203に印刷予約ジョブが記憶されているか否かを判断する。ここでの印刷予約ジョブとは、アダプタ1220が、以前に画像供給源に接続された際に生成、蓄積された、画像情報そのものを含む印刷のための情報である。ここで印刷予約ジョブが存在する場合はステップS305に進み、その記憶している印刷予約ジョブに従って、その記憶している画像情報をダイレクト印刷ジョブ用の印刷データに変換し、PDプリンタ1000に印刷ジョブを発行して印刷を行う。ここでのダイレクト印刷のための処理については、通常のDSC3012とPDプリンタ1000との間で公知な技術であるので詳細は述べない。こうして印刷が完了するとステップS308で、アダプタ1220は、画像供給源との接続を解除する。このとき可能ならば電源供給のための接続は残したままで、通信用の接続のみを解除してもよい。一方、ステップS304で、印刷予約ジョブが存在しない場合はステップS308に進み、画像供給源とのソフト的な接続を解消する。
一方、ステップS301で、ダイレクト印刷処理が開始されないときはステップS306に進む。この場合は、アダプタ1220はPDプリンタ1000以外のUSBホストとPTPで接続されるているため、PTPによるファイル転送を受け付ける。そして、この転送されたファイルを基に印刷予約ジョブを作成する。そしてステップS307に進み、アダプタ1220は、ホストから接続が解除されたかどうかを確認する。接続が継続されていなければステップS306に戻り、引き続き画像転送を受付け、接続が解除されるとステップS308に進む。
尚、ステップS306で、画像ファイル転送に付随する情報によって、印刷予約ジョブのための付加情報を与えても良い。この付加情報の例として、以下のようなものが考えられる。
アダプタ1220が保持している、PDプリンタ1000のCapability情報を基に、PDプリンタ1000が印刷可能な紙サイズを反映したフォルダ構成をUSBホストに対して公開する。例として、PDプリンタ1000がA4、ハガキ、L判の印刷に対応しているならば、アダプタ1220はUSBホストに対して、「A4」、「Hagaki」、「L」、「Default」の4種のフォルダを公開する。そしてUSBホストからのPTP転送時に、任意のフォルダに対して画像を転送することにより、印刷予約ジョブの紙サイズ指定情報を指示する。
またアダプタ1220の有するUIを操作することにより、印刷予約ジョブの設定を行っても良い。その場合も、アダプタ1220のUI(LEDとボタンなど)は、PDプリンタ1000のCapability情報を基に表示や動作を行う。ここで、フォルダの構成によってUSBホストに公開する情報は、紙サイズのCapabilityに限らず、紙種、印刷枚数、印刷品位などであってもよい。
図26は、本実施の形態1に係るアダプタとPDプリンタ1000及びDSC3012との間でのデータのやり取りを説明する図である。ここでは、アダプタ1220が新規に接続されたPDプリンタ1000からCapabilityを取得し、画像供給源(図中DSC3012)から画像データを受取り、PDプリンタ1000へ印刷ジョブを発行して印刷が完了するまでの、PDプリンタ、アダプタ、画像供給源による動作の流れを説明している。尚、画像供給源は、上述の携帯電話1100でも良い。
2601では、ユーザにより、アダプタ1220とPDプリンタ1000とが物理的に接続される。2602では、アダプタ1220とPDプリンタ1000との間でダイレクト印刷のための通信を確立する。2603では、PDプリンタ1000から、そのCapability情報を取得して、そのCapability情報をRAM(不揮発)3203に記憶する。尚、ここで既にアダプタ1220が、そのPDプリンタ1000のCapability情報を取得して保持していることが分かれば、この取得処理は省略される。次に2604で、アダプタ1220は、PDプリンタ1000とのUSB接続を自動的に解除する。
この状態で、アダプタ1220に、ダイレクト印刷対象のPDプリンタ1000のCapability情報が記憶されたことになる。
ユーザによりアダプタ1220とPDプリンタ1000との物理的な接続が解除されると、次に2605で、ユーザにより、このアダプタ1220はDSC3012と物理的に接続される。そして2606で、アダプタ1220は、DSC3012から画像データを受け取る。このとき前述したように、アダプタ1220は、PDプリンタ1000から取得したCapability情報を基に、設定可能な印刷項目(紙サイズなど)をDSC3012へフォルダ構成として公開したり、アダプタ1220のUIをユーザに操作させたりすることにより、転送画像の印刷設定を行うことが可能である。そして2607で、アダプタ1220とDSC3012の間の接続が解除される。このときの解除の方法としては、ユーザの操作による物理的な接続解除でも良いし、DSC3012の動作による論理的な接続解除であってもよい。
次に2608で、アダプタ1202は、DSC3012から転送された画像を基に印刷予約ジョブを作成する。このジョブの形態としては、実際にアダプタ1220からPDプリンタ1000への印刷ジョブの実行時に使用されるスクリプトそのものであってもよいし、印刷ジョブの実行時に使用されるスクリプトを生成するために必要十分である情報の集まりであってもよい。
また印刷予約ジョブを作成する(2608)タイミングは、2607の直後である必要は必ずしも無く、DSC3012からの画像データの転送(2606)の直後から、後述する、PDプリンタ1000へ印刷開始を通知する(2610)の直前までの間のいずれのタイミングであっても良い。尚、この予約印刷ジョブの作成にあたっては、アダプタ1202が有しているUI機能を使用しても良く、或はDSC3012と接続されている場合、DSC3012のUI機能を使用して作成しても良い。
こうしてユーザにより、アダプタ1220とDSC3012との物理的な接続が解除され、次に2609で、アダプタ1220とPDプリンタ1000とが物理的に再接続される。このとき、アダプタ1220が保持しているCapability情報は、再接続先であるPDプリンタ1000のCapability情報と一致するため、Capability情報の取得は行われない。次に2610で、アダプタ1220は、その生成した印刷予約ジョブを基にPDプリンタ1000へ印刷開始を通知する。これによりPDプリンタ1000は、2611で、アダプタ1220に対して印刷用の画像データの転送依頼を行う。これにより2612で、アダプタ1220からPDプリンタ1000に対して画像データを転送する。こうして2613で、PDプリンタ1000は、その受信した画像データを基に印刷を行う。
こうして印刷が終了すると、2614で、PDプリンタ1000からアダプタ1220に、印刷が終了したことを通知する。これによりアダプタ1220は、2615で、PDプリンタ1000とのUSB接続を自動的に解除する。そして2616で、アダプタ1220は、印刷に用いた印刷画像や印刷予約ジョブをRAM3203から消去する。
この実施の形態1では、アダプタ1220は同時に一機種のCapability情報を保持するとして説明した。例えば、DSC3012とアダプタ1220とを接続して印刷予約ジョブを生成した後、印刷時に別のプリンタに接続されることが考えられる。このような場合には、予約印刷ジョブが想定していたプリンタではないため、そのCapabilityが異なる場合があり、そのような場合には印刷予約ジョブで期待した通りの印刷物を得ることができない。そこで、図25のフローチャートのステップS304では、その接続されたプリンタを使用した予約印刷ジョブがない場合には、そのまま処理を終了している。
又別の解決方法として、アダプタ1220がPDプリンタ1000へ印刷ジョブを発行する際に、再度、PDプリンタへの印刷ジョブの設定内容が、PDプリンタのCapability情報と整合が取れているかを確認し、整合が取れていない場合には、該当する設定箇所を、そのCapabilityに整合し直すか、或はいずれのプリンタでも実現できる設定値(デフォルト設定)に変更して印刷ジョブを発行すること等が考えられる。また、整合が取れていない場合、印刷を行わずにUI上でエラー表示などを行うことにより、そのアダプタ1220を、整合が取れるプリンタへ接続し直すようにユーザに促しても良い。
またユーザによっては複数のプリンタを所有している場合も考えられる。本実施の形態2に係るアダプタを用いる場合、各々のプリンタのCapabilityを反映させた印刷予約を行うために、画像供給源と接続する前に、印刷を行う予定のプリンタとアダプタとを接続して、そのプリンタのCapability情報を取得し直す必要がある。例えば、ユーザが、3台のプリンタA〜Cの3台を有する場合、アダプタ1220は、既にプリンタAのCapability情報を保持している。この状態では、プリンタAのCapabilityを反映した印刷予約のみしか行えない。つまりプリンタBで印刷したい画像がある場合には、そのアダプタ1220をプリンタBに接続した後、画像供給源とアダプタ1220とを接続する必要がある。
この問題を解決するために、アダプタ1220に、過去に接続したことのある複数のプリンタのCapabilityを記憶しておき、画像供給源とアダプタとを接続した際に、それら複数のプリンタのいずれを用いて印刷するかをユーザに選択させる方法が考えられる。この場合のユーザによる選択方法としては、前述の図25のフローチャートのステップS306で説明したように、転送先フォルダの指定による方法がある。この場合、例えば過去にプリンタA〜Cとアダプタ1220とが接続されていたならば、画像供給源とアダプタ1220とを接続した時に、アダプタ1220は画像供給源に対してプリンタA〜Cのフォルダを公開する。この場合のプリンタ名は、USBで規定される「DeviceDescription」の情報や、ダイレクト印刷プロトコル上で、接続初期化時にやり取りされる情報などを基に特定できる。また、同機種のプリンタであっても、そのプリンタの機種名に加えてシリアルナンバ情報も取得することにより、これらプリンタを区別できる。
これらフォルダの中には、各々のプリンタのCapabilityを反映した印刷予約が行えるように、前述のフローチャートのステップS306(図25)と同様に、印刷設定可能な項目(紙サイズなど)をフォルダ構成で表現可能である。尚、このようなフォルダの公開以外にも、アダプタ1220上のUIで、印刷したいプリンタ名を選択できるようにしても良い。
以上の方法によって、画像供給源とアダプタとを接続した際に、ユーザはいずれのプリンタを用いて画像を印刷するかを明確に指定できる。
また印刷に用いるプリンタを指定して印刷予約を行った場合は、印刷予約ジョブ情報と、印刷を実行するべきプリンタの機種情報とを関連付けてアダプタが保持する。そして、そのアダプタが、印刷を実行するべきプリンタと接続された場合にのみ該当する印刷予約ジョブを実行するようにできる。
尚、ここで、過去に一度もプリンタに接続されていないアダプタでも印刷予約に用いる場合のために、「AnyPrinter」として定義されたプリンタを選択しても良い。この場合、この「AnyPrinter」のCapabilityとしては、ダイレクト印刷を行う上で必ず有しているマンダトリ機能のみを持たせる。「AnyPrinter」が選択された印刷予約ジョブは、いずれのプリンタでも印刷できる。尚、既にプリンタA〜Cと接続されたアダプタであっても、更に、「AnyPrinter」を加えて選択可能としてもよい。この場合であっても、「AnyPrinter」の振る舞いは前述のとおりである。
またユーザが新しいプリンタを導入する時、必ずそのプリンタをアダプタに登録すれば、「AnyPrinter」を選択した印刷予約ジョブは、プリンタA〜Cのいずれかのプリンタで実行されると考えられる。よって、「AnyPrinter」のCapabilityとして、登録されているプリンタの全てで実行可能なCapabilityを持たせても良い。例えば、プリンタA〜Cの全てのCapability情報で紙サイズとして「L判」、「2L判」が選択可能であれば、「AnyPrinter」のCapability情報でも同様に、紙サイズとして「L判」、「2L判」を選択可能としても良い。
[実施の形態2]
前述の実施の形態1に係るアダプタは、1つのUSB端子だけを有していたが、本実施の形態2では、USB端子に加えてIrDA端子も具備したアダプタ1200の場合で説明する。
図27(A)〜(D)は、本発明の実施の形態2に係るアダプタ1200の使用時の概略を表した図である。
このアダプタ1200は、IrDA端子を備えることにより、実施の形態2における印刷方法と実施の形態1による方法、即ち、アダプタ1200をPDプリンタ1000に接続し、IrDA端子で受信した画像データを基に印刷を行う方法のいずれでも印刷が可能になる。図27(A)は、PC3010にアダプタ1200を接続して印刷予約を行う状態を示している。図27(B)は、PDプリンタ1000にアダプタ1200を接続して印刷予約された印刷ジョブを実行する状態を示している。こうして印刷ジョブが実行されると、エリア1221に記憶されていた印刷ジョブが消去される。また図27(C)は、IrDA端子から受信した印刷データによる印刷予約の後、アダプタ1200をPDプリンタ1000に接続して印刷ジョブを実行する状態を示している。この場合も、印刷ジョブが実行されると、エリア1221に記憶されていた印刷ジョブが消去される。更に、図27(D)は、IrDA端子から受信した画像データを、アダプタ1200を介してPC3010に転送する状態を示している。具体的には、携帯電話1100等の他のIrDA端子付き端末から赤外線で転送される画像ファイルをアダプタ1200が受け取り、その受信した画像ファイルをエリア1221に保持し、PTP接続に対応したUSBホストに対して転送する。この場合は印刷ジョブが終了していないので、エリア1221に記憶されていた印刷ジョブは消去されずに保持される。
このような場合、アダプタ1200がPDプリンタ1000に接続されている状態で、IrDA端子が受信したファイルについては、ダイレクト印刷用の画像ファイルとして取り扱う必要がある。またアダプタ1200がダイレクト印刷は行えないがPTP通信に対応したUSBホストに接続されている状態で、IrDA端子が受信したファイルについては、アダプタ1200がUSBホストへPTP接続によって公開し、USBホストから任意に読み書きのできる領域に保存する必要がある。
図28は、本実施の形態2に係るアダプタ1200をUSBホスト(画像供給源、PDプリンタを含む)へ接続し、IrDA端子を介して画像ファイルを受信した際の動作を示すフローチャートである。
この処理は、IrDAI/F1202で、ファイルを受信することにより開始され、まずステップS401で、アダプタ1200が既にUSBホストとのUSB接続を確立しているかどうかを判定する。ここで接続を確立していればステップS403に進むが、接続を確立していなければステップS402に進み、USBホストに対してSICデバイスクラスとして振る舞い、USBホストとの間でPTP接続の開始を試みてステップS403に進む。このPTP接続時の手順の詳細は、Picture Transfer Protocol(PIMA15740)を参照されたい。
ステップS403では、アダプタ1200は、USBホストとの間でPTP接続を確立しているかどうかを判定する。ここでPTP接続を確立していると判定するとステップS404に進むが、PTP接続を確立していないと判定すると、この処理を終了する。
ステップS404では、アダプタ1200は、USBホストとの間でダイレクト印刷接続のための通信接続を開始する。次にステップS405で、アダプタ1200は、USBホストとの間でダイレクト印刷のための通信接続を確立しているかどうかを判定する。この手順は、必要であれば、ステップS404の処理から一定時間(例えば、30秒)以内で繰り返したり、確立されたことを表すシグナルを待機することで実現しても良い。こうしてステップS405で、ダイレクト印刷のための通信接続を確立していると判定するとステップS406に進み、アダプタ1200は、IrDAI/F1202を介して受信したファイルを、印刷のための画像ファイルとして扱い、ダイレクト印刷を行う(前述の実施例参照)。そして、このIrDA転送処理を終了する。
一方ステップS405で、ダイレクト印刷のための通信接続を確立していなければステップS407に進み、アダプタ1200は、IrDAI/F1202を介して受信したファイルを、アダプタ1200のストレージ用のメモリ領域1221に保存する。ここで保存されたファイルは、USBホストとのPTP接続によりUSBホストから取り扱うことが可能である。このときのプロトコルスタックの例として、USBホストがPTPに対応したPCであった場合を例に図29に示す。
図29は、本発明の実施の形態2に係るアダプタ1200をPDプリンタ1000に接続し、図1に示すように、アダプタ1200の赤外線送受信部1202に対しカメラ付き携帯電話1100の赤外線送受信部1101を向けた際のPDプリンタ1000、アダプタ1200、カメラ付き携帯電話1100のそれぞれが構築するプロトコルスタックの概要を示す図である。
尚、図28で、アダプタ1200がIrDAによるファイルを受信した際に、実際のファイルの受信処理が完了してからステップS401に進んでも良いが、この時点ではファイル転送を受け付ける旨の返答を行わず、ステップS407又はS406で、ファイルの保存先が確定した時点で返答を行うようにしても良い。その場合、ステップS403で、PTP接続が確立されていない場合は、アダプタ1200へのファイル転送は行わないため、ステップS403で処理を終了させる場合に、IrDAI/F1202を介してファイルの受付を拒否する旨の返答を行う。これにより、実際には必要でないファイルのIrDA転送を無駄に行うことを未然に防ぐことができる。
以上、本実施の形態2に係るアダプタ1200において、アダプタの接続先のUSBホストによって、IrDAのファイル転送を受けた時の動作を切り替える方法について述べた。
ここで、例えばアダプタが電池を内蔵し、USBホストに接続されていなくともIrDAによるファイルを受付可能である場合、受け取ったファイルの取り扱いをUSBホストによって決定することができない。このような場合は、その受信したファイルの取り扱い方法として、単純に、USBホストと接続されていない状態でIrDAによりファイルを受信した場合、アダプタ1200のストレージ用の領域に保存するようにしても良い。
また、受信したファイルのファイルパスが、特定のフォルダ(例:ForPrinting)の下位に位置しているように記述されている場合には、ダイレクト印刷予約用の画像ファイルとして扱っても良い。この場合、アダプタ1200は、そのアダプタのUIの設定に基づいた印刷設定による印刷予約ジョブを生成する。
以上説明したように本実施の形態によれば、離れたところにある画像形成装置(プリンタ)と画像供給源(カメラや携帯電話など)との間で、画像形成装置のCapabilityを反映したダイレクト印刷を行うことができる。
また、アダプタの接続先を検知して、そのアダプタの動作を切り替える効果として、アダプタにIrDA端子が搭載されていた場合には、IrDAからのファイル受信時に、アダプタの接続先に応じた動作を行うことができる。