以下に添付図面を参照して、この発明にかかる画像形成装置および操作表示部プログラム生成方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
図1は、この発明の実施の形態1である画像形成装置(以下、「複合機」という)の主要部の構成とネットワーク構成を示すブロック図である。実施の形態1にかかる複合機100は、インターネットに接続され、当該インターネットに接続されたPC(Personal Computer )などのクライアント端末から複合機の操作を行うオペレーションパネルの操作表示部のカスタマイズプログラムの入力およびデバッグ作業を行うことを可能としたものである。
図1に示すように、複合機100とPC200は、インターネット220で接続されており、通信プロトコルとしてTCP/IPを利用している。複合機100は、複合機初期化部129と、プログラム起動部131と、プログラミングサービス132と、インタプリタ134と、NCS(ネットワークコントロールサービス)128と、httpd(httpデーモン)106と、共有メモリ105と、HDD103とを備えた構成となっている。
プログラミングサービス132は、ネットワークに接続されたクライアント端末としてのPC200のWEBブラウザに後述するhttpファイルで構成されたWEBページであるプログラミング画面201を表示し、このプログラミング画面201からオペレーションパネル210の操作表示部のカスタマイズプログラムを入力させるものである。また、プログラミングサービス132は、PCから入力されたカスタマイズプログラムをHDD103のカスタマイズ領域として作成されたカスタマイズディレクトリ212に保存する。さらに、プログラミングサービス132は、複合機100上でカスタマイズプログラムが実行されるように、後述する起動設定ファイル211に入力されたカスタマイズプログラムを登録する。
ここで、プログラミングサービス132とPC200のWEBブラウザの間のプログラミング画面などのhttpファイルの転送は、httpプロトコルに従って行われる。このため、プログラミングサービス132は、Webサーバ(http サーバ)としての役割も担っている。
カスタマイズプログラムは、インタプリタで解釈可能な言語で記述され、具体的には、汎用OSがUNIX(登録商標)の場合、シェルスクリプトである。
インタプリタ134は、カスタマイズプログラムをステップごとに解析し逐次実行するものであり、本実施の形態では、シェルスクリプトを実行するシェル(bsh,cshなど)である。このシェル134は、汎用OS121としてのUNIX (登録商標)にOSのカーネル135とは別個に存在するものである。
プログラム起動部131は、HDD103の診断結果が正常である場合に、HDD103にインストールされている外部アプリ117を起動するものである。また、プログラム起動部131は、ICカードなどの記憶媒体に保存された外部アプリ117を起動する。
複合機初期化部129は、汎用OS121の上で最初に起動されるプロセスであり、コントロールサービスやアプリケーション130(外部アプリ117を除く)の起動およびプログラム起動部131の起動を行うものである。
NCS128は、ネットワークを制御するものであり、httpd106から通知されたリクエストメッセージ受信の旨をプログラミングサービス132に通知する。
httpd106は、OSに含まれるプロセス(デーモン)であり、ポート80番を常時監視してリクエストメッセージの受信を行うとともに、レスポンスメッセージの送信を行うものである。なお、リクエストメッセージおよびレスポンスメッセージの構造は、通常のhttpプロトコルにおける各メッセージの構造と同様であり、各メッセージには、html形式で記述されたメッセージボディが含まれている。また、httpd106は、インターネット220経由で受信したリクエストメッセージ受信の旨をNCS128に通知するとともに、リクエストメッセージを共有メモリ105 に格納する。
この共有メモリ105は、httpd106とプログラミングサービス132とのプロセス間通信に利用されるものであり、共有メモリ105を介してリクエストメッセージ、レスポンスメッセージなどの受け渡しを行う。
HDD103には、起動設定ファイル211が格納され、またHDD103のカスタマイズディレクトリ212にカスタマイズプログラムが格納される。
PC200は、複合機100のプログラミングサービス132をサーバとしたクライアント端末であり、PC200で実行されるWEBブラウザにプログラミングサービス132からhttpプロトコルで送信されたプログラミング画面201やその他画面を表示し、操作入力を行えるように構成されている。
次に、本実施の形態にかかる複合機100の全体の機能的構成について説明する。図2は、実施の形態1の複合機100の構成を示すブロック図である。図2に示すように、複合機100は、白黒ラインプリンタ(B&W LP)101と、カラーラインプリンタ(Color LP)102と、ハードディスク装置(HDD)103と、スキャナ、ファクシミリ、メモリ、ネットワークインタフェースなどのハードウェアリソース104を有するとともに、プラットホーム120と、アプリケーション130と、複合機初期化部129と、プログラム起動部131と、プログラミングサービス132とから構成されるソフトウェア群110とを備えている。
プラットホーム120は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一又は複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)123と、汎用OS121とを有する。
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)122と、ECS(エンジンコントロールサービス)124と、MCS(メモリコントロールサービス)125と、OCS(オペレーションパネルコントロールサービス)126と、FCS(ファックスコントロールサービス)127と、NCS(ネットワークコントロールサービス)128とから構成される。また、プログラミングサービス132も、コントロールサービス層に含まれている。なお、このプラットホーム120は、あらかじめ定義された関数により前記アプリケーション130から処理要求を受信可能とするアプリケーションプログラムインタフェース(API)を有する。
汎用OS121は、UNIX(登録商標)などの汎用オペレーティングシステムであり、プラットホーム120並びにアプリケーション130の各ソフトウェアをそれぞれプロセスとして並列実行する。
SRM123のプロセスは、SCS122とともにシステムの制御およびリソースの管理を行うものである。SRM123のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F 、IEEE1394 I /F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
具体的には、このSRM123は、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM123は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。
SCS122のプロセスは、アプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御などを行う。
ECS124のプロセスは、白黒ラインプリンタ(B&W LP)101、カラーラインプリンタ(Color LP)102、スキャナ、ファクシミリなどからなるハードウェアリソース103のエンジンの制御を行う。
MCS125のプロセスは、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行う。
FCS127のプロセスは、システムコントローラの各アプリ層からPSTN/ISDN 網を利用したファクシミリ送受信、BKM (バックアップSRAM )で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供する。
NCS128のプロセスは、ネットワークI/O を必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。具体的には、ftpd、lpd、snmpd、telnetd、smtpdなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。
OCS126のプロセスは、オペレータ(ユーザ)と本体制御間の情報伝達手段となるオペレーションパネル(操作パネル)210の制御を行う。OCS126は、オペレーションパネルからキー押下(又はタッチ操作)をキーイベントとして取得し、取得したキーに対応したキーイベント関数をSCS122に送信するOCSプロセスの部分と、アプリケーション130又はコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたOCSライブラリの部分とから構成される。このOCSライブラリは、アプリケーション130およびコントロールサービスの各モジュールにリンクされて実装されている。なお、OCS126のすべてをプロセスとして動作させるように構成しても良く、あるいはOCS126のすべてをOCSライブラリとして構成しても良い。
アプリケーション130は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ111と、コピー用アプリケーションであるコピーアプリ112と、ファクシミリ用アプリケーションであるファックスアプリ113と、スキャナ用アプリケーションであるスキャナアプリ114と、ネットワークファイル用アプリケーションであるネットファイルアプリ115と、工程検査用アプリケーションである工程検査アプリ116 とを有している。
アプリケーション130の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
このように、実施の形態1にかかる複合機100には、複数のアプリケーション130および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一又は複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション130に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
また、複合機100には、複合機100の顧客、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に外部アプリを開発して搭載することが可能となっている。
なお、実施の形態1にかかる複合機100では、複数のアプリケーション130のプロセスと複数のコントロールサービスのプロセスとが動作しているが、アプリケーション130とコントロールサービスのプロセスがそれぞれ単一の構成とすることも可能である。また、各アプリケーション130は、アプリケーションごとに追加又は削除することができる。
また、複合機100はインストーラを含む。インストーラは、第三者が開発した外部アプリ117を、HDD103にインストールするものである。本実施の形態にかかる複合機100では、フラッシュカードなどのICカードの記憶媒体に外部アプリ117を格納し、インストーラによって外部アプリ117をHDD103にインストールし、プログラム起動部131によって、HDD103から外部アプリ117を起動してアプリケーション層で動作させるようになっている。一方、プリンタアプリ111、コピーアプリ112、ファックスアプリ113、スキャナアプリ114、ネットファイルアプリ115、工程検査アプリ116などの複合機100の出荷時に提供されるアプリケーション130、各コントロールサービス、HDD診断部132およびプログラム起動部131は、フラッシュメモリに出荷時に組み込まれており、複合機100の起動時(電源投入時)に複合機初期化部129によって起動されるようになっている。
図3に複合機100のハードウェア構成例を示す。
複合機100は、コントローラ160と、オペレーションパネル175と、ファックスコントロールユニット(FCU)176と、プリンタ等の画像形成処理に特有のハードウェア資源であるエンジン部177とを含む。コントローラ160は、CPU161と、システムメモリ162と、ノースブリッジ(NB)163と、サウスブリッジ(SB)164と、ASIC166と、ローカルメモリ167と、HDD168と、ネットワークインターフェースカード(NIC)169と、SDカード用スロット170と、USBデバイス171と、IEEE1394デバイス172と、セントロニクス173とを含む。なお、メモリ162、167はRAM、ROM等を含む。FCU176およびエンジン部177は、コントローラ160のASIC166にPCIバス178で接続されている。
CPU161が、複合機100にインストールされるアプリケーション、コントロールサービス等のプログラムを、メモリから読み出して実行する。
次に、以上のように構成された本実施の形態にかかる複合機100によるプログラム作成方法について説明する。まず、利用者は、PC200でWEBブラウザを起動し、複合機100上にあるプログラミング画面のWEBページのURL(例えば、http://www.xxx.yyy/zzz/debug.htm)を指定して複合機100のプログラミングサービス132にアクセスする。WEBブラウザからのアクセスを受けたプログラミングサービス132は、プログラミング画面201(debug.htm )をPC200のWEBブラウザに表示させる。
図7は、プログラミング画面201の内容の一例を示す説明図である。図7に示すように、プログラミング画面201には、プログラム入力フィールドと、参照ボタンと、アップロードボタンと、保存ボタンと、消去ボタンと、テスト実行ボタンと、実行設定ボタンが表示される。
ここで、プログラミング画面201は、html形式(Hyper TextMarkup Language)で記述されたファイル(debug.htm)がブラウザによって表示されたものである。また、プログラミングサービス132は、プログラミング画面(debug.htm)からの操作入力や要求に応じたカスタマイズプログラムの入力に関する処理等を、CGI(Common Gateway Interface)のスクリプトを実行することによって行い、その処理結果をプログラミング画面(debug.htm)に反映して、PC200のWEBブラウザに返す。
具体的には、プログラミングサービス132は、カスタマイズプログラムの入力処理等の要求(ボタンのクリック操作等)があった場合には、debug.cgiのスクリプトを実行する。なお、本実施の形態では、CGIスクリプトを実行することにより、WEBアプリ1117による各処理を実行しているが、CGIスクリプトから呼び出される別のプログラムで実行するように構成しても良い。なお、プログラミング画面を、XML形式(eXtensible Markup Language )で記述するように構成することも可能である。
参照ボタンは、ブラウザが動作しているPC200の記憶領域に格納されたカスタマイズプログラムを参照するためのボタンであり、この参照ボタンを押下すると、PC200の記憶領域内のディレクトリが表示され、所望のディレクトリに存在するカスタマイズプログラムを指定すると、ファイル名フィールドに指定されたカスタマイズプログラムのファイル名が表示される。なお、参照ボタンを押下したときに、複合機100のHDD103などの記憶媒体のディレクトリを参照するように構成しても良い。
アップロードボタンは、参照ボタンで指定したカスタマイズプログラムあるいは入力フィールドに入力したカスタマイズプログラムを、複合機100に転送(アップロード)するためにクリック操作するものである。
プログラム入力フィールドは、カスタマイズプログラムを入力する領域である。このプログラム入力フィールドには、PC200のキーボードなどの入力装置からカスタマイズプログラムを直接入力する他、上述のように参照ボタンをクリック操作することによってPC200の所望のディレクトリに存在する既存のプログラムファイルを指定することによってカスタマイズプログラムを入力する。debug.htmにおいて、このプログラム入力フィールドに相当するすべての行の先頭には、「program _list:」の文字列が記述されている。
保存ボタンは、入力したカスタマイズプログラムを複合機100にアップロードした後に、カスタマイズディレクトリに格納する場合にクリック操作するものである。消去ボタンは、入力フィールドに入力されたカスタマイズプログラムを消去する際にクリック操作するものである。
実行設定ボタンは、カスタマイズディレクトリに保存されたカスタマイズプログラムを複合機100で実行できるように、カスタマイズプログラムとカスタマイズプログラムを実行させるボタンを対応づける際にクリック操作するものである。この実行設定ボタンが押下されると、プログラミングサービス132は、カスタマイズプログラム中で指定されたボタン(キー)を、カスタマイズディレクトリに存在する画面ファイル中のボタン(キー)からキーコードに基づいて検索し、カスタマイズプログラムとボタン(キー)との対応付けを行い、カスタマイズプログラムの名称とボタン(キー)のキーコードのキー対応付けテーブルを生成してHDD103又はフラッシュメモリなどに当該テーブルを格納する。
テスト実行ボタンは、入力されたカスタマイズプログラムを試験的に実行する際にクリック操作するものである。
図8は、入力するカスタマイズプログラムの内容の一例を示す説明図である。図8に示すように、本実施の形態では、カスタマイズプログラムはUNIX(登録商標)のシェルスクリプトである。入力されたシェルスクリプトは、汎用OS121(UNIX(登録商標))のコマンド・インタプリタであるシェル134によってステップごとに逐次実行される。このため、入力したカスタマイズプログラムのコンパイルおよびリンクは不要である。
また、シェルスクリプトには、開発ライブラリで提供される複合機専用コマンドを指定できるようになっている。図8のスクリプトは、原稿をスキャナで読み込み(scanimage)、読み込み時にTIF形式に圧縮された画像データを伸長し(decomp)、伸長した画像データに対し文字認識処理を行う(ocr)。そして、文字認識処理による認識結果をテキストデータとしてメール送信(mail)する例を示している。このスクリプトの中で、scanimage,decomp,ocrの各コマンドが開発ライブラリで提供されるコマンドである。また、カスタマイズプログラムには、このシェルスクリプトを実行するためのボタン(キー)の指定が可能となっている。
PC200のWEBブラウザに表示されているプログラミング画面201(debug.htm)において、参照ボタンをクリックしてPC200に格納されているカスタマイズプログラムを指定し、あるいはプログラム入力フィールドに直接カスタマイズプログラムを入力し、アップロードボタンをクリック操作した場合、WEBブラウザから複合機100のプログラミングサービス132に対しリクエストメッセージが送信される。このリクエストメッセージのメッセージボディにはdebug.htmが含められており、このdebug.htmには、アップロードボタンをクリック操作したときにdebug.cgiを呼び出す旨が記述されている。このためリクエストメッセージを受信して解析を行ったプログラミングサービス132は、debug.cgiを実行する。
ここで、リクエストメッセージを受信した複合機100における処理について説明する。図4は、リクエストメッセージを受信した複合機100における処理の手順を示すフローチャートである。
httpd106は、ポート80番を常時監視しており、PC200からリクエストメッセージをポート80番で受信する(ステップS301)。そして、httpd106は、受信したリクエストメッセージを読み出し、リクエストメッセージを共有メモリ105に書き込む(ステップS302)。次に、httpd106は、リクエストメッセージ受信の旨をNCS128に通知する(ステップS303 )。
通知を受けたNCS128は、さらにリクエストメッセージ受信の旨をプログラミングサービス132に通知する(ステップS304)。プログラミングサービス132は、リクエストメッセージ受信の旨の通知を受けたことをトリガとして、共有メモリ105を参照して、リクエストメッセージを読み出す(ステップS305)。そして、リクエストメッセージの内容を解析して(ステップS306)、リクエストメッセージのメッセージボディに記述された内容に応じた処理を実行する(ステップS307)。このとき、メッセージボディのhtml記述にCGIを実行する旨が記述されていれば、対応するCGIを実行する。
そして、プログラミングサービス132は、処理の実行結果をレスポンスメッセージとして、httpd106経由でリクエストメッセージの送信元であるPC200 に返信する(ステップS308)。
次に、プログラミングサービス132によるdebug.cgiの処理について説明する。図5は、debug.cgiの処理の手順を示すフローチャートである。なお、プログラミングサービス132がdebug.cgiのプログラムを含んでいてもよいし、debug.cgiがプログラミングサービス132の外部に存在してもよい。以下、プログラミングサービス132がdebug.cgiのプログラムを含む場合について説明する。
プログラミングサービス132は、受信したリクエストメッセージの中のdebug.htmを先頭から一行づつ読み込む(ステップS401)。そして、読み込んだ行が「program_list:」の文字列を含むか否かを調べることにより、その行がプログラム入力フィールドか否かを判断する(ステップS402)。
そして、プログラム入力フィールドであると判断した場合には、プログラムファイルに書き出し(ステップS403)、読み込んだ一行をそのままPC200に送信する(ステップS404)。
そして、読み込んだ行が最終行か否かを判断し(ステップ405)、最終行であれば処理を終了し、最終行でなければ上記の処理を次の行に対して行う。これにより、複合機100において、プログラムファイルが作成され、PC200のWEBブラウザには、複合機100にアップロードされたプログラムの内容が順次表示されることになる。
上記の方法の他、PC200で入力したプログラムを複合機に送信するには種々の方法がある。例えば、アップロードボタンを押すことにより、PC200で入力したプログラムをPC200でプログラムファイルとし、それを複合機に送信する。複合機では、そのプログラムファイルの内容を格納し、必要に応じて格納したプログラムファイルの内容をPC200に送信する。
このようにプログラミング画面201から入力されたカスタマイズプログラムが複合機100にアップロードされ、プログラム入力フィールドにアップロード後のカスタマイズプログラムが表示された後、保存ボタン、実行設定ボタン、テスト実行ボタンのクリック操作が可能となる。これらのいずれかのボタンをクリック操作した場合におけるプログラミングサービス132の処理について説明する。
図6は、プログラミング画面201において、保存ボタン、実行設定ボタン、テスト実行ボタンのいずれかのクリック操作が行われた場合のプログラミングサービス132の処理の手順を示すフローチャートである。以下の処理は、プログラミングサービス132におけるCGIスクリプトとしてのJava(登録商標)Scriptが実行する。すなわち、プログラミング画面201におけるボタン操作をPC200が検出してそのイベントをプログラミングサービスに送信し、プログラミングサービス132はそのイベントに応じたJava(登録商標)Scriptを実行する。以下、Java(登録商標)Scriptがプログラミングサービス132に含まれているものとして説明する。
まず、プログラミングサービス132は、クリック操作されたボタンの種類を判断する(ステップS501)。プログラミング画面201で保存ボタンがクリックされた場合には、プログラミングサービス132は、ファイル名称を利用者に指定させ、カスタマイズプログラムを指定された名称で複合機100のHDD103のカスタマイズディレクトリに格納する(ステップS502 )。
図9は、カスタマイズディレクトリに格納されたカスタマイズプログラムの名称の一例を示す説明図である。図9に示すように、複合機100のHDD103のカスタマイズディレクトリは、hdd/xxx/opepaneとなっており、このカスタマイズディレクトリにカスタマイズプログラムであるshell1,shell2 ,shell3 が格納されている。
一方、プログラミング画面201で実行設定ボタンが押下された場合には、プログラミングサービス132は、上述のようにカスタマイズプログラムとボタンとの対応付けを行う(ステップS503)。
図10は、キー対応付けテーブルの内容の一例を示す説明図である。図10に示すように、キー対応付けテーブルには、ボタンのキーコードとカスタマイズプログラム名称が対応付けられている。
また、プログラミング画面201でテスト実行ボタンが押下された場合には、プログラミングサービス132は、格納されたカスタマイズプログラムの実行を行う(ステップS504)。これは、例えば、プログラミングサービス132がカスタマイズプログラをシェルで実行するためのコマンドを実行することによっておこなわれる。
このとき、テスト実行によって、オペレーションパネル210に表示される画面と同一の画面をPC200で動作しているブラウザに表示する。これは、例えば、プログラミングサービス132が、プログラムのテスト実行により発生するオペレーションパネル画面への描画命令等を取得し、その描画命令に対応して表示される画面内容と同じ内容をPC200の画面に表示するような命令をPC200に対して送信することにより実現できる。
テスト実行によってエラーが出た場合には、PC200でプログラムの修正を行い、修正したプログラムをアップロードし、再びテスト実行をする。
次に、このようにして生成されたカスタマイズプログラムの実行処理について説明する。図11は、複合機100の電源投入が行われてから、カスタマイズプログラムの実行が可能となるまでの一連の処理の手順を示すフローチャートである。
カスタマイズプログラムのカスタマイズディレクトリへの保存および起動設定ファイル211への設定が完了したら、利用者は複合機100の電源を再投入する。このとき複合機100では、ROMモニタ(図示せず)によってハードウェアの診断処理を行い(ステップS1001)、その後汎用OS121を起動し(ステップS1002)、さらに複合機初期化部129を起動する(ステップS1003 )。複合機初期化部129は、まずコントロールサービスの起動を行い(ステップS1004)、続いてコピーアプリ112、プリンタアプリ111などの複合機100の出荷時に提供されている既存アプリを起動し(ステップS1005 )、さらに出荷後新たに開発された外部アプリなどのプログラムを起動するためにプログラム起動部131を起動する(ステップS1006 )。
プログラム起動部131は、まずHDD103の起動設定ファイル211を参照し(ステップS1007)、起動すべきプログラムの名称を取得する。
図12は、起動設定ファイル211の一例を示す説明図である。図12に示すように、起動設定ファイル211には、「プログラム名称 カスタマイズプログラム名」の形式で、プログラム起動部131によって起動されるプログラムが登録されている。図12の例では、シェルスクリプトであるシェルのプログラムが最初に登録され、その後に、外部アプリとしてxxxアプリが登録されている。
このため、図12の例では、プログラム起動部131は、まずシェルを起動し、次いで、外部アプリであるXXXアプリを順に起動するように設定されている。このため、プログラム起動部131は、まずインタプリタ134(シェル)を起動し(ステップS1008)、次いで、外部アプリであるXXXアプリを順に起動する(ステップS1009)。
オペレーションパネル210の操作表示部に表示されたボタン(キー)の中で、カスタマイズプログラムが割り付けられたボタン(キー)を押下(タッチ操作)すると、シェルスクリプトで記述されたカスタマイズプログラムがシェルによって実行される。これは例えば次のようにして実行される。
すなわち、カスタマイズプログラムが割り付けられたボタン(キー)の押下情報をプログラミングサービス132が取得し、キー対応付けテーブルを参照することによりそのボタンに対応するカスタマイズプログラムファイル名を取得する。そして、そのカスタマイズプログラムをシェルで実行するための命令を実行する。なお、上記の起動設定ファイルにカスタマイズプログラムを設定することにより、カスタマイズプログラムを実行してもよい。
このように実施の形態1にかかる複合機100では、プログラミングサービス132によって、ネットワーク上のPC200に、カスタマイズプログラムのプログラミング画面を表示し、この画面からカスタマイズプログラムを入力させ、複合機100のシェル134によって、カスタマイズプログラムを実行する。これにより、カスタマイズプログラムの開発において、プログラミング画面から追加、修正ができ、また追加修正による再コンパイル、再リンクなしに複合機100で実行でき、プログラムの作成を容易に行うことができる。
また、実施の形態1にかかる複合機100では、プログラミングサービス132によって、インターネットに接続されたPC200に対しプログラミング画面を表示し、この画面からカスタマイズプログラムを入力させているので、カスタマイズプログラムの入力を入力が容易なPC200で行うことができ、複合機100上でカスタマイズプログラムの作成編集を行う場合に比べて、カスタマイズプログラムの作成をより効率的に行うことができる。
なお、実施の形態1にかかる複合機100では、インターネット220に接続されたクライアント端末としてのPC200の要求により、カスタマイズプログラムの入力処理を行っているが、インターネット以外のネットワーク、例えばLANなどに接続されたクライアント端末からカスタマイズプログラムの入力を行うように構成することも可能である。また、通信プロトコルとしては、TCP/IP以外のプロトコルを利用しても良い。
また、上記の実施の形態では、複合機からPC200に対してプログラム入力画面を送信しているが、PC200が本実施の形態におけるプログラムの入力、送信などを行うプログラムを備えていてもよい。
(実施の形態2)
実施の形態1にかかる複合機100は、ネットワーク接続されたクライアント端末であるPC200でカスタマイズプログラムを作成して複合機100に保存するものであったが、この実施の形態2にかかる複合機は、カスタマイズプログラムの入力を複合機100のオペレーションパネルから行うものである。
図13は、実施の形態2にかかる複合機1100における主要構成を示すブロック図である。なお、複合機1100の他の構成については、図2に示した実施の形態1の複合機100の構成と同様である。図13に示すように、本実施の形態にかかる複合機1100は、複合機初期化部129と、プログラム起動部131と、プログラミングサービス1132と、インタプリタ(シェル)134と、HDD103とを備えた構成となっている。
プログラミングサービス1132は、オペレーションパネル210の操作表示部にプログラミング画面を表示し、表示されたプログラミング画面からカスタマイズプログラムを入力させるものである。また、プログラミングサービス1132は、入力されたカスタマイズプログラムをHDD103のカスタマイズ領域として作成されたカスタマイズディレクトリ212に保存する。さらに、プログラミングサービス1132は、複合機1100上でカスタマイズプログラムが実行されるように、起動設定ファイルに入力されたカスタマイズプログラムを登録することもできる。
なお、複合機初期化部129、プログラム起動部131、シェル134の機能およびHDD103の起動設定ファイル211およびカスタマイズ領域としてのカスタマイズディレクトリについては、実施の形態1にかかる複合機100と同様である。
図14は、プログラミング画面1101の一例を示す説明図である。本実施の形態にかかる複合機1100において、カスタマイズプログラムを作成するためには、例えば、システム初期設定画面からプログラミングのタグを選択してプログラミング画面を表示させる。
このプログラミング画面1101は、実施の形態1における同画面とほぼ同様に、入力フィールドと、参照ボタンと、保存ボタンと、実行設定ボタンと、テスト実行ボタンとが表示されている。かかるプログラミング画面1101では、タッチ操作でキー入力を行うソフトウェアキーボードを操作表示部に表示させて、入力フィールドにカスタマイズプログラムを入力することできる。
しかしながら、操作表示部の領域サイズや入力の困難さから直接カスタマイズプログラムを入力することは困難である。このため、予めHDD103などの記憶媒体の所望の領域に、PCなどで作成したカスタマイズプログラムをネットワーク経由で格納し、プログラミング画面1101上の参照ボタンを押下して、カスタマイズプログラムを選択することにより、入力フィールドにカスタマイズプログラムを表示し、ソフトウェアキーボードを表示させ、プログラムの簡単な修正などだけを入力フィールドで行うことが好ましい。
そして、カスタマイズプログラムが完成したら、保存ボタンを押下する。これによって、実施の形態1と同様に、プログラミングサービス1132によって、カスタマイズプログラムをHDD103のカスタマイズディレクトリに保存する。また、実行設定ボタンを押下すると、実施の形態1と同様に、プログラミングサービス1132によって、カスタマイズプログラムとカスタマイズプログラムで指定されたボタン(キー)のキーコードが対応付けられてテーブルとして保存される。なお、作成したカスタマイズプログラムの実行処理については、実施の形態1の複合機100 と同様である。
このように実施の形態2にかかる複合機1100では、プログラミングサービス1132によって、オペレーションパネル210の操作表示部にプログラミング画面1101を表示し、この画面からカスタマイズプログラムを入力させているので、ネットワークに接続されていないスタンドアローンの複合機1100においてもカスタマイズプログラムを作成することができる。
(実施の形態3)
実施の形態1および2の複合機100,1100は、カスタマイズプログラムと操作表示部のボタン(キー)との対応付けをカスタマイズプログラムの記述により行うものであったが、この実施の形態3にかかる複合機は、複合機の電源投入時にカスタマイズプログラムと操作表示部のボタン(キー)との対応付けを動的に行うものである。
図15は、実施の形態3にかかる複合機1300の機能的構成を示すブロック図である。本実施の形態の複合機1300では、実施の形態1と同様に、ネットワーク上のPC200でカスタマイズプログラムの作成を行って、複合機1300のHD103に作成されたカスタマイズプログラムを保存して実行する。
図15に示すように、本実施の形態の複合機1300は、オペパネ登録部133を備えている点が図2に示す実施の形態1の複合機100と異なっており、他の構成は実施の形態1の複合機100と同様である。
オペパネ登録部133は、カスタマイズプログラムを実行させるためのボタン(キー)の割り付けを行うものである。すなわち、オペパネ登録部133によって割り付けたボタン(キー)をオペレーションパネル上で押下(タッチ操作)することによって、カスタマイズプログラムが実行される。
PC200上からのカスタマイズプログラムの作成および保存の処理は、実施の形態1のプログラミングサービス131と同様に行われる。
以下、カスタマイズプログラムと操作表示部に表示されるボタン(キー)の割付処理について説明する。カスタマイズプログラムのカスタマイズディレクトリへの保存が完了すると、作成したカスタマイズプログラムをオペレーションパネル210のボタン(キー)に割り付けるために、利用者は複合機100の電源を再投入する。
図16は、複合機1300の電源投入が行われてから、カスタマイズプログラムとボタン(キー)との割り付けが完了するまでの一連の処理の手順を示すフローチャートである。
複合機1300の電源投入からプログラム起動部131までの処理(ステップS1501〜S1506)については、実施の形態1の複合機100による処理(ステップS1001〜S1006)と同様である。
起動されたプログラム起動部131は、まずHDD103の起動設定ファイル211を参照し(ステップS1507)、起動すべきプログラムの名称を取得する。図17は、本実施の形態で使用される起動設定ファイル211の内容の一例を示す説明図である。この例では、オペパネ登録部のプログラム、シェルおよび外部アプリであるXXX アプリを順に起動するように設定されている。
このため、プログラム起動部131は、まずオペパネ登録部133のプログラムを起動する(ステップS1508)。なお、このオペパネ登録部133のプログラムは、予めカスタマイズディレクトリに格納されている。次いで、インタプリタ(シェル)134を起動し(ステップS1509)、最後に、登録されている外部アプリを起動する(ステップS1510)。
起動されたオペパネ登録部133は、キー割り付け設定画面をオペレーションパネルに表示する(ステップS1511)。図18は、キー割り付け設定画面の一例を示す説明図である。図18に示すように、キー割り付け設定画面には、各カスタマイズプログラムごとに割り付け可能なボタン(キー)が表示され、かかる画面で所望のボタン(キー)を押下(タッチ操作)すると、オペパネ登録部133は、該当するカスタマイズプログラムの名称と押下されたボタン(キー)のキーコードとを対応付けて、HDD103又はフラッシュメモリなどの記憶媒体にテーブル情報として格納する(ステップS1512)。これによって、オペレーションパネルに表示されるボタン(キー)にカスタマイズプログラムが割り付けられることになる。
このように実施の形態3にかかる複合機1300では、プログラミングサービス132によって、プログラミング画面201を表示してカスタマイズプログラムを入力させ、オペパネ登録部133によって、カスタマイズプログラムを操作表示部に表示および入力を行うボタン(キー)に割り付ける。このオペパネ登録部133を複合機1300の電源投入時に起動することにより、カスタマイズプログラムが実行される場合のボタン操作を複合機1300の起動時に動的に定めることができる。
なお、本実施の形態では、オペパネ登録部133によってボタン(キー)への割り付け処理を行っているが、例えば、SCS122などのコントロールサービスでボタン(キー)割り付け処理を行うようにしてもよい。これにより、割り付け処理のために別途プログラムを起動する必要が無くなり、効率的な処理が行える。
(実施の形態4)
実施の形態1〜3の複合機100,1100,1300は、シェルスクリプトとしてカスタマイズプログラムを複合機100,1300の汎用OS121で用意されたコマンドインタプリタであるシェル134によって実行するものであったが、この実施の形態4にかかる複合機は、シェル134以外のインタプリタを使用してカスタマイズプログラムを実行するものである。
図19は、実施の形態4にかかる複合機1700を備えたネットワーク構成図であり、図20は、実施の形態4にかかる複合機1700の機能的構成を示すブロック図である。実施の形態4にかかる複合機1700は、実施の形態1と同様に、TCP/IPを利用したインターネットに接続され、当該ネットワークに接続されたクライアント端末であるPC200からカスタマイズプログラムの入力およびデバッグ作業を行うことを可能としたものである。なお、カスタマイズプログラムとしては、例えば、オペレーションパネル210の操作表示部にボタンを表示し、あるボタンを押したときにそのボタンに対応した処理を行うためのプログラムがある。
本実施の形態の複合機1700では、カスタマイズプログラムを、Visual Basic(登録商標)言語で記述する。そして、作成されたカスタマイズプログラムを、汎用OS121の配下で動作するVisual Basicインタプリタで実行させている。
図19に示すように、複合機1700は、複合機初期化部129と、プログラム起動部131と、プログラミングサービス132と、Visual Basicインタプリタ1734(以下、「VBインタプリタ1734」という。)と、NCS128と、httpd106と、共有メモリ105と、HDD103とを備えた構成となっている。なお、プログラミングサービス132、複合機初期化部129、プログラム起動部131、NCS128、httpd106の構成および機能、HDD103に格納される起動設定ファイル211の内容およびカスタマイズディレクトリについては、実施の形態1の複合機100と同様である。
VBインタプリタ1734は、カスタマイズプログラムをステップごとに解析し逐次実行するものである。本実施の形態において、カスタマイズプログラムの作成および保存は、実施の形態1のプログラミングサービス132と同様に行われる。
また、本実施の形態の複合機1700では、VBインタプリタ1734によってカスタマイズプログラムを実行させるため、複合機1700の起動時にVBインタプリタ1734も起動させておく必要がある。このため、実施の形態1と同様の起動設定ファイル211にVBインタプリタ1734のプログラム名称を予め設定しておく。
図21は、起動設定ファイルの内容の一例を示す説明図である。図21に示すように、本実施の形態の複合機1700で使用する起動設定ファイル211には、先頭の行に「VBインタプリタプログラム」が設定されている。このため、プログラム起動部131は、起動設定ファイル211を参照した後、まずVBインタプリタ1734を起動することになり、これによってカスタマイズプログラムの実行が可能となる。
このように実施の形態4にかかる複合機1700では、汎用OS121の配下で動作するVBインタプリタによってカスタマイズプログラムを実行するので、汎用OSで提供されるインタプリタよりも高度な処理を行えるインタプリタを利用することができる。従って、UNIX(登録商標)のシェルを用いるよりも高度なプログラムを容易に作成することが可能となる。
なお、実施の形態4では、PC200上ではVBインタプリタはインストールされていないが、PC200にVisual Basic開発環境をインストールし、操作表示部の画面設計を含むプログラム作成をPC200上で行って、生成されたプログラムをファイル転送などを利用して、複合機1700のカスタマイズディレクトリに格納するように構成しても良い。
また、実施の形態4の複合機1700では、インタプリタとしてVBインタプリタ1734を使用し、開発するカスタマイズプログラムをVisual Basic言語で記述していたが、この他、インタプリタ用の言語を用いても良い。例えば、複合機1700にJava(登録商標)VM(仮想マシン)を搭載し、カスタマイズプログラムをJava(登録商標)言語で記述するように構成することもできる。
実施の形態1〜4にかかる複合機では、プログラミングサービス132をコントロールサービス層に搭載した構成としているが、アプリケーション層に搭載した構成とすることもできる。
(実施の形態5)
実施の形態4にかかる複合機は、汎用OS121の配下で動作するインタプリタを使用してカスタマイズプログラムを実行するものであったが、この実施の形態5にかかる複合機1800は、VBインタプリタ1801とVBアプリ1802をアプリケーション層に搭載した構成としたものである。
図22に、実施の形態5に係る複合機の機能構成のブロック図を示す。実施の形態5にかかる複合機は、実施の形態4と同様に、TCP/IPを利用したインターネットに接続され、当該ネットワークに接続されたクライアント端末であるPC200から、カスタマイズプログラムの入力およびデバッグ作業を行うことを可能としたものである。ただし、実施の形態5では、作成されたカスタマイズプログラム(以下、VBアプリと称する)を、アプリケーション層に搭載されたVisual Basicインタプリタ(以下、VBインタプリタと称する)で実行させている。なお、図中、プログラミングサービス132をアプリケーション層に搭載した構成としてもよい。
Visual Basic開発環境をインストールしたPC200上でVBアプリの作成を行い、その作成したVBアプリを複合機に転送し、複合機でそのVBアプリを格納しておき、オペレーションパネルにおけるアプリ選択等に応じてVBアプリを起動してVBインタプリタ1801により実行するようにする。
以下、より具体的に説明する。
図23は、PC200上でVisual Basic開発環境を用いてVBアプリを作成している場面の例を示す図である。
同図中の画面内にはProject2-Form2(Form)の表題がついたウィンドウと、Project2-Form2(コード)の表題がついたウィンドウが示されている。
Project2-Form2(Form)の表題がついたウィンドウは、複合機のオペレーションパネルで表示されるメニュー画面を作成するためのものであり、表示されている状態では、3つのボタンが設定されており、一つは"SCAN"、一つは"FAX"あと一つは"START"のボタンである。これらのボタンが押された場合に、複合機のスキャニングやファックス送信などの動作が行われるように設計される。
Project2-Form2(コード)の表題がついたウィンドウは、上記のパネルの画面中にあるボタンが押されたときの動作を記述するプログラミングを行うためのものである。
図23に示す状態でプログラムの保存を行うと、Project2.vbpとForm2.frmという二つのファイルが生成される。Project2.vbpにはプロジェクトを管理するための情報や、プログラムを実行する際の条件となるものが、変数への値の設定として保存されている。
Form2.frmは、VBインタプリタ1801によりインタプリトされるプログラムそのものであり、このVBアプリをPC200から複合機上のプログラミングサービス132を介してアップロードする。
そして、プログラミング画面201でテスト実行ボタンが押下された場合には、複合機上のVBインタプリタ1801が起動され、入力されたVBアプリの実行が行われる。このとき、テスト実行によって、オペレーションパネル210に表示される画面と同一の画面をPC200で動作しているブラウザに表示する。
図24、25に、VBインタプリタ1801により実行されるVBアプリの例を示す。
図24に示すVBプログラムが複合機において実行されると、まず、NEXTWINボタンを含むウィンドウが表示される。そして、NEXTWINボタンが押されると、call("change_display", "Form2")により、関数change_display("Form2")が実行され、次の画面(Form2ウィンドウ)に切り替わる。
図25に、そのForm2ウィンドウを表示するVBプログラムを示す。なお、Form2のVBプログラムは、図23に示した画面に対応する。
Form2ウィンドウでは、SCANボタンが押されたときに、
call("ScanStart", A4, ADF, TIFF, BINARY, "/work/tmpfile.tif")
gwOpItemCreate(win, MESSAGE_ITEM,
ITEM_MESSAGE_X, 0,
ITEM_MESSAGE_Y, 12,
ITEM_MESSAGE_WIDTH, 100,
ITEM_MESSAGE_HEIGHT, 12,
ITEM_MESSAGE_CENTER_X, 0,
ITEM_MESSAGE_BLINK, 0,
ITEM_MESSAGE, "文字列", 0,
ITEM_MESSAGE_FONT, FONT_12, 0,
0);
が実行される。
最初のScanStart関数は、A4サイズの原稿をADFから読み込んで、2値画像としてTIFFフォーマットでHDD上のファイル"/work/tempfile"で保管することを意味している。この関数をVBインタプリタ1801が解釈して、複合機に動作を行わせることとなる。
次の行のgwOpItemCreate()は複合機におけるOCS126によりその機能が提供されている関数であり、現在表示されている画面に文字列を表示する機能を実行するものである。gwOpItemCreate()は、VBインタプリタ1801により、OCS126への関数コールとして実行される。
このようにして作成されたVBアプリを複合機で実行させるには、図11に示した起動設定ファイルにVBインタプリタとVBアプリを設定し、例えば図10に示した手順と同様にして、VBインタプリタとVBアプリを起動する。
複合機でのVBアプリ実行時、オペレーションパネルに表示操作を行うためには次のような処理を行う。まず、VBインタプリタ1801は、SCS122からの画面描画準備完了イベントを待ち、上記のイベントを受け取ったら、初期表示するウィンドウイメージを作成する(ルートウィンドウ生成)。次に、VBアプリが、ルートウィンドウ内の子ウィンドウの生成や文字列表示の関数を実行することにより初期画面を準備する。そして、画面準備完了を示す関数を実行することにより、画面の準備ができたことをSCS122に通知する。次に、オペレーションパネル上でアプリ選択ボタンが選択されると、SCS122から操作部オーナー移行要求のイベントが発行される。このイベントをVBアプリが受け取ると、操作部オーナー移行可能であることを示す関数を実行し、この時点で上記の初期画面が表示される。この後、VBアプリの実質的な処理がVBインタプリタ1801により実行される。
上記のように、本実施の形態によれば、VBインタプリタを用いることにより効率良くアプリを開発することが可能となる。
(実施の形態6)
実施の形態5にかかる複合機は、VBインタプリタをアプリケーション層に搭載した構成としたものであったが、実施の形態6にかかる複合機は、Java(登録商標)実行環境をアプリケーション層に搭載した構成としたものである。
図26に、実施の形態6に係る複合機1900の機能構成のブロック図を示す。同図に示すように、実施の形態6に係る複合機1900は、アプリケーション層にJava(登録商標)実行環境1901とJava(登録商標)アプリ1902を搭載した構成を有している。Java(登録商標)アプリケーションをPC(パーソナルコンピュータ)などで開発し、それを複合機にダウンロードしてJava(登録商標)実行環境1901を用いて実行する。
図27は、PCにおけるJava(登録商標)開発環境と複合機1900におけるJava(登録商標)実行環境の構成を示す図である。
同図に示すように、複合機1900におけるJava(登録商標)実行環境は、クラスライブラリ1911、仮想マシン1912、アプリケーション管理部1914を有している。
クラスライブラリ1911は、Java(登録商標)アプリが容易に複合機を操作するためのサービスを提供するために用いられるクラスライブラリである。本実施の形態におけるクラスライブラリは、例えば、操作パネルクラス、イベントクラス、複合機制御クラス、ネットワークトランザクションクラス、基本的なJava(登録商標)クラスライブラリ等から構成される。なお、Java(登録商標)アプリ自身もクラスの集合であり、そのクラスがクラスライブラリのクラスを呼び出すことにより、アプリの処理が実行される。Java(登録商標)アプリに、それが使用するクラスライブラリのクラスの機能を全て含めることにより、クラスライブラリ1911を搭載しない構成もあり得る。
Java(登録商標)のソースコードプログラムはコンパイルして中間コード形式のバイトコードされ、複合機にロードされる。仮想マシン1912はそのバイトコードを解釈・実行する。
アプリケーション管理部1914は、Java(登録商標)アプリを管理する機能を有しており、例えば、Java(登録商標)アプリのリスト表示、起動や強制終了などのJava(登録商標)アプリ実行管理、Java(登録商標)アプリのロードやバージョンアップ、インストール済みのJava(登録商標)アプリの削除、アプリケーション登録のためのパスワード設定等を行う機能を有している。
より詳細には、図28に示すように、Java(登録商標)の実行環境は更にネイティブプログラムインタフェース1913を有している。ネイティブプログラムインタフェース1913は、仮想マシン1912で実行されるJava(登録商標)コードが、C言語などの他のプログラミング言語で書かれたアプリケーションやライブラリと相互運用するための機能を有している。このネイティブプログラムインタフェース1913の機構を用いて、アプリはコントロールサービスのAPIにアクセスできる。
図27に示すJava(登録商標)開発環境は、Java(登録商標)の実行環境と同様のクラスライブラリ1921、仮想マシン1922、アプリケーション管理部1924を有している。また、更に、バイトコードを生成するためのJava(登録商標)コンパイラ1925と、アプリによる複合機の操作をエミュレートするエミュレータ1923を有している。このJava(登録商標)開発環境で開発されたJava(登録商標)アプリは、ICカード等の記録媒体を介して複合機のJava(登録商標)実行環境にロードできる。また、ネットワークを介してロードすることもできる。
例えば、図29に示すように、WebサーバにJava(登録商標)開発環境で開発したJava(登録商標)アプリを格納しておき、Java(登録商標)実行環境からWebサーバにアクセスしてJava(登録商標)アプリをロードするように構成できる。また、Webサーバの代わりにFTPサーバを使用することもできる。
(Java(登録商標)アプリケーションの開発)
次に、Java(登録商標)開発環境でのJava(登録商標)アプリの開発について詳細に説明する。
図30は、Java(登録商標)アプリ開発の流れを示す図である。このように、まず、Java(登録商標)のソースコードをJava(登録商標)ファイルとして作成し、これをJava(登録商標)コンパイラでコンパイルし、クラスファイルとする。そして、複数のクラスをまとめてJarファイルとする。なお、Jarファイルにはmainルーチンを持つクラスを示すファイルを含めておくことが好ましい。
このようにして作成したJava(登録商標)アプリを、これまでに説明した実施の形態と同様にして複合機上でテスト実行することにより、デバッグを行うことが可能であるが、本実施の形態では、図27に示すエミュレータ1923を用いることにより、ターゲットである複合機を用いずにJava(登録商標)アプリのデバッグをすることが可能である。これは、Java(登録商標)では、仮想マシンを使用する構成となっているため、実行環境をエミュレートすることが比較的容易であることによる。エミュレータを用いた開発が完了したら、Java(登録商標)アプリ(バイトコード)をネットワーク又はICカードを介して複合機にロードすることにより、複合機を用いた評価を行うことが可能である。
エミュレータは、Java(登録商標)アプリ側からの命令を受信し、それに応じた動作を行うように記述したプログラムとして構成することができる。例えば、複合機のオペレーションパネルの表示部への表示命令に対しては、複合機上に表示する画面と同様の画面をPCのディスプレイ上に表示する。ただし、開発環境であるPCには複合機におけるエンジン(スキャナ、プリンタなど)がないので、例えば、Java(登録商標)アプリからのプリント命令に対しては、PCの画面上にプリントを行う画像を表示したり、PC自身に接続されているデフォルトのプリンタに印刷を行う。また、ユーザがコピー操作をPCのエミュレータ画面上でした場合には、例えば、ユーザにコピー対象となるファイルをローカルファイルシステムから選ぶように通知し、コピーのあて先を尋ねるダイアログボックスを表示し、選択されたファイルをその指定された宛先にコピーする。
なお、エミュレータは、図27に示すように仮想マシンとクラスライブラリとは別のプラグラムとして実装することもできるし、図31に示すように、クラスライブラリの中のクラスとして実装することもできる。
図32に、エミュレータによりPCに表示されるオペレーションパネル画面を示す。この画面に表示されるボタンなどの要素は、実際の複合機のものと同等である。また、エミュレータは、格納したJava(登録商標)アプリを選択して実行するローダーの機能も有している。ローダーとして動作する場合には、例えば、図33に示す画面を表示する。そして、ユーザはJava(登録商標)アプリを選択し、実行ボタンを押すことによりJava(登録商標)アプリが実行される。なお、ここで表示されるJava(登録商標)アプリは、mainルーチンを持つクラス名、もしくはJarファイル名である。
エミュレータは、エミュレータ上で動作するアプリケーションの状態状態情報を自動的にログファイルに収集する機能も有しており、どのようなメッセージをログとして残すかの設定もできる。例えば、アプリを異常終了させるような深刻なエラーのみをログとして収集するように設定したり、アプリケーションのデバッグに有益な詳細情報をログとして収集するように設定することができる。
エミュレータを用いて開発環境側でプログラムのデバッグを行うことは、他の実施の形態においても適用可能である。すなわち、例えば実施の形態1において、PC200にインタプリタと、本実施の形態と同様のエミュレータを搭載する。プログラムのデバッグが進んだところで、評価のために複合機にアクセスしてプログラムを送信する。
(Java(登録商標)アプリケーションの例)
次に、Java(登録商標)アプリケーションの例について説明する。ここでは、操作パネルクラスを使用したサンプルプログラムを使用したJava(登録商標)アプリの例について説明する。図34に、操作パネルクラスの階層構成を示す。
図34中、***Windowのクラスはウィンドウ作成のためのクラスであり、****Itemのクラスは、ボタンなどのウィンドウ中におけるエレメントを作成するためのクラスである。例えば、以下に示すコードを含むプログラムにより、図35に示すようなメインウィンドウとその中のエレメントが作成される。
mainwindow = new PanelWindow (panel.root(), 640, 240); (a)
MessageItem msg = new MessageItem (20, 20, 600, 40); (b)
ButtonItem Button = new ButtonItem (10, 60, 80, 30); (c)
上記の(a)は、幅640ドット、高さ240ドットのメインウィンドウを作成するためのコードである。(b)は、メインウィンドウの位置(20、20)に幅600、高さ40のメッセージアイテムを作成するためのコードである。(c)は、(10、60)の位置に、サイズ80×30のボタンを作成するためのコードである。
図36に示すプログラムは、複合機のオペレーションパネルにユーザーインタフェースを実装するプログラムである。図37に示すように、このプログラムは起動直後に"Hello World"及び"Your Input Was…"のメッセージと"Get Input…"のボタンを表示する。ユーザーが"Get Input…"のボタンに触れると、パネル上にソフトキーボードを表示し、ソフトキーボードには、"Add your Input"のタイトルが表示され、ユーザーに任意のコード入力を促す。ユーザーが、ソフトキーボードから任意の文字列、例えば、"ABCD!"を入力した場合、パネル上の"Your Input Was…"のメッセージの下にユーザーが入力した文字列を表示、すなわち、"ABCD!"を表示する。
以下、図36に示すサンプルプログラムの内容について、プログラム中に記述した注釈の番号に沿って説明する。
(1)は、操作パネルクラスライブラリを使用するための命令である。(2)は、GWAppを継承することを示し、これにより複合機のアプリケーション雛型(抽象)を使用することが可能となる。また、複雑な初期設定や終了処理をユーザーが記述せずに済み、メッセージ受信などの処理もユーザーに対して隠蔽することができる。また、(3) により"Hello World"のメッセージを表示するオブジェクトを生成し、(4) により"Get Input..."のボタンオブジェクトを生成する。そして、(5) により"Your Input Was..." のメッセージを表示するオブジェクトを生成し、(6) によりソフトキーボードから入力した文字を表示するメッセージオブジェクトを生成する。
(Java(登録商標)実行環境におけるJava(登録商標)アプリの実行について)
図27に示す構成において、アプリケーション管理部1914の機能を用いることにより、以下のような手順でダウンロードから起動までの処理を行うことが可能である。
アプリケーション管理部1914は、他のアプリケーションと同様にして複合機の起動時に起動され、アプリケーション起動キー等を押すことにより、オペレーションパネルにユーザーインタフェースを表示する。このとき、Java(登録商標)アプリがロードされていない場合は、アプリケーションロード画面を表示する。ユーザーは、このアプリケーションロード画面から所定のWebサイト又は、ICカードにアクセスし、Java(登録商標)アプリをロードする。
ロードの処理においては、Java(登録商標)アプリをロードする前に、当該Webサーバ等に対してJava(登録商標)アプリに関する情報の問い合わせを行い、インストール可能であるJava(登録商標)アプリであるか否かを確認する。確認項目は、例えば、プログラムサイズ、バージョン確認、プログラム最終更新情報、使用するメモリワークサイズ、使用するストレージサイズ、あらかじめ使用するネットワークアドレスの確認、利用可能期間(利用回数)、アプリケーションプログラム名等である。
上記の事項を確認し、インストール可能であると判断した場合は、アプリケーション管理部1914がJava(登録商標)アプリケーションファイルを複合機にダウンロードする。
そして、Java(登録商標)アプリケーションプログラムのダウンロードが終了すると、アプリケーション管理部1914は、アプリケーション名を取得し、アプリケーションリストに追加し、同時にJava(登録商標)アプリケーションプログラムを複合機のハードディスクに格納する。
以上の処理が完了することにより、ダウンロードしたJava(登録商標)アプリを利用できる状態になり、ユーザーは、アプリケーション管理部1914が提供するJava(登録商標)アプリケーション起動画面から起動するJava(登録商標)アプリを選択することにより、仮想マシンを起動し、Java(登録商標)アプリを実行することができる。
次のようにしてJava(登録商標)アプリを実行することも可能である。次に説明する方法は、図29に示した構成において、Java(登録商標)アプリをWebサーバからロードして実行する例である。以下の処理は、アプリケーション管理部1914に含まれるローダー(プログラム)により実行される。なお、ローダー自身はJava(登録商標)アプリとして実装してもよいし、例えばC言語で実装してもよい。
図38に、図29に示した構成におけるJava(登録商標)アプリのアップロードからダウンロードまでの概念図を示す。このように、Java(登録商標)開発環境において、開発、テストされたJava(登録商標)アプリをWebサーバにアップロードする(ステップ1)。複合機のローダーは、Webサーバにアクセスし(ステップ2)、ユーザ所望のJava(登録商標)アプリをダウンロードし(ステップ3)、実行する。
次に、図39のフローチャートを参照してローダーの処理手順について説明する。
ユーザが複合機におけるアプリ切り替えのための所定のボタンを押すことにより、ローダーはJava(登録商標)アプリが既にロードされているか否かをチェックし(ステップ11)、ロードされていればJava(登録商標)アプリを実行する(ステップ12)。そして、Java(登録商標)アプリユーザーインタフェースが表示される。ロードされていなければローダーの画面が表示される(ステップ13)。なお、Java(登録商標)アプリの実行が終了した場合にはローダーの画面が表示される。また、Java(登録商標)アプリのユーザーインタフェースが表示されているときに、所定のコードを入力して所定のボタンを押すことにより、ローダーの画面を表示することができる。
図40に、複合機に表示されるローダーの画面を示す。ローダーには、現在ロードされているJava(登録商標)アプリがあればそのJava(登録商標)アプリと、ローダーがJava(登録商標)アプリの更新をWebサーバに対してチェックする頻度が表示される。
ローダーの画面において、アプリのロードのボタンに触れると、図41に示すアプリロードウィンドウが表示される(ステップ14)。ここでJava(登録商標)アプリのURLを入力する。URLを入力するには、URLボタンに触れ、ソフトキーボードを表示させ、ソフトキーボードからタイプすることによりURLを入力する。また、URLボタンに触れることにより、図42に示すようなJava(登録商標)アプリのURLのリストを表示し、そのリストの中から所望のJava(登録商標)アプリを選択するようにしてもよい。また、必要に応じて、図41に示すクラス名の欄に、選択したJava(登録商標)アプリ(Jarファイル)の中のmainルーチンを持つクラス名を入力する。
その後、図41に示す画面のOKボタンに触れることにより、Java(登録商標)アプリがWebサーバからダウンロードされ(ステップ15)、複合機で実行される。
ローダーは自動的に、指定された間隔でWebサーバをチェックし、新たなバージョンのJava(登録商標)アプリがWebサーバに格納されているか否かを確認する。これは、現在動作しているJava(登録商標)アプリの日付とタイムスタンプを、Webサーバ上のものと比較することにより行う。新たなバージョンのJava(登録商標)アプリが発見された場合には、現在作動しているJava(登録商標)アプリは削除され、新しいバージョンのJava(登録商標)アプリがダウンロードされる。
上記の更新間隔を変更するには、図40に示す画面上の更新間隔ボタンに触れることにより、図43に示す画面が表示される(ステップ16)。この画面の中で矢印キーを用いて時間か分かを選択し、オペレーションパネルの数字キーを用いて新たな時間間隔を入力する。
複合機からJava(登録商標)アプリを削除する場合には図40に示す画面のアンロードのボタンに触れることにより、図44に示す画面を表示する(ステップ17)。ここで"OK"ボタンに触れることによりJava(登録商標)アプリが削除される。
図40の画面におけるExitボタンに触れることによりローダーが終了する。
さて、本実施の形態では、Java(登録商標)アプリを連結することにより、カスタマイズプログラムを作成することが可能である。この処理の流れについて図45を参照して説明する。なお、カスタマイズプログラムを作成するプログラム自体もJava(登録商標)アプリであり、以下これをカスタマイズアプリと呼ぶ。なお、カスタマイズアプリは予め画像形成装置内に備えられていてもよい。
まず、操作表示部の画面を図40のローダ画面に切り替え、カスタマイズアプリをロードし、実行する。
カスタマイズアプリは図45の画面1を表示する。画面1には、紙(paper)のオブジェクトだけが表示される。なお、紙のオブジェクト以外のオブジェクトを入れることもできる。オブジェクトは"入れる"ボタン、"取り出す"ボタンにより出し入れをすることができる。また、画面1において、紙のオブジェクトには読み書き許可属性などの属性を"読書許可"ボタンにより設定することができる。
画面1においてpaperに触れると、画面2に示すように、paperオブジェクトに接続されるオブジェクトのリストが表示される。ここでscanを選択すると、画面3に遷移し、さらにscanに触れることにより、scanオブジェクトに接続されるオブジェクトのリストが画面4のように表示される。画面4においてmailを選択すると画面5に遷移する。
その後、"設定"ボタンに触れることにより、スキャンして、その画像ファイルをメールにて送信するという処理を行うカスタマイズプログラムが生成される。また、画面6に示すようにキーがアサインされる。複合機でこのキーを操作することにより、上記のカスタマイズプログラムが実行される。このカスタマイズプログラムは、連結されたオブジェクトのクラスを順次実行するように記述されたプログラムである。
なお、本実施の形態のようにWebサーバにアプリを格納しておき、Webサーバから複合機に所望のアプリをダウンロードすることや、アプリを連結してカスタマイズすることは、他の実施の形態にも適用可能である。例えば、VBインタープリタを用いた前述した構成において、本実施の形態と同様の機能のローダーを備えることにより、本実施の形態と同様にサーバからアプリをダウンロードできる。
なお、これまでに説明した各サービスプログラム、アプリケーションプログラムは、ICカード等の記録媒体に格納し、そこから画像形成装置に格納することができる。また、ネットワークを介して外部のサーバから画像形成装置に格納することもできる。
上記のように、本実施の形態によれば、Java(登録商標)環境を用いることにより効率良くアプリを開発することが可能となる。
なお、本明細書で説明した画像形成装置等の構成は例えば次のようにまとめることができる。
(構成1)
画像形成処理に関するシステム側の処理を行うサービスモジュールを有し、当該サービスモジュールとは別にアプリケーションを搭載可能に構成された画像形成装置において、
アプリケーションを実行する仮想マシンと、
当該仮想マシンにより実行されるアプリケーションを管理するアプリケーション管理部と
を備えたことを特徴とする画像形成装置。
構成1によれば、仮想マシン上で動作するアプリケーションを画像形成装置で実行できる。一般に仮想マシンは機種の違いを吸収するので、アプリケーションを容易に画像形成装置上で実行できる。
(構成2)
前記仮想マシンに代えてインタプリタを備えた構成1に記載の画像形成装置。
(構成3)
前記アプリケーションはJava(登録商標)プログラムであり、前記画像形成装置は、当該Java(登録商標)プログラムが参照するクラスライブラリを備えた構成1に記載の画像形成装置。
構成3によれば、本発明によれば、クラスライブラリの提供する種々の機能を利用したアプリケーションを実行できる。
(構成4)
前記クラスライブラリは、前記画像形成装置の表示部への画面表示を行うためのクラスを含む構成3に記載の画像形成装置。
(構成5)
前記アプリケーション管理部は、前記画像形成装置に接続される記憶媒体から、又はネットワークを介して前記画像形成装置に接続されるサーバから、アプリケーションを前記画像形成装置にロードするローダーである構成1又は2に記載の画像形成装置。
構成5によれば、ローダーがアプリケーションをロードするので、容易にアプリケーションを実行できる。
(構成6)
前記ローダーは、アプリケーションが前記画像形成装置にロードされているか否かを判断し、ロードされていれば当該アプリケーションを実行し、ロードされていなければローダーの画面を表示する構成1又は2に記載の画像形成装置。
構成6によれば、アプリケーションを容易に実行できる。また、アプリケーションが存在しない場合には、ローダーの画面が表示されるので、容易にアプリケーションをロードできる。
(構成7)
前記ローダーは、アプリケーションロード画面を表示し、ユーザにより指定された場所からアプリケーションをダウンロードする構成1又は2に記載の画像形成装置。
(構成8)
前記ローダーは、アプリケーションのリストを表示し、ユーザにより選択されたアプリケーションをダウンロードする構成7に記載の画像形成装置。
(構成9)
前記場所は、アプリケーションを格納するWebサーバ又はFTPサーバである構成7に記載の画像形成装置。
(構成10)
前記ローダーは、ダウンロードしたアプリケーションが、前記場所において更新されているか否かを所定の間隔でチェックする構成7に記載の画像形成装置。
構成10によれば、バージョンアップしたアプリケーションを容易に取得できる。
(構成11)
前記ローダーは、前記所定の間隔を入力するための画面を表示し、ユーザからの指示に基づき当該所定の間隔を設定する構成10に記載の画像形成装置。
(構成12)
アプリケーションを連結して、連結されたアプリケーションにより一連の処理を実行させる連結手段を更に備えた構成1又は2に記載の画像形成装置。
(構成13)
前記連結手段は、所定のアプリケーションと、その所定のアプリケーションに接続される候補となる複数のアプリケーションを示す画面を表示し、当該複数のアプリケーションの中からユーザにより選択されたアプリケーションを前記所定のアプリケーションに接続する構成12に記載の画像形成装置。
(構成14)
画像形成処理に関するシステム側の処理を行うサービスモジュールを有し、当該サービスモジュールとは別にアプリケーションを搭載可能に構成された画像形成装置を、
アプリケーションを実行する手段としての仮想マシン、
当該仮想マシンにより実行されるアプリケーションを管理するアプリケーション管理部
として機能させるプログラム。
(構成15)
画像形成処理に関するシステム側の処理を行うサービスモジュールを有し、当該サービスモジュールとは別にアプリケーションを搭載可能に構成された画像形成装置を、
アプリケーションを実行する手段としてのインタプリタ、
当該インタプリタにより実行されるアプリケーションを管理するアプリケーション管理部
として機能させるプログラム。
(構成16)
前記アプリケーションはJava(登録商標)プログラムであり、前記プログラムは、当該Java(登録商標)プログラムが参照するクラスライブラリを含む構成14に記載のプログラム。
(構成17)
前記クラスライブラリは、前記画像形成装置の表示部への画面表示を行うためのクラスを含む構成16に記載のプログラム。
(構成18)
前記アプリケーション管理部は、前記画像形成装置に接続される記憶媒体から、又はネットワークを介して前記画像形成装置に接続されるサーバから、アプリケーションを前記画像形成装置にロードするローダーである構成14又は15に記載のプログラム。
(構成19)
前記ローダーは、アプリケーションが前記画像形成装置にロードされているか否かを判断し、ロードされていれば当該アプリケーションを実行し、ロードされていなければローダーの画面を表示する構成14又は15に記載のプログラム。
(構成20)
前記ローダーは、アプリケーションロード画面を表示し、ユーザにより指定された場所からアプリケーションをダウンロードする構成14又は15に記載のプログラム。
(構成21)
前記ローダーは、アプリケーションのリストを表示し、ユーザにより選択されたアプリケーションをダウンロードする構成20に記載のプログラム。
(構成22)
前記場所は、アプリケーションを格納するWebサーバ又はFTPサーバである構成20に記載のプログラム。
(構成23)
前記ローダーは、ダウンロードしたアプリケーションが、前記場所において更新されているか否かを所定の間隔でチェックする構成20に記載のプログラム。
(構成24)
前記ローダーは、前記所定の間隔を入力するための画面を表示し、ユーザからの指示に基づき当該所定の間隔を設定する構成23に記載のプログラム。
(構成25)
前記画像形成装置を、アプリケーションを連結して、連結されたアプリケーションにより一連の処理を実行させる連結手段として更に機能させる構成14又は15に記載のプログラム。
(構成26)
前記連結手段は、所定のアプリケーションと、その所定のアプリケーションに接続される候補となる複数のアプリケーションを示す画面を表示し、当該複数のアプリケーションの中からユーザにより選択されたアプリケーションを前記所定のアプリケーションに接続する構成25に記載のプログラム。
(構成27)
構成14ないし26のうちいずれか1項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
(構成28)
アプリケーションを実行する仮想マシンと、当該仮想マシンにより実行されるアプリケーションを管理するアプリケーション管理部とを備えた画像形成装置におけるアプリケーション実行方法であって、
前記アプリケーション管理部が、アプリケーションロード画面を表示し、ユーザにより指定された場所からアプリケーションをダウンロードし、ダウンロードしたアプリケーションを実行するステップを有することを特徴とするアプリケーション実行方法。
(構成29)
前記画像形成装置は、前記仮想マシンに代えてインタプリタを備えた構成28に記載のアプリケーション実行方法。
(構成30)
前記場所は、前記画像形成装置に接続される記録媒体、又はネットワークを介して前記画像形成装置に接続されるサーバである構成28又は29に記載のアプリケーション実行方法。
(構成31)
前記アプリケーション管理部は、アプリケーションのリストを表示し、ユーザにより選択されたアプリケーションをダウンロードする構成28又は29に記載のアプリケーション実行方法。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内で種々変更・応用が可能である。