説明

デバイス制御装置、デバイス制御方法、およびデバイス制御システム

【課題】同一機種のデバイスを複数台接続した場合でも、接続ケーブルの物理的な抜き差しを行なうことなく、各デバイスに対する制御が可能な手段を提供する。
【解決手段】デバイス制御装置に同一機種のデバイスが複数接続されている場合、データソースマネージャは、同一機種のデバイス各々の個体識別情報を取得して、個体識別情報から各デバイスのデバイス表示名を生成し、個体識別情報とデバイス表示名を対応付けて、テーブルに登録する。さらに、各デバイスのデバイス表示名からなるデバイス一覧をアプリケーションに送信する。アプリケーションによって同一機種のデバイスが選択された場合、データソースマネージャは、デバイス表示名に基づいてテーブルを参照して選択されたデバイスを特定し、それと同一機種の他のデバイスのデバイスドライバをアンロードする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイスを制御する機能を備えた装置、方法、及びデバイス制御システムに関するものである。
【背景技術】
【0002】
クライアントPCに接続して使用するイメージングデバイス(スキャナやホワイトボードなど)は、TWAIN規格で標準化され、このTWAIN規格のデバイスは、同一PCからの複数台制御が考慮されていないため、シリアル番号など、同一機器/別個体を識別するための情報がデバイス上に記述されていないことが多い。よって、オペレーティングシステム(以下、OS)のSTI(Still Image)サービスの制限により、同機種のデバイスを複数台接続しても、デバイスの同一機器/別個体を識別できず、そのうちの1台のみしか使用(認識)できなかった。
【0003】
かかる問題を解決するために、USBデバイスが、USBホストからのUSBデバイス情報の要求コマンドを受信したことに応じて、記憶手段に記憶されたベンダーIDと、ディップスイッチのような任意桁数のコードを手動で設定可能なコード設定手段によって設定されたコードから生成されたUSBデバイスのプロダクトIDとをUSBホストへ送信するUSBシステムが開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−134093号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
確かに、特許文献1のUSBシステムは、USBデバイスにデバイスの種類を特定・識別するプロダクトIDを生成し、USBホスト側に送信することで、USBホストは、同機種のデバイスを複数台接続しても、デバイスの同一機器/別個体を識別できるようになる。
【0006】
しかしながら、特許文献1のUSBシステムは、USBデバイスに、デバイスの種類を特定・識別するプロダクトIDを生成するためのコード設定手段(ディップスイッチ)を備える必要があり、さらに、このコード設定手段を手動で操作しなければならないという課題がある。
【0007】
また、同機種のデバイスを複数台接続しても、OS上ではデバイスの同一機器/別個体を識別できても、TWAIN規格対応のアプリケーション上では、デバイスの同一機器/別個体を識別できないため、同機種のデバイスを識別可能に表示できず、デバイスを切り替えて使用できないという課題もある。
【0008】
さらに、特許文献1のUSBシステムでは、デバイスをLAN(Local Area Network)のようなネットワークに接続して使用する場合について考慮されていないため、このようなデバイスを複数台ネットワーク接続したときに、いかにしてTWAIN規格対応デバイスの同一機器/別個体を識別するかも課題である。
【0009】
また、TWAIN規格対応のデバイスを使用するため、各デバイスベンダーから提供されるTWAIN規格対応のアプリケーション、および、TWAIN規格対応のデバイスドライバをカスタマイズする必要もある。
【0010】
上記の課題を鑑みて、本発明は、クライアントPCにおいて、同一機種のデバイスが複数台接続された場合でも、同一機種のデバイス毎に個体識別情報を取得・管理し、同一機種のデバイス各々のデバイス表示名を生成して、各々の同一機種のデバイスとの接続の有効・無効を制御することで、TWAIN規格対応のアプリケーションを使用する場合でも、接続ケーブルの物理的な抜き差しやディップスイッチなどによる設定を行なうことなく、複数のデバイスを切り替えて使用できるように制御することを目的とする。
【0011】
また、同一機種のデバイスを複数台、デバイスサーバを介してネットワーク接続した場合でも、デバイスサーバにおいてユニークな情報をデバイスに追加付与することによって、クライアントPCのTWAIN規格対応のアプリケーションから各々のデバイスを別個体として識別可能とし、複数のデバイスを切り替えて使用できるように制御することを目的とする。
【0012】
また、クライアントPCのデータソースマネージャのみをカスタマイズ(変更)することで、各デバイスベンダー提供のTWAIN規格対応アプリケーションおよびTWAIN規格対応デバイスドライバを変更することなく、TWAIN規格対応アプリケーション上でも複数の同一機種のデバイスを同一機器/別個体を識別し、使用できるようにすることを目的とする。
【課題を解決するための手段】
【0013】
上記の課題を解決するために、請求項1に記載のデバイス制御装置は、アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御装置であって、前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得手段と、前記デバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、を備えることを特徴とする。
【0014】
また、上記の課題を解決するために、請求項5に記載のデバイス制御方法は、アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御方法であって、前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信ステップと、前記デバイス一覧表示命令受信ステップで前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得ステップと、前記デバイス情報取得ステップで取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定ステップと、前記同一機種判定ステップで同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成ステップと、前記デバイス表示名生成ステップで生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録ステップと、同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信ステップと、前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信ステップと、前記デバイス選択命令受信ステップで受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロードステップと、を備えることを特徴とする。
【0015】
また、上記の課題を解決するために、請求項9に記載のデバイス制御システムは、デバイスと、前記デバイスとローカル接続されたデバイスサーバと、ネットワーク接続された前記デバイスサーバを介して前記デバイスを制御するデバイス制御装置からなるデバイス制御システムであって、前記デバイスサーバは、前記デバイスからデバイス情報を取得する第1のデバイス情報取得手段と、前記第1のデバイス情報取得手段で取得した前記デバイス情報に、前記デバイスサーバ自己のアドレス情報を追加する固有情報追加手段と、前記第1のデバイス情報取得手段で取得した前記デバイス情報または、前記固有情報追加手段で前記アドレス情報を追加したデバイス情報のいずれかを、前記デバイスのデバイス情報として前記デバイス制御装置へ送信するデバイス情報送信手段と、を備え、前記デバイス制御装置は、前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、前記デバイスサーバから前記デバイスのデバイス情報を取得する第2のデバイス情報取得手段と、前記第2のデバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報から該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、を備えることを特徴とする。
【発明の効果】
【0016】
本発明によれば、クライアントPCにおいて、同一機種のデバイスが複数台接続された場合でも、同一機種のデバイス毎に個体識別情報を取得・管理し、同一機種のデバイス各々のデバイス表示名を生成して、各同一機種デバイスとの接続の有効・無効を制御することで、TWAIN規格対応のアプリケーションを使用する場合でも、接続ケーブルの物理的な抜き差しやディップスイッチなどによる設定を行なうことなく、複数のデバイスを切り替えて使用できるようになる。
【0017】
また、本発明によれば、同一機種のデバイスを複数台、デバイスサーバを介してネットワーク接続した場合でも、デバイスサーバにおいてユニークな情報をデバイスに追加付与することによって、クライアントPCのTWAIN規格対応のアプリケーションから各々のデバイスを別個体として識別可能とし、複数のデバイスを切り替えて使用できるようになる。
【0018】
また、クライアントPCのデータソースマネージャのみをカスタマイズ(変更)することで、各種デバイスベンダー提供のTWAIN規格対応アプリケーションおよびTWAIN規格対応デバイスドライバを変更することなく、TWAIN規格対応アプリケーション上でも複数の同一機種のデバイスを同一機器/別個体を識別し、使用できるようになる。
【図面の簡単な説明】
【0019】
【図1】実施例1に係るデバイス制御システムの概略構成を示す図である。
【図2】クライアントPC100の内部構成を例示するブロック図である。
【図3】実施例1に係るクライアントPC100のデータソースマネージャ111に記憶された同一機種デバイス情報テーブルの一例である。
【図4】クライアントPC100におけるスキャン実行時の制御について説明するフローチャートである。
【図5】実施例2に係るデバイス制御システムの概略構成を示す図である。
【図6】実施例2に係るクライアントPC100のデータソースマネージャ111に記憶されたユーザ情報テーブルの一例である。
【図7】実施例3に係るデバイス制御システムの概略構成を示す図である。
【図8】実施例3に係るデバイスサーバ600の内部構成を例示するブロック図である。
【図9】実施例3に係るデバイスサーバ600におけるデバイス200接続時の制御について説明するフローチャートである。
【図10】実施例3に係るクライアントPC100のデータソースマネージャ111に記憶された同一機種デバイス情報テーブルの一例である。
【図11】実施例3に係るデバイス一覧を例示する図である。
【発明を実施するための形態】
【0020】
以下、本発明の実施の形態について、詳細に説明する。
【実施例1】
【0021】
実施例1に係る実施の形態を説明する。
【0022】
<1.デバイス制御システムの構成>
図1は、本発明を実現するためのデバイス制御システムの概略構成であり、クライアントPC100、デバイス200(200A,200B)から構成される。
【0023】
このデバイス制御システムでは、クライアントPC100とデバイス200をUSB(Universal Serial Bus)やIEEE1394などのインターフェースに準拠した接続ケーブル300で接続する。
【0024】
次に、図1のデバイス制御システムを構成する各装置について順次説明する。
【0025】
<2.クライアントPC100の構成>
はじめに、クライアントPC(デバイス制御装置)100のハードウェア構成およびソフトウェア構成について図2を用いて説明する。
【0026】
クライアントPC100は、CPU101、入力部102、表示部103、メモリ104、通信部105、ローカルI/F106、外部記憶部107などから構成されており、これらが内部バス112で接続されている。
【0027】
CPU101は、中央処理制御部であり、メモリ104や外部記憶部107に格納された所定のプログラムを実行することによってクライアントPC100を全体的に制御する。
【0028】
入力部102は、各種入力、指示操作などを行なうための操作部であり、キーボードやマウスなどで構成される。
【0029】
表示部103は、各種画面などを表示するディスプレイであり、クライアントPC100に内蔵もしくは外部接続される。
【0030】
メモリ104は、ROM(Read Only Memory)およびRAM(Random Access Memory)で構成される記憶領域であり、所定のプログラムやデータを格納する。
【0031】
通信部105は、Ethernet(登録商標)のような有線ネットワーク、若しくは、IEEE802.11aやIEEE802.11gのような無線ネットワークなど、ネットワークに対応したネットワークパケットによる送受信や通信制御を行うためのインターフェースであり、外部とのデータ通信を行うことで、クライアントPC100からデータを送受信することが可能となる。
【0032】
ローカルI/F106は、例えば、USB(Universal Serial Bus)仕様に準拠した送受信インターフェースであって、デバイス200との接続などに利用される。
【0033】
外部記憶部107には、OS108、TWAINアプリケーションプログラム109、TWAINデバイスドライバ110、データソースマネージャ111などの各種ソフトウェアプログラムを記憶する。
【0034】
外部記憶部107に格納されたこれらのソフトウェアプログラムは、CPU101の制御に従い、メモリ104上に読み出されて実行される。
【0035】
OS108は、オペレーティングシステムである。本発明においては、ローカルI/F106を介してデバイス200が接続されたことを検知すると、接続されたデバイス200のデバイス情報を取得する機能部と、デバイス200のデバイス情報からデバイスを識別するための個体識別情報を生成する機能部としての役割を担う点が特徴である。
【0036】
デバイス情報は、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーID(VID)、機種を識別するために機種毎に割り当てられたプロダクトID(PID)、機器の個体を識別するために機器毎に割り当てられたシリアル番号などから構成される。
【0037】
個体識別情報は、ベンダーID、プロダクトIDおよびクライアントPC100の接続ポート情報から構成されるインスタンスIDや、OS108のレジストリに記憶されているデバイスIDなどであるが、これらに限定されるものではない。さらに、これらを組み合わせたものでもよい。
【0038】
なお、クライアントPC100の接続ポート情報とは、クライアントPC100の接続ポートを識別するための情報である。例えば、クライアントPC100の有するUSBポートの番号やIEEE1394ポートの番号などであるが、これらに限定されない。
【0039】
また、個体識別情報のうち、インスタンスIDは、デバイス200のベンダーIDおよびプロダクトID、そして、クライアントPC100の接続ポート情報から構成されると説明したが、これに限定されず、ベンダーID、プロダクトID、および、シリアル番号から構成されてもよい。
【0040】
では、TWAINアプリケーションプログラム109、TWAINデバイスドライバ110、データソースマネージャ111の詳細について説明する。
【0041】
TWAINアプリケーションプログラム109は、TWAIN規格に対応したアプリケーションプログラムであり、OS108上で動作する。ユーザによって入力部102を介して取得したデバイス200の選択情報やスキャンなどのサービス実行時の設定情報を設定することができ、また、デバイス200によるサービス処理を制御し、取得した画像データを保存、編集等することができるプログラムである。
【0042】
TWAINデバイスドライバ110は、ローカルI/F106を介してデバイス200に対して送信する命令やデータを生成し、デバイス200を制御してデータを取得するソフトウェアである。前述のとおり、OS108によってデバイス200の接続が検知された場合、各デバイス200のTWAINデバイスドライバ110が個々にロードされる。
【0043】
データソースマネージャ111は、TWAINデバイスドライバ110とTWAINアプリケーションプログラム109との間でデータの受け渡しを行うソフトウェアである。この他に、OS108からクライアントPC100に現在接続されているデバイス200のデバイス情報を取得する機能や、デバイス表示名を記述したデバイス200に関する情報(以下、デバイス一覧)を作成し、TWAINアプリケーションプログラム109に対して送信する機能も備えている。
【0044】
<3.デバイス200の構成>
次に、デバイス200の構成について説明する。デバイス200(デバイス200A,デバイス200B)は、TWAIN規格に対応し、ローカルインターフェースを持つ汎用的な入出力装置である。例えば、スキャナなどの単機能周辺装置(SFP:Single Function Peripheral)、あるいは、スキャナ機能の他にプリント機能やコピー機能、ストレージ機能などを兼ね備えた多機能周辺機器(MFP:Multi Function Peripheral)である。ただし、これらに限定されるものでなく、別のデバイスであってもよい。
【0045】
<4.データソースマネージャ111の詳細>
続いて、本発明の特徴であるクライアントPC100のデータソースマネージャ111について詳細に説明する。
【0046】
データソースマネージャ111は、TWAINアプリケーションプログラム109からデバイス一覧表示命令を受信すると、デバイス200から取得したデバイス情報によって、同一機種のデバイスが接続されているか判断する。そして、同一機種のデバイス200が接続されている場合、同一機種デバイス各々の個体識別情報をOS108から取得し、この個体識別情報から同一機種デバイス各々を識別可能なデバイス表示名を生成し、デバイス表示名を個体識別情報と対応付けて同一機種デバイス情報テーブルへ登録する。
【0047】
なお、同一機種デバイス情報テーブルは、同一機種のデバイスに関する情報が登録されるテーブルであり、少なくともデータソースマネージャ111がOS108から取得した個体識別情報と、同一機種のデバイス各々を識別可能なデバイス表示名とを対応付けて登録される。そして、TWAINアプリケーションプログラム109によって選択されたデバイス200と同一機種のデバイス200が接続されているかどうかを判断する際に参照される。
【0048】
図3は、デバイスの機種名、デバイス表示名、インスタンスIDから構成される同一機種デバイス情報テーブルの例示である。この例では、同一機種のデバイスであるデバイスa200Aとデバイスb200Bの1機種のみの情報しかない場合を示している。なお、デバイスa200Aおよびデバイスb200Bと異なる機種で同一機種のデバイスが接続されている場合には、これらの情報もテーブルに登録される。
【0049】
インスタンスIDは、OS108から取得したデバイス情報に記述されているベンダーID、プロダクトID、接続ポート情報から構成される。デバイスa200Aの場合、ベンダーIDは「VID_1234」、プロダクトIDは「PID_1234」、接続ポート情報は「1&1111111&1&1」である。
【0050】
この場合、デバイスa200Aの接続ポート情報「1&1111111&1&1」とデバイスb200Bの接続ポート情報「1&1111111&1&2」が異なるので、デバイスa200Aとデバイスb200Bを識別できる。
【0051】
デバイス表示名は、データソースマネージャ111によって、同一機種のデバイス各々を識別可能に表示するため、OS108から取得した個体識別情報に基づいて生成される。図3で例示したデバイス表示名は、デバイスの機種名と同一機種のデバイスを個々に区別するための通し番号から構成され、デバイスa200Aのデバイス表示名は「CIS−100−1」であり、デバイスb200Bのデバイス表示名は「CIS−100−2」である。
【0052】
なお、図3では、個体識別情報と対応付ける情報として、データソースマネージャ111によって生成されたデバイス表示名を例示しているが、これに限定されず、デバイス固有の情報であるMACアドレスやその他の情報でもよく、デバイスを一意に特定(識別)できるものであればよい。
【0053】
また、データソースマネージャ111は、クライアントPC100に接続されたデバイスのデバイス一覧を作成し、TWAINアプリケーションプログラム109に対して送信する。
【0054】
このデバイス一覧は、同一機種が接続されているデバイスについては、同一機種デバイス情報テーブルに登録されたデバイス表示名が記述され、同一機種が接続されていないデバイスについては、デバイス情報に含まれるデバイス表示名が記述される。
【0055】
さらに、データソースマネージャ111は、ユーザが入力部102を操作してTWAINアプリケーションプログラム109で選択したデバイス200のデバイス選択命令を受信すると、同一機種デバイス情報テーブルを参照し、受信したデバイス選択命令に含まれるデバイス表示名が同一機種デバイス情報テーブルに登録されている場合、選択されたデバイス200との接続を有効にする。
【0056】
具体的には、デバイス200の接続が検知されたときにロードされたTWAINデバイスドライバ110のうち、同一機種が存在するデバイス200がTWAINアプリケーションプログラム109によって選択された場合、選択されたデバイス200との接続のみを有効にし、それ以外の同一機種のデバイス200のTWAINデバイスドライバ110をアンロードすることで、それ以外の同一機種のデバイス200との接続を無効にする。そして、接続を有効にした同一機種のデバイス200とのデータ送受信が終了すると、アンロードしたTWAINデバイスドライバ110を再びロードする。
【0057】
<5.クライアントPC100におけるスキャン実行時の処理>
ここからは、クライアントPC100におけるスキャン実行時の制御について図4のフローを用いて説明する。
【0058】
本実施例は、クライアントPC100に接続されるデバイスa200Aとデバイスb200Bを同一機種のデバイスとし、デバイスa200Aを選択して、スキャンを実行する場合について説明する。
【0059】
まずはじめに、ユーザは、入力部102を操作してTWAINアプリケーションプログラム109を起動する(ステップS401)。
【0060】
OS108は、デバイスa200Aとデバイスb200BからローカルI/F106を介してデバイス200を識別するためのデバイス情報を取得し、メモリ104に格納する(ステップS402)。
【0061】
続いて、データソースマネージャ111は、ステップS402において取得したデバイス情報からクライアントPC100に同一機種のデバイス200が接続されているか判断する(ステップS403)。
【0062】
ステップS403において、デバイスa200Aとデバイスb200Bは同一機種のデバイスであるため(ステップS403でYes)、ステップS404に進む。次に、データソースマネージャ111は、OS108が生成した個体識別情報を取得し、デバイス表示名を生成し(ステップS404)、該当デバイス200の情報(デバイス表示名、個体識別情報)を同一機種デバイス情報テーブルに登録する(ステップS405)。
【0063】
データソースマネージャ111は、同一機種デバイス情報テーブルに登録されたデバイス表示名からデバイス一覧を作成し、TWAINアプリケーションプログラム109に送信する(ステップS406)。
【0064】
TWAINアプリケーションプログラム109は、データソースマネージャ111から受信したデバイス一覧に基づいて、ユーザが、デバイス選択候補の中から使用するデバイス200を選択するためのグラフィカル・ユーザ・インターフェース(GUI)画面を生成し、表示部103に表示する(ステップS407)。
【0065】
このGUI画面には、クライアントPC100に接続されるデバイスa200A、デバイスb200Bが識別可能に表示される。ユーザは、入力部102を操作して、表示部103に表示されたデバイス選択候補の一覧の中からスキャンを実行するデバイスa200Aを選択する(ステップS408)。このとき、選択されたデバイスa200Aは、それ以外のデバイス(デバイスb200B)と区別されて表示部103に表示される。
【0066】
データソースマネージャ111は、ステップS408の選択結果に基づいて、TWAINアプリケーションプログラム109から選択されたデバイスに関する情報を含むデバイス選択命令を受信すると、同一機種デバイス情報テーブルに登録されたデバイス表示名を参照して、選択されたデバイスa200Aと同一機種のデバイスがあるか判断する(ステップS409)。
【0067】
選択されたデバイスa200Aとデバイスb200Bは同一機種のデバイスなので、ステップS409の判断結果はYesとなり、ステップS410に進む。そして、データソースマネージャ111は、デバイスb200BのTWAINデバイスドライバ110をアンロードする(ステップS410)。これによって、デバイスa200Aとの接続だけを有効にし、デバイスb200Bとの接続を無効にする。
【0068】
デバイスa200AのTWAINデバイスドライバ110は、デバイスa200Aに対して、スキャンの実行要求を送信し、スキャンされた画像データを取得する(ステップS411)。なお、デバイスa200Aでスキャンを継続する場合は、ステップS411の処理を繰り返し実行させる。
【0069】
デバイスa200Aからスキャン画像データの取得が終了すると、データソースマネージャ111は、デバイスa200Aとの接続を切断して処理を終了する。ここで、ステップS410でアンロードしたデバイスb200BのTWAINデバイスドライバ110を再びロードする(ステップS412)。
【0070】
デバイスa200Aによるスキャンの終了後、ユーザによって入力部102を操作してTWAINアプリケーションプログラム109の終了が選択されると(ステップS413)、データソースマネージャ111は、同一機種デバイス情報テーブル内に情報(データ)があるかどうか判断する(ステップS414)。同一機種デバイス情報テーブル内に情報がある場合(ステップS414でYes)、同一機種デバイス情報テーブルを初期化し(ステップS415)、処理を終了する。
【0071】
ここでは、デバイスa200Aとデバイスb200Bが同一機種のデバイスなので、同一機種デバイス情報テーブル内に情報が登録されているため、同一機種デバイス情報テーブルの初期化処理を行なう。
【0072】
ステップS415における同一機種デバイス情報テーブルの初期化処理は、同一機種デバイス情報テーブルに登録された情報(デバイス表示名や個体識別情報)を全て削除することである。また、同一機種デバイス情報テーブル内にデバイスa200Aとデバイスb200B以外の別機種の情報があるときは、その情報も併せて削除する。
【0073】
なお、ステップS412の処理実行後、TWAINアプリケーションプログラム109を終了させずに選択されたデバイスとは別のデバイスでスキャンを実行する場合は、再び、ステップS408に戻り、ステップS408からステップS412の処理を繰り返すことで実現できる。
【0074】
なお、デバイスa200Aとデバイスb200Bが同一機種でない場合、上記で説明したステップS403およびステップS409の判断結果が夫々異なるので、この部分について説明する。
【0075】
ステップS403において、データソースマネージャ111では、同一機種のデバイス200が接続されていないと判断され、判断結果はNoとなり、ステップS406に進む。
【0076】
ステップS409において、選択されたデバイスa200Aと同一機種のデバイスが存在しないため、判断結果はNoとなり、ステップS416に進み、ステップS411と同様にデバイスa200Aに対して、スキャンの実行要求を送信し、スキャンされた画像データを取得して、ステップS413に進む。
【0077】
なお、本フローでは、同一機種デバイス情報テーブルの初期化処理を、TWAINアプリケーションプログラム109の終了後に行なわず、選択されたデバイスa200Aでスキャンが終了した際に、デバイスb200BのTWAINデバイスドライバ110を再びロードするのと同時またはその直後に行ってもよい。
【0078】
上述したように、実施例1のデバイス制御システムによれば、データソースマネージャ111によって、TWAINアプリケーションプログラム109で選択されたデバイス200との接続のみを有効にし、選択されたデバイス200以外の同一機種のデバイス200のTWAINデバイスドライバ110をアンロードすることで、インターフェースの物理的な抜き差しを行なうことなく、複数のデバイス200を切り替えて使用することができる。
【0079】
また、上述のGUI画面を用いて、表示部103に表示されたデバイス選択候補の中から使用するデバイス200を選択する方法以外にも、デバイス200に内蔵または外部接続された入力機器(赤外線センサ、プッシュスイッチなど)によって、デバイス200の状態変化を検知し、クライアントPC100に状態変化の旨を通知することで、クライアントPC100は、状態変化の通知を契機に、状態変化が発生したデバイス200を選択してもよい。
【実施例2】
【0080】
実施例2に係る実施の形態を説明する。
【0081】
<6.カードリーダを用いたデバイス200の選択>
実施例2では、クライアントPC100に接続されたカードリーダ400にカードをかざすことで、使用するデバイス200を選択する実施形態について説明する。
【0082】
なお、図2〜図4を用いて説明した実施例1の構成やフローは、実施例2でも同様に適用可能であるので、詳細な説明を省略し、相違点についてのみ説明する。
【0083】
図5は、実施例2に係るデバイス制御システムの概略構成であり、クライアントPC100、デバイス200(200A,200B)、カードリーダ400から構成される。
【0084】
カードリーダ400は、接続ケーブル300を介してクライアントPC100に接続されるものであり、カードに記録されたカードIDやユーザIDなどのユーザ情報を取得する機能を備える。なお、カードリーダ400は、クライアントPC100に内蔵されるように構成しても良い。
【0085】
本実施例では、カードをカードリーダ400に近づける(かざす)と、両者の間で通信する非接触ICカードの技術を用いて説明する。例えば、この非接触ICカード技術としてFeliCa(登録商標)がある。なお、この技術に限定されるものではなく、国際標準規格として制定されている密着型(ISO/IEC10536;通信距離2mm以下)や近接型(ISO/IEC14443;通信距離10cm以下)など他の非接触方式、又は、接触方式(ISO/IEC7816など)を利用した技術であっても良い。カードリーダ400を介さず、カードとクライアントPC100を直接接続して情報の授受を行う形態にすることも可能である。
【0086】
また、クライアントPC100のデータソースマネージャ111は、図3で示す同一機種デバイス情報テーブルの他に、ユーザ情報テーブルをさらに記憶する。ユーザ情報テーブルは、図6に例示するように、ユーザ情報とユーザ別の使用可能(接続可能)デバイスの対応関係を示すテーブルである。なお、図3に示した同一機種デバイス情報テーブルの情報とユーザ情報テーブルの情報を1つのテーブルとして記憶してもよい。このようなユーザ情報テーブルによって、ユーザとそのユーザが使用可能なデバイス200が対応付けされる。
【0087】
本実施例では、クライアントPC100に接続されるデバイスa200Aとデバイスb200Bを同一機種のデバイスとし、ユーザAがカードリーダ400にカードを近づける(かざす)ことによってデバイスa200Aを選択し、スキャンを実行する場合について説明する。
【0088】
なお、クライアントPC100では、カードリーダ400が接続されると、OS108によって、カードリーダ400を制御するデバイスドライバ(不図示)とアプリケーションプログラム(不図示)が起動されるものとする。
【0089】
では、実施例2に係るクライアントPC100におけるスキャン実行時の制御について図4のフローを用いて説明する。
【0090】
本実施例において、ステップS401〜ステップS407の処理は、実施例1と同様であるため、説明を省略する。
【0091】
ステップS408において、カードリーダ400にユーザAに対応付けられるカードがかざされたことが検知されると、デバイスa200Aが選択される(ステップS408)。
【0092】
具体的には、カードリーダ400にユーザAに対応づけられるカードがかざされると、カードリーダ400を制御するデバイスドライバ(不図示)は、カードからユーザAのユーザ情報を取得し、データソースマネージャ111に送信する。データソースマネージャ111は、デバイスドライバから受信したユーザAのユーザ情報を基に、ユーザ情報テーブルと同一機種デバイス情報テーブルを参照して、ユーザAが使用可能なデバイスa200Aを特定することで、デバイスの選択が完了する。
【0093】
これ以降の処理は、実施例1のステップS409〜ステップS416と同様であるので、説明を省略する。以上で実施例2に係るスキャンの実行が終了する。
【0094】
上述したとおり、実施例2のデバイス制御システムによれば、クライアントPC100に接続されたカードリーダ400にユーザがカードをかざすことで、ユーザが使用するデバイス200が選択されるので、インターフェースの物理的な抜き差しを行なうことなく、複数のデバイス200を切り替えて使用することができる。
【実施例3】
【0095】
実施例3に係る実施の形態を説明する。
【0096】
<7.実施例3に係るデバイス制御システムの構成>
前述の実施例1と実施例2では、クライアントPC100にローカル接続されたデバイス200を制御する形態について説明したが、実施例3では、クライアントPC100にローカル接続されたデバイス200、ネットワーク接続されたデバイス200、および、ネットワーク接続されたデバイスサーバにローカル接続されたデバイス200が混在するシステムにおいて、クライアントPC100から各デバイスを制御する実施形態について説明する。
【0097】
なお、図2〜図4を用いて説明した実施例1の構成やフローは、実施例3でも同様に適用可能であるので、詳細な説明を省略し、相違点についてのみ説明する。
【0098】
図9は、実施例3に係るデバイス制御システムの概略構成であり、クライアントPC100、デバイス200(200A,200B,200C,200D,200E,200F)、デバイスサーバ600(600A,600B)から構成される。なお、これ以降は、デバイスa200A、デバイスb200B、デバイスc200Cおよびデバイスe200Eを同一機種のデバイスとし、デバイスd200Dとデバイスf200Fはそれぞれ他のデバイス200と異なる機種であるとして説明する。
【0099】
このデバイス制御システムでは、デバイスa200Aおよびデバイスb200Bが接続ケーブルを介してクライアントPC100とローカル接続され、デバイスc200Cおよびデバイスd200Dは、接続ケーブル300を介してデバイスサーバa600Aおよびデバイスサーバb600Bにそれぞれローカル接続されている。デバイスe200Eとデバイスf200Fは、実施例1で説明したクライアントPC100が備える通信部105と同等の通信部(不図示)を有しており、有線または無線のネットワーク500を介してクライアントPC100と接続される。
【0100】
初めに、クライアントPC100について説明するが、実施例1との相違点のみを説明する。
【0101】
本実施例では、クライアントPC100にローカル接続されるデバイス(デバイスa200A、デバイスb200B)、デバイスサーバ600を介して接続されるデバイス(デバイスc200C、デバイスd200D)およびネットワーク接続されるデバイス(デバイスe200E、デバイスf200F)が混在する。これらのデバイスを識別して制御するために、実施例1および実施例2とは異なるデバイス情報を取得する必要がある。以下では、本実施例におけるクライアントPC100のOS108が取得するデバイス情報について説明する。
【0102】
OS108は、デバイスa200Aとデバイスb200Bからは、実施例1と同様に少なくともベンダーID、プロダクトIDからなる情報を、デバイス200のデバイス情報として取得する。デバイスe200Eとデバイスf200Fからは、デバイスa200Aとデバイスb200Bと同等の情報にそのデバイス200自身のアドレス情報(例えば、IPアドレスやMACアドレス)を加えたものを、デバイス200のデバイス情報として取得する。デバイスサーバa600Aとデバイスサーバb600Bからは、デバイスサーバ600にローカル接続されたデバイス200(デバイスc200Cまたはデバイスd200D)から取得したデバイス情報(デバイスa200Aとデバイスb200Bから取得する情報と同等)にデバイスサーバ600のアドレス情報を加えたものを、デバイス200のデバイス情報として取得する。
【0103】
なお、デバイスe200E、デバイスf200F、デバイスサーバa600A、デバイスサーバb600Bの有するアドレス情報とは、デバイス200またはデバイスサーバ600を識別するための情報である。例えば、デバイス200またはデバイスサーバ600のIPアドレスやMACアドレスなどであるが、これらに限定されない。さらに、これらの情報を組み合わせたものであってもよい。
【0104】
図10は、デバイスの機種名、デバイス表示名、インスタンスIDから構成される同一機種デバイス情報テーブルの例示である。この例では、デバイスa200A、デバイスb200B、デバイスc200Cおよびデバイスe200Eが同一機種のデバイスである場合を示している。
【0105】
インスタンスIDは、OS108から取得したデバイス情報に記述されているベンダーID、プロダクトID、接続ポート情報またはアドレス情報から構成される。デバイスa200Aの場合、ベンダーIDは「VID_1234」、プロダクトIDは「PID_1234」、接続ポート情報は「1&1111111&1&1」であり、デバイスc200Cの場合、ベンダーIDは「VID_1234」、プロダクトIDは「PID_1234」、アドレス情報は「192.168.1.11」である。
【0106】
この場合、デバイスa200Aの接続ポート情報「1&1111111&1&1」と、デバイスb200Bの接続ポート情報「1&1111111&1&2」と、デバイスc200Cのアドレス情報「192.168.1.11」と、デバイスe200Eのアドレス情報「192.168.3.33」が異なることによって、接続形態が異なるデバイスがシステム上に混在しても、デバイスa200A、デバイスb200B、デバイスc200Cおよびデバイスe200Eを識別できる。
【0107】
デバイス表示名は、データソースマネージャ111によって、同一機種のデバイス各々を識別可能に表示するため、OS108から取得した個体識別情報に基づいて生成される。図10で例示したデバイス表示名は、デバイスの機種名と同一機種のデバイスを個々に区別するための通し番号から構成され、デバイスa200Aのデバイス表示名は「CIS−100−1」、デバイスb200Bのデバイス表示名は「CIS−100−2」、デバイスc200Cのデバイス表示名は「CIS−100−3」、デバイスe200Eのデバイス表示名は「CIS−100−4」である。
【0108】
<8.デバイスサーバ600の構成>
次に、実施例3に係るデバイス制御システムにおけるデバイスサーバ600のハードウェア構成およびソフトウェア構成について図8を用いて説明する。
【0109】
デバイスサーバ600は、CPU601、メモリ602、通信部603、ローカルI/F604、外部記憶部605などから構成されており、これらが内部バス606で接続されている。
【0110】
CPU601、メモリ602、通信部603、ローカルI/F604、および内部バス606については、前述したクライアントPC100における構成と同一であるため詳細な説明を省略する。
【0111】
外部記憶部605は、通信制御部607、デバイス制御部608を備えるソフトウェア機能部である。
【0112】
通信制御部607は、通信部603およびネットワーク500を介してクライアントPC100と接続される機能部であり、クライアントPC100に対してデバイス情報を送信する機能、クライアントPC100との間でネットワーク500を介してデータ送受信を行なう機能を備える。
【0113】
デバイス制御部608は、デバイス200とローカルI/F604を介して接続される機能部であり、ローカル接続されたデバイス200からデバイス情報を取得する機能、クライアントPC100から受信した当該制御コマンドに含まれるデバイス情報に基づいてクライアントPC100がデータ送受信を求めるデバイス200を特定し、ローカルI/F604を介してデバイス200を制御する機能を備える。
【0114】
<9.デバイスサーバ600にデバイス200が接続された時の処理>
次に、デバイスサーバ600にデバイス200がローカル接続された時に、デバイスサーバ600上で実行される処理について、図9のフローチャートで説明する。
【0115】
デバイスサーバ600は、デバイス200がローカル接続されると、本フローに従って処理を開始する。
【0116】
まずはじめに、デバイス制御部608は、デバイス200からローカルI/F604を介してデバイス200を識別するためのデバイス情報を取得し、メモリ602に格納する(ステップS901)。
【0117】
その後、通信制御部607は、クライアントPC100からデバイス情報の問い合わせがあるまで待機する(ステップS902でNo)。クライアントPC100からの問い合わせは、UDP(User Datagram Protocol)などのプロトコルを用いて行なわれる。
【0118】
通信制御部607は、クライアントPC100からデバイス情報の問い合わせがあるとデバイス制御部608に通知し(ステップS902でYes)、デバイス制御部608が、デバイスサーバ600にローカル接続されているデバイス200のデバイス情報を特定すると、通信制御部607は、通信部603を介して特定したデバイス200のデバイス情報に自己のアドレス情報を加えたものを、デバイス200のデバイス情報としてクライアントPC100に送信し、処理を終了する(ステップS903)。これによって、クライアントPC100は、デバイスサーバ600にローカル接続されているデバイス200のデバイス情報とデバイスサーバ600のアドレス情報を取得することができる。
【0119】
なお、クライアントPC100は、問い合わせを行なわずに、デバイスサーバ600からの通知によってデバイス情報を取得してもよい。
【0120】
また、ネットワーク接続されたデバイス200(デバイスe200E、デバイスf200F)においてもデバイスサーバ600と同様に、クライアントPC100が問い合わせを行うことでネットワーク接続されたデバイス200からデバイス情報を取得してもよいし、クライアントPC100が問い合わせを行なわずに、ネットワーク接続されたデバイス200からの通知によってデバイス情報を取得してもよい。
【0121】
<10.実施例3に係るクライアントPC100におけるスキャン実行時の処理>
次に、実施例3に係るクライアントPC100におけるスキャン実行時の制御について、実施例1および実施例2と同様に図4のフローを用いて説明する。
【0122】
本実施例では、デバイスa200A、デバイスb200B、デバイスc200Cおよび、デバイスe200Eを同一機種のデバイスとし、デバイスc200Cを選択して、スキャンを実行する場合について説明する。
【0123】
まずはじめに、ユーザは、入力部102を操作してTWAINアプリケーションプログラム109を起動する(ステップS401)。
【0124】
OS108は、デバイスa200A、デバイスb200B、デバイスc200C、デバイスe200E、デバイスサーバa600A、デバイスサーバb600Bからデバイス情報を取得し、メモリ104に格納する(ステップS402)。
【0125】
続いて、データソースマネージャ111は、ステップS402において取得したデバイス情報から同一機種のデバイスがシステム上に接続されているか判断する(ステップS403)。
【0126】
ステップS403において、デバイスa200A、デバイスb200B、デバイスc200Cおよびデバイスe200Eは同一機種のデバイスであるので、判断結果がYesとなり、ステップS404に進む。次に、データソースマネージャ111は、OS108が生成した個体識別情報を取得し、デバイス表示名を生成し(ステップS404)、該当デバイス200の情報(デバイス表示名、個体識別情報)を同一機種デバイス情報テーブルに登録する(ステップS405)。
【0127】
データソースマネージャ111は、同一機種デバイス情報テーブルに登録されたデバイス表示名およびデバイス情報に含まれるデバイス表示名からデバイス一覧を作成し、TWAINアプリケーションプログラム109に送信する(ステップS406)。
【0128】
図11は、デバイスa200A〜デバイスf200Fのデバイス表示名から構成されるデバイス一覧の例示である。
【0129】
このデバイス一覧は、同一機種が接続されているデバイス(デバイスa200A、デバイスb200B、デバイスc200Cおよびデバイスe200E)については、同一機種デバイス情報テーブルに登録されたデバイス表示名(CIS−100−1、CIS−100−2、CIS−100−3、CIS−100−4)が記述され、同一機種が接続されていないデバイス(デバイスd200D、デバイスf200F)については、デバイス情報に含まれるデバイス表示名(CIS−200、CIS−300)が記述される。
【0130】
TWAINアプリケーションプログラム109は、データソースマネージャ111から受信したデバイス一覧に基づいて、ユーザが、デバイス選択候補の中から使用するデバイス200を選択するためのグラフィカル・ユーザ・インターフェース(GUI)画面を生成し、表示部103に表示する(ステップS407)。
【0131】
このGUI画面には、デバイスa200A〜デバイスf200Fが識別可能に表示される。ユーザは、入力部102を操作して、表示部103に表示されたデバイス選択候補の一覧の中からスキャンを実行するデバイスc200Cを選択する(ステップS408)。このとき、選択されたデバイスc200Cは、それ以外のデバイスと区別されて表示部103に表示される。
【0132】
データソースマネージャ111は、ステップS408の選択結果に基づいて、TWAINアプリケーションプログラム109から選択されたデバイスに関する情報を含むデバイス選択命令を受信し、同一機種デバイス情報テーブルに登録されたデバイス表示名を参照して、選択されたデバイスc200Cと同一機種のデバイスがあるか判断する(ステップS409)。
【0133】
選択されたデバイスc200Cは、デバイスa200A、デバイスb200Bおよびデバイスe200Eと同一機種のデバイスなので、ステップS409の判断結果はYesとなり、ステップS410に進む。そして、データソースマネージャ111は、デバイスa200A、デバイスb200Bおよびデバイスe200EのTWAINデバイスドライバ110をアンロードする(ステップS410)。これによって、デバイスc200Cとの接続だけを有効にし、デバイスa200A、デバイスb200Bおよびデバイスe200Eとの接続を無効にする。
【0134】
デバイスc200CのTWAINデバイスドライバ110は、通信部105を介して、デバイスサーバa600Aと通信を開始し、デバイスc200Cに対して、デバイスサーバa600Aを介してスキャンの実行要求を送信し、スキャンされた画像データを取得する(ステップS411)。なお、デバイスc200Cでスキャンを継続する場合は、ステップS411の処理を繰り返し実行させる。
【0135】
デバイスサーバa600Aを介してデバイスc200Cからスキャン画像データの取得が終了すると、データソースマネージャ111は、デバイスサーバa600Aとの接続を切断して処理を終了する。ここで、ステップS410でアンロードしたデバイスa200A、デバイスb200Bおよびデバイスe200EのTWAINデバイスドライバ110を再びロードする(ステップS412)。
【0136】
これ以降の処理は、実施例1で説明したステップS413〜ステップS415と同様であるため、説明を省略する。
【0137】
なお、ステップS408において、デバイスd200Dまたはデバイスf200Fが選択された場合、上記で説明したステップS409の判断が異なる。
【0138】
デバイスd200Dまたはデバイスf200Fが選択された場合、ステップS409において、同一機種のデバイスが存在しないため、判断結果はNoとなり、ステップS416に進み、ステップS411と同様にデバイスc200Cに対して、スキャンの実行要求を送信し、スキャンされた画像データを取得して、ステップS413に進む。
【0139】
上述したとおり、実施例3のデバイス制御システムによれば、クライアントPC100は、ローカル接続されたデバイス、デバイスサーバを介して接続されたデバイスおよびネットワーク接続されたデバイスから接続形態に応じたデバイス情報を取得し、このデバイス情報からOS108によって生成された個体識別情報に基づいて、各デバイスを識別できるので、接続形態が異なるデバイス200がシステムに混在していても、複数のデバイス200を切り替えて使用することができる。
【0140】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【0141】
実施例1〜実施例3において、デバイス200は、TWAINに対応したデバイスに限らず、ISIS(Image and Scanner Interface Specification)に対応したデバイスであってもよい。
【0142】
実施例1〜実施例3において、データソースマネージャ111は、OS108が生成した個体識別情報を用いずに、OS108が取得したデバイス情報のみでデバイス200を管理・識別してもよい。
【0143】
実施例3において、デバイスサーバ600に同一機種のデバイス200が複数台接続された場合、各デバイスを識別するために、デバイスサーバ600は、デバイス情報に自己のアドレス情報、および/またはデバイス200が接続されたデバイスサーバ600の接続ポート情報を加えたデバイス情報を送信する。デバイスサーバ600の接続ポート情報とは、デバイスサーバ600の接続ポートを識別するための情報である。例えば、デバイスサーバ600の有するUSBポートの番号やIEEE1394ポートの番号などであるが、これらに限定されない。
【0144】
実施例3において、ネットワーク接続されたデバイス200(200E,200F)やデバイスサーバ600(600A,600B)のアドレス情報を追加したデバイス情報を取得すると説明したが、アドレス情報をデバイス情報に追加して1つの情報として取得するだけでなく、それぞれ別個の情報として取得してもよい。
【0145】
実施例3において、ネットワーク接続されたデバイス200(200E,200F)やデバイスサーバ600(600A,600B)からアドレス情報を取得せずに、デバイス200(200C,200D,200E,200F)のデバイス情報だけを取得するようにしてもよい。この場合には、クライアントPC100側でネットワーク接続されたデバイス200(200E,200F)やデバイスサーバ600(600A,600B)のアドレス情報を記憶しておくようにすればよい。
【0146】
実施例3において、TWAINアプリケーションプログラム109によって、デバイス200を選択することを説明したが、実施例2と同様に、カードリーダ400や入力機器を用いて、デバイス200を選択してもよい。
【0147】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【0148】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【0149】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【0150】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【0151】
なお、プログラムコードを供給するため、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CDやDVDに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ROM等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【0152】
100:クライアントPC
101:CPU
102:入力部
103:表示部
104:メモリ
105:通信部
106:ローカルI/F(ローカルインターフェース)
107:外部記憶部
108:OS
109:TWAINアプリケーションプログラム
110:TWAINデバイスドライバ
111:データソースマネージャ
112:内部バス
200(200A,200B,200C,200D,200E,200F):デバイス
300:接続ケーブル
400:カードリーダ
500:ネットワーク
600(600A,600B):デバイスサーバ
601:CPU
602:メモリ
603:通信部
604:ローカルI/F(ローカルインターフェース)
605:外部記憶部
606:内部バス
607:通信制御部
608:デバイス制御部


