(57)【要約】【課題】同一機種のデバイスを複数台接続した場合でも、接続ケーブルの物理的な抜き差しを行なうことなく、各デバイスに対する制御が可能な手段を提供する。【解決手段】デバイス制御装置に同一機種のデバイスが複数接続されている場合、データソースマネージャは、同一機種のデバイス各々の個体識別情報を取得して、個体識別情報から各デバイスのデバイス表示名を生成し、個体識別情報とデバイス表示名を対応付けて、テーブルに登録する。さらに、各デバイスのデバイス表示名からなるデバイス一覧をアプリケーションに送信する。アプリケーションによって同一機種のデバイスが選択された場合、データソースマネージャは、デバイス表示名に基づいてテーブルを参照して選択されたデバイスを特定し、それと同一機種の他のデバイスのデバイスドライバをアンロードする。【選択図】図４
2011186770.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御装置であって、
前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、
前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得手段と、
前記デバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、
前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、
前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、
同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、
前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、
前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、
を備えることを特徴とするデバイス制御装置。
【請求項２】
前記デバイスによる処理が終了後、前記デバイスドライバアンロード手段でアンロードした前記デバイスドライバをロードするデバイスドライバロード手段
をさらに備えることを特徴とする請求項１に記載のデバイス制御装置。
【請求項３】
前記デバイスによる処理が終了後、前記テーブルを初期化するテーブル初期化手段をさらに備えること
を特徴とする請求項１又は請求項２に記載のデバイス制御装置。
【請求項４】
前記デバイスがネットワーク接続されている、または、ネットワーク接続されたデバイスサーバにローカル接続されている場合、
前記デバイス情報取得手段は、前記デバイス情報のみを取得する、もしくは、前記デバイス情報とともに前記デバイスまたは前記デバイスサーバのアドレス情報を取得することを特徴とする請求項１乃至請求項３に記載のデバイス制御装置。
【請求項５】
アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御方法であって、
前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信ステップと、
前記デバイス一覧表示命令受信ステップで前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得ステップと、
前記デバイス情報取得ステップで取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定ステップと、
前記同一機種判定ステップで同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成ステップと、
前記デバイス表示名生成ステップで生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録ステップと、
同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信ステップと、
前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信ステップと、
前記デバイス選択命令受信ステップで受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロードステップと、
を備えることを特徴とするデバイス制御方法。
【請求項６】
前記デバイスによる処理が終了後、前記デバイスドライバアンロードステップでアンロードした前記デバイスドライバをロードするデバイスドライバロードステップ
をさらに備えることを特徴とする請求項５に記載のデバイス制御方法。
【請求項７】
前記デバイスによる処理が終了後、前記テーブルを初期化するテーブル初期化ステップ
をさらに備えることを特徴とする請求項５又は請求項６に記載のデバイス制御方法。
【請求項８】
前記デバイスがネットワーク接続されている、または、ネットワーク接続されたデバイスサーバにローカル接続されている場合、
前記デバイス情報取得ステップでは、前記デバイス情報のみを取得する、もしくは、前記デバイス情報とともに前記デバイスまたは前記デバイスサーバのアドレス情報を取得することを特徴とする請求項５乃至請求項７に記載のデバイス制御方法。
【請求項９】
デバイスと、前記デバイスとローカル接続されたデバイスサーバと、ネットワーク接続された前記デバイスサーバを介して前記デバイスを制御するデバイス制御装置からなるデバイス制御システムであって、
前記デバイスサーバは、
前記デバイスからデバイス情報を取得する第１のデバイス情報取得手段と、
前記第１のデバイス情報取得手段で取得した前記デバイス情報に、前記デバイスサーバ自己のアドレス情報を追加する固有情報追加手段と、
前記第１のデバイス情報取得手段で取得した前記デバイス情報または、前記固有情報追加手段で前記アドレス情報を追加したデバイス情報のいずれかを、前記デバイスのデバイス情報として前記デバイス制御装置へ送信するデバイス情報送信手段と、
を備え、
前記デバイス制御装置は、
前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、
前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、前記デバイスサーバから前記デバイスのデバイス情報を取得する第２のデバイス情報取得手段と、
前記第２のデバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、
前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報から該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、
前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、
同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、
前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、
前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、
を備えることを特徴とするデバイス制御システム。
【請求項１０】
前記固有情報追加手段は、前記第１のデバイス情報取得手段で取得した前記デバイス情報に、前記デバイスがローカル接続されたポート情報を追加することを特徴とする請求項９に記載のデバイス制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスを制御する機能を備えた装置、方法、及びデバイス制御システムに関するものである。
【背景技術】
【０００２】
クライアントＰＣに接続して使用するイメージングデバイス（スキャナやホワイトボードなど）は、ＴＷＡＩＮ規格で標準化され、このＴＷＡＩＮ規格のデバイスは、同一ＰＣからの複数台制御が考慮されていないため、シリアル番号など、同一機器／別個体を識別するための情報がデバイス上に記述されていないことが多い。よって、オペレーティングシステム（以下、ＯＳ）のＳＴＩ（Ｓｔｉｌｌ  Ｉｍａｇｅ）サービスの制限により、同機種のデバイスを複数台接続しても、デバイスの同一機器／別個体を識別できず、そのうちの１台のみしか使用（認識）できなかった。
【０００３】
かかる問題を解決するために、ＵＳＢデバイスが、ＵＳＢホストからのＵＳＢデバイス情報の要求コマンドを受信したことに応じて、記憶手段に記憶されたベンダーＩＤと、ディップスイッチのような任意桁数のコードを手動で設定可能なコード設定手段によって設定されたコードから生成されたＵＳＢデバイスのプロダクトＩＤとをＵＳＢホストへ送信するＵＳＢシステムが開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１３４０９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
確かに、特許文献１のＵＳＢシステムは、ＵＳＢデバイスにデバイスの種類を特定・識別するプロダクトＩＤを生成し、ＵＳＢホスト側に送信することで、ＵＳＢホストは、同機種のデバイスを複数台接続しても、デバイスの同一機器／別個体を識別できるようになる。
【０００６】
しかしながら、特許文献１のＵＳＢシステムは、ＵＳＢデバイスに、デバイスの種類を特定・識別するプロダクトＩＤを生成するためのコード設定手段（ディップスイッチ）を備える必要があり、さらに、このコード設定手段を手動で操作しなければならないという課題がある。
【０００７】
また、同機種のデバイスを複数台接続しても、ＯＳ上ではデバイスの同一機器／別個体を識別できても、ＴＷＡＩＮ規格対応のアプリケーション上では、デバイスの同一機器／別個体を識別できないため、同機種のデバイスを識別可能に表示できず、デバイスを切り替えて使用できないという課題もある。
【０００８】
さらに、特許文献１のＵＳＢシステムでは、デバイスをＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）のようなネットワークに接続して使用する場合について考慮されていないため、このようなデバイスを複数台ネットワーク接続したときに、いかにしてＴＷＡＩＮ規格対応デバイスの同一機器／別個体を識別するかも課題である。
【０００９】
また、ＴＷＡＩＮ規格対応のデバイスを使用するため、各デバイスベンダーから提供されるＴＷＡＩＮ規格対応のアプリケーション、および、ＴＷＡＩＮ規格対応のデバイスドライバをカスタマイズする必要もある。
【００１０】
上記の課題を鑑みて、本発明は、クライアントＰＣにおいて、同一機種のデバイスが複数台接続された場合でも、同一機種のデバイス毎に個体識別情報を取得・管理し、同一機種のデバイス各々のデバイス表示名を生成して、各々の同一機種のデバイスとの接続の有効・無効を制御することで、ＴＷＡＩＮ規格対応のアプリケーションを使用する場合でも、接続ケーブルの物理的な抜き差しやディップスイッチなどによる設定を行なうことなく、複数のデバイスを切り替えて使用できるように制御することを目的とする。
【００１１】
また、同一機種のデバイスを複数台、デバイスサーバを介してネットワーク接続した場合でも、デバイスサーバにおいてユニークな情報をデバイスに追加付与することによって、クライアントＰＣのＴＷＡＩＮ規格対応のアプリケーションから各々のデバイスを別個体として識別可能とし、複数のデバイスを切り替えて使用できるように制御することを目的とする。
【００１２】
また、クライアントＰＣのデータソースマネージャのみをカスタマイズ（変更）することで、各デバイスベンダー提供のＴＷＡＩＮ規格対応アプリケーションおよびＴＷＡＩＮ規格対応デバイスドライバを変更することなく、ＴＷＡＩＮ規格対応アプリケーション上でも複数の同一機種のデバイスを同一機器／別個体を識別し、使用できるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
上記の課題を解決するために、請求項１に記載のデバイス制御装置は、アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御装置であって、前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得手段と、前記デバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、を備えることを特徴とする。
【００１４】
また、上記の課題を解決するために、請求項５に記載のデバイス制御方法は、アプリケーションとデバイスとの間のインターフェースを制御することにより、前記アプリケーションを介して当該デバイスを動作させるデバイス制御方法であって、前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信ステップと、前記デバイス一覧表示命令受信ステップで前記デバイス一覧表示命令を受信したことに応じて、現在接続されているデバイスからデバイス情報を取得するデバイス情報取得ステップと、前記デバイス情報取得ステップで取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定ステップと、前記同一機種判定ステップで同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報に該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成ステップと、前記デバイス表示名生成ステップで生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録ステップと、同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信ステップと、前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信ステップと、前記デバイス選択命令受信ステップで受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロードステップと、を備えることを特徴とする。
【００１５】
また、上記の課題を解決するために、請求項９に記載のデバイス制御システムは、デバイスと、前記デバイスとローカル接続されたデバイスサーバと、ネットワーク接続された前記デバイスサーバを介して前記デバイスを制御するデバイス制御装置からなるデバイス制御システムであって、前記デバイスサーバは、前記デバイスからデバイス情報を取得する第１のデバイス情報取得手段と、前記第１のデバイス情報取得手段で取得した前記デバイス情報に、前記デバイスサーバ自己のアドレス情報を追加する固有情報追加手段と、前記第１のデバイス情報取得手段で取得した前記デバイス情報または、前記固有情報追加手段で前記アドレス情報を追加したデバイス情報のいずれかを、前記デバイスのデバイス情報として前記デバイス制御装置へ送信するデバイス情報送信手段と、を備え、前記デバイス制御装置は、前記アプリケーションからデバイス一覧表示命令を受信するデバイス一覧表示命令受信手段と、前記デバイス一覧表示命令受信手段で前記デバイス一覧表示命令を受信したことに応じて、前記デバイスサーバから前記デバイスのデバイス情報を取得する第２のデバイス情報取得手段と、前記第２のデバイス情報取得手段で取得した前記デバイス情報によって、同一機種のデバイスが接続されているかどうかを判定する同一機種判定手段と、前記同一機種判定手段で同一機種のデバイスが接続されていると判定した場合、当該同一機種のデバイス各々の個体識別情報を取得し、前記取得した個体識別情報から該当するデバイスを識別可能にするためのデバイス表示名を生成するデバイス表示名生成手段と、前記デバイス表示名生成手段で生成した前記デバイス表示名を前記個体識別情報と対応付けてテーブルへ登録するテーブル登録手段と、同一機種が接続されているデバイスについては前記テーブルに登録されたデバイス表示名を記述し、同一機種が接続されていないデバイスについては前記デバイス情報に含まれるデバイス表示名を記述したデバイス一覧を作成し、当該デバイス一覧を前記アプリケーションに対して送信するデバイス一覧送信手段と、前記アプリケーションからデバイス選択命令を受信するデバイス選択命令受信手段と、前記デバイス選択命令受信手段で受信した前記デバイス選択命令に、前記テーブルに登録されているデバイス表示名が含まれる場合、当該デバイス表示名に一致するデバイス以外の同一機種のデバイスのデバイスドライバをアンロードするデバイスドライバアンロード手段と、を備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、クライアントＰＣにおいて、同一機種のデバイスが複数台接続された場合でも、同一機種のデバイス毎に個体識別情報を取得・管理し、同一機種のデバイス各々のデバイス表示名を生成して、各同一機種デバイスとの接続の有効・無効を制御することで、ＴＷＡＩＮ規格対応のアプリケーションを使用する場合でも、接続ケーブルの物理的な抜き差しやディップスイッチなどによる設定を行なうことなく、複数のデバイスを切り替えて使用できるようになる。
【００１７】
また、本発明によれば、同一機種のデバイスを複数台、デバイスサーバを介してネットワーク接続した場合でも、デバイスサーバにおいてユニークな情報をデバイスに追加付与することによって、クライアントＰＣのＴＷＡＩＮ規格対応のアプリケーションから各々のデバイスを別個体として識別可能とし、複数のデバイスを切り替えて使用できるようになる。
【００１８】
また、クライアントＰＣのデータソースマネージャのみをカスタマイズ（変更）することで、各種デバイスベンダー提供のＴＷＡＩＮ規格対応アプリケーションおよびＴＷＡＩＮ規格対応デバイスドライバを変更することなく、ＴＷＡＩＮ規格対応アプリケーション上でも複数の同一機種のデバイスを同一機器／別個体を識別し、使用できるようになる。
【図面の簡単な説明】
【００１９】
【図１】実施例１に係るデバイス制御システムの概略構成を示す図である。
【図２】クライアントＰＣ１００の内部構成を例示するブロック図である。
【図３】実施例１に係るクライアントＰＣ１００のデータソースマネージャ１１１に記憶された同一機種デバイス情報テーブルの一例である。
【図４】クライアントＰＣ１００におけるスキャン実行時の制御について説明するフローチャートである。
【図５】実施例２に係るデバイス制御システムの概略構成を示す図である。
【図６】実施例２に係るクライアントＰＣ１００のデータソースマネージャ１１１に記憶されたユーザ情報テーブルの一例である。
【図７】実施例３に係るデバイス制御システムの概略構成を示す図である。
【図８】実施例３に係るデバイスサーバ６００の内部構成を例示するブロック図である。
【図９】実施例３に係るデバイスサーバ６００におけるデバイス２００接続時の制御について説明するフローチャートである。
【図１０】実施例３に係るクライアントＰＣ１００のデータソースマネージャ１１１に記憶された同一機種デバイス情報テーブルの一例である。
【図１１】実施例３に係るデバイス一覧を例示する図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、詳細に説明する。
【実施例１】
【００２１】
実施例１に係る実施の形態を説明する。
【００２２】
＜１．デバイス制御システムの構成＞
図１は、本発明を実現するためのデバイス制御システムの概略構成であり、クライアントＰＣ１００、デバイス２００（２００Ａ，２００Ｂ）から構成される。
【００２３】
このデバイス制御システムでは、クライアントＰＣ１００とデバイス２００をＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やＩＥＥＥ１３９４などのインターフェースに準拠した接続ケーブル３００で接続する。
【００２４】
次に、図１のデバイス制御システムを構成する各装置について順次説明する。
【００２５】
＜２．クライアントＰＣ１００の構成＞
はじめに、クライアントＰＣ（デバイス制御装置）１００のハードウェア構成およびソフトウェア構成について図２を用いて説明する。
【００２６】
クライアントＰＣ１００は、ＣＰＵ１０１、入力部１０２、表示部１０３、メモリ１０４、通信部１０５、ローカルＩ／Ｆ１０６、外部記憶部１０７などから構成されており、これらが内部バス１１２で接続されている。
【００２７】
ＣＰＵ１０１は、中央処理制御部であり、メモリ１０４や外部記憶部１０７に格納された所定のプログラムを実行することによってクライアントＰＣ１００を全体的に制御する。
【００２８】
入力部１０２は、各種入力、指示操作などを行なうための操作部であり、キーボードやマウスなどで構成される。
【００２９】
表示部１０３は、各種画面などを表示するディスプレイであり、クライアントＰＣ１００に内蔵もしくは外部接続される。
【００３０】
メモリ１０４は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される記憶領域であり、所定のプログラムやデータを格納する。
【００３１】
通信部１０５は、Ｅｔｈｅｒｎｅｔ（登録商標）のような有線ネットワーク、若しくは、ＩＥＥＥ８０２．１１ａやＩＥＥＥ８０２．１１ｇのような無線ネットワークなど、ネットワークに対応したネットワークパケットによる送受信や通信制御を行うためのインターフェースであり、外部とのデータ通信を行うことで、クライアントＰＣ１００からデータを送受信することが可能となる。
【００３２】
ローカルＩ／Ｆ１０６は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）仕様に準拠した送受信インターフェースであって、デバイス２００との接続などに利用される。
【００３３】
外部記憶部１０７には、ＯＳ１０８、ＴＷＡＩＮアプリケーションプログラム１０９、ＴＷＡＩＮデバイスドライバ１１０、データソースマネージャ１１１などの各種ソフトウェアプログラムを記憶する。
【００３４】
外部記憶部１０７に格納されたこれらのソフトウェアプログラムは、ＣＰＵ１０１の制御に従い、メモリ１０４上に読み出されて実行される。
【００３５】
ＯＳ１０８は、オペレーティングシステムである。本発明においては、ローカルＩ／Ｆ１０６を介してデバイス２００が接続されたことを検知すると、接続されたデバイス２００のデバイス情報を取得する機能部と、デバイス２００のデバイス情報からデバイスを識別するための個体識別情報を生成する機能部としての役割を担う点が特徴である。
【００３６】
デバイス情報は、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーＩＤ（ＶＩＤ）、機種を識別するために機種毎に割り当てられたプロダクトＩＤ（ＰＩＤ）、機器の個体を識別するために機器毎に割り当てられたシリアル番号などから構成される。
【００３７】
個体識別情報は、ベンダーＩＤ、プロダクトＩＤおよびクライアントＰＣ１００の接続ポート情報から構成されるインスタンスＩＤや、ＯＳ１０８のレジストリに記憶されているデバイスＩＤなどであるが、これらに限定されるものではない。さらに、これらを組み合わせたものでもよい。
【００３８】
なお、クライアントＰＣ１００の接続ポート情報とは、クライアントＰＣ１００の接続ポートを識別するための情報である。例えば、クライアントＰＣ１００の有するＵＳＢポートの番号やＩＥＥＥ１３９４ポートの番号などであるが、これらに限定されない。
【００３９】
また、個体識別情報のうち、インスタンスＩＤは、デバイス２００のベンダーＩＤおよびプロダクトＩＤ、そして、クライアントＰＣ１００の接続ポート情報から構成されると説明したが、これに限定されず、ベンダーＩＤ、プロダクトＩＤ、および、シリアル番号から構成されてもよい。
【００４０】
では、ＴＷＡＩＮアプリケーションプログラム１０９、ＴＷＡＩＮデバイスドライバ１１０、データソースマネージャ１１１の詳細について説明する。
【００４１】
ＴＷＡＩＮアプリケーションプログラム１０９は、ＴＷＡＩＮ規格に対応したアプリケーションプログラムであり、ＯＳ１０８上で動作する。ユーザによって入力部１０２を介して取得したデバイス２００の選択情報やスキャンなどのサービス実行時の設定情報を設定することができ、また、デバイス２００によるサービス処理を制御し、取得した画像データを保存、編集等することができるプログラムである。
【００４２】
ＴＷＡＩＮデバイスドライバ１１０は、ローカルＩ／Ｆ１０６を介してデバイス２００に対して送信する命令やデータを生成し、デバイス２００を制御してデータを取得するソフトウェアである。前述のとおり、ＯＳ１０８によってデバイス２００の接続が検知された場合、各デバイス２００のＴＷＡＩＮデバイスドライバ１１０が個々にロードされる。
【００４３】
データソースマネージャ１１１は、ＴＷＡＩＮデバイスドライバ１１０とＴＷＡＩＮアプリケーションプログラム１０９との間でデータの受け渡しを行うソフトウェアである。この他に、ＯＳ１０８からクライアントＰＣ１００に現在接続されているデバイス２００のデバイス情報を取得する機能や、デバイス表示名を記述したデバイス２００に関する情報（以下、デバイス一覧）を作成し、ＴＷＡＩＮアプリケーションプログラム１０９に対して送信する機能も備えている。
【００４４】
＜３．デバイス２００の構成＞
次に、デバイス２００の構成について説明する。デバイス２００（デバイス２００Ａ，デバイス２００Ｂ）は、ＴＷＡＩＮ規格に対応し、ローカルインターフェースを持つ汎用的な入出力装置である。例えば、スキャナなどの単機能周辺装置（ＳＦＰ：Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）、あるいは、スキャナ機能の他にプリント機能やコピー機能、ストレージ機能などを兼ね備えた多機能周辺機器（ＭＦＰ：Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）である。ただし、これらに限定されるものでなく、別のデバイスであってもよい。
【００４５】
＜４．データソースマネージャ１１１の詳細＞
続いて、本発明の特徴であるクライアントＰＣ１００のデータソースマネージャ１１１について詳細に説明する。
【００４６】
データソースマネージャ１１１は、ＴＷＡＩＮアプリケーションプログラム１０９からデバイス一覧表示命令を受信すると、デバイス２００から取得したデバイス情報によって、同一機種のデバイスが接続されているか判断する。そして、同一機種のデバイス２００が接続されている場合、同一機種デバイス各々の個体識別情報をＯＳ１０８から取得し、この個体識別情報から同一機種デバイス各々を識別可能なデバイス表示名を生成し、デバイス表示名を個体識別情報と対応付けて同一機種デバイス情報テーブルへ登録する。
【００４７】
なお、同一機種デバイス情報テーブルは、同一機種のデバイスに関する情報が登録されるテーブルであり、少なくともデータソースマネージャ１１１がＯＳ１０８から取得した個体識別情報と、同一機種のデバイス各々を識別可能なデバイス表示名とを対応付けて登録される。そして、ＴＷＡＩＮアプリケーションプログラム１０９によって選択されたデバイス２００と同一機種のデバイス２００が接続されているかどうかを判断する際に参照される。
【００４８】
図３は、デバイスの機種名、デバイス表示名、インスタンスＩＤから構成される同一機種デバイス情報テーブルの例示である。この例では、同一機種のデバイスであるデバイスａ２００Ａとデバイスｂ２００Ｂの１機種のみの情報しかない場合を示している。なお、デバイスａ２００Ａおよびデバイスｂ２００Ｂと異なる機種で同一機種のデバイスが接続されている場合には、これらの情報もテーブルに登録される。
【００４９】
インスタンスＩＤは、ＯＳ１０８から取得したデバイス情報に記述されているベンダーＩＤ、プロダクトＩＤ、接続ポート情報から構成される。デバイスａ２００Ａの場合、ベンダーＩＤは「ＶＩＤ＿１２３４」、プロダクトＩＤは「ＰＩＤ＿１２３４」、接続ポート情報は「１＆１１１１１１１＆１＆１」である。
【００５０】
この場合、デバイスａ２００Ａの接続ポート情報「１＆１１１１１１１＆１＆１」とデバイスｂ２００Ｂの接続ポート情報「１＆１１１１１１１＆１＆２」が異なるので、デバイスａ２００Ａとデバイスｂ２００Ｂを識別できる。
【００５１】
デバイス表示名は、データソースマネージャ１１１によって、同一機種のデバイス各々を識別可能に表示するため、ＯＳ１０８から取得した個体識別情報に基づいて生成される。図３で例示したデバイス表示名は、デバイスの機種名と同一機種のデバイスを個々に区別するための通し番号から構成され、デバイスａ２００Ａのデバイス表示名は「ＣＩＳ−１００−１」であり、デバイスｂ２００Ｂのデバイス表示名は「ＣＩＳ−１００−２」である。
【００５２】
なお、図３では、個体識別情報と対応付ける情報として、データソースマネージャ１１１によって生成されたデバイス表示名を例示しているが、これに限定されず、デバイス固有の情報であるＭＡＣアドレスやその他の情報でもよく、デバイスを一意に特定（識別）できるものであればよい。
【００５３】
また、データソースマネージャ１１１は、クライアントＰＣ１００に接続されたデバイスのデバイス一覧を作成し、ＴＷＡＩＮアプリケーションプログラム１０９に対して送信する。
【００５４】
このデバイス一覧は、同一機種が接続されているデバイスについては、同一機種デバイス情報テーブルに登録されたデバイス表示名が記述され、同一機種が接続されていないデバイスについては、デバイス情報に含まれるデバイス表示名が記述される。
【００５５】
さらに、データソースマネージャ１１１は、ユーザが入力部１０２を操作してＴＷＡＩＮアプリケーションプログラム１０９で選択したデバイス２００のデバイス選択命令を受信すると、同一機種デバイス情報テーブルを参照し、受信したデバイス選択命令に含まれるデバイス表示名が同一機種デバイス情報テーブルに登録されている場合、選択されたデバイス２００との接続を有効にする。
【００５６】
具体的には、デバイス２００の接続が検知されたときにロードされたＴＷＡＩＮデバイスドライバ１１０のうち、同一機種が存在するデバイス２００がＴＷＡＩＮアプリケーションプログラム１０９によって選択された場合、選択されたデバイス２００との接続のみを有効にし、それ以外の同一機種のデバイス２００のＴＷＡＩＮデバイスドライバ１１０をアンロードすることで、それ以外の同一機種のデバイス２００との接続を無効にする。そして、接続を有効にした同一機種のデバイス２００とのデータ送受信が終了すると、アンロードしたＴＷＡＩＮデバイスドライバ１１０を再びロードする。
【００５７】
＜５．クライアントＰＣ１００におけるスキャン実行時の処理＞
ここからは、クライアントＰＣ１００におけるスキャン実行時の制御について図４のフローを用いて説明する。
【００５８】
本実施例は、クライアントＰＣ１００に接続されるデバイスａ２００Ａとデバイスｂ２００Ｂを同一機種のデバイスとし、デバイスａ２００Ａを選択して、スキャンを実行する場合について説明する。
【００５９】
まずはじめに、ユーザは、入力部１０２を操作してＴＷＡＩＮアプリケーションプログラム１０９を起動する（ステップＳ４０１）。
【００６０】
ＯＳ１０８は、デバイスａ２００Ａとデバイスｂ２００ＢからローカルＩ／Ｆ１０６を介してデバイス２００を識別するためのデバイス情報を取得し、メモリ１０４に格納する（ステップＳ４０２）。
【００６１】
続いて、データソースマネージャ１１１は、ステップＳ４０２において取得したデバイス情報からクライアントＰＣ１００に同一機種のデバイス２００が接続されているか判断する（ステップＳ４０３）。
【００６２】
ステップＳ４０３において、デバイスａ２００Ａとデバイスｂ２００Ｂは同一機種のデバイスであるため（ステップＳ４０３でＹｅｓ）、ステップＳ４０４に進む。次に、データソースマネージャ１１１は、ＯＳ１０８が生成した個体識別情報を取得し、デバイス表示名を生成し（ステップＳ４０４）、該当デバイス２００の情報（デバイス表示名、個体識別情報）を同一機種デバイス情報テーブルに登録する（ステップＳ４０５）。
【００６３】
データソースマネージャ１１１は、同一機種デバイス情報テーブルに登録されたデバイス表示名からデバイス一覧を作成し、ＴＷＡＩＮアプリケーションプログラム１０９に送信する（ステップＳ４０６）。
【００６４】
ＴＷＡＩＮアプリケーションプログラム１０９は、データソースマネージャ１１１から受信したデバイス一覧に基づいて、ユーザが、デバイス選択候補の中から使用するデバイス２００を選択するためのグラフィカル・ユーザ・インターフェース（ＧＵＩ）画面を生成し、表示部１０３に表示する（ステップＳ４０７）。
【００６５】
このＧＵＩ画面には、クライアントＰＣ１００に接続されるデバイスａ２００Ａ、デバイスｂ２００Ｂが識別可能に表示される。ユーザは、入力部１０２を操作して、表示部１０３に表示されたデバイス選択候補の一覧の中からスキャンを実行するデバイスａ２００Ａを選択する（ステップＳ４０８）。このとき、選択されたデバイスａ２００Ａは、それ以外のデバイス（デバイスｂ２００Ｂ）と区別されて表示部１０３に表示される。
【００６６】
データソースマネージャ１１１は、ステップＳ４０８の選択結果に基づいて、ＴＷＡＩＮアプリケーションプログラム１０９から選択されたデバイスに関する情報を含むデバイス選択命令を受信すると、同一機種デバイス情報テーブルに登録されたデバイス表示名を参照して、選択されたデバイスａ２００Ａと同一機種のデバイスがあるか判断する（ステップＳ４０９）。
【００６７】
選択されたデバイスａ２００Ａとデバイスｂ２００Ｂは同一機種のデバイスなので、ステップＳ４０９の判断結果はＹｅｓとなり、ステップＳ４１０に進む。そして、データソースマネージャ１１１は、デバイスｂ２００ＢのＴＷＡＩＮデバイスドライバ１１０をアンロードする（ステップＳ４１０）。これによって、デバイスａ２００Ａとの接続だけを有効にし、デバイスｂ２００Ｂとの接続を無効にする。
【００６８】
デバイスａ２００ＡのＴＷＡＩＮデバイスドライバ１１０は、デバイスａ２００Ａに対して、スキャンの実行要求を送信し、スキャンされた画像データを取得する（ステップＳ４１１）。なお、デバイスａ２００Ａでスキャンを継続する場合は、ステップＳ４１１の処理を繰り返し実行させる。
【００６９】
デバイスａ２００Ａからスキャン画像データの取得が終了すると、データソースマネージャ１１１は、デバイスａ２００Ａとの接続を切断して処理を終了する。ここで、ステップＳ４１０でアンロードしたデバイスｂ２００ＢのＴＷＡＩＮデバイスドライバ１１０を再びロードする（ステップＳ４１２）。
【００７０】
デバイスａ２００Ａによるスキャンの終了後、ユーザによって入力部１０２を操作してＴＷＡＩＮアプリケーションプログラム１０９の終了が選択されると（ステップＳ４１３）、データソースマネージャ１１１は、同一機種デバイス情報テーブル内に情報（データ）があるかどうか判断する（ステップＳ４１４）。同一機種デバイス情報テーブル内に情報がある場合（ステップＳ４１４でＹｅｓ）、同一機種デバイス情報テーブルを初期化し（ステップＳ４１５）、処理を終了する。
【００７１】
ここでは、デバイスａ２００Ａとデバイスｂ２００Ｂが同一機種のデバイスなので、同一機種デバイス情報テーブル内に情報が登録されているため、同一機種デバイス情報テーブルの初期化処理を行なう。
【００７２】
ステップＳ４１５における同一機種デバイス情報テーブルの初期化処理は、同一機種デバイス情報テーブルに登録された情報（デバイス表示名や個体識別情報）を全て削除することである。また、同一機種デバイス情報テーブル内にデバイスａ２００Ａとデバイスｂ２００Ｂ以外の別機種の情報があるときは、その情報も併せて削除する。
【００７３】
なお、ステップＳ４１２の処理実行後、ＴＷＡＩＮアプリケーションプログラム１０９を終了させずに選択されたデバイスとは別のデバイスでスキャンを実行する場合は、再び、ステップＳ４０８に戻り、ステップＳ４０８からステップＳ４１２の処理を繰り返すことで実現できる。
【００７４】
なお、デバイスａ２００Ａとデバイスｂ２００Ｂが同一機種でない場合、上記で説明したステップＳ４０３およびステップＳ４０９の判断結果が夫々異なるので、この部分について説明する。
【００７５】
ステップＳ４０３において、データソースマネージャ１１１では、同一機種のデバイス２００が接続されていないと判断され、判断結果はＮｏとなり、ステップＳ４０６に進む。
【００７６】
ステップＳ４０９において、選択されたデバイスａ２００Ａと同一機種のデバイスが存在しないため、判断結果はＮｏとなり、ステップＳ４１６に進み、ステップＳ４１１と同様にデバイスａ２００Ａに対して、スキャンの実行要求を送信し、スキャンされた画像データを取得して、ステップＳ４１３に進む。
【００７７】
なお、本フローでは、同一機種デバイス情報テーブルの初期化処理を、ＴＷＡＩＮアプリケーションプログラム１０９の終了後に行なわず、選択されたデバイスａ２００Ａでスキャンが終了した際に、デバイスｂ２００ＢのＴＷＡＩＮデバイスドライバ１１０を再びロードするのと同時またはその直後に行ってもよい。
【００７８】
上述したように、実施例１のデバイス制御システムによれば、データソースマネージャ１１１によって、ＴＷＡＩＮアプリケーションプログラム１０９で選択されたデバイス２００との接続のみを有効にし、選択されたデバイス２００以外の同一機種のデバイス２００のＴＷＡＩＮデバイスドライバ１１０をアンロードすることで、インターフェースの物理的な抜き差しを行なうことなく、複数のデバイス２００を切り替えて使用することができる。
【００７９】
また、上述のＧＵＩ画面を用いて、表示部１０３に表示されたデバイス選択候補の中から使用するデバイス２００を選択する方法以外にも、デバイス２００に内蔵または外部接続された入力機器（赤外線センサ、プッシュスイッチなど）によって、デバイス２００の状態変化を検知し、クライアントＰＣ１００に状態変化の旨を通知することで、クライアントＰＣ１００は、状態変化の通知を契機に、状態変化が発生したデバイス２００を選択してもよい。
【実施例２】
【００８０】
実施例２に係る実施の形態を説明する。
【００８１】
＜６．カードリーダを用いたデバイス２００の選択＞
実施例２では、クライアントＰＣ１００に接続されたカードリーダ４００にカードをかざすことで、使用するデバイス２００を選択する実施形態について説明する。
【００８２】
なお、図２〜図４を用いて説明した実施例１の構成やフローは、実施例２でも同様に適用可能であるので、詳細な説明を省略し、相違点についてのみ説明する。
【００８３】
図５は、実施例２に係るデバイス制御システムの概略構成であり、クライアントＰＣ１００、デバイス２００（２００Ａ，２００Ｂ）、カードリーダ４００から構成される。
【００８４】
カードリーダ４００は、接続ケーブル３００を介してクライアントＰＣ１００に接続されるものであり、カードに記録されたカードＩＤやユーザＩＤなどのユーザ情報を取得する機能を備える。なお、カードリーダ４００は、クライアントＰＣ１００に内蔵されるように構成しても良い。
【００８５】
本実施例では、カードをカードリーダ４００に近づける（かざす）と、両者の間で通信する非接触ＩＣカードの技術を用いて説明する。例えば、この非接触ＩＣカード技術としてＦｅｌｉＣａ（登録商標）がある。なお、この技術に限定されるものではなく、国際標準規格として制定されている密着型（ＩＳＯ／ＩＥＣ１０５３６；通信距離２ｍｍ以下）や近接型（ＩＳＯ／ＩＥＣ１４４４３；通信距離１０ｃｍ以下）など他の非接触方式、又は、接触方式（ＩＳＯ／ＩＥＣ７８１６など）を利用した技術であっても良い。カードリーダ４００を介さず、カードとクライアントＰＣ１００を直接接続して情報の授受を行う形態にすることも可能である。
【００８６】
また、クライアントＰＣ１００のデータソースマネージャ１１１は、図３で示す同一機種デバイス情報テーブルの他に、ユーザ情報テーブルをさらに記憶する。ユーザ情報テーブルは、図６に例示するように、ユーザ情報とユーザ別の使用可能（接続可能）デバイスの対応関係を示すテーブルである。なお、図３に示した同一機種デバイス情報テーブルの情報とユーザ情報テーブルの情報を１つのテーブルとして記憶してもよい。このようなユーザ情報テーブルによって、ユーザとそのユーザが使用可能なデバイス２００が対応付けされる。
【００８７】
本実施例では、クライアントＰＣ１００に接続されるデバイスａ２００Ａとデバイスｂ２００Ｂを同一機種のデバイスとし、ユーザＡがカードリーダ４００にカードを近づける（かざす）ことによってデバイスａ２００Ａを選択し、スキャンを実行する場合について説明する。
【００８８】
なお、クライアントＰＣ１００では、カードリーダ４００が接続されると、ＯＳ１０８によって、カードリーダ４００を制御するデバイスドライバ（不図示）とアプリケーションプログラム（不図示）が起動されるものとする。
【００８９】
では、実施例２に係るクライアントＰＣ１００におけるスキャン実行時の制御について図４のフローを用いて説明する。
【００９０】
本実施例において、ステップＳ４０１〜ステップＳ４０７の処理は、実施例１と同様であるため、説明を省略する。
【００９１】
ステップＳ４０８において、カードリーダ４００にユーザＡに対応付けられるカードがかざされたことが検知されると、デバイスａ２００Ａが選択される（ステップＳ４０８）。
【００９２】
具体的には、カードリーダ４００にユーザＡに対応づけられるカードがかざされると、カードリーダ４００を制御するデバイスドライバ（不図示）は、カードからユーザＡのユーザ情報を取得し、データソースマネージャ１１１に送信する。データソースマネージャ１１１は、デバイスドライバから受信したユーザＡのユーザ情報を基に、ユーザ情報テーブルと同一機種デバイス情報テーブルを参照して、ユーザＡが使用可能なデバイスａ２００Ａを特定することで、デバイスの選択が完了する。
【００９３】
これ以降の処理は、実施例１のステップＳ４０９〜ステップＳ４１６と同様であるので、説明を省略する。以上で実施例２に係るスキャンの実行が終了する。
【００９４】
上述したとおり、実施例２のデバイス制御システムによれば、クライアントＰＣ１００に接続されたカードリーダ４００にユーザがカードをかざすことで、ユーザが使用するデバイス２００が選択されるので、インターフェースの物理的な抜き差しを行なうことなく、複数のデバイス２００を切り替えて使用することができる。
【実施例３】
【００９５】
実施例３に係る実施の形態を説明する。
【００９６】
＜７．実施例３に係るデバイス制御システムの構成＞
前述の実施例１と実施例２では、クライアントＰＣ１００にローカル接続されたデバイス２００を制御する形態について説明したが、実施例３では、クライアントＰＣ１００にローカル接続されたデバイス２００、ネットワーク接続されたデバイス２００、および、ネットワーク接続されたデバイスサーバにローカル接続されたデバイス２００が混在するシステムにおいて、クライアントＰＣ１００から各デバイスを制御する実施形態について説明する。
【００９７】
なお、図２〜図４を用いて説明した実施例１の構成やフローは、実施例３でも同様に適用可能であるので、詳細な説明を省略し、相違点についてのみ説明する。
【００９８】
図９は、実施例３に係るデバイス制御システムの概略構成であり、クライアントＰＣ１００、デバイス２００（２００Ａ，２００Ｂ，２００Ｃ，２００Ｄ，２００Ｅ，２００Ｆ）、デバイスサーバ６００（６００Ａ，６００Ｂ）から構成される。なお、これ以降は、デバイスａ２００Ａ、デバイスｂ２００Ｂ、デバイスｃ２００Ｃおよびデバイスｅ２００Ｅを同一機種のデバイスとし、デバイスｄ２００Ｄとデバイスｆ２００Ｆはそれぞれ他のデバイス２００と異なる機種であるとして説明する。
【００９９】
このデバイス制御システムでは、デバイスａ２００Ａおよびデバイスｂ２００Ｂが接続ケーブルを介してクライアントＰＣ１００とローカル接続され、デバイスｃ２００Ｃおよびデバイスｄ２００Ｄは、接続ケーブル３００を介してデバイスサーバａ６００Ａおよびデバイスサーバｂ６００Ｂにそれぞれローカル接続されている。デバイスｅ２００Ｅとデバイスｆ２００Ｆは、実施例１で説明したクライアントＰＣ１００が備える通信部１０５と同等の通信部（不図示）を有しており、有線または無線のネットワーク５００を介してクライアントＰＣ１００と接続される。
【０１００】
初めに、クライアントＰＣ１００について説明するが、実施例１との相違点のみを説明する。
【０１０１】
本実施例では、クライアントＰＣ１００にローカル接続されるデバイス（デバイスａ２００Ａ、デバイスｂ２００Ｂ）、デバイスサーバ６００を介して接続されるデバイス（デバイスｃ２００Ｃ、デバイスｄ２００Ｄ）およびネットワーク接続されるデバイス（デバイスｅ２００Ｅ、デバイスｆ２００Ｆ）が混在する。これらのデバイスを識別して制御するために、実施例１および実施例２とは異なるデバイス情報を取得する必要がある。以下では、本実施例におけるクライアントＰＣ１００のＯＳ１０８が取得するデバイス情報について説明する。
【０１０２】
ＯＳ１０８は、デバイスａ２００Ａとデバイスｂ２００Ｂからは、実施例１と同様に少なくともベンダーＩＤ、プロダクトＩＤからなる情報を、デバイス２００のデバイス情報として取得する。デバイスｅ２００Ｅとデバイスｆ２００Ｆからは、デバイスａ２００Ａとデバイスｂ２００Ｂと同等の情報にそのデバイス２００自身のアドレス情報（例えば、ＩＰアドレスやＭＡＣアドレス）を加えたものを、デバイス２００のデバイス情報として取得する。デバイスサーバａ６００Ａとデバイスサーバｂ６００Ｂからは、デバイスサーバ６００にローカル接続されたデバイス２００（デバイスｃ２００Ｃまたはデバイスｄ２００Ｄ）から取得したデバイス情報（デバイスａ２００Ａとデバイスｂ２００Ｂから取得する情報と同等）にデバイスサーバ６００のアドレス情報を加えたものを、デバイス２００のデバイス情報として取得する。
【０１０３】
なお、デバイスｅ２００Ｅ、デバイスｆ２００Ｆ、デバイスサーバａ６００Ａ、デバイスサーバｂ６００Ｂの有するアドレス情報とは、デバイス２００またはデバイスサーバ６００を識別するための情報である。例えば、デバイス２００またはデバイスサーバ６００のＩＰアドレスやＭＡＣアドレスなどであるが、これらに限定されない。さらに、これらの情報を組み合わせたものであってもよい。
【０１０４】
図１０は、デバイスの機種名、デバイス表示名、インスタンスＩＤから構成される同一機種デバイス情報テーブルの例示である。この例では、デバイスａ２００Ａ、デバイスｂ２００Ｂ、デバイスｃ２００Ｃおよびデバイスｅ２００Ｅが同一機種のデバイスである場合を示している。
【０１０５】
インスタンスＩＤは、ＯＳ１０８から取得したデバイス情報に記述されているベンダーＩＤ、プロダクトＩＤ、接続ポート情報またはアドレス情報から構成される。デバイスａ２００Ａの場合、ベンダーＩＤは「ＶＩＤ＿１２３４」、プロダクトＩＤは「ＰＩＤ＿１２３４」、接続ポート情報は「１＆１１１１１１１＆１＆１」であり、デバイスｃ２００Ｃの場合、ベンダーＩＤは「ＶＩＤ＿１２３４」、プロダクトＩＤは「ＰＩＤ＿１２３４」、アドレス情報は「１９２．１６８．１．１１」である。
【０１０６】
この場合、デバイスａ２００Ａの接続ポート情報「１＆１１１１１１１＆１＆１」と、デバイスｂ２００Ｂの接続ポート情報「１＆１１１１１１１＆１＆２」と、デバイスｃ２００Ｃのアドレス情報「１９２．１６８．１．１１」と、デバイスｅ２００Ｅのアドレス情報「１９２．１６８．３．３３」が異なることによって、接続形態が異なるデバイスがシステム上に混在しても、デバイスａ２００Ａ、デバイスｂ２００Ｂ、デバイスｃ２００Ｃおよびデバイスｅ２００Ｅを識別できる。
【０１０７】
デバイス表示名は、データソースマネージャ１１１によって、同一機種のデバイス各々を識別可能に表示するため、ＯＳ１０８から取得した個体識別情報に基づいて生成される。図１０で例示したデバイス表示名は、デバイスの機種名と同一機種のデバイスを個々に区別するための通し番号から構成され、デバイスａ２００Ａのデバイス表示名は「ＣＩＳ−１００−１」、デバイスｂ２００Ｂのデバイス表示名は「ＣＩＳ−１００−２」、デバイスｃ２００Ｃのデバイス表示名は「ＣＩＳ−１００−３」、デバイスｅ２００Ｅのデバイス表示名は「ＣＩＳ−１００−４」である。
【０１０８】
＜８．デバイスサーバ６００の構成＞
次に、実施例３に係るデバイス制御システムにおけるデバイスサーバ６００のハードウェア構成およびソフトウェア構成について図８を用いて説明する。
【０１０９】
デバイスサーバ６００は、ＣＰＵ６０１、メモリ６０２、通信部６０３、ローカルＩ／Ｆ６０４、外部記憶部６０５などから構成されており、これらが内部バス６０６で接続されている。
【０１１０】
ＣＰＵ６０１、メモリ６０２、通信部６０３、ローカルＩ／Ｆ６０４、および内部バス６０６については、前述したクライアントＰＣ１００における構成と同一であるため詳細な説明を省略する。
【０１１１】
外部記憶部６０５は、通信制御部６０７、デバイス制御部６０８を備えるソフトウェア機能部である。
【０１１２】
通信制御部６０７は、通信部６０３およびネットワーク５００を介してクライアントＰＣ１００と接続される機能部であり、クライアントＰＣ１００に対してデバイス情報を送信する機能、クライアントＰＣ１００との間でネットワーク５００を介してデータ送受信を行なう機能を備える。
【０１１３】
デバイス制御部６０８は、デバイス２００とローカルＩ／Ｆ６０４を介して接続される機能部であり、ローカル接続されたデバイス２００からデバイス情報を取得する機能、クライアントＰＣ１００から受信した当該制御コマンドに含まれるデバイス情報に基づいてクライアントＰＣ１００がデータ送受信を求めるデバイス２００を特定し、ローカルＩ／Ｆ６０４を介してデバイス２００を制御する機能を備える。
【０１１４】
＜９．デバイスサーバ６００にデバイス２００が接続された時の処理＞
次に、デバイスサーバ６００にデバイス２００がローカル接続された時に、デバイスサーバ６００上で実行される処理について、図９のフローチャートで説明する。
【０１１５】
デバイスサーバ６００は、デバイス２００がローカル接続されると、本フローに従って処理を開始する。
【０１１６】
まずはじめに、デバイス制御部６０８は、デバイス２００からローカルＩ／Ｆ６０４を介してデバイス２００を識別するためのデバイス情報を取得し、メモリ６０２に格納する（ステップＳ９０１）。
【０１１７】
その後、通信制御部６０７は、クライアントＰＣ１００からデバイス情報の問い合わせがあるまで待機する（ステップＳ９０２でＮｏ）。クライアントＰＣ１００からの問い合わせは、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などのプロトコルを用いて行なわれる。
【０１１８】
通信制御部６０７は、クライアントＰＣ１００からデバイス情報の問い合わせがあるとデバイス制御部６０８に通知し（ステップＳ９０２でＹｅｓ）、デバイス制御部６０８が、デバイスサーバ６００にローカル接続されているデバイス２００のデバイス情報を特定すると、通信制御部６０７は、通信部６０３を介して特定したデバイス２００のデバイス情報に自己のアドレス情報を加えたものを、デバイス２００のデバイス情報としてクライアントＰＣ１００に送信し、処理を終了する（ステップＳ９０３）。これによって、クライアントＰＣ１００は、デバイスサーバ６００にローカル接続されているデバイス２００のデバイス情報とデバイスサーバ６００のアドレス情報を取得することができる。
【０１１９】
なお、クライアントＰＣ１００は、問い合わせを行なわずに、デバイスサーバ６００からの通知によってデバイス情報を取得してもよい。
【０１２０】
また、ネットワーク接続されたデバイス２００（デバイスｅ２００Ｅ、デバイスｆ２００Ｆ）においてもデバイスサーバ６００と同様に、クライアントＰＣ１００が問い合わせを行うことでネットワーク接続されたデバイス２００からデバイス情報を取得してもよいし、クライアントＰＣ１００が問い合わせを行なわずに、ネットワーク接続されたデバイス２００からの通知によってデバイス情報を取得してもよい。
【０１２１】
＜１０．実施例３に係るクライアントＰＣ１００におけるスキャン実行時の処理＞
次に、実施例３に係るクライアントＰＣ１００におけるスキャン実行時の制御について、実施例１および実施例２と同様に図４のフローを用いて説明する。
【０１２２】
本実施例では、デバイスａ２００Ａ、デバイスｂ２００Ｂ、デバイスｃ２００Ｃおよび、デバイスｅ２００Ｅを同一機種のデバイスとし、デバイスｃ２００Ｃを選択して、スキャンを実行する場合について説明する。
【０１２３】
まずはじめに、ユーザは、入力部１０２を操作してＴＷＡＩＮアプリケーションプログラム１０９を起動する（ステップＳ４０１）。
【０１２４】
ＯＳ１０８は、デバイスａ２００Ａ、デバイスｂ２００Ｂ、デバイスｃ２００Ｃ、デバイスｅ２００Ｅ、デバイスサーバａ６００Ａ、デバイスサーバｂ６００Ｂからデバイス情報を取得し、メモリ１０４に格納する（ステップＳ４０２）。
【０１２５】
続いて、データソースマネージャ１１１は、ステップＳ４０２において取得したデバイス情報から同一機種のデバイスがシステム上に接続されているか判断する（ステップＳ４０３）。
【０１２６】
ステップＳ４０３において、デバイスａ２００Ａ、デバイスｂ２００Ｂ、デバイスｃ２００Ｃおよびデバイスｅ２００Ｅは同一機種のデバイスであるので、判断結果がＹｅｓとなり、ステップＳ４０４に進む。次に、データソースマネージャ１１１は、ＯＳ１０８が生成した個体識別情報を取得し、デバイス表示名を生成し（ステップＳ４０４）、該当デバイス２００の情報（デバイス表示名、個体識別情報）を同一機種デバイス情報テーブルに登録する（ステップＳ４０５）。
【０１２７】
データソースマネージャ１１１は、同一機種デバイス情報テーブルに登録されたデバイス表示名およびデバイス情報に含まれるデバイス表示名からデバイス一覧を作成し、ＴＷＡＩＮアプリケーションプログラム１０９に送信する（ステップＳ４０６）。
【０１２８】
図１１は、デバイスａ２００Ａ〜デバイスｆ２００Ｆのデバイス表示名から構成されるデバイス一覧の例示である。
【０１２９】
このデバイス一覧は、同一機種が接続されているデバイス（デバイスａ２００Ａ、デバイスｂ２００Ｂ、デバイスｃ２００Ｃおよびデバイスｅ２００Ｅ）については、同一機種デバイス情報テーブルに登録されたデバイス表示名（ＣＩＳ−１００−１、ＣＩＳ−１００−２、ＣＩＳ−１００−３、ＣＩＳ−１００−４）が記述され、同一機種が接続されていないデバイス（デバイスｄ２００Ｄ、デバイスｆ２００Ｆ）については、デバイス情報に含まれるデバイス表示名（ＣＩＳ−２００、ＣＩＳ−３００）が記述される。
【０１３０】
ＴＷＡＩＮアプリケーションプログラム１０９は、データソースマネージャ１１１から受信したデバイス一覧に基づいて、ユーザが、デバイス選択候補の中から使用するデバイス２００を選択するためのグラフィカル・ユーザ・インターフェース（ＧＵＩ）画面を生成し、表示部１０３に表示する（ステップＳ４０７）。
【０１３１】
このＧＵＩ画面には、デバイスａ２００Ａ〜デバイスｆ２００Ｆが識別可能に表示される。ユーザは、入力部１０２を操作して、表示部１０３に表示されたデバイス選択候補の一覧の中からスキャンを実行するデバイスｃ２００Ｃを選択する（ステップＳ４０８）。このとき、選択されたデバイスｃ２００Ｃは、それ以外のデバイスと区別されて表示部１０３に表示される。
【０１３２】
データソースマネージャ１１１は、ステップＳ４０８の選択結果に基づいて、ＴＷＡＩＮアプリケーションプログラム１０９から選択されたデバイスに関する情報を含むデバイス選択命令を受信し、同一機種デバイス情報テーブルに登録されたデバイス表示名を参照して、選択されたデバイスｃ２００Ｃと同一機種のデバイスがあるか判断する（ステップＳ４０９）。
【０１３３】
選択されたデバイスｃ２００Ｃは、デバイスａ２００Ａ、デバイスｂ２００Ｂおよびデバイスｅ２００Ｅと同一機種のデバイスなので、ステップＳ４０９の判断結果はＹｅｓとなり、ステップＳ４１０に進む。そして、データソースマネージャ１１１は、デバイスａ２００Ａ、デバイスｂ２００Ｂおよびデバイスｅ２００ＥのＴＷＡＩＮデバイスドライバ１１０をアンロードする（ステップＳ４１０）。これによって、デバイスｃ２００Ｃとの接続だけを有効にし、デバイスａ２００Ａ、デバイスｂ２００Ｂおよびデバイスｅ２００Ｅとの接続を無効にする。
【０１３４】
デバイスｃ２００ＣのＴＷＡＩＮデバイスドライバ１１０は、通信部１０５を介して、デバイスサーバａ６００Ａと通信を開始し、デバイスｃ２００Ｃに対して、デバイスサーバａ６００Ａを介してスキャンの実行要求を送信し、スキャンされた画像データを取得する（ステップＳ４１１）。なお、デバイスｃ２００Ｃでスキャンを継続する場合は、ステップＳ４１１の処理を繰り返し実行させる。
【０１３５】
デバイスサーバａ６００Ａを介してデバイスｃ２００Ｃからスキャン画像データの取得が終了すると、データソースマネージャ１１１は、デバイスサーバａ６００Ａとの接続を切断して処理を終了する。ここで、ステップＳ４１０でアンロードしたデバイスａ２００Ａ、デバイスｂ２００Ｂおよびデバイスｅ２００ＥのＴＷＡＩＮデバイスドライバ１１０を再びロードする（ステップＳ４１２）。
【０１３６】
これ以降の処理は、実施例１で説明したステップＳ４１３〜ステップＳ４１５と同様であるため、説明を省略する。
【０１３７】
なお、ステップＳ４０８において、デバイスｄ２００Ｄまたはデバイスｆ２００Ｆが選択された場合、上記で説明したステップＳ４０９の判断が異なる。
【０１３８】
デバイスｄ２００Ｄまたはデバイスｆ２００Ｆが選択された場合、ステップＳ４０９において、同一機種のデバイスが存在しないため、判断結果はＮｏとなり、ステップＳ４１６に進み、ステップＳ４１１と同様にデバイスｃ２００Ｃに対して、スキャンの実行要求を送信し、スキャンされた画像データを取得して、ステップＳ４１３に進む。
【０１３９】
上述したとおり、実施例３のデバイス制御システムによれば、クライアントＰＣ１００は、ローカル接続されたデバイス、デバイスサーバを介して接続されたデバイスおよびネットワーク接続されたデバイスから接続形態に応じたデバイス情報を取得し、このデバイス情報からＯＳ１０８によって生成された個体識別情報に基づいて、各デバイスを識別できるので、接続形態が異なるデバイス２００がシステムに混在していても、複数のデバイス２００を切り替えて使用することができる。
【０１４０】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【０１４１】
実施例１〜実施例３において、デバイス２００は、ＴＷＡＩＮに対応したデバイスに限らず、ＩＳＩＳ（Ｉｍａｇｅ  ａｎｄ  Ｓｃａｎｎｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ)に対応したデバイスであってもよい。
【０１４２】
実施例１〜実施例３において、データソースマネージャ１１１は、ＯＳ１０８が生成した個体識別情報を用いずに、ＯＳ１０８が取得したデバイス情報のみでデバイス２００を管理・識別してもよい。
【０１４３】
実施例３において、デバイスサーバ６００に同一機種のデバイス２００が複数台接続された場合、各デバイスを識別するために、デバイスサーバ６００は、デバイス情報に自己のアドレス情報、および／またはデバイス２００が接続されたデバイスサーバ６００の接続ポート情報を加えたデバイス情報を送信する。デバイスサーバ６００の接続ポート情報とは、デバイスサーバ６００の接続ポートを識別するための情報である。例えば、デバイスサーバ６００の有するＵＳＢポートの番号やＩＥＥＥ１３９４ポートの番号などであるが、これらに限定されない。
【０１４４】
実施例３において、ネットワーク接続されたデバイス２００（２００Ｅ，２００Ｆ）やデバイスサーバ６００（６００Ａ，６００Ｂ）のアドレス情報を追加したデバイス情報を取得すると説明したが、アドレス情報をデバイス情報に追加して１つの情報として取得するだけでなく、それぞれ別個の情報として取得してもよい。
【０１４５】
実施例３において、ネットワーク接続されたデバイス２００（２００Ｅ，２００Ｆ）やデバイスサーバ６００（６００Ａ，６００Ｂ）からアドレス情報を取得せずに、デバイス２００（２００Ｃ，２００Ｄ，２００Ｅ，２００Ｆ）のデバイス情報だけを取得するようにしてもよい。この場合には、クライアントＰＣ１００側でネットワーク接続されたデバイス２００（２００Ｅ，２００Ｆ）やデバイスサーバ６００（６００Ａ，６００Ｂ）のアドレス情報を記憶しておくようにすればよい。
【０１４６】
実施例３において、ＴＷＡＩＮアプリケーションプログラム１０９によって、デバイス２００を選択することを説明したが、実施例２と同様に、カードリーダ４００や入力機器を用いて、デバイス２００を選択してもよい。
【０１４７】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【０１４８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１４９】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【０１５０】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１５１】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標)ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１５２】
１００：クライアントＰＣ
１０１：ＣＰＵ
１０２：入力部
１０３：表示部
１０４：メモリ
１０５：通信部
１０６：ローカルＩ／Ｆ（ローカルインターフェース）
１０７：外部記憶部
１０８：ＯＳ
１０９：ＴＷＡＩＮアプリケーションプログラム
１１０：ＴＷＡＩＮデバイスドライバ
１１１：データソースマネージャ
１１２：内部バス
２００（２００Ａ，２００Ｂ，２００Ｃ，２００Ｄ，２００Ｅ，２００Ｆ）：デバイス
３００：接続ケーブル
４００：カードリーダ
５００：ネットワーク
６００（６００Ａ，６００Ｂ）：デバイスサーバ
６０１：ＣＰＵ
６０２：メモリ
６０３：通信部
６０４：ローカルＩ／Ｆ（ローカルインターフェース）
６０５：外部記憶部
６０６：内部バス
６０７：通信制御部
６０８：デバイス制御部
【図１】
2011186770.tif 000003
【図２】
2011186770.tif 000004
【図３】
2011186770.tif 000005
【図４】
2011186770.tif 000006
【図５】
2011186770.tif 000007
【図６】
2011186770.tif 000008
【図７】
2011186770.tif 000009
【図８】
2011186770.tif 000010
【図９】
2011186770.tif 000011
【図１０】
2011186770.tif 000012
【図１１】
2011186770.tif 000013