以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成部品の寸法、材質、形状、その相対配置などは、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
初めに、本発明の装置及びその動作について詳細に説明する。
[ハードウェア]
(全体構成)
画像処理装置1001の全体構成図を図3に示す。
コントローラユニット2000は、イメージデータ入力手段の一例である画像入力デバイスとしてのスキャナ2070や、イメージデータ出力手段の一例である画像出力デバイスとしてのプリンタ2095と接続する一方、LAN2011や公衆回線(WAN)2051と接続することで、画像情報やデバイス情報の入出力を行う。
CPU2001は、システム全体を制御するプロセッサである。
RAM2002は、CPU2002が動作するためのシステムワークメモリであり、プログラムを記憶するためのプログラムメモリや、画像データを一時記憶するための画像メモリでもある。
ROM2003は、ブートROMであり、システムのブートプログラムが格納されている。
HDD2004は、ハードディスクドライブで、システムソフトウェア、画像データを格納する。
操作部I/F2006は、操作部(UI)2012とのインタフェース部で、操作部2012に表示する画像データを操作部2012に対して出力する。また、操作部2012から本システム使用者が入力した情報を、CPU2001に伝える役割をする。
ネットワーク2010は、LAN2011に接続し、情報の入出力を行う。
モデム2050は、公衆回線2051に接続し、情報の入出力を行う。
以上のデバイスがシステムバス2007上に配置される。
イメージバスI/F2005は、システムバス2007と画像データを高速で転送する画像バス2008を接続し、データ構造を変換するバスブリッジである。
画像バス2008は、PCIバスまたはIEEE1394で構成される。画像バス2008上には以下のデバイスが配置される。
ラスタイメージプロセッサ(RIP)2060は、PDLコードをビットマップイメージに展開する。
デバイスI/F部2020は、画像入出力デバイスであるスキャナ2070やプリンタ2095とコントローラユニット2000を接続し、画像データの同期系/非同期系の変換を行う。
スキャナ画像処理部2080は、入力画像データに対し補正、加工、編集を行う。プリンタ画像処理部2090は、プリント出力画像データに対して、プリンタの補正、解像度変換等を行う。
画像回転処理部2030は、画像データの回転を行う。
画像圧縮処理部2040は、多値画像データはJPEG(Joint Photographic Experts
Group)、2値画像画像データはJBIG(Joint Bi-level Image Experts Group)、MMR(Modified Modified READ)、MH等の圧縮伸長処理を行う。
(画像入出力部)
画像入出力デバイスを図4で示す。図4は、図3で構成を示した画像処理装置の外観図である。
画像入力デバイスであるスキャナ部2070は、原稿となる紙上の画像を照明し、CCDラインセンサ(図示せず)で走査することで、ラスタイメージデータとして電気信号に変換する。
原稿用紙は原稿フィーダ2072のトレイ2073にセットし、装置使用者が操作部2012から読み取り起動指示することにより、コントローラCPU2001がスキャナ2070に指示を与え(2071、図3参照)、フィーダ2072は原稿用紙を1枚ずつフ
ィードし原稿画像の読み取り動作を行う。
画像出力デバイスであるプリンタ部2095は、ラスタイメージデータを用紙上の画像に変換する部分であり、その方式は感光体ドラムや感光体ベルトを用いた電子写真方式、微少ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式等があるが、どの方式でも構わない。プリント動作の起動は、コントローラCPU2001からの指示によって開始する。
プリンタ部2095には、異なる用紙サイズまたは異なる用紙向きを選択できるように複数の給紙段を持ち、それに対応した用紙カセット2101、2102、2103、2104がある。
また、排紙トレイ2111は印字し終わった用紙を受けるものである。
(操作部)
操作部2012の構成を図5に示す。
LCD表示部2013は、LCD上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報をコントローラCPU2001に伝える。
スタートキー2014は、原稿画像の読み取り動作を開始する時などに用いる。スタートキー2014中央部には、緑と赤の2色LED2018があり、その色によってスタートキー2014が使える状態にあるかどうかを示す。
ストップキー2015は、稼働中の動作を止める働きをする。
IDキー2016は、使用者のユーザIDを入力する時に用いる。
リセットキー2017は、操作部からの設定を初期化する時に用いる。
(スキャナ画像処理部)
スキャナ画像処理部2080の構成を図6に示す。
画像バスI/Fコントローラ2081は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、スキャナ画像処理部2080内の各デバイスの制御及びタイミングを発生させる。
フィルタ処理部2082は、空間フィルタでコンボリューション演算を行う。
編集部2083は、例えば入力画像データからマーカーペンで囲まれた閉領域を認識して、その閉領域内の画像データに対して、影つけ、網掛け、ネガポジ反転等の画像加工処理を行う。
変倍処理部2084は、読み取り画像の解像度を変える場合にラスターイメージの主走査方向について補間演算を行い拡大、縮小を行う。副走査方向の変倍については、画像読み取りラインセンサ(図示せず)を走査する速度を変えることで行う。
テーブル2085は、読み取った輝度データである画像データを濃度データに変換するために行うテーブル変換である。
2値化2086は、多値のグレースケール画像データを、誤差拡散処理やスクリーン処理によって2値化する。
処理が終了した画像データは、再び画像バスI/Fコントローラ2081を介して、画像バス上に転送される。
(プリンタ画像処理部)
プリンタ画像処理部2090の構成を図7に示す。
画像バスI/Fコントローラ2091は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、プリンタ画像処理部2090内の各デバイスの制御及びタイミングを発生させる。
解像度変換部2092は、ネットワーク2011あるいは公衆回線2051から来た画像データを、プリンタ2095の解像度に変換するための解像度変換を行う。
スムージング処理部2093は、解像度変換後の画像データのジャギー(斜め線等の白黒境界部に現れる画像のがさつき)を滑らかにする処理を行う。
(画像圧縮部)
画像圧縮処理部2040の構成を図8に示す。
画像バスI/Fコントローラ2041は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働き、入力バッファ2042・出力バッファ2045とのデータのやりとりを行うためのタイミング制御及び、画像圧縮部2043に対するモード設定などの制御を行う。以下に画像圧縮処理部の処理手順を示す。
画像バス2008を介して、CPU2001から画像バスI/Fコントローラ2041に画像圧縮制御のための設定を行う。この設定により画像バスI/Fコントローラ2041は画像圧縮部2043に対して画像圧縮に必要な設定(例えば、MMR圧縮・JBIG伸長等)を行う。
必要な設定を行った後に、再度CPU2001から画像バスI/Fコントローラ2041に対して画像データ配信の許可を行う。この許可に従い、画像バスI/Fコントローラ2041はRAM2002もしくは画像バス2008上の各デバイスから画像データの転送を開始する。
受け取った画像データは、入力バッファ2042に一時格納され、画像圧縮部2043の画像データ要求に応じて一定のスピードで画像を転送する。この際、入力バッファ2042は、画像バスI/Fコントローラ2041と、画像圧縮部2043両者の間で、画像データを転送できるかどうかを判断し、画像バス2008からの画像データの読み込み及び、画像圧縮部2043への画像の書き込みが不可能である場合は、データの転送を行わないような制御を行う(以後このような制御をハンドシェークと呼称する)。
画像圧縮部2043は、受け取った画像データを、一旦RAM2044に格納する。これは画像圧縮を行う際には、行う画像圧縮処理の種類によって、数ライン分のデータを要するためであり、最初の1ライン分の圧縮を行うためには数ライン分の画像データを用意してからでないと画像圧縮が行えないためである。
画像圧縮を施された画像データは直ちに出力バッファ2045に送られる。出力バッファ2045では、画像バスI/Fコントローラ2041及び画像圧縮部2043とのハンドシェークを行い、画像データを画像バスI/Fコントローラ2041に転送する。
画像バスI/Fコントローラ2041では、転送された圧縮(もしくは伸長)された画像データをRAM2002もしくは画像バス2008上の各デバイスにデータを転送する。
こうした一連の処理は、CPU2001からの処理要求が無くなるまで(必要なページ数の処理が終わったとき)、もしくはこの画像圧縮部から停止要求が出るまで(圧縮及び伸長時のエラー発生時等)繰り返される。
(画像回転部)
画像回転部2030の構成を図9に示す。
画像バスI/Fコントローラ2031は、画像バス2008と接続し、そのバスシーケンスを制御する働き、画像回転部2032にモード等を設定する制御及び、画像回転部2032に画像データを転送するためのタイミング制御を行う。以下に画像回転部の処理手順を示す。
画像バス2008を介して、CPU2001から画像バスI/Fコントローラ2031に画像回転制御のための設定を行う。この設定により画像バスI/Fコントローラ2041は画像回転部2032に対して画像回転に必要な設定(たとえば画像サイズや回転方向・角度等)を行う。
必要な設定を行った後に、再度CPU2001から画像バスI/Fコントローラ2031に対して画像データ配信の許可を行う。この許可に従い、画像バスI/Fコントローラ2031はRAM2002もしくは画像バス2008上の各デバイスから画像データの転送を開始する。尚、ここでは32bitをそのサイズとし回転を行う画像サイズを32×32(bit)とし、又、画像バス2008上に画像データを転送させる際に32bitを単位とする画像転送を行うものとする(扱う画像は2値を想定する)。
上述のように、32×32(bit)の画像を得るためには、上述の単位データ転送を32回行う必要があり、且つ不連続なアドレスから画像データを転送する必要がある(図10参照)。
不連続アドレッシングにより転送された画像データは、読み出し時に所望の角度に回転されているように、RAM2033に書き込まれる。例えば、90度反時計方向回転であれば、最初に転送された32bitの画像データを、図11のようにY方向に書き込んでいく。読み出し時にX方向に読み出すことで、画像が回転される。
32×32(bit)の画像回転(RAM2033への書き込み)が完了した後、画像回転部2032はRAM2033から上述した読み出し方法で画像データを読み出し、画像バスI/Fコントローラ2031に画像を転送する。
回転処理された画像データを受け取った画像バスI/Fコントローラ2031は、連続アドレッシングを以て、RAM2002もしくは画像バス2008上の各デバイスにデータを転送する。
こうした一連の処理は、CPU2001からの処理要求が無くなるまで(必要なページ
数の処理が終わったとき)繰り返される。
(デバイスI/F部)
デバイスI/F部2020の構成を図12に示す。
画像バスI/Fコントローラ2021は、画像バス2008と接続し、そのバスアクセスシーケンスを制御する働きと、デバイスI/F部2020内の各デバイスの制御及びタイミングを発生させる。また、外部のスキャナ2070及びプリンタ2095への制御信号を発生させる。
スキャンバッファ2022は、スキャナ2070から送られてくる画像データを一時保存し、画像バス2008に同期させて画像データを出力する。
シリアルパラレル・パラレルシリアル変換2023は、スキャンバッファ2022に保存された画像データを順番に並べて、あるいは分解して、画像バス2008に転送できる画像データのデータ幅に変換する。
パラレルシリアル・シリアルパラレル変換2024は、画像バス2008から転送された画像データを分解して、あるいは順番に並べて、プリントバッファ2025に保存できる画像データのデータ幅に変換する。
プリントバッファ2025は、画像バス2008から送られてくる画像データを一時保存し、プリンタ2095に同期させて画像データを出力する。
画像スキャン時の処理手順を以下に示す。
スキャナ2070から送られてくる画像データをスキャナ2070から送られてくるタイミング信号に同期させて、スキャンバッファ2022に保存する。そして、画像バス2008がPCIバスの場合には、バッファ内に画像データが32ビット以上入ったときに、画像データを先入れ先出しで32ビット分、バッファからシリアルパラレル・パラレルシリアル変換2023に送り、32ビットの画像データに変換し、画像バスI/Fコントローラ2021を通して画像バス2008上に転送する。
また、画像バス2008がIEEE1394の場合には、バッファ内の画像データを先入れ先出しで、バッファからシリアルパラレル・パラレルシリアル変換2023に送り、シリアル画像データに変換し、画像バスI/Fコントローラ2021を通して画像バス2008上に転送する。
画像プリント時の処理手順を以下に示す。
画像バス2008がPCIバスの場合には、画像バスから送られてくる32ビットの画像データを画像バスI/Fコントローラ2021で受け取り、パラレルシリアル・シリアルパラレル変換2024に送り、プリンタ2095の入力データビット数の画像データに分解し、プリントバッファ2025に保存する。
また、画像バス2008がIEEE1394の場合には、画像バスから送られてくるシリアル画像データを画像バスI/Fコントローラ2021で受け取り、パラレルシリアル・シリアルパラレル変換2024に送り、プリンタ2095の入力データビット数の画像データに変換し、プリントバッファ2025に保存する。そして、プリンタ2095から送られてくるタイミング信号に同期させて、バッファ内の画像データを先入れ先出しで、
プリンタ2095に送る。
[ソフトウェア]
次に、図3の装置でCPU2001によって実行されるプログラム、及びそのプログラムを実行することで遂行される機能などを説明する。
(システム全体)
本発明の画像配信装置を含むネットワークシステムの構成を図1に示す。
画像処理装置1001は、図3に示した本発明に係る画像配信装置の一例で、スキャナとプリンタとを含み、スキャナから読み込んだ画像をローカルエリアネットワーク1010(以下LAN)に流したり、LAN1010から受信した画像をプリンタによりプリントアウトできる。
また、スキャナから読んだ画像を図示しないFAX送信手段により、PSTNまたはISDN等の公衆回線1030に送信したり、PSTNまたはISDNから受信した画像をプリンタ1040によりプリントアウトできる。
データベースサーバ1002は、画像処理装置1001により読み込んだ2値画像及び多値画像をデータベースとして管理する。
データベースクライアント1003は、データベースサーバ1002に保存されている画像データを閲覧/検索等できる。
電子メールサーバ1004は、画像処理装置1001により読み取った画像を電子メールに添付された画像として受け取ることができる。
電子メールクライアント1005は、電子メールサーバ1004の受け取ったメールを受信し閲覧したり、電子メールを送信したりできる。
WWWサーバ1006は、HTML文書をLANに提供する。
画像処理装置1001は、WWWサーバ1006で提供されるHTML文書をプリントアウトできる。
ルータ1011は、LAN1010をインターネット/イントラネット1012と連結する。
インターネット/イントラネット1012は、前述した画像処理装置1001,データベースサーバ1002,WWWサーバ1006,電子メールサーバ1004のそれぞれと同様の装置が、それぞれ1020,1021,1022,1023として接続されている。
一方、画像処理装置1001は、PSTNまたはISDN1030を介してファクシミリ装置1031と送受信可能になっている。また、LAN1010上にプリンタ1040も連結されており、画像処理装置1001により読み取った画像をプリントアウト可能なように構成されている。
(ソフトウェアブロック全体構成)
図2は、画像処理装置1001のソフトウェアブロック図である。
ユーザインタフェース(UI)1501は、オペレータが本複合機の各種操作・設定を行う際、機器との仲介を行うモジュールである。本モジュールは、オペレータの繰作に従い、後述の各種モジュールに入力情報を転送し処理の依頼、あるいはデータの設定等を行う。
アドレスブック1502は、データの送付先、通信先等を管理するデータベースモジュールである。アドレスブック1502の内容は、UI1501からの操作によりデータの追加、削除、取得が行われ、オペレータの操作により後述の各モジュールにデータの送付・通信先情報を与えるものとして使用されるものである。
ウエブサーバモジュール1503は、図外のウエブクライアントからの要求により、本複合機の管理情報を通知するために使用される。
管理情報は、後述のコントロールAPI(Application Programming Interface)15
18を介して読み取られ、後述のHTTP1512、TCP/IP1516、ネットワークドライバ1517を介してウエブクライアントに通知される。
ユニバーサルセンドモジュール1504は、画像データの配信を司るモジュールであり、UI1501によりオペレータに指示された画像データを、同様に指示された通信(出力)先に配信するものである。また、オペレータにより、本機器のスキャナ機能を使用し配信する画像データの生成が指示された場合は、後述のコントロールAPI1518を介して機器を動作させ、データの生成を行う。
PRTモジュール1505は、ユニバーサルセンドモジュール1504内で出力先にプリンタが指定された際に実行されるモジュールである。
Eメールモジュール1506は、ユニバーサルセンドモジュール1504内で通信先にE−メールアドレスが指定された際に実行されるモジュールである。
データベースモジュール1507は、ユニバーサルセンドモジュール1504内で出力先にデータベースが指定された際に実行されるモジュールである。
データプロセッサモジュール1508は、ユニバーサルセンドモジュール1504内で出力先に画像処理装置1001と同様の複合機が指定された際に実行されるモジュールである。
リモートコピースキャンモジュール1509は、本装置のスキャナ機能を使用し、ネットワーク等で接続された他の複合機を出力先とし、本複合機単体で実現しているコピー機能と同等の処理を行うモジュールである。
リモートコピープリントモジュール1510は、本装置のプリンタ機能を使用し、ネットワーク等で接続された他の複合機を入力先とし、本複合機単体で実現しているCopy機能と同等の処理を行うモジュールである。
ウエブプルプリントモジュール1511は、インターネットまたはイントラネット上の各種ホームページの情報を読み出し、印刷するモジュールである。
HTTPモジュール1512は、本複合機がHTTPにより通信する際に使用されるモジュールであり、後述のTCP/IPモジュール1516によりウェブサーバ1503、
ウエブプルプリントモジュール1511に通信を提供するものである。
lprモジュール1513は、後述のTCP/IPモジュール1516によりユニバーサルセンドモジュール1504内のPRTモジュール1505に通信を提供するものである。
SMTPモジュール1514は、後述のTCP/IPモジュール1516によりユニバーサルセンドモジュール1504内のE−mailモジュール1506に通信を提供するものである。
サリュテーションマネージャ(SLM)モジュール1515は、後述のTCP/IP1516モジュールによりユニバーサルセンドモジュール1504内のデータベースモジュール1507、DPモジュール1508、及びリモートコピースキャンモジュール1509、リモートプリントモジュール1510に通信を提供するものである。
TCP/IPモジュール1516は、前述の各種モジュールに、後述のネットワークドライバ1517によりネットワーク通信を提供するものである。
ネットワークドライバ1517は、ネットワークとの物理的な接続を制御するものである。
コントロールAPI1518は、ユニバーサルセンドモジュール1504等の上流モジュールに対し、後述のジョブマネージャ1519等の下流モジュールとのインタフェースを提供するものであり、上流、及び下流のモジュール間の依存関係を軽減しそれぞれの流用性を高めるものである。
ジョブマネージャ1519は、前述の各種モジュールよりコントロールAPI1518を介して指示される処理を解釈し、後述の各モジュールに指示を与えるものである。また、本モジュールは、本複合機内で実行されるハード的な処理を一元管理するものである。
CODECマネージャ1520は、ジョブマネージャ1519が指示する処理の中でデータの各種圧縮・伸長を管理・制御するものである。
FBEエンコーダ1521は、ジョブマネージャ1519、スキャナマネージャ1524により実行されるスキャン処理により読み込まれたデータをFBEフォーマットにより圧縮するものである。
JPEG−CODEC1522は、ジョブマネージャ1519、スキャナマネージャ1524により実行されるスキャン処理、及びプリントマネージャ1526により実行される印刷処理において、読み込まれたデータのJPEG圧縮及び印刷データのJPEG展開処理を行うものである。
MMR−CODEC1523は、ジョブマネージャ1519、スキャナマネージャ1524により実行されるスキャン処理、及びプリントマネージャ1526により実行される印刷処理において、読み込まれたデータのMMR圧縮及び印刷データのMMR伸長処理を行うものである。
スキャナマネージャ1524は、ジョブマネージャ1519が指示するスキャン処理を管理・制御するものである。
SCSIドライバ1525は、スキャナマネージャ1524と接続しているスキャナ部との通信を行うものである。
プリンタマネージャ1526は、ジョブマネージャ1519が指示する印刷処理を管理・制御するものである。
エンジンI/Fドライバ1527は、プリンタマネージャ1526とエンジン部とのI/Fを提供するものである。
パラレルポートドライバ1528は、ウエブプルプリントモジュール1511がパラレルポートを介して図外の出力機器にデータを出力する際のI/Fを提供するものである。
(アプリケーション)
以下、画像処理装置1001の組込みアプリケーションの実施の形態について図面を用いて説明する。
図15は、画像処理装置1001によるデータの配信に関する組込みアプリケーションブロックを表すものである。以下、それぞれのブロックに照らし合わせながら、アプリケーション群の説明を行う。
(ユーザインタフェース(UI)アプリケーション)
UI4050は、前記したとおりであるが、ここでは、アドレスブック4051について説明する。アドレスブック4051は、画像処理装置1001内の不揮発性の記憶デバイス(不揮発性メモリやハードディスクなど)に保存されており、この中には、ネットワークに接続された機器の特徴が記載されている。例えば、以下に列挙するような情報が含まれている。
機器の正式名やエイリアス名
機器のネットワークアドレス
機器の処理可能なネットワークプロトコル
機器の処理可能なドキュメントフォーマット
機器の処理可能な圧縮タイプ
機器の処理可能なイメージ解像度
プリンタ機器の場合の給紙可能な紙サイズ、給紙段情報
サーバ(コンピュータ)機器の場合のドキュメントを格納可能なフォルダ名。
以下に説明する各アプリケーションは、アドレスブック4051に記載された情報により配信先の特徴を判別することが可能となる。また、このアドレスブック4051は、編集可能であると共に、ネットワーク内のサーバコンピュータなどに保存されているものをダウンロードしたり、直接参照したりして使用することも可能である。
(リモートコピーアプリケーション)
リモートコピーアプリケーション4100は、配信先に指定された機器の処理可能な解像度情報を前記アドレスブック4051より判別し、それに従い、スキャナにより読み取った2値画像をMMR圧縮を用いて圧縮し、それをTIFF(Tagged Image File Format)化し、SLM4103に通して、ネットワーク上のプリンタ機器に送信する。
SLM4103とは、サリュテーションマネージャ(またはスマートリンクマネージャ)と呼ばれる機器制御情報などを含んだネットワークプロトコルの一種である。
(同報配信アプリケーション)
同報配信アプリケーション4150は、前記リモートコピーアプリケーション4100と違い、一度の画像走査で読み取った画像を複数の配信宛先に送信することが可能である。また、配信先もプリンタ機器にとどまらず、いわゆるサーバコンピュータにも直接配信可能である。以下、配信先に従って順に説明する。
配信先の機器が、例えばネットワークプリンタプロトコルである公知のLPD(Line Printer Daemon)、プリンタ制御コマンドとして公知のLIPSを処理可能だとアドレス
ブック4051より判別された場合、アドレスブック4051より判別した画像解像度に従って画像読み取りを行い、本実施例ではその画像データを公知のFBE(First Binary
Encoding)を用いて圧縮し、さらにLIPSコード化して、公知のネットワークプリン
タにおけるリモート印刷プロトコルであるLPR(Line Printer Daemon Protocol)に従い相手機器に配信する。
配信先の機器がSLMで通信可能なサーバ機器の場合、アドレスブック4051より、サーバアドレス、サーバ内のフォルダの指定を判別し、リモートコピーアプリケーションと同様に、スキャナにより読み取った2値画像をMMR圧縮を用いて圧縮し、それをTIFF化し、SLMに従い配信し、ネットワーク上のサーバ機器の特定のフォルダに格納する事が可能である。
また、本実施例の画像処理装置では、相手機器であるサーバがJPEG圧縮された多値画像を処理可能だと判別した場合、2値画像と同様に、多値読み取りした画像を公知のJPEG圧縮を用いて、やはり公知のJFIF化し、SLMに従い配信し、ネットワーク上のサーバ機器の特定のフォルダに格納する事が可能である。
配信先の機器がEメールサーバである場合、アドレスブック4051に記載されたメールアドレスを判別し、スキャナにより読み取った2値画像をMMR圧縮を用いて圧縮し、それをTIFF化し、SMTP(Simple Mail Transfer Protcol)4153に従い、Eメールサーバに配信する。その後の配信は、メールサーバ4550によって実行される。
(ウエブプルプリントアプリケーション)
ウエブプルプリントアプリケーション4200は、HTTPモジュールを介して指定したURLのウェブサーバ4650からHTML文書等のデータを読み込み、それを例えばポストスクリプト(PS)形式のデータとしてプリント出力する。
(ウエブサーバアプリケーション)
ウエブサーバアプリケーション4250は、ウェブブラウザ4700に対して、HTML等のデータを提供する。
上述のアプリケーションが、操作部からのオペレータの操作に従って実行される。
[画像処理装置の操作]
画像処理装置1001の繰作部の構成を図13に示す。LCD表示部(3001)は、LCD上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報をコントローラCPUに伝える。
スタートキー3002は原稿画像の読み取り動作を開始する時などに用いる。スタートキー中央部には、緑と赤の2色LEDがあり、その色によってスタートキーが使える状態にあるかどうかを示す。ストップキー3003は、稼働中の動作を止める働きをする。IDキー3004は、使用者のユーザIDを入力するときに用いる。リセットキー3005
は、操作部からの設定を初期化するときに用いる。
以下で操作部に表示される各画面について詳細に説明する。
(操作画面(図14))
画像処理装置1001が提供する機能は、コピー(COPY)/送信(SEND)/検索(RETRIEVE)/タスク(TASKS)/管理(MGMNT)/構成(CONFIG)の6つの大きなカテゴリーに分かれており、これらは操作画面3010上の上部に表示される6つのメインタブ(3011〜3016)に対応している。
これらのメインタブを押すことにより、各カテゴリーの画面への切り替えが行われる。他カテゴリーヘの切り換えが許可されない場合は、メインタブの表示色が変わり、メインタブを押しても反応しない。
(送信画面(図16〜))
送信画面表示時にスタートボタンが押されると、スキャナが動作し、読み取った画像データを設定された宛先に指定された送信方法で送信する処理が開始される。
送信メイン画面3200(図16)は、宛先表示領域3202、詳細宛先数表示領域3203、宛先スクロールボタン3204、アドレスブックボタン3208、新規ボタン3209、編集ボタン3210、削除ボタン3211、サブジェクト入力領域3205、メッセージ入力領域3206、ファイル名入力領域3207、カバーページチェックボタン3212、HD書き込みチェックボタン3213、印刷出力チェックボタン3214、スキャン設定ボタン3215から構成される。
リセットを含む初期化時には、図17の画面3201に示すように、宛先表示領域には1つの宛先も表示されず、操作説明画面が表示される。
宛先表示領域3202には入力された宛先の一覧が表示される。入力は順次末尾に追加される。
詳細宛先数表示領域3203には現在設定されている宛先数が表示される。宛先表示領域からある宛先を選択した後、削除ボタン3211を押すと、選択されていた宛先が削除される。
サブジェクト入力領域3205、メッセージ入力領域3206、ファイル名入力領域3207を押すと、フルキーボードが表示され、それぞれの入力が可能になる。
(アドレスブックサブ画面(図18))
アドレスブックボタン3208を押すと、アドレスブックサブ画面3220が表示される。アドレス帳表示領域3221で選択マーク3232を付けられた宛先は、OKボタン3231を押すことにより、送信メイン画面の宛先表示領域3202に追加される。
アドレス帳の表示はソート項目設定ボタン(3224〜3226)を押すことによりクラス別、名前昇順、名前降順にソートされる。項目選択件数表示領域3227には選択マークの付けられた項目数を表示する。
OKボタン3231またはキャンセルボタン3230が押されると、アドレスブックサブ画面はクローズされ、送信メイン画面が表示される。
アドレス帳の中の1つの項目を選択した状態で詳細ボタン3229を押すと、詳細サブ画面3235(図19)が表示される。詳細サブ画面には選択された項目の情報としてアドレス帳から得られるすべての情報3236が表示される。
(詳細宛先サブ画面(図20〜図25))
送信メイン画面の新規ボタン3209を押すとPersonクラス詳細サブ画面3270(図20参照)が表示され、新しい宛先の設定が可能になる。宛先の入力は送信方法(電子メール、ファックス、プリンタ、FTP)に対応した送信方法選択ボタン(3271〜3274)を押すか、詳細宛先入力領域(3275〜3278)を押すと、ファックスの場合はテンキーボード3050(図22)、その他はフルキーボード3040(図21)が表示され、入力可能になる。3279〜3282はそれぞれの送信方法の送信オプションを行うためのボタンであるが、ここでは詳細な説明は省略する。
送信メイン画面でPersonクラスの宛先が選択されている状態で編集ボタン3210が押された場合もPersonクラス詳細サブ画面3290(図23)が表示される。詳細宛先入力領域(3275〜3278)の該当する領域に、選択された宛先の詳細が表示され、前述した方法でキーボードを表示すると、宛先の編集が可能になる。
送信メイン画面でData Baseクラスの宛先が選択されている状態で編集ボタン3210が押された場合、Data Baseクラス詳細サブ画面(図24)が表示される。データベースクラス詳細サブ画面にはデータベース名3311、フォルダリスト3312が表示される。
送信メイン画面でGroupクラスの宛先が選択されている状態で編集ボタン3210が押された場合Groupクラス詳細サブ画面3320(図25)が表示される。Groupクラス詳細サブ画面にはグループメンバー表示3321がされる。
(HD設定サブ画面(図26))
HD書き込みチェックボタン3213を押すと、ハードディスクに送信するための設定を行うHD設定サブ画面3330が表示される。ここでは書き込むべきフォルダの指定等を行う。
(印刷出力サブ画面(図27〜図29))
印刷出力チェックボタン3214を押すと、プリントアウトサブ画面3340(図27)が表示される。プリントアウトサブ画面ではプリント枚数、紙サイズ、拡大縮小率、両面印刷、ソート、解像度などを設定する。紙サイズ選択ボタン3345を押すと、紙サイズの一覧3360(図28)が表示され、そこから選択する。ソータ選択ボタン3350を押すと、選択可能なソータ一覧3365(図29)が表示される。
(スキャン設定サブ画面(図30〜図33))
スキャン設定ボタン3215を押すと、スキャン設定サブ画面3370が表示される。スキャン設定サブ画面内のプリセットモード選択領域3371からスキャン設定を1つ選択すると、それに対応するあらかじめ設定された解像度、スキャンモード、濃度がそれぞれの表示領域(3377、3379、3381)に表示される。これらの値は選択ボタン(3376、3378、3380)により手動で変えることが可能である。
図31のスキャン設定サブ画面3390は、紙サイズ選択一覧をプルダウン表示した状態の画面で、この一覧から使用する紙のサイズ、向きを選択する。図32の画面3391、図33の画面3392は、それぞれ、解像度、スキャンモード一覧をプルダウン表示した状態を示している。
[プラグインの詳細な説明]
図34は、同報配信アプリケーション4150に対して、RFC2910、RFC2911等で公知のInternet Printing Protocol(IPP)プラグインモジュールを追加することで、ユニバーサルセンドモジュールが新たにIPP配信プロトコルによる同報配信をサポートしている状態を例示するアプリケーションブロック図である。
IPPプラグインモジュールが組み込まれたユニバーサルセンドモジュールは、配信先の機器が、ネットワークプリンタプロトコルである公知のIPP、プリンタ制御コマンドとして公知のLIPSを処理可能だとアドレスブック4051より判別された場合、アドレスブック4051より判別した画像解像度に従って画像読み取りを行い、本実施例ではその画像を公知のFBE(First Binary Encoding)を用いて圧縮し、さらにLIPSコ
ード化して、公知のネットワークプリンタプロトコルであるIPPに従い相手機器に配信する。
図35はCPU2001によって実行されるソフトウェアの階層構造を示す模式図であり、ユニバーサルセンドモジュール1504と関連モジュールの階層関係を示す。
RTOS1529は、リアルタイムオペレーティングシステムであり、CPU2001が直接解釈実行する機械命令によって記述されたユニバーサルセンドモジュール1504などのソフトウェアモジュールのための動作環境を提供する。
インタプリタ1530は、公知のインタプリタ処理系であり、RTOS1529が提供する動作環境上で動作し、所定のインタプリタ用命令で記述された命令列データを読み込み、逐次的に解釈実行する。インタプリタ1530は、インタプリタ用命令で記述されたソフトウェアモジュールに動作環境を提供する仮想的なCPUであり、インタプリタ上で動作するソフトウェアのために用意されたライブラリセットとともに、仮想的なオペレーティングシステムの機能を果たす。
本実施例のインタプリタはSun Microsystems社による公知のJava(登録商標)を対象として動作するインタプリタである。本実施例のJavaのインタプ
リタは、Java言語で記述されたプログラムをコンパイルした結果生成されるバイトコードと呼ばれるインタプリタ用命令列の中間表現を、実行時に動的に読み込むことができる。Javaインタプリタは読み込んだ各バイトコードを逐次的に解釈実行する。Javaのバイトコードは公知のスタックマシン型プロセッサの機械言語に類似しており、Java仮想機械と呼ばれることもあるJavaのインタプリタは、スタックマシン型のCPUと同様に動作する。
なお、本実施例に係るインタプリタはJavaに限定する必要はなく、それぞれ公知のPerl、Python、Rubyなど多種多様なインタプリタを採用してもよい。
図35のソフトウェア階層構造において、RTOS1529の上では機械命令で記述されたソフトウェアモジュールが動作し、インタプリタ1530の上ではインタプリタ用命令で記述されたソフトウェアモジュールが動作する。
スタブモジュール1531は、ユニバーサルセンドモジュール1504内に組み込まれて動作する送信コンポーネントと呼ばれるサブモジュールの1つであり、CPU2001によって直接解釈実行される機械命令によって記述され、既に説明したPRTモジュール1505、Eメールモジュール1506、データベースモジュール1507、データプロ
セッサモジュール1508の標準搭載の送信コンポーネントと同様に、スキャン画像データを所定のデータ配信プロトコルによって出力先へと配信する処理を行う。スタブモジュール1531は、ユニバーサルセンドモジュール1504内で標準搭載の送信コンポーネントによって配信処理を行うことのできない出力先が宛先として指定された際に実行されるモジュールである。
リクエストブローカモジュール1532は、スタブモジュール1531と通信を行いユニバーサルセンドモジュール1504がスタブモジュールとの間で行う対話的な要求と応答のやり取りをプラグインモジュール1533に転送する。リクエストブローカモジュール1532は、Javaのバイトコードで記述されインタプリタ1530上で解釈実行される。
プラグイン1533は、リクエストブローカモジュール1532内に動的に組み込まれて動作するサブモジュールの1つである。
本実施例ではプラグイン1533として、ユニバーサルセンドモジュール1504で出力先にIPPのプリントプロトコルをサポートするプリンタが指定された際に実行されIPPによる配信処理を行う、IPP送信コンポーネントプラグインモジュールが組み込まれている状態を示している。
プラグイン1533は、Javaのバイトコードで記述されインタプリタ1530上で解釈実行される。
図36は、ユニバーサルセンドモジュール1504、スタブモジュール1531、リクエストブローカモジュール1532、及びプラグインモジュール1533の間の相互の対話処理を示す図である。
ユニバーサルセンドモジュール1504は、スタブモジュール1531が備える送信コンポーネントインタフェースの関数を呼び出すことによってスタブモジュール1531と通信する。
スタブモジュール1531のインタフェース関数が呼び出されると、その内部で、インタフェース関数の呼出し要求に関する情報をメッセージ化し、さらにメッセージをリクエストブローカ1532に送信する。
リクエストブローカ1532は、リクエストメッセージを受信すると、メッセージの解釈を行い、メッセージに示された情報に基づきインタフェース関数の呼出し要求を復元し、プラグインモジュール1533の対応するメソッドを呼び出す。
プラグインモジュール1533のメソッドの処理が完了するとメソッドはリターン値を返し、リクエストブローカ1532に制御を戻す。
リクエストブローカ1532は、メソッドがリターンすると、メソッドからのリターン値の情報に基づくレスポンスメッセージを生成し、さらに、生成したメッセージをスタブモジュール1531に返信する。
スタブモジュール1531は、レスポンスメッセージを受信すると、最初のインタフェース関数の処理を完了し、受信したレスポンスメッセージの情報に基づくリターン値を返し、ユニバーサルセンドモジュール1504に制御を戻す。
図37は、送信コンポーネントが備えるインタフェースを示す。
すべての送信コンポーネントは、ユニバーサルセンドモジュール1504の枠組みの中でサブモジュールとして機能するためにあらかじめ定められたインタフェース関数一式370を備える。
ユニバーサルセンドモジュール1504は、アプリケーションとしての処理の中で、データ配信プロトコルに依存する処理を必要とする際、送信コンポーネントの関数を呼び出す。
図37において、配信処理371は、スキャンした画像データを当該送信コンポーネントが処理する配信プロトコルによって配信するインタフェース関数である。
アドレスリスト取得処理372は、当該送信コンポーネントが処理する配信プロトコルによって送信可能な宛先アドレスのその時点で登録されているリストを取得するためのインタフェース関数である。
アドレス追加処理373は、当該送信コンポーネントが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストに追加するためのインタフェース関数である。
アドレス削除処理374は、当該送信コンポーネントが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストの中から削除するためのインタフェース関数である。
図38は、送信コンポーネントの一種であるスタブモジュール1531が備えるインタフェースを示す。
スタブモジュール1531のインタフェースは、送信コンポーネントのインタフェース370を継承しており、送信コンポーネントが備えるインタフェース関数のすべてを備える。
スタブモジュール1531のインタフェースは、さらに、プラグインプロトコルリスト取得処理381を備え、プラグインプロトコルリスト取得処理381はプラグイン1533として登録されているプラグインモジュール群がそれぞれサポートする配信プロトコルのリストを取得するためのインタフェース関数である。
図39は、ユニバーサルセンドモジュール1504においてCPUのネイティブ命令によって実装される、アドレス帳へのアドレス登録処理を示すフローチャートである。
ユーザの操作に応じてアドレス帳へのアドレス登録処理が起動されると、ユニバーサルセンドモジュール1504は、スタブモジュール1531が備えるプラグインプロトコルリスト取得インタフェース関数381を呼び出して、登録されているプラグイン群がサポートするプロトコルのリストを取得する(S391)。
次に、標準搭載の送信コンポーネントがサポートするプロトコル群であるLPD、SLM、SMTPと、前ステップで取得したプロトコルリストのプロトコル群とを合わせ、その時点でサポートしている全プロトコルリストとしてユーザに提示し、ユーザに対して選択を促す(S392)。
ユーザがプロトコルリスト中から所望のプロトコルを選択すると(S393)、選択されたプロトコルをサポートする送信コンポーネントモジュールが備えるアドレス追加処理インタフェース関数373を呼び出す。
アドレス追加処理インタフェース関数373の実装では、当該プロトコルによって定められたそれぞれのアドレス体系に応じたアドレスの入力をユーザに促し、ユーザが入力したアドレスが送信コンポーネントによって(それが標準搭載の送信コンポーネントであってもプラグインモジュールによる送信コンポーネントであっても同様に)記憶される(S394)。
図40は、ユニバーサルセンドモジュール1504においてCPUのネイティブ命令によって実装される、配信処理を示すフローチャートである。ここでは説明を簡単にするために、すべての配信宛先に対して、同一パラメータで生成した画像ファイルを配信すればよいものとして処理を単純化している。
ユーザの操作に応じて配信処理が起動されると、まずユーザが配信を行いたい宛先アドレスを選択することを待つ(S401)。
ユーザが所望の配信宛先アドレスを1つ以上選択し配信宛先リストの選択を完了すると、コントロールAPI1518を呼び出して画像読み込み解像度、圧縮形式、ファイル形式などの画像ファイル生成パラメータを設定する(S402)。
さらにコントロールAPI1518を呼び出してイメージスキャンを行い画像データファイルを得る(S403)。
次に、ステップS401でユーザが選んだ宛先アドレスリストから1つの宛先アドレスを取り出し、その宛先アドレスに対応する送信コンポーネントの配信処理インタフェース関数371を呼び出す(S404)。
宛先アドレスリストに含まれるすべての宛先への配信を完了するまで、ステップS404に戻って配信処理を繰り返す(S405)。
図41は、図38に示したインタフェース関数のそれぞれが呼び出されたときに、スタブモジュール1531がリクエストブローカ1532に送るリクエストメッセージを示す図である。
メッセージは伝送データを所定の形式で符号化したバイト列であり、メモリ空間上に構築され、オペレーティングシステムが備えるメッセージキューやソケットなどのプロセス間通信(タスク間通信)機構によって、ソフトウェアモジュールの実行インスタンス間で伝送される。
プロトコル識別子411は、配信プロトコルを識別するための属性である。プロトコル識別子411の内容は、ユニバーサルセンドモジュールが呼び出したインタフェース関数の引数に含まれる情報から生成される。
リクエストブローカ1532はプロトコル識別子411に基づいて、受信したリクエストを処理すべきプラグインモジュールを特定する。
オペレーション識別子412は、呼び出すべきメソッドを識別するための属性である。オペレーション識別子412の内容は、ユニバーサルセンドモジュール1504が呼び出
したインタフェース関数に固有の情報として、どのインタフェース関数が呼び出されたかに応じて決定される。
リクエストブローカ1532は、オペレーション識別子412に基づいて、呼び出すべきプラグインモジュールのインタフェースメソッドを特定する。
パラメータ413は、リクエストを特定するために必要なその他の属性である。パラメータ413の内容は、ユニバーサルセンドモジュール1504が呼び出したインタフェース関数に与えられた引数のうち、プロトコル識別情報以外の情報から生成される。
リクエストブローカ1532は、パラメータ413に基づいて、プラグインモジュール1533のインタフェースメソッド呼び出しの引数を生成し、メソッド呼び出しを行う。
図42はリクエストブローカ1532がスタブモジュール1531に返すレスポンスメッセージを示す図である。
メッセージは伝送データを所定の形式で符号化したバイト列であり、メモリ空間上に構築され、オペレーティングシステムが備えるメッセージキューやソケットなどのプロセス間通信(タスク間通信)機構によって、ソフトウェアモジュールの実行インスタンス間で伝送される。
パラメータ421は、リクエストブローカ1532が呼び出したプラグインモジュール1533のインタフェースメソッドの返り値をメッセージ化した属性である。パラメータ421の内容は、インタフェースメソッドに固有の形式でメッセージ化された、インタフェースメソッドの返り値である。
スタブモジュール1531は、したがって、リクエストに固有の形式としてパラメータ属性の内容を解釈し、ユニバーサルセンド1504への返り値を生成できる。
図43は、スタブモジュール1531においてCPUのネイティブ命令によって実装される、スタブモジュールが備えるインタフェース380の処理を示すフローチャートである。
スタブモジュール1531が備えるインタフェース関数の各々は、すべてこの図に示す処理を行うように実装される。各インタフェース関数が呼び出されると、当該関数呼び出しを図41に示した処理リクエストメッセージとしてメッセージ化し、生成したリクエストメッセージをリクエストブローカ1532へ送信する(S431)。
次に、リクエストブローカ1532から図42に示したレスポンスメッセージを受信する(S432)。
最後に、受信したレスポンスメッセージを解析し対応するリターン値を生成して、呼び出されたインタフェース関数の返り値としてリターンする(S433)。
図44は、リクエストブローカ1532が備えるインタフェースを示す図である。
メイン処理441は、リクエストブローカ1532の主関数であり、リクエストブローカ1532の起動時にシステムによって割り当てられたスレッドのコンテキストによって実行される。
プラグイン登録処理442は、プラグインモジュール1533をリクエストブローカ1532の管理下に追加登録する処理を行う。
プラグイン登録解除処理443は、リクエストブローカ1532の管理下に登録されているプラグインモジュール1533の登録を解除する処理を行う。
図45は、リクエストブローカ1532が記憶し管理するプラグインリストデータのレコード形式を示す図である。
プラグインリストデータにおいて、プラグイン登録処理442が呼び出されたときに当該プラグインモジュールに対応するレコードが追加され、プラグイン解除処理443が呼び出されたときに当該プラグインモジュールに対応するレコードが削除される。
プラグイン参照451は、登録されているプラグインモジュール1533のオブジェクトに対応する識別情報であり、リクエストブローカ1532はこの参照に基づいて当該プラグインモジュールのオブジェクトをメモリ上に復元し実行コンテキストを与えることができる。
配信プロトコル452は、当該プラグインモジュールがサポートする配信プロトコルを記述する情報である。
ファイル形式453は、当該プラグインモジュールによる配信に最適な、および/または、配信可能な、データファイル形式を記述する情報である。
圧縮方式454は、当該プラグインモジュールによる配信に最適な、および/または、配信可能な、データの圧縮方式を記述する情報である。
解像度455は、当該プラグインモジュールによる配信に最適な、および/または、配信可能な、画像データの解像度を記述する情報である。
図46は、リクエストブローカ1532においてJavaのインタプリタ命令によって実装される、メイン処理を示すフローチャートである。
メイン処理は以下の一連のステップを繰り返すループを構成している。
リクエストブローカ1532は、スタブモジュール1531からのメッセージの到着を待ち、リクエストメッセージを受信する(S461)。
リクエストメッセージを受信すると、当該リクエストがプラグインプロトコルリスト取得インタフェース関数によって生成されたリクエストであるか否かを判定し、プラグインプロトコルリスト取得リクエストであればステップS466に進み、それ以外ならステップS463に進む。
ステップS463では、図41に示したリクエストメッセージのプロトコル識別子411の内容に基づき当該プロトコルをサポートするプラグインを決定し、当該プラグインの実装を提供するプラグインオブジェクトをリクエストブローカが支配するメモリ空間に展開する(S463)。
次に、リクエストメッセージのオペレーション識別子412の内容に基づいて対応するメソッドを決定し、さらにパラメータ413の内容に基づいてメソッドに与える引数を生
成し、メモリ上に読み込んだオブジェクトの当該メソッドを呼び出す(S464)。
プラグインオブジェクトのメソッドの呼び出しがリターンすると、その返り値を図42に示したレスポンスメッセージの形式にメッセージ化し、生成したメッセージをスタブモジュール1531に送信する(S465)。
さらに、ステップS461に戻り一連の処理を繰り返す。一方、ステップS466からの一連のステップではプラグインプロトコルリスト取得要求に応じた処理を行う。
プラグインプロトコルリスト取得要求を受信すると、図45に示した、プラグインリストデータを検索し、登録されているプラグインモジュール群がサポートしているプロトコルのリストを生成する(S466)。
次に、プロトコルリストを所定の形式でメッセージ化し、生成したレスポンスメッセージをスタブモジュールに送信する(S467)。さらに、ステップS461に戻り一連の処理を繰り返す。
図47は、送信コンポーネント用プラグインモジュール1533が備えるインタフェースを示す。
すべての送信コンポーネント用プラグインモジュールは、リクエストブローカ1532の枠組みの中でサブモジュールとして機能するために、あらかじめ定められたインタフェース関数一式470を備える。
リクエストブローカ1532は、その処理の中で、プラグインモジュールのインタフェース関数を呼び出す。
図47において、配信処理471は、スキャンした画像データを当該プラグインモジュールが処理する配信プロトコルによって配信するインタフェース関数である。
アドレスリスト取得処理472は、当該プラグインモジュールが処理する配信プロトコルによって送信可能な宛先アドレスのその時点で登録されているリストを取得するためのインタフェース関数である。
アドレス追加処理473は、当該プラグインモジュールが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストに追加するためのインタフェース関数である。
アドレス削除処理474は、当該プラグインモジュールが処理する配信プロトコルによって送信可能な宛先アドレスを、アドレスリストの中から削除するための関数である。
図48は、IPPによる配信をサポートするプラグインモジュール1533が記憶し管理するアドレスリストデータのレコード形式を示す図である。
ipp−URL481は、IPPの体系において宛先プリンタのアドレスを記述するPrinter−URIであり、RFC2910等に開示されている公知のURIスキームに従って表現される。各レコードは例えば次に示すような形式の可変長の文字列である。
ipp://myhost.com/myprinter/myqueue。
一方の配信パラメータ482は、当該アドレス宛の配信に最適な、および/または、配信可能な各種の配信に係るパラメータを記述する情報である。
図49は、IPPによる配信をサポートするプラグインモジュール1533においてJavaのインタプリタ命令によって実装される、アドレス追加処理を示すフローチャートである。
プラグインモジュール1533が備えるアドレス追加処理のためのインタフェース関数473が呼び出されると、IPP配信用のプラグインモジュール1533は図48に示した既に登録されているアドレスリストデータをハードディスクから読み込む(S491)。
次に、ユーザに対して追加するIPPアドレス481と、もしあればそのアドレスに固有の最適、および/または、可能な配信パラメータ482と、の入力を促し、ユーザによるアドレス入力が終了するまで待つ(S492)。
アドレス入力が終了すると、ユーザがキャンセルによってアドレス入力を終了したか否かを判定し、もしキャンセルであればステップS496に進み、もし正常な完了であればステップS494に進む。
ユーザが正常にアドレスの入力を完了した場合は、入力されたアドレス481と配信パラメータ482とをアドレスリストに追加しハードディスクに書き込む(S494)。
さらに、正常終了を示す返り値をリターンして一連の処理を終了する(S495)。
一方、ユーザがアドレス入力をキャンセル終了した場合は、キャンセル終了を示す返り値をリターンして一連の処理を終了する(S496)。
図50は、IPPによる配信をサポートするプラグインモジュール1533においてJavaのインタプリタ命令によって実装される、配信処理を示すフローチャートである。
プラグインモジュール1533が備えるアドレス追加処理のためのインタフェース関数470が呼び出されると、IPP配信用のプラグインモジュール1533は、関数呼び出しの引数として与えられた宛先アドレスをアドレスリストデータ中から検索し、そのレコードの配信パラメータを読み込む(S501)。
次に、宛先アドレスによって示されたIPPプリンタのTCPポート番号631番との間に公知のHTTPプロトコルによる接続を確立し、関数呼び出しの引数として与えられた画像ファイルをプリントするためのIPPプリントジョブ要求をこの接続に対して送信する(S502)。
IPPプリントジョブを送信するためにHTTP接続に書き込むデータの冒頭部分は、例えば次のようなバイト列である。
POST /myprinter/myqueue HTTP/1.1Host: myhost.com:631Content-type: application/ippTransfer-Encoding: chunked…IPPプリントジョブ要求…。
次に、接続からIPPプリントジョブ応答を読み出し、配信が正常終了したか否かを判定する(S503)。もし正常終了であれば、正常終了を示す返り値をリターンして終了する(S504)。もし異常終了であれば、エラー終了を示す返り値をリターンして終了
する(S505)。
以上のようにして、画像処理装置中のソフトウェア組込み型電子装置にJavaのインタプリタ環境を導入し、ネイティブ機会命令で記述された標準搭載機能ソフトウェアが必要とする処理の一部分をJavaのクラスとして記述し、Javaのインタプリタ環境で動作するこのクラスのオブジェクトとネイティブな標準搭載機能ソフトウェアとの間をインターフェースし、ネイティブな標準搭載機能ソフトウェアのプラグインモジュールをJavaインタプリタ上で動的に追加することにより、画像処理装置としてソフトウェア組込み型電子装置の柔軟で動的な機能拡張が可能となる。
上記実施の形態においては、センド機能を構成する送信コンポーネントの配信プロトコルを処理するアルゴリズムとそのプロトコルにおける宛先アドレス情報をローカルに管理するアルゴリズムとをプラグイン化したが、他のアルゴリズム部品をプラグイン化するように構成することもできる。
たとえば、図16のセンド画面の表示処理をプラグインによって置き換え可能に構成した場合、プラグインの実装によっては単一のプロトコルや単一の宛先アドレスに固定した単純なセンド画面を提供することもできる。これによって、特定業務のワークフローに特化した簡単操作のセンドアプリケーションを、配信プロトコルやアドレス情報はネイティブのプログラムを変更することなくそのまま利用することができる。操作画面をプラグイン化する効果は、言うまでもなくセンドアプリケーションに限らずすべてのアプリケーションに対して有効である。
また、たとえば、図18のアドレス帳画面の中に複数のアドレスをリスト表示する処理において、リスト表示のアルゴリズムをプラグインによって置き換え可能に構成することもできる。この場合、各アドレスレコードの表示順序を制御するソートアルゴリズムや、どのレコードの表示を抑制するかを制御するフィルタアルゴリズムなどを柔軟に置き換えることが可能となり、特定のユーザにとって最適なリスト表示を行うことができる。言うまでもなく、アドレスリストに限らず、他の情報のリスト表示処理においても有効である。
また、たとえば、アドレスブック4051そのものをプラグイン化してもよい。この場合、たとえば外部のサーバが管理するディレクトリサービスをLDAPやNIS、DNSなどのネットワークプロトコルによって利用する実装に置き換えることも可能となる。
また、たとえば、一般に装置の修理・交換や装置ファームウェアのアップデート時などに、アドレス情報などの各種データを装置外部に読み出してまたそれを装置内部に書き戻すデータエクスポート・インポートの機能が必要とされるが、このエクスポート・インポートのアルゴリズムをプラグイン化するように構成することもできる。この場合、どういった種類の情報をどのような形式(フォーマット)でどのようなプロトコルによって外部に入出力するかをプラグインの実装次第で柔軟に制御することが可能となる。たとえばXML形式でHTTPプロトコルによって入出力するようなプラグインを実装し利用できる。
また、たとえば、装置内部のHDD2004などの不揮発性メモリに記憶するデータを装置外部の不揮発性記憶にバックアップするバックアップ処理のスケジューラをプラグイン化することもできる。この場合、すべてのファイルをバックアップするフルバックアップと、前回のバックアップ時点から変更されたファイルのみをバックアップするインクリメンタルバックアップとを適宜組み合わせるなどして、特定のユーザの運用形態に最適なタイミングでバックアップを行うカスタマイズが可能となる。
また、たとえば、WANからMODEM2050が受信したファクスやLANからネットワーク2010が受信したEメールやIFAXなどの文書が一時蓄積されるインボックスを監視する監視アルゴリズムをプラグイン化することもできる。この場合、受信文書はプリントアウトのようなあらかじめ定められた処理に送られるだけでなく、プラグインのアルゴリズムの実装次第で、たとえば図15に示したような各種の配信機能を利用してさまざまな宛先に転送されるように構成することも可能である。いくつかの受信を留め置いてから転送を行ったり、受信を通知するEメールをユーザの携帯電話宛に送ったり、受信文書をウェブサーバにアップロードしてウェブブラウザから閲覧可能にするなど、特定のユーザが所望する個別の運用形態に合わせたあらゆる処理に置き換えることが容易となる。
また、たとえば、RIP2060、スキャナ画像処理2080、プリンタ画像処理2090、画像回転2030、画像圧縮2040の各画像処理ブロックのそれぞれの内部もしくは横並びに、文書データの変換処理を行う文書フィルタブロックを挿入し、文書データ変換処理をプラグインとして追加可能に構成してもよい。この場合、特定用途向きの独自の画像処理や文書処理をプラグインのアルゴリズムによって提供可能なことは言うまでもないが、さらに、プラグインの実装次第では処理を装置外部のコンピュータなどが提供する機能に委譲することによって、外部装置と組み合わせた分散システムによって機能拡張を行う柔軟性も獲得できる。一例として、装置外部のコンピュータ上で稼働する高度なOCR機能とのインタフェースを行うプラグインを構成すれば、装置内にはOCR機能を追加しなくても画像からテキストデータを抽出する文書処理が装置内部で利用可能となる。さらに外部コンピュータが提供する翻訳機能とを組み合わせて、スキャンや受信した画像データをOCRし翻訳して別の言語でプリントアウトするような拡張機能を構成することもできる。
(他の実施の形態)
本実施の形態においては、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。