(57)【要約】【課題】  本発明の課題は、複数の画像形成処理を種々のアプリケーションから利用可能とする画像形成装置において、該複数の画像形成処理の変更を該種々のアプリケーションへの開発に影響を与えないようにしたインタフェースを有する画像形成装置を提供することを目的とする。【解決手段】  本発明の課題は、画像形成処理を行い、第一プロセスとして動作するアプリケーションと、上記画像形成処理で利用されるハードウェア資源の管理を行い、第二プロセスとして動作するコントロールサービスと、上記第一プロセスと上記第二プロセス間の通信を関数コールによって実行可能とするプロセス間通信手段とを有し、上記プロセス間通信手段は、２以上のバージョンを有し、旧バージョンから変更になった個々の機能について対応する関数を上記第一プロセスに提供することを特徴とする画像形成装置によって達成される。【選択図】  図５
2005267447.tif 000002
【特許請求の範囲】
【請求項１】
画像形成処理を行い、第一プロセスとして動作するアプリケーションと、
前記画像形成処理で利用されるハードウェア資源の管理を行い、第二プロセスとして動作するコントロールサービスと、
前記第一プロセスと前記第二プロセス間の通信を関数コールによって実行可能とするプロセス間通信手段とを有し、
前記プロセス間通信手段は、２以上のバージョンを有し、旧バージョンから変更になった個々の機能について対応する関数を前記第一プロセスに提供していることを特徴とする画像形成装置。
【請求項２】
前記プロセス間通信手段は、前記旧バージョンによって前記第一プロセスに提供された関数による関数コールを、新バージョンへの関数コールへと変換する変換手段を有することを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記プロセス間通信手段は、前記第二プロセスからの前記第一プロセスへは前記アプリケーションによって登録されたコールバック関数によってイベントを通知することを特徴とする請求項１又は２記載の画像形成装置。
【請求項４】
前記プロセス間通信手段は、メール送信関数によって前記第二プロセスからの前記第一プロセスへとイベントを通知し、
前記アプリケーションは、メール受信関数によって前記イベントを取得することを特徴とする請求項１乃至３のいずれか一項記載の画像形成装置。
【請求項５】
前記プロセス間通信手段は、前記第一プロセスが前記旧バージョンの関数コールによって有効な前記旧バージョンの処理を指示した場合、該処理を実行した結果を前記イベントによって前記第一プロセスに通知することを特徴とする請求項１乃至４のいずれか一項記載の画像形成装置。
【請求項６】
前記プロセス間通信手段は、前記第一プロセスが前記新バージョンの関数コールによって前記新バージョンの処理を指示した場合、該処理を実行した結果を前記イベントによって前記第一プロセスに通知することを特徴とする請求項１乃至５のいずれか一項記載の画像形成装置。
【請求項７】
前記アプリケーションは、メモリカードによって外部から提供されることを特徴とする請求項１乃至６のいずれか一項記載の画像形成装置。
【請求項８】
請求項１乃至７のいずれか一項記載の画像形成装置にて使用されるメモリカードであって、
前記画像形成装置を制御するコンピュータに、
イベントを取得するためのコールバック関数を指定することによってアプリケーションの登録を行う手順と、
関数コールによって画像形成に関する動作を行う手順と、
前記関数コールに応じたイベントに係るデータを取得する手順と、
前記コールバック関数として動作する手順とを実行させるコンピュータ実行可能なプログラムを記憶したメモリカード。
【請求項９】
アプリケーションによって画像形成処理を行う画像形成方法において、
前記アプリケーションの第一プロセスと、該画像形成処理で利用されるハードウェア資源の管理を行うコントロールサービスの第二プロセス間での通信を関数コールによって実行可能とするプロセス間通信手順を有し、
前記プロセス間通信手順は、２以上のバージョンに応じた処理を行い、前記第一プロセスによる旧バージョンから変更になった個々の機能を関数コールによって実行することを特徴とする画像形成方法。
【請求項１０】
前記プロセス間通信手順は、前記第一プロセスから前記旧バージョンに対応する関数コールが行われた場合、新バージョンへの関数コールへと変換する変換手順を有することを特徴とする請求項９記載の画像形成方法。
【請求項１１】
前記プロセス間通信手順は、前記第二プロセスからの前記第一プロセスへは前記アプリケーションによって登録されたコールバック関数によってイベントを通知することを特徴とする請求項９又は１０記載の画像形成方法。
【請求項１２】
前記プロセス間通信手順は、メール送信関数によって前記第二プロセスからの前記第一プロセスへとイベントを通知し、
前記アプリケーションは、メール受信関数によって前記イベントを取得することを特徴とする請求項９乃至１１のいずれか一項記載の画像形成方法。
【請求項１３】
前記プロセス間通信手順は、前記第一プロセスが前記旧バージョンの関数コールによって有効な前記旧バージョンの処理を指示した場合、該処理を実行した結果を前記イベントによって前記第一プロセスに通知することを特徴とする請求項９乃至１２のいずれか一項記載の画像形成方法。
【請求項１４】
前記プロセス間通信手順は、前記第一プロセスが前記新バージョンの関数コールによって前記新バージョンの処理を指示した場合、該処理を実行した結果を前記イベントによって前記第一プロセスに通知することを特徴とする請求項９乃至１３のいずれか一項記載の画像形成方法。
【請求項１５】
アプリケーションによって画像形成処理を行う画像形成方法での処理をコンピュータに行わせるプログラムにおいて、
前記アプリケーションの第一プロセスと、該画像形成処理で利用されるハードウェア資源の管理を行うコントロールサービスの第二プロセス間での通信を関数コールによって実行可能とするプロセス間通信手順を有し、
前記プロセス間通信手順は、２以上のバージョンに応じた処理を行い、前記第一プロセスによる旧バージョンから変更になった個々の機能を関数コールによって実行することを特徴とするコンピュータ実行可能なプログラム。
【請求項１６】
前記プロセス間通信手順は、前記第一プロセスから前記旧バージョンに対応する関数コールが行われた場合、新バージョンへの関数コールへと変換する変換手順を有することを特徴とする請求項１５記載のコンピュータ実行可能なプログラム。
【請求項１７】
前記プロセス間通信手順は、前記第二プロセスからの前記第一プロセスへは前記アプリケーションによって登録されたコールバック関数によってイベントを通知することを特徴とする請求項１５又は１６記載のコンピュータ実行可能なプログラム。
【請求項１８】
前記プロセス間通信手順は、メール送信関数によって前記第二プロセスからの前記第一プロセスへとイベントを通知し、
前記アプリケーションは、メール受信関数によって前記イベントを取得することを特徴とする請求項１５乃至１７のいずれか一項記載のコンピュータ実行可能なプログラム。
【請求項１９】
前記プロセス間通信手順は、前記第一プロセスが前記旧バージョンの関数コールによって有効な前記旧バージョンの処理を指示した場合、該処理を実行した結果を前記イベントによって前記第一プロセスに通知することを特徴とする請求項１５乃至１８のいずれか一項記載の画像形成方法。
【請求項２０】
前記プロセス間通信手順は、前記第一プロセスが前記新バージョンの関数コールによって前記新バージョンの処理を指示した場合、該処理を実行した結果を前記イベントによって前記第一プロセスに通知することを特徴とする請求項１５乃至１９のいずれか一項記載の画像形成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像形成処理を種々のアプリケーションから利用可能とする画像形成装置において、該複数の画像形成処理の変更を該種々のアプリケーションへの開発に影響を与えないようにしたインタフェースを有する画像形成装置を提供するものである。
【背景技術】
【０００２】
近年、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置が一般的に知られている。このような複合型の画像形成装置は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する３種類のアプリケーションを設け、アプリケーションの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
また、画像形成装置では、アプリケーションやプラットフォーム等の様々なプログラムにより様々な情報処理が実行される。これらのプログラムは、これらの機器の出荷前からこれらの機器に格納されているのが普通だが、これらのプログラムを、これらの機器の出荷後にこれらの機器にメモリカードを使用して入力できるようにすることも考えられる。これにより例えば、これらのプログラムをこれらの機器に入力するためのメモリカードをメーカーからベンダーに配布し、ベンダーがこれらのプログラムを作成し、ユーザーがこれらのプログラムをこれらの機器にこのメモリカードを使用して入力するようなビジネスモデルを構築することができるようになった。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このようにメモリカードによって画像形成装置に提供されるプログラムは、画像形成装置のプログラム開発に応じてプログラムを修正しなければならないといった問題があった。或いは、同様の動作を実現するプログラムであっても、画像形成装置に組み込まれたプログラムのバージョンに応じた様々なタイプを用意しなければならなかった。
【０００５】
そこで、本発明の課題は、画像形成装置に組み込まれている種々のプログラムの開発がメモリカード等によって提供されるプログラムに影響を与えないようにした画像形成装置を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明は、請求項１に記載されるように、画像形成処理を行い、第一プロセスとして動作するアプリケーションと、前記画像形成処理で利用されるハードウェア資源の管理を行い、第二プロセスとして動作するコントロールサービスと、前記第一プロセスと前記第二プロセス間の通信を関数コールによって実行可能とするプロセス間通信手段とを有し、前記プロセス間通信手段は、２以上のバージョンを有し、旧バージョンから変更になった個々の機能について対応する関数を前記第一プロセスに提供するように構成される。
【０００７】
このような画像形成装置では、既存のアプリケーションが、例えば、コントロールサービスの仕様の変更によって影響されないようにすることができる。
【０００８】
上記課題を解決するための手段として、本発明は、上記画像形成装置での処理をコンピュータに行なわせるためのプログラムとすることもできる。
【発明の効果】
【０００９】
本願発明によれば、複数の画像形成処理を種々のアプリケーションから利用可能とする画像形成装置において、該複数の画像形成処理の変更を該種々のアプリケーションへの開発に影響を与えないようにすることができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１１】
図１は、本発明の実施例に該当する融合機１０１を表す。図１の融合機１０１は、種々のハードウェア１１１と、種々のソフトウェア１１２と、融合機起動部１１３により構成される。図１の融合機１０１は、コピーやプリンタやスキャナやファクシミリとして機能することができる。
【００１２】
融合機１０１のハードウェア１１１としては、撮像部１２１と、印刷部１２２と、その他のハードウェア１２３が存在する。
【００１３】
撮像部１２１は、原稿から画像（画像データ）を読み取るためのハードウェアであり、コピーやスキャナやファクシミリとして機能する際に使用される。撮像部１２１は、白黒画像用の物でもカラー画像用の物でもよい。撮像部１２１は、原稿に関する機構として、原稿セット部等を備える。
【００１４】
印刷部１２２は、画像（画像データ）を印刷用紙等の印刷媒体に印刷するためのハードウェアであり、コピーやプリンタやファクシミリとして機能する際に使用される。印刷部１２２は、白黒画像用の物でもカラー画像用の物でもよい。印刷部１２２は、ここでは電子写真方式を採用しており、感光体、帯電機、露光機、現像機、転写機、定着機等を備える。印刷部１２２は、印刷用紙等に関する機構として、給紙部、排紙部、印刷用紙等搬送機構等を備える。
【００１５】
その他のハードウェア１２３については、図２において説明する。
【００１６】
融合機１０１のソフトウェア１１２としては、種々のアプリケーション１３１と、種々のプラットフォーム１３２が存在する。これらのプログラムは、ＵＮＩＸ（登録商標）等のＯＳ（オペレーティングシステム）によりプロセス単位で並列的に実行される。
【００１７】
アプリケーション１３１は、コピーやプリンタやスキャナやファクシミリ等の機能に固有な情報処理を実行するためのソフトウェアである。アプリケーション１３１としては、コピー用のアプリケーションであるコピーアプリ１４１と、プリンタ用のアプリケーションであるプリンタアプリ１４２と、スキャナ用のアプリケーションであるスキャナアプリ１４３と、ファクシミリ用のアプリケーションであるファクシミリアプリ１４４と、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ１４５が存在する。ネットワークファイルアプリ１４５は、ＨＴＭＬ文書等の閲覧用のＷｅｂブラウザや、ＨＴＭＬ文書等の配信用のＷｅｂサーバソフトにより構成される。
【００１８】
アプリケーション１３１は、専用のＳＤＫ（ソフトウェア開発キット）を使用して開発することができる。ＳＤＫを使用して開発したアプリケーション１３１をＳＤＫアプリと呼ぶ。専用のＳＤＫとしては、Ｃ言語でアプリケーション１３１を開発するための「ＣＳＤＫ」や、Ｊａｖａ（登録商標）言語でアプリケーション１３１を開発するための「ＪＳＤＫ」が提供される。ＣＳＤＫを使用して開発したアプリケーション１３１を「ＣＳＤＫアプリ」と呼び、ＪＳＤＫを使用して開発したアプリケーション１３１を「ＪＳＤＫアプリ」と呼ぶ。図１の融合機１０１にも、ＣＳＤＫアプリ１４６と、ＪＳＤＫアプリ１４７が存在する。図１の融合機１０１にはさらに、Ｊａｖａ（登録商標）言語で記述されたＪＳＤＫアプリ１４７とＣ言語で記述された他のソフトウェア１１２との仲介を行うソフトウェア１１２として、ＪＳＤＫプラットフォーム１４８が存在する。以後、総称してＳＤＫアプリ１４９と言う。
【００１９】
プラットフォーム１３２は、アプリケーション１３１からの処理要求に関する情報処理を実行するためのソフトウェアである。アプリケーション１３１からの処理要求の受信には、予め定義されている関数により処理要求を受信するアプリケーションプログラムインタフェース（ＡＰＩ）１３３を利用して、要求内容の実施には、エンジンインタフェース１３４を利用する。プラットフォーム１３２としては、種々のコントロールサービス１５１と、システムリソースマネージャ１５２と、種々のハンドラ１５３が存在する。
【００２０】
コントロールサービス１５１は、アプリケーション１３１からの処理要求を解釈して、解釈結果に応じてハードウェア１１１の獲得要求を発生させる。コントロールサービス１５１としては、ネットワークコントロールサービス（ＮＣＳ）１６１と、ファクシミリコントロールサービス（ＦＣＳ）１６２と、デリバリコントロールサービス（ＤＣＳ）１６３と、エンジンコントロールサービス（ＥＣＳ）１６４と、メモリコントロールサービス（ＭＣＳ）１６５と、オペレーションパネルコントロールサービス（ＯＣＳ）１６６と、サーティフィケーションコントロールサービス（ＣＣＳ）１６７と、ユーザディレクトリコントロールサービス（ＵＣＳ）１６８と、システムコントロールサービス（ＳＣＳ）１６９が存在する。
【００２１】
ＮＣＳ１６１のプロセスは、ネットワーク等を介してデータ通信を行うための仲介を行う。ＦＣＳ１６２のプロセスは、ファクシミリとして画像データ通信・画像データ読取・画像データ印刷等を行うためのＡＰＩを提供する。ＤＣＳ１６３のプロセスは、融合機１０１に蓄積された文書データの配信に関する制御を行う。ＥＣＳ１６４のプロセスは、撮像部１２１や印刷部１２２等のエンジン部に関する制御を行う。ＭＣＳ１６５のプロセスは、画像データ記憶・画像データ処理等のメモリやハードディスクドライブに関する制御を行う。ＯＣＳ１６６のプロセスは、オペレーションパネルに関する制御を行う。ＣＣＳ１６７のプロセスは、認証処理や課金処理に関する制御を行う。ＵＣＳ１６８のプロセスは、ユーザ情報の管理に関する制御を行う。ＳＣＳ１６９のプロセスは、システムの管理に関する制御を行う。
【００２２】
システムリソースマネージャ（ＳＲＭ）１５２は、ハードウェア１１１の獲得要求を調停して、調停結果に応じて要求内容を実施するための制御を行う。詳細に言うと、ＳＲＭ１５２のプロセスは、獲得要求に係るハードウェア１１１が利用可能か否か（他の獲得要求と競合しないか否か）を判定して、利用可能である場合にはその旨をコントロールサービス１５１の各プロセスに通知する。さらに、獲得要求に係るハードウェア１１１の利用スケジュールを作成して、作成結果に応じて要求内容を実施するための制御を行う。
【００２３】
ハンドラ１５３は、調停結果に応じてハードウェア１１１を管理する。ハンドラ１５３としては、ファクシミリコントロールユニットハンドラ（ＦＣＵＨ）１７１と、イメージメモリハンドラ（ＩＭＨ）１７２が存在する。ＦＣＵＨ１７１は、ファクシミリコントロールユニットを管理する。ＩＭＨ１７２は、各プロセスにメモリを割り振り、各プロセスに割り振ったメモリを管理する。
【００２４】
アプリケーション１３１とプラットフォーム１３２の仲介を行うソフトウェア１１２として、仮想アプリケーションサービス（ＶＡＳ）１３５が存在する。ＶＡＳ１３５は、アプリケーション１３１をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム１３２をサーバとするクライアントプロセスとして動作する。ＶＡＳ１３５は、アプリケーション１３１から見てプラットフォーム１３２を隠蔽するラッピング機能を備え、プラットフォーム１３２のバージョンアップに伴うバージョン差を吸収する役割等を担う。
【００２５】
融合機起動部１１３は、融合機１０１の電源投入時に最初に実行される。これにより、ＵＮＩＸ（登録商標）等のＯＳが起動され、アプリケーション１３１やプラットフォーム１３２が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
【００２６】
図２は、図１の融合機１０１に係るハードウェア構成図である。融合機１０１のハードウェア１１１としては、コントローラ２０１と、オペレーションパネル２０２と、ファクシミリコントロールユニット（ＦＣＵ）２０３と、撮像部１２１と、印刷部１２２が存在する。撮像部１２１と印刷部１２２を除く各構成要素が、図１の「その他のハードウェア１２３」に該当する。
【００２７】
コントローラ２０１は、ＣＰＵ２１１と、ＡＳＩＣ２１２と、ＮＢ（ノースブリッジ）２２１と、ＳＢ（サウスブリッジ）２２２と、ＭＥＭ−Ｐ（システムメモリ）２３１と、ＭＥＭ−Ｃ（ローカルメモリ）２３２と、ＨＤＤ（ハードディスクドライブ）２３３と、メモリカードスロット２３４と、ＮＩＣ（ネットワークインタフェースコントローラ）２４１と、ＵＳＢデバイス２４２と、ＩＥＥＥ１３９４デバイス２４３と、セントロニクスデバイス２４４により構成される。
【００２８】
ＣＰＵ２１１は、種々の情報処理を実行するためのＩＣであり、アプリケーション１３１やプラットフォーム１３２をＵＮＩＸ（登録商標）等のＯＳによりプロセス単位で並列的に実行する。ＡＳＩＣ２１２は、画像処理用のＩＣである。ＮＢ２２１は、ＣＰＵ２１１とＡＳＩＣ２１２を接続するためのブリッジである。ＳＢ２２２は、ＮＢ２２１と周辺機器等を接続するためのブリッジである。ＡＳＩＣ２１２とＮＢ２２１は、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）を介して接続されている。
【００２９】
ＭＥＭ−Ｐ２３１は、ＮＢ２２１に接続されたメモリである。ＭＥＭ−Ｃ２３２は、ＡＳＩＣ２１２に接続されたメモリである。ＨＤＤ２３３は、ＡＳＩＣ２１２に接続されたストレージであり、画像データ蓄積・文書データ蓄積・プログラム蓄積・フォントデータ蓄積・フォームデータ蓄積等を行うために使用される。メモリカードスロット２３４は、ＳＢ２２２に接続されたスロットであり、メモリカード２３５をセット（挿入）するために使用される。
【００３０】
ＮＩＣ２４１は、ネットワーク等を介してＭＡＣアドレス等を使用したデータ通信を行うためのコントローラである。ＵＳＢデバイス２４２は、ＵＳＢ規格に準拠したシリアルポートを提供するためのデバイスである。ＩＥＥＥ１３９４デバイス２４３は、ＩＥＥＥ１３９４規格に準拠したシリアルポートを提供するためのデバイスである。セントロニクスデバイス２４４は、セントロニクス仕様に準拠したパラレルポートを提供するためのデバイスである。ＮＩＣ２４１と、ＵＳＢデバイス２４２と、ＩＥＥＥ１３９４デバイス２４３と、セントロニクスデバイス２４４は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＮＢ２２１とＳＢ２２２に接続されている。
【００３１】
メモリカード用スロット２５１は、ＳＢ２２２に接続されて使用されるスロットであり、メモリカード２６１をセット（挿入）するためのスロットである。
【００３２】
オペレーションパネル２０２は、オペレータが融合機１０１に入力を行うためのハードウェア（操作部）であると共に、オペレータが融合機１０１から出力を得るためのハードウェア（表示部）である。オペレーションパネル２０２は、ＡＳＩＣ２１２に接続されている。ＦＣＵ２０３と、撮像部１２１と、印刷部１２２は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＡＳＩＣ２１２に接続されている。
【００３３】
このような機能構成及びハードウェア構成を有する融合機１０１において、ＳＤＫアプリ１４９がスキャンを行う場合の処理について、図３で概要を説明する。図３は、ＳＫＤアプリがスキャンする場合の処理概要を説明するための図である。
【００３４】
図３において、ＶＡＳ１３５を初期化し（ステップＳ１）、ＳＤＫアプリは、ＶＡＳへのアプリケーションの登録を行う（ステップＳ２）。イメージライブラリを初期化する（ステップＳ３）。イメージライブラリへスキャン指示を行い（ステップＳ４）、スキャンが行われる（ステップＳ５）。
【００３５】
このような処理は、例えば、図４に示すようなプログラムコードによって実現できる。
【００３６】
図４は、ＳＤＫアプリのプログラムコードの例を示す図である。図４において、
例えば、ＶＡＳＶ2が旧バージョン、ＶＡＳＶ3が新バージョンである場合、「#define USE_VAS3」を示すコード３０によって、新バージョンのＶＡＳＶ3が指定される。
【００３７】
「apliID = sdkVasInit(eventCallBackFunc);」を示すコード３１によって、ＶＡＳＶ3の初期化を行う。図３のステップＳ１に対応する。
【００３８】
新バージョンのＶＡＳＶ3が指定されているので、コード３３によって、ＶＡＳＶ3の機能が実行される。コード３３は、例えば、
VAS_HANDLE handle;
handle = sdkSysApliExtRegistGetHandle();
sdkSysApliExtRegistSetSdkApliId(handle, apliID);
sdkSysApliExtRegist(handle);
sdkSysApliExtRegistRelHandle(handle);
のように示される。新バージョンのＶＡＳＶ3にアプリ登録する場合、ＶＡＳ１３５の新機能を関数で指定する。このように関数で与えられることによって、このＳＤＫアプリ１４９を更に新しくなったＶＡＳ１３５に実装したとしても、ＶＡＳ１３５及びＳＤＫアプリ１４９自身に何ら支障なく動作を行うことができる。
【００３９】
コード３３によって、アプリケーションインタフェース単位でハンドルを確保し、そのハンドルを用いてパラメータの設定と関数の呼び出しを行う。その後、そのハンドルを解放する処理を行う。
【００４０】
一方、仮に、旧バージョンのＶＡＳＶ2が指定されている場合、「rmSysApliRegist(apliID);」を示すコード３２によって、旧バージョンのＶＡＳＶ2の処理によってＳＤＫアプリ１４９を識別するapliIDが登録される。従来、ＶＡＳ１３５の新機能に対応させるためには、例えば、apliIDの他に更に引数を加えなければならないなどのプログラムコードに変更を加える必要があった。異なるバージョンで引数が異なる場合、ＶＡＳ１３５が正常に動作しない、又は、ＳＤＫアプリ１４９が正常に動作しない等のトラブルを発生するといった問題が生じてしまう。
【００４１】
ＶＡＳ１３５が新機能を関数で与えることによって、また、ＳＤＫアプリ１４９が新バージョンを使用する場合、コード３３のように記述することによって、ＳＤＫアプリ１４９とＶＡＳ１３５のバージョンの組み合わせによらず、常に、動作可能とすることができる。
【００４２】
コード３２及び３３は、図３のステップＳ２に相当する。
【００４３】
「image_library_init();」を示すコード３４によって、メール通信のための初期化などを行い、スレッドとしてライブラリ処理部を起動する。図３のステップＳ３に相当する。そして、「scanStart();」を示すコード３５によって、メールを用いてスキャンコマンドをスレッドに対して発行し、スキャニング動作が実行される。図３のステップＳ４及びＳ５に相当する。
【００４４】
その後、scanStart()によって実行された動作に対するイベントをコード３６によって受信し、そのイベントを通知したハンドルを解放する。コード３６は、例えば、
while(1) {
/* defaultHandler() で受けとったイベントの処理 */
recieveMail(eventID, handle);
switch(eventID) {
case SDK_SYS_PARAM:
if (SDK_LANG_JP != sdkSysParamGetLanguage(handle))
exit(1);
sdkSysParamRelHandle(handle);
break;
}
}
のように記述される。
【００４５】
更に、コード３７は、ＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６９等からのイベントを最初に受け取るデフォルトハンドラを示す。コード３７は、例えば、
defaultHandler(short eventID, int handle) {
sendMail(eventID, handle);
}
のように記述される。
【００４６】
このデフォルトハンドラがＶＡＳＶ3の初期化で通知される関数である。ＳＤＫ１４９は、通知したデフォルトハンドラに割り当てられたapliIDによってアプリ登録することになる。
【００４７】
次に、図４に示すようなプログラムコードが実行された場合のシーケンスフローについて図５で説明する。図５は、シーケンスフローを示す図である。図５において、ＳＤＫアプリ１４９及びＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６９などは、プロセスである。このようなプロセスに関数コールを可能とし、かつ、イベントを通知するのがアプリケーションインタフェースとしてのｉｐｃ（Internal Process Communication）が提供される。
【００４８】
図５において、シーケンスフローを説明する前に、ＶＡＳ１３５の機能構成について説明する。ＶＡＳ１３５は、イメージライブリ１３５ａと、ＶＡＳＶ2ライブラリ１３５ｂと、ＶＡＳＶ3とを有する。
【００４９】
イメージライブリ１３５ａは、利用難度の高いアプリへより高機能なＡＰＩを供給するためのライブラリである。例えば、イメージライブリ１３５ａは、ＳＤＫアプリ１４９からの１回の関数呼び出しに対して、ＳＤＫアプリ１４９に代わって、複数回一連の動作をＶＡＳＶ2ライブラリに対して行い、その複数回一連の動作に対するイベントを複数回ＳＤＫアプリ１４９に代わって処理をする。そして、その複数回一連の動作の終了で、ＳＤＫアプリ１４９へ一回のイベントを通知する。ＳＤＫアプリ１４９へ通知するイベントは、例えば、スキャン動作が正常に終了した、スキャン中にカバーが開けられた、コピー中に融合機の扉が開いた、紙詰まりが発生した、など動作に関する状態を通知する。
【００５０】
ＶＡＳＶ2ライブラリ１３５ｂは、旧バージョンのＶＡＳ１３５への関数コールを新バージョンのＶＡＳ１３５への関数コールへと変換するためのライブラリである。ＶＡＳＶ3１３５ｃは、新バージョンのＶＡＳ１３５を実装している処理部である。
【００５１】
クライアントとしてのＳＤＫアプリ１４９は、サーバとしてのＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６９などへは関数コールで行い、サーバとしてのＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６９などからクライアントしてのＳＤＫアプリ１４９へは、イベントで通知するように実装される。ＳＤＫアプリ１４９、ＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６９は、プロセスであるので、関数コール及びイベント通知は、インタフェースｉｐｃを介して行われる。
【００５２】
ＶＡＳＶ3１３５ｃは、ＳＤＫアプリ１４９からの（１）イメージライブラリ１３５ａへのイベントの取得要求、（２）旧バージョンのＶＡＳ１３５（ＶＡＳＶ2ライブラリ１３５ｂ）への関数コール、そして（３）新バージョンのＶＡＳ１３５（ＶＡＳＶ3１３５ｃ）への関数コールとに対応する。
【００５３】
図５において、ＳＤＫアプリ１４９のアプリ登録は、旧バージョンと同様であるので、見かけ上、インタフェースｉｐｃを介して、ＶＡＳＶ2へ関数コールされ（ａ１１）、実際には、ＶＡＳＶ2ライブラリ１３５ｂが新バージョンのＶＡＳＶ3１３５ｃへの関数コールへと変換することによって行われる（ａ３）。
【００５４】
ＳＤＫアプリ１４９が例えば、動作指示としてスキャン指示を行う場合、ＶＡＳＶ2ライブラリ１３５ｂのスレッドに対してスキャンコマンド（メッセージ）を発行する（ａ１）。ＶＡＳＶ2ライブラリ１３５ｂは、インタフェースｉｐｃを介して、ＶＡＳＶ2ライブラリ１３５ｂへ関数コールする（ａ２）。ＶＡＳＶ2ライブラリ１３５ｂは、インタフェースｉｐｃを介して、ＶＡＳＶ3１３５ｃへ関数コールする（ａ３）。ＶＡＳＶ3１３５ｃは、インタフェースｉｐｃを介して、ＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６８などへ関数コールによって動作を実行させる（ａ４）。
【００５５】
ＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６８などは、動作に関するイベントが発生すると、インタフェースｉｐｃを介して、イベントを通知する。イベントは、ＳＤＫ１４９のコールバック関数（defaulHandler）を呼び出すことによって通知される（ｂ１）。コールバック関数（defaulHandler）によって、イベントがsendMailとして通知されると、ＶＡＳＶ3１３５ｃは、インタフェースｉｐｃを介して、ＶＡＳＶ2ライブラリ１３５ｂへＶＡＳＶ3メールとしてイベントを通知する（ｂ２）。
【００５６】
ＶＡＳＶ2ライブラリ１３５ｂは、ＳＤＫアプリ１４９からの１回の動作指示に対する一連の動作に対する複数のイベントをＶＡＳＶ2メールとして受信し、最終的な動作結果を示すイベントを、インタフェースｉｐｃを介して、ＶＡＳＶ2メールとしてＳＤＫアプリ１４９へ通知する（ｂ４）。一方、ＳＤＫアプリ１４９は、オペレーションパネル２０２への動作に関する情報を呈示する制御に必要なイベントを、インタフェースｉｐｃを介して、それら一連の動作に対応する複数のイベントを別途ＶＡＳＶ2メールとして受信する（ｂ４１）。例えば、イメージライブラリ１３５ａからのイベントでは、「扉が開いた」、「紙詰まり発生した」などの最終的な動作の状態が通知され（ｂ４）、ＶＡＳＶ2ライブラリ１３５ｂからのイベントでは、「扉が開いた」場合であれば扉を特定する情報が、「紙詰まり発生した」場合であれば紙詰まりが起きた箇所を特定する情報が通知される。
【００５７】
このように、通信経路ａ１，ａ２，ａ１１，ｂ３，そしてｂ４１は、旧バージョンに対応した部分である。ＶＡＳＶ2ライブラリ１３５ｂによって、旧バージョンでの仕様が吸収されるため、旧バージョンでの仕様に対応したＳＤＫアプリ１４９は、ＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６８などの変更に応じた修正をする必要がない。
【００５８】
また、新バージョンに対応したＳＤＫアプリ１４９は、旧バージョンでの仕様をそのまま利用することができる。特に、イメージライブリ１３５ａを用いて動作指示をする際には、上記のような通信経路となる。
【００５９】
更に、新バージョンに対応したＳＤＫアプリ１４９が、新バージョン固有の機能を利用する場合、インタフェースｉｐｃを介して、ＶＡＳＶ3１３５ｃへ直接関数コールする（ａ１２）。すなわち、ＶＡＳ１３５は、新機能を個々の関数によってＳＤＫアプリ１４９に提供することによって、新機能が増えた場合において、ＳＤＫアプリ１４９に影響を与えることがない。
【００６０】
そして、ＶＡＳＶ3１３５ｃへ直接関数コールした場合（ａ１２）、イベントは、ＶＡＳＶ3メールとして、ＶＡＳＶ2ライブラリ１３５ｂからＳＤＫアプリ１４９へ通知される（ｂ４２）。
【００６１】
次に、イベントの処理について図６で説明する。図６は、イベントの処理を説明するための図である。図６中の処理は、図４に示されるコード３７のdefaultHanderの起動によって、コード３６のイベントを処理するフローを示す。
【００６２】
図６において、ＥＣＳ１６４、ＭＣＳ１６５、ＳＣＳ１６９などからＳＤＫアプリ１４９のコールバック関数（defaultHandler）によって動作に関するデータ２１が通知されると（ステップＳ１０１及びＳ１０２）、データ２１を格納するメモリを割当て、その割当てに対応するハンドルＮｏをイベントテーブル２９から取得する（ステップＳ１０３）。そして、ＶＡＳＶ3イベントを生成し（ステップＳ１０４）、そのイベントはＶＡＳＶ3メールとしてsendMailで発行される（ステップＳ１０５）。メッセージデータ２２は、イベントを特定するイベントＩＤとハンドルＮｏを含む。
【００６３】
ＳＤＫアプリ１４９は、readMialを関数コールすることによって、発行されたイベントを読みに行く（ステップＳ１０６）。取得したハンドルＮｏを引数としてＶＡＳＶ3１３５ｃに対してデータの取得を要求する（ステップＳ１０７）。ＶＡＳＶ3１３５ｃは、イベントテーブル２９を参照して、ハンドルＮｏに対応するデータアドレスからデータ２１を取り出してＳＤＫアプリ１４９へ通知する（ステップＳ１０９）。その後、ＳＤＫアプリ１４９からの関数コールによって、データ２１のハンドルが解放される。
【００６４】
上記より、プラットフォーム１３２の変更に伴うＶＡＳ１３５の２つ以上のバージョンを、プロセスとして動作するアプリケーション１３１（例えば、ベンダー等によって開発されたＳＤＫアプリケーション１４９）からインタフェースｉｐｃを介して関数コールを可能とすることによって、また、機能追加を個々の関数で与えることによって、また、新バージョン（ＶＡＳＶ3１３５ｃ）の関数コールへの変換を行うことによって、旧バージョンに対応したアプリケーション１３１に対して、プラットフォーム１３２の変更による影響を与えることなく、また、新バージョンに対応したアプリケーション１３１にも対応することができる。
【００６５】
つまり、既存のＳＤＫアプリケーション１４９において、コンパイルされた旧バージョンに対応したバイナリコードを変更することなく動作させることができる。
【００６６】
本発明によれば、アプリケーションのプログラム開発が、例えば、画像形成処理の変更に伴う、プロセス間通信の変更に影響されないようにすることができる。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施例に該当する融合機１０１を表す図である。
【図２】図１の融合機１０１に係るハードウェア構成図である。
【図３】ＳＫＤアプリがスキャンする場合の処理概要を説明するための図である。
【図４】ＳＤＫアプリのプログラムコードの例を示す図である。
【図５】シーケンスフローを示す図である。
【図６】イベントの処理を説明するための図である。
【符号の説明】
【００６８】
１０１  融合機
１１１  ハードウェア
１１２  ソフトウェア
１１３  融合機起動部
１２１  撮像部
１２２  印刷部
１２３  その他のハードウェア
１３１  アプリケーション
１３２  プラットフォーム
１３３  アプリケーションプログラムインタフェース
１３４  エンジンインタフェース
１３５  仮想アプリケーションサービス
１３５ａ  イメージライブラリ
１３５ｂ  ＶＡＳＶ2ライブラリ
１３５ｃ  ＶＡＳＶ3
１４１  コピーアプリ
１４２  プリンタアプリ
１４３  スキャナアプリ
１４４  ファクシミリアプリ
１４５  ネットワークファイルアプリ
１４６  ＣＳＤＫアプリ
１４７  ＪＳＤＫアプリ
１４８  ＪＳＤＫプラットフォーム
１４９  ＳＤＫアプリ
１５１  コントロールサービス
１５２  システムリソースマネージャ
１５３  ハンドラ
１６１  ネットワークコントロールサービス
１６２  ファクシミリコントロールサービス
１６３  デリバリコントロールサービス
１６４  エンジンコントロールサービス
１６５  メモリコントロールサービス
１６６  オペレーションパネルコントロールサービス
１６７  サーティフィケーションコントロールサービス
１６８  ユーザディレクトリコントロールサービス
１６９  システムコントロールサービス
１７１  ファクシミリコントロールユニットハンドラ
１７２  イメージメモリハンドラ
２０１  コントローラ
２０２  オペレーションパネル
２０３  ファクシミリコントロールユニット
２１１  ＣＰＵ
２１２  ＡＳＩＣ
２２１  ＮＢ
２２２  ＳＢ
２３１  ＭＥＭ−Ｐ
２３２  ＭＥＭ−Ｃ
２３３  ＨＤＤ
２３４  メモリカードスロット
２３５  メモリカード
２４１  ＮＩＣ
２４２  ＵＳＢデバイス
２４３  ＩＥＥＥ１３９４デバイス
２４４  セントロニクスデバイス
【図１】
2005267447.tif 000003
【図２】
2005267447.tif 000004
【図３】
2005267447.tif 000005
【図４】
2005267447.tif 000006
【図５】
2005267447.tif 000007
【図６】
2005267447.tif 000008