説明

情報処理装置および情報処理プログラム

【課題】複数のアプリケーションが複合機を円滑に利用することが可能な情報処理装置を提供すること。
【解決手段】複合機20が接続されるホストとしての情報処理装置において、情報処理装置において実行され、複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第1のドライバ(ドライバ410,420)と、複合機との間で情報の授受を行う第2のドライバ(ドライバ300)と、第1のドライバと、第2のドライバの間に設けられ、複数のアプリケーションプログラムと、複合機との間における情報の授受の制御を行う制御手段(サーバ430)と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および情報処理プログラムに関する。
【背景技術】
【0002】
例えば、米国では、商取引等において小切手を用いる習慣があるため、このような小切手を店舗等において利用するための小切手処理装置が存在する(特許文献1参照)。
【0003】
また、米国等の銀行においては、小切手を電子的に読み取り、文字認識処理、磁気データ処理、および、手書き認識処理等を実行するスキャナが用いられているとともに、窓口業務に関する情報を印刷するプリンタが用いられている。
【0004】
近年では、小切手を電子的に読み取るスキャナと、窓口業務に関する情報を印刷するプリンタとが同じ筐体に収められた複合機が流通している。このような複合機を利用することにより、設置スペースを削減するとともに、導入コストを削減することが可能になる。
【0005】
【特許文献1】特開2005−56333号公報(要約書、請求項)
【発明の開示】
【発明が解決しようとする課題】
【0006】
ところで、小切手に関する処理を実行するアプリケーションと、窓口業務に関する処理を実行するアプリケーションとは、別々の独立したプログラムであるため、それぞれのアプリケーションは他のアプリケーションの状態については全く考慮せずに動作するようにプログラムされている。
【0007】
複合機では、スキャナとプリンタとが1つのデバイスとして構成されているため、例えば、一方のアプリケーションプログラムが起動されると、当該アプリケーションプログラムは他のアプリケーションプログラムの状態については全く考慮せずに、デバイス(複合機)を専有してしまう。そのため、他のアプリケーションプログラムが複合機を使用できない状態が生じる場合があるという問題点がある。
【0008】
本発明は、上記の事情に基づきなされたもので、その目的とするところは、複数のアプリケーションが複合機を円滑に利用することが可能な情報処理装置および情報処理プログラムを提供しよう、とするものである。
【課題を解決するための手段】
【0009】
上述の目的を達成するため、本発明の情報処理装置は、プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において、情報処理装置において実行され、複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第1のドライバと、複合機との間で情報の授受を行う第2のドライバと、第1のドライバと、第2のドライバの間に設けられ、複数のアプリケーションプログラムと、複合機との間における情報の授受の制御を行う制御手段と、を有する。このため、複数のアプリケーションが複合機を円滑に利用することが可能な情報処理装置を提供できる。
【0010】
また、他の発明の情報処理装置は、上述の発明に加えて、制御手段が、複数のアプリケーションプログラムから複合機へのアクセス要求が輻輳した場合には、これらのアクセス要求に対する調停処理を実行する。このため、複数のアプリケーションプログラムからの要求が輻輳した場合であっても、これを調停して、順次処理していくことができる。
【0011】
また、他の発明の情報処理装置は、上述の発明に加えて、制御手段が、複数のアプリケーションプログラムのいずれかにより第2のドライバが既にオープンされている場合には、他のアプリケーションプログラムからオープンの要求がなされた場合であってもオープン処理を実行せず、また、複数のアプリケーションプログラムのいずれかにより第2のドライバが使用されている場合には、他のアプリケーションプログラムからクローズの要求がなされた場合であってもクローズ処理を実行しない。これにより、オープン処理を繰り返し実行したり、アプリケーションプログラムが複合機を使用中であるにも拘わらずクローズ処理を実行したりすることを防止できる。
【0012】
また、他の発明の情報処理装置は、上述の発明に加えて、アプリケーションプログラムと、制御手段とは、異なるプロセス領域において実行される。これにより、制御手段が停止した場合であっても、アプリケーションプログラムが実行不能になることを防止できる。
【0013】
また、他の発明の情報処理装置は、上述の発明に加えて、制御手段が、複合機から供給された所定の情報については、要求を行った複数のアプリケーションプログラムに対して並行して当該情報を供給する。これにより、複数のアプリケーションプログラムによって連携して同じ情報を処理することができる。
【0014】
また、本発明の情報処理プログラムは、上述の発明に加えて、プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において実行される情報処理プログラムにおいて、情報処理装置において実行され、複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第1のドライバモジュール、複合機との間で情報の授受を行う第2のドライバモジュール、第1のドライバモジュールと、第2のドライバモジュールの間に設けられ、複数のアプリケーションプログラムと、複合機との間における情報の授受の制御を行う制御モジュール、としてコンピュータを機能させる。このため、複数のアプリケーションが複合機を円滑に利用することが可能な情報処理プログラムを提供できる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の一実施の形態について、「1.実施の形態の構成例」、「2.実施の形態の動作の概要」、「3.実施の形態の動作の詳細」、「4.変形実施の形態」の順に説明する。
【0016】
1.実施の形態の構成例
【0017】
図1は、本発明の実施の形態に係る情報処理装置を含む情報処理システムの構成例を示す図である。この図に示すように、情報処理システムは、情報処理装置としてのホストコンピュータ10と、複合機20とを主要な構成要素とし、これらは、接続ケーブル30によって接続されている。なお、以下において、本発明の情報処理プログラムについては、ホストコンピュータ10の動作として説明する。
【0018】
図2は、図1に示すホストコンピュータ10の詳細な構成例を示すブロック図である。この図に示すように、ホストコンピュータ10は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、HDD(Hard Disk Drive)14、画像処理部15、I/F(Interface)16、バス17、表示装置18、および、入力装置19を主要な構成要素としており、I/F16には接続ケーブル30によって複合機20が接続されている。
【0019】
ここで、CPU11は、ROM12およびHDD14に格納されているプログラムおよびデータに基づいて各種の演算処理を実行するとともに、装置の各部を制御する中央演算装置である。
【0020】
ROM12は、CPU11が実行する基本的なプログラムおよびデータを格納する半導体記憶装置である。RAM13は、CPU11が実行する対象となるプログラムおよびデータを一時的に格納する半導体記憶装置である。
【0021】
HDD14は、磁気ディスクとしてのハードディスクに情報を書き込むとともに、書き込まれている情報を読み出す磁気記憶装置である。なお、HDD14には、OS(Operating System)141、および、AP(Application)プログラム142が格納されている。OS141は、I/F16に対する入出力制御を行うとともに、HDD14およびRAM13等の管理を行う。また、OS141は、複数のアプリケーションプログラムから共通して利用される基本的な機能を提供し、装置全体を管理するソフトウエアである。APプログラム142は、例えば、銀行における種々の業務を行うためのプログラムであり、この例では、窓口業務に関する処理を行うためのアプリケーションプログラムA(以下、適宜「apA」と略記する)142aと、小切手に関する処理を行うためのアプリケーションプログラムB(以下、適宜「apB」と略記する)142bとを有している。
【0022】
画像処理部は、CPU11から供給された描画命令に基づいて描画処理を実行し、得られた画像データを映像信号に変換して表示装置18に供給する。
【0023】
I/F16は、入力装置19から供給された情報の表現形式を内部形式に変換して読み込むとともに、複合機20との間で情報を授受する際に、同様にして表現形式を変換する処理を実行する。なお、複合機20とI/F16とは接続ケーブル30によって接続されており、このような接続を行うインタフェースとしては、例えば、USB(Universal Serial Bus)を利用することができる。
【0024】
バス17は、CPU11、ROM12、RAM13、HDD14、画像処理部15、および、I/F16を相互に接続し、これらの間で情報の授受を可能とするための信号線群である。
【0025】
表示装置18は、例えば、LCD(Liquid Crystal Display)またはCRT(Cathode Ray Tube)モニタによって構成され、画像処理部15から供給された映像信号に対応する映像を図示せぬ表示部に表示する。
【0026】
入力装置19は、例えば、キーボードまたはマウス等の入力デバイスであり、ユーザ(例えば、行員)の操作に応じた情報を生成して出力する。
【0027】
図3は、図1に示す複合機20の詳細な構成例を示すブロック図である。この図に示すように、複合機20は、メイン制御部21、入力部22、出力部23、プリント機構24、および、スキャン機構25を主要な構成要素としている。
【0028】
ここで、メイン制御部21は、入力部22またはホストコンピュータ10から供給された指令に基づいて、装置の各部を制御する制御部である。ここで、メイン制御部21は、入出力制御部211、制御部212、メモリ213、画像処理部214、プリンタ制御部215、および、スキャナ制御部216を主要な構成要素としている。
【0029】
入出力制御部211は、入力部22および出力部23との間で情報を授受する際の制御を行う。また、入出力制御部211は、ホストコンピュータ10との間で情報の授受を行う際の制御を行う。制御部212は、メモリ213に格納されているプログラム213aに基づいて、装置の各部を制御する。
【0030】
メモリ213は、例えば、半導体記憶装置によって構成されており、制御部212が実行するプログラムおよびデータを格納している。図3の例では、メモリ213は、プログラム213aを格納しており、制御部212は、プログラム213aに基づいて装置の各部を制御する。
【0031】
画像処理部214は、例えば、ホストコンピュータ10から供給された画像データまたはスキャン機構25から供給された画像データに対して所定の画像処理を実行するための処理部である。
【0032】
プリンタ制御部215は、プリント機構24を制御する制御部であり、制御部212から供給された印刷データに基づいて、記録ヘッド241、走査部242、および、用紙搬送部243を制御し、図示せぬ印刷用紙(例えば、ロール紙等)に対して印刷データを印刷する。
【0033】
スキャナ制御部216は、スキャン機構25を制御する制御部であり、制御部212からの指令に応じて、光源251、受光部252、および、走査部253を制御し、図示せぬ原稿(例えば、小切手)に印刷されている情報を光学的にスキャンして対応する画像データを取得する。
【0034】
入力部22は、装置のフロントパネルに設けられた操作ボタン等であり、ユーザの操作に応じて所定の情報を生成し、入出力制御部211に供給する。出力部23は、例えば、フロントパネルに設けられたLCDまたはLED(Light Emitting Diode)等であり、装置の内部の状態等をユーザに対して表示する。
【0035】
プリント機構24は、記録ヘッド241、走査部242、および、用紙搬送部243を主要な構成要素としており、制御部212から供給された画像データを、図示せぬ印刷用紙に印刷する。ここで、記録ヘッド241は、例えば、CMYKに対応する各色のインクを複数のノズルから適宜吐出し、印刷用紙に対応する画像を印刷する。走査部242は、記録ヘッド241を主走査方向(記録ヘッド241に設けられた各色のインク列に直交する方向)に移動させる。用紙搬送部243は、印刷用紙を副走査方向(主走査方向に直交する方向)に移動させる。
【0036】
スキャン機構25は、光源251、受光部252、および、走査部253を主要な構成要素としており、原稿(例えば、小切手)に印刷された画像を光学的に読み取って、対応する画像データを生成して出力する。ここで、光源251は、例えば、冷陰極管によって構成され、原稿の読み取ろうとする領域に対して白色光を照射する。受光部252は、光源251によって照射され、原稿によって反射された光を受光して対応する電気信号に変換するCCD(Charge Coupled Device)等によって構成される。走査部253は、受光部252を副走査方向(走査部253の長手方向に直交する方向)に移動させる。
【0037】
つぎに、本発明の実施の形態の動作について説明する。以下では、まず、実施の形態の動作の概要を説明した後、詳細な動作について説明する。
【0038】
2.実施の形態の動作の概要
【0039】
図4(A)は、従来において、プリンタ301aとスキャナ301bとが独立した構成である場合の、アプリケーションプログラム142a,142bと、プリンタ301aおよびスキャナ301bとの接続関係を示す図である。従来においては、プリンタ301aと、スキャナ301bとは独立した構成(製品)として存在しており、それぞれを制御するためのドライバ300aおよびドライバ300bも独立して存在している。アプリケーションプログラムAおよびアプリケーションプログラムBは、それぞれ専用のドライバ300a,300bを介してプリンタ301aおよびスキャナ301bを制御する。このため、アプリケーションプログラムAおよびアプリケーションプログラムBは、他のアプリケーションプログラムの状態を考慮することなく、それぞれのデバイス(プリンタ301aまたはスキャナ301b)を任意に制御することができる。しかしながら、このような構成では、プリンタ301aと、スキャナ301bとが独立した構成であり、それぞれが筐体と、電源部等とを有するので、大きな設置スペースが必要となるとともに、導入コストも高くつく。
【0040】
図4(B)は、従来における、複合機20とアプリケーションプログラムA,Bおよびドライバ300の関係を示す図である。この図に示すように、プリンタおよびスキャナが複合機20として単一のデバイスとして構成された場合、アプリケーションプログラムA,Bが同時に処理要求を行うと、エラーが発生してしまう場合がある。すなわち、アプリケーションプログラムA,Bは、前述したように、他のアプリケーションプログラムの状態を考慮することなく、所望のデバイスに対して処理要求を行う。この場合、例えば、一方のアプリケーションプログラムが複合機20の使用を開始すると、当該アプリケーションプログラムは複合機20を専有してしまうため、後から起動された他のアプリケーションプログラムは複合機20を利用することができなくなってしまう。また、アプリケーションプログラムがドライバ300を専有してしまう場合には、一方のアプリケーションプログラムを起動すると、他方のアプリケーションプログラムを起動できなくなる状況も発生していた。
【0041】
図5は、本発明の実施の形態における構成例の概略を示す図である。この図に示すように、本実施の形態では、図4(B)に示すドライバ300と、アプリケーションプログラムA,Bとの間に、新たなドライバ410,420と、サーバ430とが追加されている。
【0042】
ここで、第1のドライバとしてのドライバ410,420は、アプリケーションプログラムA,Bからの処理要求を受け付ける働きをし、制御対象である複合機20を制御する処理は実行しない、いわば、仮想的なドライバである。具体的には、ドライバ410は、アプリケーションプログラムAからの要求を受け付け、サーバ430に伝える処理を主に実行する。また、ドライバ420は、アプリケーションプログラムBからの要求を受け付け、サーバ430に伝える処理を主に実行する。なお、ドライバ410,420は、図4(B)のドライバ300と同様のインタフェースを有している。
【0043】
制御手段としてのサーバ430は、ドライバ410,420からの要求を受け付けるとともに、要求が輻輳した場合には調停処理を実行し、調停処理の結果に基づいて、当該要求に応じてドライバ300を排他的に制御する。
【0044】
第2のドライバとしてのドライバ300は、図4(B)に示す従来のドライバ300と同様のドライバであり、サーバ430からの要求に応じて、複合機20を制御する。
【0045】
本発明の実施の形態では、アプリケーションプログラムA,Bは、それぞれ専用のドライバ410,420を有している。また、これらのドライバ410,420は、それぞれのアプリケーションプログラムからの要求をサーバ430に伝えるだけで、デバイスを制御する処理はサーバ430等が行っている。したがって、アプリケーションプログラムA,Bの少なくとも一方がドライバを専有するプログラムであったとしても、専有しているドライバ410,420は仮想的なドライバであって、実際の制御処理はサーバ430以降が行うため、一方のアプリケーションプログラムを起動すると、他方を起動できないという事態を回避することができる。
【0046】
また、アプリケーションプログラムA,Bが同時に処理要求を行った場合、それぞれの要求は、ドライバ410,420に対して供給される。このとき、ドライバ410,420は独立した構成とされているので、アプリケーションプログラムA,Bからの要求は相互に影響を与えることはない。そして、サーバ430は、ドライバ410,420を介してこれらの要求を受け付ける。このとき、要求が輻輳している場合には、サーバ430は、例えば、先着順にこれらの要求に対して優先順位を付与し、当該優先順位にしたがって、ドライバ300を排他的に制御する。すなわち、アプリケーションプログラムA,Bは任意のタイミングで要求を行うことができる。
【0047】
ドライバ300は、サーバ430の制御に応じて、複合機20のプリント機構24またはスキャン機構25を制御し、印刷用紙に対して情報を印刷したり、原稿に印刷されている情報を画像データとして読み取り、要求を行ったアプリケーションプログラムに対して供給したりする。これにより、アプリケーションプログラムA,Bが複合機20に対して所定の処理を実行させることができる。
【0048】
このように本発明の実施の形態では、ドライバ410,420およびサーバ430を新たに設け、ドライバ410,420によってアプリケーションプログラムA,Bからの要求を受け付けるとともに、サーバ430によってこれらの要求を調停するようにしたので、一方のアプリケーションプログラムがデバイスを専有して他方のアプリケーションプログラムが動作できなくなったり、エラーが生じたりすることを回避できる。これにより、2つのアプリケーションプログラムA,Bを並行して動作させることが可能になることから、作業の効率を向上させることができる。
【0049】
また、ドライバ410,420のインタフェースは、ドライバ300と同様のインタフェースを実装するようにしたので、アプリケーションプログラムA,Bに対して修正を加える必要がないため、新たな作業およびコストの発生を防止できる。
【0050】
3.実施の形態の動作の詳細
【0051】
つぎに、本発明の実施の形態の詳細な動作について説明する。
【0052】
図6は、本発明の実施の形態の詳細な動作を説明するための機能ブロック図である。なお、この図の機能ブロックは、ホストコンピュータ10に電源が投入され、HDD14に格納されているOS141が起動された際に、ホストコンピュータ10のCPU11を初めとするハードウエア資源と、ソフトウエア資源としてのOS141とが協働することにより実現される。
【0053】
この図に示すように、ドライバ410は、API(Application Program Interface)411およびスレッド412を有している。APIは、種々の処理を行う関数群であり、例えば、DLL(Dynamic Link Library)として提供される。スレッド412には、アプリケーションプログラムAからの要求に応じて生成されるタスクの実行単位が登録されており、サーバ430からイベントシグナルが通知された場合には、コールバック関数によってアプリケーションプログラムAを呼び出す。ドライバ420は、ドライバ410と同様の構成とされている。ドライバ410およびドライバ420のインタフェースは、図4(B)に示すドライバ300と同様の構成を有している。
【0054】
なお、ドライバ300は、図4(B)に示すドライバ300と同様の構成を有しており、また、ドライバ410,420と同様に、API301およびスレッド302を有している。
【0055】
つぎに、電源が投入された際のホストコンピュータ10の動作について説明する。
【0056】
電源が投入されると、図示せぬ電源部から装置の各部への電源電力の供給が開始される。CPU11は、ROM12に格納されている基本的なプログラムを実行して、各部の設定等を行った後、HDD142に格納されているOS141の起動を開始する。すなわち、CPU11は、OS141をHDD14から読み出し、RAM13上に展開して実行する。このとき、図6に示す、サーバ430およびドライバ300はDLLとして、OS141に動的にリンクされる。これにより、サーバ430およびドライバ300がRAM13上に展開されて動作可能な状態となる。
【0057】
つづいて、ユーザが、入力装置19を操作して、アプリケーションプログラムAを起動する指示を行ったとすると、CPU11はHDD14からapA142aを読み出し、RAM13上に展開して実行する。これにより、アプリケーションプログラムAが起動されることになる。なお、このとき、CPU11は、ドライバ410をDLLとして読み出し、アプリケーションプログラムAに動的にリンクする。これにより、アプリケーションプログラムAとドライバ410とが起動される。なお、アプリケーションプログラムAとサーバ430とは異なるプロセス領域上において実行される。
【0058】
このような状態において、ユーザが、入力装置19を操作し、アプリケーションプログラムAによって所定の処理を実行させた後、処理結果の情報を複合機20のプリント機構24によって印刷する指示を行ったとする。すると、アプリケーションプログラムAからの印刷要求は、ドライバ410を介して、サーバ430に供給される。サーバ430は、ドライバ300を制御し、複合機20との接続ポートをオープンの状態とする。
【0059】
つぎに、アプリケーションプログラムAから出力された印刷データは、ドライバ410に供給される。ドライバ410は、通常のドライバと同様のインタフェースを有するとともに、ドライバの振りをするので、アプリケーションプログラムAは、従来と同様の処理により、印刷データを出力することができる。
【0060】
つづいて、ドライバ410は、アプリケーションプログラムAから供給された印刷データを、サーバ430に供給する。サーバ430は、その時点では、アプリケーションプログラムAだけが起動されているので、要求の調停を行う必要がないことから、ドライバ410から供給された印刷データを、ドライバ300に供給する。ドライバ300は、サーバ430から供給された印刷データに対して、所定の処理(例えば、マイクロウィーブ処理等)を施した後、複合機20に送信する。複合機20では、ホストコンピュータ10から供給された印刷データを入出力制御部211が受信し、制御部212がプリンタ制御部215に供給する。プリンタ制御部215は、プリント機構24を制御して、受信した印刷データを図示せぬ印刷用紙に印刷する。これにより、窓口業務に関する情報が印刷用紙に印刷されて出力される。そして、処理が終了すると、アプリケーションプログラムAは印刷の終了を指示するので、サーバ430は、ドライバ300を制御し、複合機20との接続ポートをクローズの状態とする。
【0061】
なお、以上は、アプリケーションプログラムAが単独で実行された場合の動作の説明であるが、アプリケーションプログラムBが単独で実行された場合も同様の処理により、複合機20が制御される。
【0062】
すなわち、アプリケーションプログラムBが起動されると、ドライバ420が動的にリンクされて起動される。そして、アプリケーションプログラムBから、例えば、小切手をスキャンする要求がなされた場合には、当該要求は、ドライバ420を介して、サーバ430に伝えられる。サーバ430は、アプリケーションプログラムBだけが起動された状態で、要求の輻輳は生じていないことから、複合機20との間の接続ポートをオープンの状態とする。また、このとき、スレッド422およびスレッド302には、スキャンが終了された場合にコールされるコールバック関数がそれぞれ登録される。
【0063】
このような状態において、複合機20のスキャン機構25に対して小切手が載置され、当該小切手を読み取る指示が、入力部22に対してなされたとすると、スキャナ制御部216は、スキャン機構25を制御し、小切手の読み取りを実行する。読み取りが完了すると、ステータスが変化した旨が、ドライバ300に通知される。ドライバ300のスレッド302は、登録されているコールバック関数によってサーバ430を呼び出す。その結果、サーバ430は、イベントシグナルをドライバ420のスレッド422に通知する。スレッド422は、登録されているコールバック関数によってアプリケーションプログラムBをコールバックする。この結果、アプリケーションプログラムBは、ドライバ420、サーバ430、および、ドライバ300を介して、複合機20から読み取りデータを取得する。そして、処理が完了すると、アプリケーションプログラムBはスキャンの終了を指示するので、サーバ430は、ドライバ300を制御し、複合機20との接続ポートをクローズの状態とする。
【0064】
以上に説明したように、本実施の形態では、単一のアプリケーションプログラムが起動された場合には、従来と同様に、それぞれのアプリケーションプログラムが複合機20を利用することができる。
【0065】
つぎに、アプリケーションプログラムAが起動された状態において、アプリケーションプログラムBを起動する場合について説明する。すなわち、アプリケーションプログラムAが起動された状態において、ユーザが入力装置19を操作して、アプリケーションプログラムBを起動する指示を行ったとすると、CPU11は、HDD14からapB142bを読み出して、RAM13上に展開して、実行する。なお、このとき、CPU11は、ドライバ420をDLLとして読み出し、アプリケーションプログラムBに動的にリンクさせる。これにより、アプリケーションプログラムBとドライバ420とが起動される。
【0066】
ところで、アプリケーションプログラムAがドライバを専有するタイプのプログラムである場合、アプリケーションプログラムAは、ドライバ410を専有することになる。しかしながら、ドライバ410は、仮想的なドライバであり、アプリケーションプログラムAから受け取った情報をサーバ430に受け渡す処理のみを実行する。つまり、デバイスを制御する処理は、サーバ430およびドライバ300が実行する。このため、アプリケーションプログラムBは、サーバ430およびサーバ300を利用することが可能であるので、アプリケーションプログラムBを起動することができる。また、アプリケーションプログラムBが同様にドライバを専有するプログラムである場合であっても、アプリケーションプログラムBは、仮想的なドライバ420を専有できることから、アプリケーションプログラムBを起動することができる。
【0067】
さらに、アプリケーションプログラムAおよびドライバ410と、アプリケーションプログラムBおよびドライバ420と、サーバ430とはそれぞれ異なるプロセス領域上において実行されるため、これらは独立して動作することができる。すなわち、アプリケーションプログラムAによってドライバ410が専有された状態であっても、サーバ430は独立して動作することができる。一方、アプリケーションプログラムBについても同様であり、アプリケーションプログラムBによってドライバ420が専有された状態であっても、サーバ430は独立して動作することができる。これにより、アプリケーションプログラムAおよびアプリケーションプログラムBの双方を同時に起動し、動作させることができる。
【0068】
つぎに、2つのアプリケーションプログラムA,Bが起動されている状態において、これらのアプリケーションプログラムA,Bが複合機20に対して、接続ポートのオープンまたはクローズの要求を行う場合の処理について説明する。
【0069】
図7は、ホストコンピュータ10において実行されている処理の一例を説明するフローチャートである。このフローチャートの処理が実行されると、以下のステップが実行される。
【0070】
ステップS10:サーバ430は、接続ポートに対するオープンの要求数をカウントするための変数Counterに初期値として“0”を代入する。
【0071】
ステップS11:サーバ430は、複合機20を制御するためのハンドルを格納する変数Handleに対して、Null(空)を格納する。
【0072】
ステップS12:サーバ430は、アプリケーションプログラムAまたはアプリケーションプログラムBからオープン要求がなされたか否かを判定し、要求がなされた場合にはステップS13に進み、それ以外の場合にはステップS18に進む。
【0073】
ステップS13:サーバ430は、変数Counterの値が、0より大きいか否かを判定し、大きい場合にはステップS16に進み、それ以外の場合にはステップS14に進む。変数Counterには、現在受け付けられているオープン要求の数が格納されている。したがって、Counterの値が0である場合には、初めてのオープン要求であるので、ステップS14に進み、それ以外の場合にはステップS16に進む。
【0074】
ステップS14:サーバ430は、ドライバ300を制御して、複合機20との接続ポートをオープンする処理を実行する。
【0075】
ステップS15:サーバ430は、ステップS14において、接続ポートをオープンする際に使用したハンドルを変数Handleに格納する。
【0076】
ステップS16:サーバ430は、Counterの値を1だけインクリメントする。
【0077】
ステップS17:サーバ430は、Handleに格納されているハンドルを、要求を行ったアプリケーションプログラムに対して返す。これにより、アプリケーションプログラムは、当該ハンドルを利用して、複合機20の制御が可能になる。
【0078】
ステップS18:サーバ430は、アプリケーションプログラムAまたはアプリケーションプログラムBからクローズ要求がなされたか否かを判定し、要求がなされた場合にはステップS19に進み、それ以外の場合にはステップS24に進む。
【0079】
ステップS19:サーバ430は、変数Counterの値を1だけデクリメントする。
【0080】
ステップS20:サーバ430は、変数Counterの値が0より大きいか否かを判定し、大きい場合にはステップS23に進み、それ以外の場合にはステップS21に進む。前述のように、変数Counterには、現在受け付けられているオープン要求の数が格納されている。したがって、Counterの値が0より大きい場合には、複合機20を利用しているアプリケーションプログラムが存在していることから、ステップS23に進み、それ以外の場合にはステップS21に進む。
【0081】
ステップS21:サーバ430は、ドライバ300を制御して、複合機20との接続ポートをクローズする処理を実行する。
【0082】
ステップS22:サーバ430は、変数HandleをNullの状態にする。
【0083】
ステップS23:サーバ430は、要求を行ったアプリケーションプログラムに対して、クローズ要求の実行が終了したことを通知する。
【0084】
ステップS24:サーバ430は、処理を終了するか否かを判定し、終了しない場合にはステップS12に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【0085】
以上の処理によれば、複数のアプリケーションプログラムからサーバ430に対して、オープンの要求が重複してなされた場合、最初の要求に応じて接続ポートをオープンし、それ以降の要求に対してはオープン処理は実行しない。これにより、重複してオープン処理が実行されることを防止できる。また、クローズの要求が重複してなされた場合、利用中のアプリケーションプログラムが存在している場合にはクローズを実行せず、最後の1つのアプリケーションプログラムからの要求に応じて、クローズ処理を実行する。これにより、複合機20を利用しているアプリケーションプログラムが存在しているにも拘わらず、接続ポートがクローズされることを防止できる。
【0086】
つぎに、複数のアプリケーションプログラムから複合機20を利用する場合の動作について説明する。
【0087】
以上のようにして、複数のアプリケーションプログラムが起動され、また、複数のアプリケーションプログラムによって複合機20との接続ポートがオープンされた状態になった後に、例えば、アプリケーションプログラムAが複合機20によって印刷データを印刷する要求を行うとともに、アプリケーションプログラムBが複合機20によって小切手を読み取る要求を行ったとする。
【0088】
このような場合、サーバ430は、ドライバ410,420を介してアプリケーションプログラムA,Bからの要求を受け付ける。そして、サーバ430は、これらの要求を、例えば、受け付け順に優先順位を付与し、当該優先順位に従って、要求に対応する処理を実行する。例えば、アプリケーションプログラムAからの印刷要求の方が先になされた場合には、アプリケーションプログラムAの要求の優先順位を高く設定し、アプリケーションプログラムBの要求の優先順位を低く設定する。そして、優先順位が高いアプリケーションプログラムAの要求に応じて、印刷データを受信して、ドライバ300を介して複合機20に印刷データを供給する。複合機20では、受信した印刷データをメモリ213に格納するとともに、印刷処理を実行する。全ての印刷データの受信が完了すると、アプリケーションプログラムAは処理が終了したとして、クローズの要求を行い、処理を完了する。なお、このとき、アプリケーションプログラムBが要求を行っていることから、接続ポートはクローズされない。
【0089】
続いて、サーバ430は、次に優先順位が高いアプリケーションプログラムBの要求を受け付け、複合機20に対して、小切手に印刷された情報を読み込む処理を実行させる。その結果、アプリケーションプログラムBは、複合機20から読み取りデータを受信する。そして、受信が完了すると、アプリケーションプログラムBはクローズの要求を行い、処理を完了する。なお、このとき、他に要求を行っているアプリケーションプログラムが存在していないことから、接続ポートはクローズされる。
【0090】
以上に説明したように、本発明の実施の形態によれば、仮想的なドライバ410,420を設けるとともに、サーバ430を設けるようにしたので、複数のアプリケーションプログラムを同時に起動することが可能になる。
【0091】
また、本発明の実施の形態によれば、複数のアプリケーションプログラムからオープンまたはクローズの要求がなされた場合には、これらの回数をカウントして、カウント結果に応じてオープンまたはクローズ処理を実行するようにしたので、オープン処理を重ねて行ったり、複合機20を使用中のアプリケーションプログラムが存在するにも拘わらずクローズ処理を実行してしまったりすることを防止できる。
【0092】
また、本発明の実施の形態によれば、サーバ430によって、複数のアプリケーションプログラムからの要求を調停するようにしたので、複数の要求が輻輳した場合であっても、複合機20を正常に利用することができる。
【0093】
また、本発明の実施の形態によれば、アプリケーションプログラムA,Bと、サーバ430とを異なるプロセス領域において実行するようにした。このため、サーバ430に不具合が生じた場合であっても、アプリケーションプログラムA,Bが影響を受けることを防止できる。すなわち、サーバ430が動作を停止した場合であっても、別プロセスであるアプリケーションプログラムA,Bが巻き込まれて停止することを防止できる。
【0094】
4.変形実施の形態
【0095】
なお、以上の実施の形態は、一例であって、これ以外にも種々の変形実施態様が存在する。例えば、以上の実施の形態では、2種類のアプリケーションプログラムA,Bの場合について説明したが、3種類以上のアプリケーションプログラムを利用することが可能である。
【0096】
また、以上の実施の形態では、アプリケーションプログラムAは複合機20のプリンタを利用し、アプリケーションプログラムBは複合機20のスキャナを利用する設定としたが、これ以外の組み合わせであってもよい。具体的には、一例として、アプリケーションプログラムA,Bがプリンタとスキャナの双方を利用してもよい。そのような場合、例えば、アプリケーションプログラムA,Bから、プリンタの使用要求またはスキャナの使用要求が輻輳した場合には、これらの要求をサーバ430が調停するので、アプリケーションプログラムA,Bによってプリンタまたはスキャナを共用できる。
【0097】
また、以上の実施の形態では、アプリケーションプログラムA,Bは独立して動作する構成としたが、例えば、これらが連携して動作するようにしてもよい。具体的には、例えば、いずれか一方のアプリケーションプログラムがスキャンの要求を行った場合、得られた読み取りデータを、双方のアプリケーションプログラムA,Bに並行して供給し、それぞれのアプリケーションプログラムA,Bにおいて所定の処理を実行するようにしてもよい。一例として、小切手を読み取って得られた読み取りデータを、アプリケーションプログラムAによって偽造でないか否かの認証処理をし、アプリケーションプログラムBによって登録処理するようにしてもよい。
【0098】
また、以上の実施の形態では、複合機20はスキャナとプリンタの機能を有するようにしたが、これ以外の機能(例えば、コピー機能、FAX機能)を有するようにしてもよい。さらに、小切手に印刷されている磁気(MICR:Magnetic Ink Character Recognition)を読み込む読取機能を具備するようにしてもよい。
【0099】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ホストコンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disk)、DVD−RAM、CD−ROM、CD−R/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
【0100】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0101】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【0102】
【図1】本発明の実施の形態の情報処理システムの構成例である。
【図2】図1に示すホストコンピュータの詳細な構成例を示す図である。
【図3】図1に示す複合機の詳細な構成例を示す図である。
【図4】従来の技術の動作の概略を説明するための図である。
【図5】本発明の実施の形態の動作の概略を説明するための図である。
【図6】本発明の実施の形態の詳細な動作を説明するための図である。
【図7】オープンおよびクローズ処理を説明するフローチャートである。
【符号の説明】
【0103】
10 ホストコンピュータ(情報処理装置)、20 複合機、300 ドライバ(第2のドライバ、第2のドライバモジュール)、410,420 ドライバ(第1のドライバ、第1のドライバモジュール)、430 サーバ(制御手段、制御モジュール)