【特許請求の範囲】
【請求項1】
アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御装置であって、
前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、
前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得手段と、
前記デバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、
前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、
前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、
同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、
前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、
前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、
を備えることを特徴とするデバイス制御装置。
【請求項2】
前記デバイスによる処理が終了後、前記デバイスドライバアンロード手段でアンロードした前記デバイスドライバをロードするデバイスドライバロード手段
をさらに備えることを特徴とする請求項1に記載のデバイス制御装置。
【請求項3】
前記デバイスによる処理が終了後、前記テーブルを初期化するテーブル初期化手段をさらに備えること
を特徴とする請求項1又は請求項2に記載のデバイス制御装置。
【請求項4】
前記デバイスがネットワーク接続されている、または、ネットワーク接続されたデバイスサーバにローカル接続されている場合、
前記デバイス情報取得手段は、前記デバイス情報のみを取得する、もしくは、前記デバイス情報とともに前記デバイスまたは前記デバイスサーバのアドレス情報を取得することを特徴とする請求項1乃至請求項3に記載のデバイス制御装置。
【請求項5】
アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御方法であって、
前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信ステップと、
前記デバイス一覧表示命令受信ステップで前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得ステップと、
前記デバイス情報取得ステップで取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定ステップと、
前記同一機種判定ステップで同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成ステップと、
前記デバイス表示名生成ステップで生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録ステップと、
同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信ステップと、
前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信ステップと、
前記デバイス選択命令受信ステップで受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロードステップと、
を備えることを特徴とするデバイス制御方法。
【請求項6】
前記デバイスによる処理が終了後、前記デバイスドライバアンロードステップでアンロードした前記デバイスドライバをロードするデバイスドライバロードステップ
をさらに備えることを特徴とする請求項5に記載のデバイス制御方法。
【請求項7】
前記デバイスによる処理が終了後、前記テーブルを初期化するテーブル初期化ステップ
をさらに備えることを特徴とする請求項5又は請求項6に記載のデバイス制御方法。
【請求項8】
前記デバイスがネットワーク接続されている、または、ネットワーク接続されたデバイスサーバにローカル接続されている場合、
前記デバイス情報取得ステップでは、前記デバイス情報のみを取得する、もしくは、前記デバイス情報とともに前記デバイスまたは前記デバイスサーバのアドレス情報を取得することを特徴とする請求項5乃至請求項7に記載のデバイス制御方法。
【請求項9】
デバイスと、前記デバイスとローカル接続されたデバイスサーバと、ネットワーク接続された前記デバイスサーバを介して前記デバイスを制御するデバイス制御装置からなるデバイス制御システムであって、
前記デバイスサーバは、
前記デバイスからデバイス情報を取得する第1のデバイス情報取得手段と、
前記第1のデバイス情報取得手段で取得した前記デバイス情報に、前記デバイスサーバ自己のアドレス情報を追加する固有情報追加手段と、
前記第1のデバイス情報取得手段で取得した前記デバイス情報または、前記固有情報追加手段で前記アドレス情報を追加したデバイス情報のいずれかを、前記デバイスのデバイス情報として前記デバイス制御装置へ送信するデバイス情報送信手段と、
を備え、
前記デバイス制御装置は、
前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、
前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、前記デバイスサーバから前記デバイスのデバイス情報を取得する第2のデバイス情報取得手段と、
前記第2のデバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、
前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報から該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、
前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、
同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、
前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、
前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、
を備えることを特徴とするデバイス制御システム。
【請求項10】
前記固有情報追加手段は、前記第1のデバイス情報取得手段で取得した前記デバイス情報に、前記デバイスがローカル接続されたポート情報を追加することを特徴とする請求項9に記載のデバイス制御システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2011−186770(P2011−186770A)
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【出願番号】特願2010−51184(P2010−51184)
【出願日】平成22年3月8日(2010.3.8)
【出願人】(500232640)キヤノンイメージングシステムズ株式会社 (27)
【Fターム(参考)】