説明

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

【課題】仮想化制御機能を有しない装置が、仮想化制御機能を有する装置にデバイスでの処理実行を依頼し、その実行結果を取得できる手段を提供する。
【解決手段】デバイスサーバは、処理要求依頼元となるネットワークデバイスまたはデバイスサーバ内のアプリケーションプログラムから処理要求を受信すると、その処理要求をクライアントPCに送信し、処理要求を受信したクライアントPCからセッション要求を受信した場合、クライアントPCとのセッションを制御する。クライアントPCは、デバイスサーバを介してデバイスを制御し、処理要求に応じた処理を実行して、実行結果を取得し、デバイスサーバに送信する。デバイスサーバは、実行結果をクライアントPCから受信すると、処理要求依頼元に実行結果を送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介してデバイスを制御する機能を備えたデバイス制御装置、デバイス制御方法、及びデバイス制御システムに関するものである。
【背景技術】
【0002】
ネットワークの普及により、従来、パーソナルコンピュータ(PC)などにローカル接続して利用していたデバイス(周辺機器)をネットワーク上のクライアントPCから利用できるように工夫したデバイスサーバが発表されている。
【0003】
このデバイスサーバを用いることにより、プリンタ、ストレージ、スキャナ、カードリーダなどのデバイスを、ネットワーク上のクライアントPCからローカル接続した状態と同様に利用できる仮想化制御に関するものが提案されている。
【0004】
例えば、クライアントPCがデバイスサーバにローカル接続されたデバイスに対して仮想化制御を行うことで、当該デバイスを仮想的に認識し、ネットワーク上のクライアントPCからローカル接続した状態と同様にアクセスできるシステムがある(特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−9629号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1のシステムは、各々のクライアントPCとデバイスサーバに仮想化制御を行うためのトンネリングドライバとUSBクラスドライバ(以下、仮想化制御ドライバ)が必要である。
【0007】
しかしながら、実際のシステムでは、全てのデバイスに仮想化制御ドライバを備えているわけではなく、このようなデバイスが、デバイスサーバを介さずに、ネットワークに直接接続されて存在する。この仮想化制御ドライバを備えないデバイスにおいても、他のデバイスで行われた処理結果を取得したい場合がある。
【0008】
仮想化制御ドライバを全デバイスに導入できない理由は、全デバイスに導入しようとするとコストの増大につながるからである。また、あるデバイスでは、ソフトウェア・ハードウェアの仕様・設計やシステムの運用・管理上の理由により仮想化制御ドライバを導入できないためである。
【0009】
上記問題に鑑みて、本発明は、デバイスに対する仮想化制御機能を有しない装置が、仮想化制御機能を有する装置にデバイスでの処理実行を依頼し、その実行結果を取得できるようにすることを目的とする。
【課題を解決するための手段】
【0010】
上記の課題を解決するために、請求項1に記載のデバイス制御装置は、デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置であって、処理要求依頼元からの処理要求を受信する処理要求受信手段と、前記処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、前記セッション要求受信手段で受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御手段と、前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信手段と、前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信手段と、を備えることを特徴とする。
【0011】
また、上記の課題を解決するために、請求項5に記載のデバイス制御方法は、デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置におけるデバイス制御方法であって、処理要求依頼元からの処理要求を受信する処理要求受信ステップと、前記処理要求受信ステップで受信した前記処理要求を前記クライアント装置に送信する処理要求送信ステップと、前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信ステップと、前記セッション要求受信ステップで受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御ステップと、前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信ステップと、前記実行結果受信ステップで受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信ステップと、を備えることを特徴とする。
【0012】
また、上記の課題を解決するために、請求項9に記載のデバイス制御システムは、クライアント装置と、前記クライアント装置とネットワークを介して接続されたデバイス制御装置と、前記デバイス制御装置にローカル接続される1つまたは複数のデバイスから構成されるデバイス制御システムであって、前記クライアント装置は、前記デバイス制御装置から処理要求を受信する第1の処理要求受信手段と、前記第1の処理要求受信手段で受信した前記処理要求に応じて、前記デバイス制御装置にセッション要求を送信するセッション要求送信手段と、当該デバイス制御装置とのセッションを実行する第1の仮想化制御手段と、前記処理要求に応じて得られた実行結果を取得する実行結果取得手段と、前記実行結果取得手段で取得した当該実行結果を前記デバイス制御装置に送信する第1の実行結果送信手段と、を備え、前記デバイス制御装置は、処理要求依頼元からの処理要求を受信する第2の処理要求受信手段と、前記第2の処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、前記セッション要求受信手段で受信したセッション要求に基づいて、当該クライアント装置とのセッションを制御する第2の仮想化制御手段と、前記実行結果を前記クライアント装置から受信する実行結果受信手段と、前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する第2の実行結果送信手段と、を備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、デバイスに対する仮想化制御機能を有しない装置が、デバイスに対する仮想化制御機能を有する装置にデバイスでの処理実行を依頼し、その実行結果を取得することができる。
【図面の簡単な説明】
【0014】
【図1】本発明に係るデバイス制御システムの概略構成を示す図である。
【図2】パケットのデータ構成を例示する図である。
【図3】実施例1に係る実行結果取得過程を示すシーケンス図である。
【図4】実施例2に係る実行結果取得過程を示すシーケンス図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態について詳細に説明する。
【実施例1】
【0016】
実施例1に係る実施の形態を説明する。
<1.デバイス制御システムの構成>
図1は、本発明を実現するためのデバイス制御システムの概略構成であり、クライアントPC100、デバイスサーバ200(200A、200B)、デバイス300(300A、300B)、ネットワークデバイス400から構成される。
【0017】
このデバイス制御システムでは、デバイスサーバ200とデバイス300をUSB(Universal Serial Bus)やIEEE1394などのインターフェースに準拠した接続ケーブル500で接続する。また、クライアントPC100、デバイスサーバ200、ネットワークデバイス400は、有線または無線のネットワーク600で接続する。
【0018】
次に、デバイス制御システムを構成する各装置について順次説明する。
【0019】
<2.クライアントPC100の構成>
クライアントPC100(クライアント装置)は、CPU、入力部、表示部、メモリ、通信部、外部記憶部などが内部バスで接続され、ネットワーク600を介してデバイスサーバ200やネットワークデバイス400(外部デバイス)と通信することが可能な装置である。
【0020】
外部記憶部は、OS(不図示)、制御プログラム101、デバイスドライバ102、仮想化制御部103などのソフトウェアプログラムを格納している。これらのソフトウェアプログラムは、CPUの制御に従い、メモリ上に読み出されて実行される。
【0021】
制御プログラム101は、デバイスサーバ200に接続されたデバイス300のデバイス情報を取得し、取得したデバイス情報をもとに、デバイス300とのデータ送受信に必要なデバイスドライバ102および仮想化制御部103を一意に特定し、動的に生成するソフトウェアプログラムである。また、デバイス300に対して、デバイスドライバ102と仮想化制御部103を介して、データの送受信を要求するソフトウェアプログラムである。このデバイスドライバ102および仮想化制御部103がデバイス300の個体ごとに生成・起動されることによって、デバイス300個々に仮想化制御が実行される。
【0022】
デバイスドライバ102は、OSや制御プログラム101などの上位層のソフトウェアプログラムの指示により、デバイス300に対する制御コマンドを生成・送信し、この制御コマンドに対する応答を受信すると、この応答を上位層のソフトウェアプログラムへ通知するソフトウェアプログラムである。
【0023】
仮想化制御部103は、制御プログラム101からデバイスドライバ102を介して要求されるデバイス300へのデータ送受信に対して、デバイス300がクライアントPC100に直結しているときと同様の振る舞いを提供する仮想化制御ソフトウェアプログラムである。
【0024】
<3.デバイスサーバ200の構成>
デバイスサーバ200(デバイス制御装置)は、CPU、メモリ、通信部、USBインターフェース、外部記憶部などが内部バスで接続され、ネットワーク600を介してクライアントPC100やネットワークデバイス400(外部デバイス)と通信することが可能であり、接続ケーブル500でローカル接続されているデバイス300とデータ送受信が可能な装置である。
【0025】
外部記憶部は、処理実行メイン部201、アプリケーションプログラム204などのソフトウェアプログラムを格納している。これらのソフトウェアプログラムは、CPUの制御に従い、メモリ上に読み出されて実行される。
【0026】
処理実行メイン部201は、クライアントPC100とデバイスサーバ200とのセッションを制御する仮想化制御部202並びにデバイス300に対する処理要求およびデバイス300での実行結果の送受信を行う処理要求制御部203を備える機能部である。なお、処理要求制御部203とアプリケーションプログラム204(後述)の通信経路と、処理要求制御部203とネットワークデバイス400の通信経路におけるインターフェース(API:Application Program Interface)を共通化することで、同一形式のパケットで通信することができる。
【0027】
アプリケーションプログラム204は、特定の機能をデバイスサーバ200に提供するソフトウェアプログラムであり、例えば、認証情報の認証成功後に印刷を行う、いわゆる「認証印刷」の機能を提供するプログラムである。
【0028】
なお、アプリケーションプログラム204を仮想化制御部202および処理要求制御部203と共に外部記憶部内のROM領域に記憶してもよいし、これらとは別にRAM領域に記憶してもよい。このように記憶するのは、ROM領域に変更や更新の少ないソフトウェアプログラムを記憶して、デバイスサーバ200の基本的な制御機能を提供し、RAM領域に変更や更新の多いソフトウェアプログラムを記憶して、様々な制御機能を提供するためである。
【0029】
このRAM領域に記憶したアプリケーションプログラム204を必要に応じて書き換えることで、認証印刷の機能以外の様々な機能を提供できるため、顧客のニーズやソリューションの変化に柔軟な対応が可能となり、デバイスサーバ200の汎用性を高めることができる。なお、この場合、処理要求制御部203との通信経路におけるAPIを共通化してアプリケーションプログラム204を作成しておけばよい。
【0030】
また、RAM領域のアプリケーションプログラム204を書き換える場合は、記憶媒体を介して書き換えてもよいし、クライアントPC100などから動的にインストールしてもよいし、デバイスサーバ200がクライアントPC100にアクセスしてダウンロード(取得)するようにしてもよい。
【0031】
<4.デバイス300の構成>
デバイス300は、USBインターフェースを持つ汎用的な入出力装置であり、デバイスサーバ200内のアプリケーションプログラム204またネットワークデバイス400からの処理要求に応じて、処理を実行し、その処理に対する実行結果をデバイスサーバ200を介してクライアントPC100に送信する装置である。例えば、デバイス300がカードリーダの場合、読み取ったカードIDを実行結果として送信し、デバイス300がスキャナの場合、読み取った画像データを実行結果として送信する。なお、デバイス300が備えるインターフェースは、USBインターフェースに限定されるものではなく、IEEE1394など他のインターフェースに準拠したものであってもよい。
【0032】
また、デバイスサーバ200、デバイス300をそれぞれ別体の装置として説明したが、これに限定されるものではなく、デバイスサーバ200をデバイス300のケーシング内に収まるように一体構造としても良い。
【0033】
<5.ネットワークデバイス400の構成>
ネットワークデバイス400は、ネットワーク600を介してクライアントPC100やデバイスサーバ200と通信して、データの送受信が可能な装置(外部デバイス)であり、自らが備える所定の機能を実行することに加えて、デバイス300に対する処理要求をデバイスサーバ200に送信し、デバイス300での実行結果をクライアントPC100およびデバイスサーバ200を介して取得する。
【0034】
<6.パケットのデータ構成>
本デバイス制御システムにおけるパケットのデータ構成を図2に例示する。パケット(パケットa〜パケットe)はヘッダ部とデータ部で構成される。ヘッダ部には、本システムのプロトコルであることを識別するための署名データ701、電文サイズ702、デバイスサーバ200に対するコマンドID703、データ部のデータに関するデータサイズ704などが格納され、データ部には、デバイス300に実行させるデータ720やデバイス300での実行結果に関するデータ720などが格納される。なお、図2に例示したパケット(パケットa〜パケットe)のヘッダ部は、固定長の領域として説明したが可変長の領域でもよい。
【0035】
次に、パケットa〜パケットeについて説明する。パケットaは、処理要求依頼元(アプリケーションプログラム204またはネットワークデバイス400)がデバイスサーバ200に送信する処理要求パケットである。
【0036】
パケットbは、デバイスサーバ200の処理要求制御部203が、クライアントPC100に送信する処理要求パケットである。
【0037】
パケットcは、クライアントPC100とデバイス300がデータ送受信を行う際に用いるデータ送受信用パケットである。
【0038】
パケットdは、クライアントPC100がデバイスサーバ200に送信する実行結果パケットである。
【0039】
パケットeは、デバイスサーバ200の処理要求制御部203が、処理要求依頼元(アプリケーションプログラム204またはネットワークデバイス400)に送信する実行結果パケットである。
【0040】
<7.実施例1に係る実行結果取得のシーケンス>
図3は、本デバイス制御システムにおける実行結果を取得する過程を示すシーケンス図である。なお、処理要求依頼元にはデバイスサーバ200のアプリケーションプログラム204およびネットワークデバイス400を適用できるが、ここでは、デバイスサーバa200Aのアプリケーションプログラム204が処理要求依頼元として処理要求を送信し、実行結果を取得する場合について説明する。
【0041】
デバイスサーバa200Aの仮想化制御部202は、デバイスa300Aがデバイスサーバa200Aに接続されたとき、デバイスa300Aからデバイス情報を取得する(タイミングT301)。
【0042】
デバイスサーバa200Aの仮想化制御部202は、デバイスa300Aから取得したデバイス情報をメモリに登録する(タイミングT302)。なお、デバイスサーバa200Aは、取得したデバイス情報にシリアル番号が格納されていない場合、デバイスサーバ200の有する固有情報と、デバイスサーバ200の接続ポート固有情報からシリアル番号を生成し、デバイス情報に追加する。これにより、シリアル番号が格納されていないデバイス300が接続された場合でも、クライアントPC100から識別可能となる。
【0043】
なお、デバイスサーバ200の有する固有情報とは、デバイスサーバ200を識別するための情報である。例えば、デバイスサーバ200のIPアドレスやMACアドレス、シリアルナンバー(製造番号)などであるが、これらに限定されない。さらに、これらの情報を組み合わせたものであってもよい。
【0044】
また、デバイスサーバ200の接続ポート固有情報とは、デバイスサーバ200の接続ポートを識別するための情報である。例えば、デバイスサーバ200の有するUSBポートの番号やIEEE1394ポートの番号などであるが、これらに限定されない。
【0045】
デバイスサーバa200Aの仮想化制御部202は、クライアントPC100からデバイス情報の問い合わせがあると(タイミングT303)、クライアントPC100に対して、デバイスa300Aのデバイス情報を通知する(タイミングT304)。
【0046】
クライアントPC100では、通知されたデバイス情報を元に、制御プログラム101によってデバイスドライバ102と仮想化制御部103が生成・起動され、デバイスa300Aが接続ケーブル500で直結(ローカル接続)されたのと同様の振る舞いを提供する、いわゆる「仮想化制御」が行なわれる(タイミングT305)。この「仮想化制御」によって、クライアントPC100からデバイス300をローカル接続したときと同じ状態でデータ送受信を行うことができる。
【0047】
デバイスサーバa200Aのアプリケーションプログラム204は、処理要求パケット(パケットa)を生成し、デバイスサーバa200Aの処理要求制御部203に送信する(タイミングT306)。
【0048】
処理要求パケット(パケットa)は、ヘッダ部が署名データ701、電文サイズ702、コマンドID703、データサイズ704、処理要求依頼元情報705から構成される。なお、処理要求依頼元情報705は、処理要求依頼元を識別(特定)するための情報である。例えば、IPアドレス、MACアドレス、コンピュータ名などであるが、これらに限定されるものではない。さらに、これらの情報を組み合わせたものであってもよい。
【0049】
処理要求依頼元がデバイスサーバa200Aのアプリケーションプログラム204の場合は、処理要求依頼元情報705として、デバイスサーバa200AのIPアドレスが格納される。データ部には、デバイス300で実行されるデータが格納される。
【0050】
デバイスサーバa200Aの処理要求制御部203は、アプリケーションプログラム204から処理要求パケット(パケットa)を受信すると、デバイスサーバ送信元情報706と処理要求識別情報707を追加した処理要求パケット(パケットb)をクライアントPC100に送信する(タイミングT307)。
【0051】
タイミングT307で追加されるデバイスサーバ送信元情報706は、デバイスサーバを識別(特定)するための情報であり、処理要求識別情報707は、各々の処理要求を識別するためのユニークな情報である。なお、デバイスサーバ送信元情報706は、例えば、IPアドレス、MACアドレス、デバイスサーバ名などであるが、さらに、これらの情報を組み合わせたものであってもよい。
【0052】
なお、処理要求制御部203は、クライアントPC100に送信する処理要求パケット(パケットb)毎に、処理要求識別情報707、コマンドID703、処理要求依頼元情報705、デバイスサーバ送信元情報706をひと組にして処理要求管理テーブル(不図示)に保持する。これらの情報を用いることで、各々の処理要求がどの依頼元から送信された処理要求か識別することができる。
【0053】
クライアントPC100は、デバイスサーバa200Aから処理要求パケット(パケットb)を受信し、その後、クライアントPC100上で制御プログラム101が実行される(タイミングT308)。
【0054】
クライアントPC100は、制御プログラム101によって、処理要求パケット(パケットb)内のコマンドに応じて、デバイスa300Aとデータ送受信を行うことを決定し、仮想化制御部103を介して、デバイスサーバa200Aにセッション要求を送信し、デバイスサーバa200Aとのセッションを開始する(タイミングT309)。
【0055】
クライアントPC100の仮想化制御部103は、このとき、デバイスドライバ102から送られてくる「USBパケット」と、ネットワーク600およびデバイスサーバ200を介して通信するための「ネットワークパケット」とのプロトコル変換を行い、通信部およびネットワーク600を介して、デバイスサーバa200Aの仮想化制御部202との間でデータ送受信用パケット(パケットc)を送受信し、デバイスa300Aとのデータ送受信を制御する。
【0056】
データ送受信用パケット(パケットc)は、ヘッダ部が署名データ701、電文サイズ702、コマンドID703、データサイズ704、ベンダーID(VID)708、製品ID(PID)709、シリアル番号710から構成される。
【0057】
デバイスサーバa200Aの仮想化制御部202は、データ送受信用パケット(パケットc)のベンダーID708、製品ID709、シリアル番号710によって、デバイス300を一意に識別することができる。なお、シリアル番号710は、上述したように、デバイスサーバ200がデバイス300から取得したデバイス情報に記述されたシリアル番号が格納されるが、デバイス情報にシリアル番号が記述されていない場合には、デバイスサーバ200の有する固有情報と、デバイスサーバ200の接続ポート固有情報から生成されたシリアル番号が格納される。
【0058】
クライアントPC100の仮想化制御部103は、デバイスサーバa200Aを介してデバイスa300Aとの間でデータ送受信用パケット(パケットc)を用いてデータ送受信を実施し、デバイスa300Aにおける実行結果を取得する(タイミングT310)。
【0059】
このとき、デバイスサーバ200の仮想化制御部202は、クライアントPC100からセッション要求を受信すると、クライアントPC100との間のセッションを制御(開始)するとともに、クライアントPC100と通信するための「ネットワークパケット」とデバイス300との間で送受信する「USBパケット」とのプロトコル変換を行い、クライアントPC100とデバイス300との間のデータ送受信を仲介(中継)する。
【0060】
クライアントPC100においてデータの送受信が終了した場合(タイミングT311)、仮想化制御部103は、デバイスサーバa200Aとのセッションを終了する(タイミングT312)。
【0061】
クライアントPC100の制御プログラム101は、仮想化制御部103およびデバイスサーバa200Aの仮想化制御部202を介して、デバイスa300Aでの実行結果を取得すると、実行結果パケット(パケットd)を、デバイスサーバ送信元情報706に基づいて、デバイスサーバa200Aに送信する(タイミングT313)。
【0062】
実行結果パケット(パケットd)は、処理要求パケット(パケットb)の構成に処理実行成否情報を追加したものである。
【0063】
ヘッダ部の実行成否情報711には、デバイス300における処理実行の成否に関する情報が格納され、データ部には、デバイス300での実行結果に関するデータが格納される。
【0064】
デバイスサーバa200Aの処理要求制御部203は、クライアントPC100から実行結果パケット(パケットd)を受信すると、このパケット内の処理要求識別情報707から処理要求管理テーブル内の処理要求識別情報707を検索し、パケット内のコマンドID703、処理要求依頼元情報705、デバイスサーバ送信元情報706とテーブルに保持しているコマンドID703、処理要求依頼元情報705、デバイスサーバ送信元情報706が一致するか確認する。
【0065】
コマンドID703、処理要求依頼元情報705、デバイスサーバ送信元情報706が一致する場合、デバイスサーバa200Aの処理要求制御部203は、前述したインターフェース(API)を介して、実行結果パケット(パケットe)を処理要求依頼元のアプリケーションプログラム204に送信する(タイミングT314)。
【0066】
実行結果パケット(パケットe)は、実行結果パケット(パケットd)の構成からデバイスサーバ送信元情報706と処理要求識別情報707を削除したものである。
【0067】
処理要求依頼元のアプリケーションプログラム204は、前述したインターフェース(API)を介して処理要求制御部203から実行結果パケット(パケットe)を受信し、デバイスa300Aにおける実行結果を取得する(タイミングT315)。
【0068】
なお、上記では処理要求依頼元をアプリケーションプログラム204として説明したが、処理要求依頼元をネットワークデバイス400とした場合も同様に適用できる。
【0069】
この場合、図3のタイミングT306、タイミングT314およびタイミングT315の処理が以下のように置き換わる。
【0070】
(1)タイミングT306の処理において、ネットワークデバイス400は、ネットワーク600を介して処理要求パケット(パケットa)をデバイスサーバa200Aに送信する。ここで、パケットa〜パケットeの処理要求依頼元情報705には、ネットワークデバイス400のIPアドレス、サブネットマスク、ゲートウェイ、ポート番号などが格納される。
【0071】
(2)タイミングT314の処理において、デバイスサーバa200Aの処理要求制御部203は、ネットワーク600を介して実行結果パケット(パケットe)をネットワークデバイス400に送信する。
【0072】
(3)タイミングT315の処理において、処理要求依頼元のネットワークデバイス400は、デバイスサーバa200Aの処理要求制御部203から実行結果パケット(パケットe)を受信し、デバイスa300Aにおける実行結果を取得する(タイミングT315)。
【0073】
なお、実施例1で説明したデバイス制御システムを、例えば、デバイス300をカードリーダ、ネットワークデバイス400をネットワークプリンタとした認証印刷システムに適用すると、ネットワークプリンタとカードリーダ間で連携した処理を行うことができる。
【0074】
このとき、処理要求依頼元がネットワークプリンタ(外部デバイス)の場合は、カードID(実行結果)を取得・認証して、認証結果に基づいて印刷の制御を行えばよい。また、処理要求依頼元がアプリケーションプログラム204(認証印刷プログラム)の場合は、カードID(実行結果)を取得・認証して、認証結果をネットワークプリンタに通知し、ネットワークプリンタは、認証結果に基づいて、印刷を行えばよい。
【0075】
上述したとおり、実施例1のデバイス制御システムでは、アプリケーションプログラム204またはネットワークデバイス400がデバイスサーバ200の処理要求制御部203を介してクライアントPC100に処理要求を送信し、その処理要求に応じた実行結果を取得することで、仮想化制御機能を有しない装置が、デバイスサーバ200を介して仮想化制御機能を有する装置に処理実行を依頼し、その実行結果を取得することができる。
【実施例2】
【0076】
実施例2に係る実施の形態について説明する。本実施例では、処理要求依頼元から処理要求を受信する処理と、クライアントPC100とのセッションの接続制御処理を異なるデバイスサーバ200で行なう点が特徴である。
【0077】
実施例2は、処理要求依頼元(ネットワークデバイス400またはアプリケーションプログラム204)から受信した処理要求に基づく処理を、処理要求を受信したデバイスサーバ200にローカル接続されたデバイス300で処理できない場合に適用できる。
【0078】
この実施例2の実施形態を用いることで、仮想化制御機能を有しない装置からシステム上のいずれかのデバイスサーバ200に処理要求を送信(依頼)すると、システム上の最適なデバイス300で処理が行なわれて実行結果を得ることができる。これによって、システム上の多種多様なデバイス300を有効に利用することができる。
【0079】
なお、図1と図2を用いて説明した実施例1の構成は、実施例2でも同様に適用可能であるので、詳細な説明を省略する。
【0080】
<8.実施例2に係る実行結果取得のシーケンス>
図4は、実施例2に係るデバイス制御システムにおける実行結果を取得する過程をシーケンス図として図示したものである。ここでは、ネットワークデバイス400が処理要求依頼元として処理要求をデバイスサーバa200Aに送信し、デバイスサーバa200AはクライアントPC100に処理要求パケットを送信(転送)して、クライアントPC100は、デバイスサーバb200Bに接続されたデバイスb300Bに処理を実行させて、実行結果を取得し、ネットワークデバイス400がデバイスサーバa200Aを介して、この実行結果を取得する場合について説明する。なお、処理要求依頼元をアプリケーションプログラム204とした場合でも実施例1と同様に適用できる。
【0081】
デバイス情報取得から処理要求送信までの過程(タイミングT401〜タイミングT412)は、実施例1で図3を用いて説明したタイミングT301〜タイミングT307と同様であるため、説明を省略し、タイミングT413から説明する。
【0082】
クライアントPC100は、デバイスサーバa200Aから処理要求パケット(パケットb)を受信し、その後、制御プログラム101が実行されると、処理要求パケット(パケットb)内のコマンドに応じて、処理実行依頼先デバイスを選定する。このとき、デバイスa300Aで処理できる場合、デバイスa300Aを選定し、デバイスa300Aで処理不可能な場合、デバイスa300A以外で処理できるデバイス300を選定する。ここでは、デバイスa300Aではなく、デバイスb300Bを処理実行依頼先デバイスとして選定する(タイミングT413)。なお、デバイス300における処理実行可否はクライアントPC100またはデバイスサーバ200のいずれか一方で判断すればよい。デバイスサーバ200が判断する場合は、判断結果を処理要求(パケットb)に含めてクライアントPC100に送信する。
【0083】
制御プログラム101は、処理を実行するデバイスをデバイスb300Bに選定後、仮想化制御部103を介して、デバイスサーバb200Bにセッション要求を送信し、デバイスサーバb200Bとのセッションを開始する(タイミングT414)。
【0084】
データ送受信からセッションの終了までの過程(タイミングT415〜タイミングT417)は、実施例1で図3を用いて説明したタイミングT310〜タイミングT312と同様であるため、説明を省略し、タイミングT418から説明する。
【0085】
クライアントPC100は、デバイス300における実行結果を取得すると、実行結果パケット(パケットd)を、デバイスサーバb200Bではなく、デバイスサーバa200Aに送信する(タイミングT418)。
【0086】
これ以降の処理(タイミングT419〜タイミングT420)は、実施例1で図3を用いて説明したタイミングT314〜タイミングT315と同様であるため、説明を省略する。
【0087】
実施例2で説明したデバイス制御システムを、例えば、複数台存在するデバイスサーバ200各々にUSBカメラがローカル接続され、監視装置がUSBカメラから画像や映像を取得できるシステムに適用できる。このとき、監視装置(ネットワークデバイス400に相当)から処理要求をいずれかのデバイスサーバ200(例えば、監視装置の一番近くに存在するデバイスサーバ200)に送信すれば、クライアントPC100が最適なUSBカメラ(デバイス300に相当)を選定し、所望の画像や映像を取得できる。
【0088】
上述のとおり、実施例2のデバイス制御システムでは、処理要求依頼元から処理要求を受信したデバイスサーバ200がクライアントPC100に処理要求を送信することで、仮想化制御機能を有しない装置であっても、処理要求を送信するデバイスサーバ200を選択することなく、システム上のいずれかのデバイスサーバ200に処理要求を送信すると、実行結果を取得できる。
【0089】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【0090】
ネットワークデバイス400は、処理要求パケット(パケットa)の送信先を予め設定したデバイスサーバ200(例:最も近くに位置するデバイスサーバ200)としてもよいし、送信の都度、デバイスサーバ200を選定し、送信してもよい。
【0091】
デバイスサーバ200(デバイスサーバa200A)の処理要求制御部203は、ローカル接続されたデバイス300で処理要求パケット(パケットa)に基づく処理の実行可否を判断し、実行できないと判断した場合、処理要求パケット(パケットa)を処理実行可能なデバイス300が接続された他のデバイスサーバ200(デバイスサーバb200B)に転送してもよい。この場合、転送された処理要求を受信したデバイスサーバ200(デバイスサーバb200B)は、クライアントPC100に処理要求を送信し、クライアントPC100を介して取得した実行結果を処理要求依頼元に送信する。
【0092】
他のデバイスサーバ200に処理要求パケットを転送する場合、以下のいずれかを行えばよい。(1)デバイスサーバ200(デバイスサーバa200A)は、処理要求パケット(パケットa)にデバイスサーバ送信元情報706と処理要求識別情報707を追加した処理要求パケット(パケットb)を送信する。(2)デバイスサーバ送信元情報706と処理要求識別情報707を追加せずに処理要求パケット(パケットa)をそのまま送信(転送)する。
【0093】
クライアントPC100は、実行結果パケット(パケットd)をパケットのヘッダ部に格納される処理要求依頼元情報705に基づいて、処理要求依頼元に直接送信してもよい。この場合、以下のいずれかを行えばよい。(1)パケットのデータ量を軽減するために、実行結果パケット(パケットd)からデバイスサーバ送信元情報706と処理要求識別情報707を削除して送信する。(2)処理要求依頼元で実行結果パケット(パケットd)がどのデバイスサーバ200に送信した処理要求に対するものかを識別可能にするため、実行結果パケット(パケットd)をそのまま送信する。
【0094】
また、クライアントPC100は、実行結果パケット(パケットd)を処理要求パケット(パケットb)の送信元(デバイスサーバa200A)と異なるデバイスサーバ200(デバイスサーバb200B)に送信してもよい。この場合、クライアントPC100から実行結果パケット(パケットd)を受信したデバイスサーバ200(デバイスサーバb200B)は、処理要求依頼元情報705に基づいて、実行結果パケット(パケットd)を処理要求依頼元に送信することができる。
【0095】
さらに、クライアントPC100は、データ送受信用パケット(パケットc)によって取得したデバイス300における実行結果に対してアプリケーションプログラム(不図示)で所定の処理を行い、その実行結果を実行結果パケット(パケットd)のデータ部に格納して送信してもよい。
【0096】
本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【0097】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【0098】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【0099】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【0100】
なお、プログラムコードを供給するため、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CDやDVDに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ROM等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【0101】
100:クライアントPC
101:制御プログラム
102:デバイスドライバ
103:仮想化制御部
200(200A,200B):デバイスサーバ
201:処理実行メイン部
202:仮想化制御部
203:処理要求制御部
204:アプリケーションプログラム
300(300A,300B):デバイス
400:ネットワークデバイス
500:接続ケーブル
600:ネットワーク

【特許請求の範囲】
【請求項1】
デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置であって、
処理要求依頼元からの処理要求を受信する処理要求受信手段と、
前記処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、
前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、
前記セッション要求受信手段で受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御手段と、
前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信手段と、
前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信手段と、
を備えることを特徴とするデバイス制御装置。
【請求項2】
前記処理要求受信手段で受信した前記処理要求に自装置を識別するためのデバイス制御装置識別情報と前記処理要求を識別するための処理要求識別情報を追加する識別情報追加手段をさらに備え、
前記処理要求送信手段は、前記識別情報追加手段で前記デバイス制御装置識別情報と前記処理要求識別情報が追加された当該処理要求を送信することを特徴とする請求項1に記載のデバイス制御装置。
【請求項3】
前記処理要求受信手段で受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断手段をさらに備え、
前記処理要求送信手段は、前記実行可否判断手段における当該デバイスの判断結果を前記クライアント装置に送信することを特徴とする請求項1または請求項2に記載のデバイス制御装置。
【請求項4】
前記処理要求受信手段で受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断手段をさらに備え、
前記実行可否判断手段で当該処理要求を当該デバイスで実行不可能と判断した場合、前記処理要求送信手段は、当該処理要求を他のデバイス制御装置に転送することを特徴とする請求項1または請求項2に記載のデバイス制御装置。
【請求項5】
デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置におけるデバイス制御方法であって、
処理要求依頼元からの処理要求を受信する処理要求受信ステップと、
前記処理要求受信ステップで受信した前記処理要求を前記クライアント装置に送信する処理要求送信ステップと、
前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信ステップと、
前記セッション要求受信ステップで受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御ステップと、
前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信ステップと、
前記実行結果受信ステップで受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信ステップと、
を備えることを特徴とするデバイス制御方法。
【請求項6】
前記処理要求受信ステップで受信した前記処理要求に自装置を識別するためのデバイス制御装置識別情報と前記処理要求を識別するための処理要求識別情報を追加する識別情報追加ステップをさらに備え、
前記処理要求送信ステップは、前記識別情報追加ステップで前記デバイス制御装置識別情報と前記処理要求識別情報が追加された当該処理要求を送信することを特徴とする請求項5に記載のデバイス制御方法。
【請求項7】
前記処理要求受信ステップで受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断ステップをさらに備え、
前記処理要求送信ステップは、前記実行可否判断ステップにおける当該デバイスの判断結果を前記クライアント装置に送信することを特徴とする請求項5または請求項6に記載のデバイス制御方法。
【請求項8】
前記処理要求受信ステップで受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断ステップをさらに備え、
前記実行可否判断ステップで当該処理要求を当該デバイスで実行不可能と判断した場合、前記処理要求送信ステップは、当該処理要求を他のデバイス制御装置に転送することを特徴とする請求項5または請求項6に記載のデバイス制御方法。
【請求項9】
クライアント装置と、前記クライアント装置とネットワークを介して接続されたデバイス制御装置と、前記デバイス制御装置にローカル接続される1つまたは複数のデバイスから構成されるデバイス制御システムであって、
前記クライアント装置は、
前記デバイス制御装置から処理要求を受信する第1の処理要求受信手段と、
前記第1の処理要求受信手段で受信した前記処理要求に応じて、前記デバイス制御装置にセッション要求を送信するセッション要求送信手段と、
当該デバイス制御装置とのセッションを実行する第1の仮想化制御手段と、
前記処理要求に応じて得られた実行結果を取得する実行結果取得手段と、
前記実行結果取得手段で取得した当該実行結果を前記デバイス制御装置に送信する第1の実行結果送信手段と、を備え、
前記デバイス制御装置は、
処理要求依頼元からの処理要求を受信する第2の処理要求受信手段と、
前記第2の処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、
前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、
前記セッション要求受信手段で受信したセッション要求に基づいて、当該クライアント装置とのセッションを制御する第2の仮想化制御手段と、
前記実行結果を前記クライアント装置から受信する実行結果受信手段と、
前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する第2の実行結果送信手段と、
を備えることを特徴とするデバイス制御システム。
【請求項10】
前記デバイス制御システムは、
前記デバイス制御装置を複数備える構成であって、
前記クライアント装置は、
前記第1の処理要求受信手段で受信した前記処理要求を前記デバイスで実行可能か判断する第1の実行可否判断手段と、
前記第1の実行可否判断手段の判断結果に基づいて、前記処理要求を依頼する前記デバイスを選定するデバイス選定手段と、をさらに備え、
前記クライアント装置の前記セッション要求送信手段は、前記デバイス選定手段で選定された前記デバイスが接続されている前記デバイス制御装置に前記セッション要求を送信することを特徴とする請求項9に記載のデバイス制御システム。
【請求項11】
前記デバイス制御装置は、
前記第2の処理要求受信手段で受信した前記処理要求を自装置に接続された前記デバイスで実行可能か判断する第2の実行可否判断手段を、さらに備え、
前記処理要求送信手段は、第2の実行可否判断手段における当該デバイスの判断結果を前記クライアント装置に送信し、
前記クライアント装置は、
前記第1の処理要求受信手段で前記判断結果を受信すると、前記デバイス選定手段によって、前記判断結果に基づいて、前記デバイスを選定することを特徴とする請求項10に記載のデバイス制御システム。
【請求項12】
前記デバイス制御装置は、
前記第2の処理要求受信手段で受信した前記処理要求を自装置に接続された前記デバイスで実行可能か判断する第2の実行可否判断手段を、さらに備え、
前記第2の実行可否判断手段で当該処理要求を前記デバイスで実行不可能と判断した場合、前記処理要求送信手段によって当該処理要求を他のデバイス制御装置に転送することを特徴とする請求項10に記載のデバイス制御システム。
【請求項13】
前記デバイス制御装置は、
前記第2の処理要求受信手段で受信した前記処理要求に自装置を識別するためのデバイス制御装置識別情報と前記処理要求を識別するための処理要求識別情報を追加する識別情報追加手段をさらに備え、
前記処理要求送信手段は、前記識別情報追加手段で前記デバイス制御装置識別情報と前記処理要求識別情報が追加された当該処理要求を送信することを特徴とする請求項9乃至請求項12の何れか1項に記載のデバイス制御システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−108804(P2012−108804A)
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願番号】特願2010−258257(P2010−258257)
【出願日】平成22年11月18日(2010.11.18)
【出願人】(500232640)キヤノンイメージングシステムズ株式会社 (27)
【Fターム(参考)】