【特許請求の範囲】
【請求項1】
プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において、
上記情報処理装置において実行され、上記複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第1のドライバと、
上記複合機との間で情報の授受を行う第2のドライバと、
上記第1のドライバと、上記第2のドライバの間に設けられ、上記複数のアプリケーションプログラムと、上記複合機との間における情報の授受の制御を行う制御手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記制御手段は、前記複数のアプリケーションプログラムから前記複合機へのアクセス要求が輻輳した場合には、これらのアクセス要求に対する調停処理を実行することを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記制御手段は、前記複数のアプリケーションプログラムのいずれかにより第2のドライバが既にオープンされている場合には、他のアプリケーションプログラムからオープンの要求がなされた場合であってもオープン処理を実行せず、また、前記複数のアプリケーションプログラムのいずれかにより第2のドライバが使用されている場合には、他のアプリケーションプログラムからクローズの要求がなされた場合であってもクローズ処理を実行しないことを特徴とする請求項1記載の情報処理装置。
【請求項4】
前記アプリケーションプログラムと、前記制御手段とは、異なるプロセス領域において実行されることを特徴とする請求項1記載の情報処理装置。
【請求項5】
前記制御手段は、前記複合機から供給された所定の情報については、要求を行った複数のアプリケーションプログラムに対して並行して当該情報を供給することを特徴とする請求項1記載の情報処理装置。
【請求項6】
プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において実行される情報処理プログラムにおいて、
上記情報処理装置において実行され、上記複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第1のドライバモジュール、
上記複合機との間で情報の授受を行う第2のドライバモジュール、
上記第1のドライバモジュールと、上記第2のドライバモジュールの間に設けられ、上記複数のアプリケーションプログラムと、上記複合機との間における情報の授受の制御を行う制御モジュール、
としてコンピュータを機能させるコンピュータ読取可能な情報処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2008−250658(P2008−250658A)
【公開日】平成20年10月16日(2008.10.16)
【国際特許分類】
【出願番号】特願2007−90972(P2007−90972)
【出願日】平成19年3月30日(2007.3.30)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】