以下、本発明の実施形態によるデバイス制御システムの一例について図面を参照して説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態によるデバイス制御システムの一例を示すブロック図である。
<システム構成>
図1のデバイス制御システムは、情報処理装置100、携帯端末200、デバイス制御装置300、外部デバイス400から構成されている。情報処理装置100及び携帯端末200は、例えば、有線回線又は無線回線でローカルエリアネットワーク(LAN)などのネットワーク600を介してデバイス制御装置300に接続されている。そして、デバイス制御装置300には、外部デバイス400が接続ケーブル500などによってローカル接続されている。
<情報処理装置100の構成>
情報処理装置100は、例えば、パーソナルコンピュータ(PC)などであって、図1には示されていないが、ハードウェア構成として、CPU、入力部、表示部、メモリ、通信部、および記憶部などを備え、これらハードウェアは内部バスで相互に接続されている。
CPUは情報処理装置100全体の制御を司る。入力部は、例えば、キーボードおよびマウスを備えている。表示部として、例えば、液晶ディスプレイが用いられる。メモリはRAMおよびROMなどである。
通信部はネットワーク600に接続するためのインターフェースであって、デバイス制御装置300とデータ送受信を行う。これによって、情報処理装置100はデバイス制御装置300にローカル接続された外部デバイス400とデータ送受信することが可能となる。
記憶部には、図示していないソフトウェアであるオペレーティングシステム(以下、OSと呼ぶ)と、アプリケーション101、デバイスドライバ102、仮想化制御部103、通信制御部104が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、CPUの制御に従い動作する。
アプリケーション101は、デバイスドライバ102に対してデータ入出力要求を指示することによって、デバイス制御装置300、外部デバイス400を制御するためのソフトウェアプログラムである。
デバイスドライバ102は、OS又はアプリケーション101からのデータ入出力要求を、外部デバイス400に応じたデータ形式のデータ(以下、制御コマンドと呼ぶ)に変換して、当該制御コマンドを仮想化制御部103に送る。さらに、デバイスドライバ102は制御コマンドに対する応答をアプリケーション101に通知する。
仮想化制御部103は、デバイスドライバ102から送られた制御コマンド(つまり、データ入出力要求)をUSBデータ形式に準拠したパケットデータ(以下、USBデータと呼ぶ)に変換する。また、仮想化制御部103は通信制御部104から送られてくるUSBデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ102に送る。
さらに、仮想化制御部103は、外部デバイス400に対するデータ送受信要求に対して、外部デバイス400が情報処理装置100に直接的に接続(ローカル接続)されている際と同様の振る舞いをシミュレートする機能(以下、仮想化制御と呼ぶ)を備えている。この仮想化制御によって、情報処理装置100は外部デバイス400をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
通信制御部104は、仮想化制御部103から送られるUSBデータとネットワーク600を介してデバイス制御装置300と通信する際のネットワークパケットとの変換処理を行って、デバイス制御装置300との間でデータ送受信の制御を行う。また、通信制御部104は仮想化制御部103から送られるデータ送受信要求に応じて、デバイス制御装置300との間のセッションの接続および切断の制御を行う。
<携帯端末200の構成>
携帯端末200は、ハードウェア構成として、図1には示されていないが、CPU、メモリ、通信部、および記憶部などを備えるとともに、内部デバイス250(後述)を備え、これらハードウェアは内部バスで相互に接続されている。例えば、携帯電話機、PDA、スマートフォンなどの機器であるが、これらに限定されるものではない。
CPUは携帯端末200全体の制御を司る。内部デバイス250である表示デバイス250Aは、例えば、液晶ディスプレイが用いられる。入力デバイス250Bとして、例えば、キーボード、テンキーおよびマウスなどの入力機器若しくはこれらの機能をソフトウェアで実現したソフトウェアキーボードなどである。メモリはRAMおよびROMなどである。
通信部はネットワーク600に接続するためのインターフェースであって、デバイス制御装置300とデータ送受信を行う。
記憶部には、ソフトウェアであるOS(図示せず)、アプリケーション201、仮想デバイス制御部202、仮想化通信部203、通信制御部204が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、CPUの制御に従い動作する。
アプリケーション201は、携帯端末200で様々な制御を実行させるためのソフトウェアプログラム群であり、仮想化制御の切り替え、終了などを指示するソフトウェア(ユーザインターフェース)などが含まれている。
仮想デバイス制御部202は、仮想デバイス識別情報202Aおよびデータ形式変換処理部202Bを備えている。さらに、仮想デバイス制御部202は、内部デバイス250を仮想的なUSBデバイスに切り替えるユーザインターフェースなどの切替部(不図示)を備えている。
仮想デバイス識別情報202Aは、デバイス制御装置300に携帯端末200の内部デバイス250を自装置にローカル接続されているように認識させるために用いられる。内部デバイス250である表示デバイス250Aおよび入力デバイス250Bは、外部デバイス400のように、機器を個別に識別するための個体識別情報に相当する情報を有していないので、デバイス制御装置300は内部デバイス250を認識することができない。
そこで、個体識別情報に相当する仮想デバイス識別情報202Aを表示デバイス250Aおよび入力デバイス250Bの各々に割り当てて、デバイス制御装置300に外部デバイス400と同様に、表示デバイス250Aおよび入力デバイス250BをUSBデバイスとして認識させる。ここでは、USBデバイスのデータ構造を定義する構成情報(以下、USBディスクリプタと呼ぶ)を疑似的に作成したものを仮想デバイス識別情報とする。
仮想デバイス識別情報202Aは、仮想デバイス制御部202に予め記憶されたものであるが、仮想デバイス制御部202によって生成するようにしてもよい。
図2は、図1に示す仮想デバイス識別情報202Aの一例を示す図である。
表示デバイス250Aはディスプレイに対応し、入力デバイス250Bはキーボードおよびマウスに対応している。これらキーボード、マウス、およびディスプレイをUSBデバイスとして認識させるために疑似的なUSBディスクリプタ(つまり、仮想デバイス識別情報202A)を割り当てている。
図2に示す疑似的なUSBディスクリプタは、ベンダーID、プロダクトID、シリアル番号、クラス、サブクラス、プロトコル、およびインターフェースから構成されている。
ベンダーIDは、各企業や製造会社毎に割り当てられる識別情報であり、プロダクトIDは、ベンダーIDを持つ企業や会社が各製品や機種毎に重複しないよう割り振るコードである。本実施形態では、携帯端末200に割り当てられているベンダーIDおよびプロダクトIDが用いられる。
また、クラス、サブクラス、プロトコル、およびインターフェースは、キーボード、マウス、およびディスプレイなどデバイスの種類に応じてUSB規格で規定されている情報である。そして、ベンダーIDおよびプロダクトIDと、クラス、サブクラス、プロトコル、およびインターフェースとを関連付けた疑似的なUSBディスクリプタを作成して、仮想デバイス制御部202が仮想デバイス識別情報202Aとして保持(記憶)する。
いま、入力デバイス250Bに対してユーザ操作などによって内部デバイス250への接続を開始させるための接続操作が行われると、仮想デバイス制御部202は仮想デバイス識別情報202Aを仮想化通信部203に送る。一方、終了操作が行われると、仮想化通信部203は内部デバイス250の仮想化制御を終了する。
データ形式変換処理部202Bは、仮想化通信部203から送られるUSBデータ形式に準拠したパケットデータ(以下、USBデータと呼ぶ)と内部デバイス250で処理可能なデータ形式のデータとの変換処理を行う。これにより、内部デバイス250と接続された入力インターフェースおよびディスプレイインターフェースとデバイス制御装置300との間のデータの送受信を可能にしている。
<入力デバイス/表示デバイスの仮想化制御とデータ形式変換について>
本実施形態において、仮想デバイス制御部202は、キーボードおよびマウスなどの入力デバイス250Bに係る仮想デバイス識別情報202Aとして、HIDクラスを識別したUSBディスクリプタを仮想化通信部203に送る。また、データ形式変換処理部202Bは、入力デバイス250Bから入力された入力データをHIDクラスのUSBデータに変換し、入力インターフェースを介して仮想化通信部203に送る。
さらに、仮想デバイス制御部202は、ディスプレイなどの表示デバイス250Aに係る仮想デバイス識別情報202Aとして、ベンダー固有情報(ベンダークラス)を識別したUSBディスクリプタを仮想化通信部203に送る。また、データ形式変換処理部202Bは、仮想化通信部203から送られるUSBデータを表示デバイス250Aのデータ形式に変換して、ディスプレイインターフェースを介して表示デバイス250Aに送る。
例えば、携帯端末200に備えられたタッチパネルからネットワーク上のデバイス制御装置300を遠隔操作する際には、タッチパネルからの切り替え操作に応じて上述したような仮想デバイス識別情報202Aがネットワーク上のデバイス制御装置300へ送られる。それに応じて、内部デバイス250であるタッチパネル(つまり、キーボード入力およびディスプレイ出力)がネットワーク上のデバイス制御装置300からの仮想化制御に切り替わる。これによって、携帯端末200に備えられたタッチパネルからネットワーク上のデバイス制御装置300を遠隔操作することができるようになる。
仮想化通信部203は、内部デバイス250があたかもデバイス制御装置300にローカル接続されているかのように認識させて制御できるようにするため、デバイス制御装置300の仮想化制御部323からの制御要求に従って(連動して)内部デバイス250の制御を行う。
通信制御部204は、デバイス制御装置300との間で行われる入出力データなどの送受信を制御する。
<内部デバイス250の構成>
前述のように、内部デバイス250は、表示デバイス250Aおよび入力デバイス250Bなどの入出力装置であって、表示デバイス250Aおよび入力デバイス250Bはそれぞれ入力インターフェースおよびディスプレイインターフェースを介して内部バスに接続される。入力デバイスは、キーボード、マウス、およびテンキーなどからの入力を処理し、デバイス制御装置300の操作の際に用いられる。
表示デバイス250Aには、例えば、液晶ディスプレイが用いられる。表示デバイス250Aはタッチパネルを備えるようにしてもよく、この場合には、表示デバイス250Aは入力部としての機能を備えることになる。内部バスは、デバイス制御装置300の各ブロックを相互に接続して各種のデータの送受信を行うとともに、電力を供給する。
<デバイス制御装置300の構成>
デバイス制御装置300は、例えば、プリンタ又は複合機などの周辺機器であって、ハードウェア構成として、CPU、メモリ、通信部、および記憶部(ともに図示せず)などを備え、これらハードウェアは内部バスで相互に接続されている。
CPUはデバイス制御装置300全体の制御を司る。入力デバイスは、例えば、キーボード、テンキーおよびマウスなどの入力機器若しくはこれらの機能をソフトウェアで実現したソフトウェアキーボードなどである。表示デバイスとして、例えば、液晶ディスプレイが用いられる。メモリはRAMおよびROMなどである。
通信部はネットワーク600に接続するためのインターフェースであって、情報処理装置100および携帯端末200とデータ送受信を行う。
記憶部には、ソフトウェアであるOS(図示せず)とともに、情報処理装置100との間で仮想化制御するための仮想化クライアント機能部310と、携帯端末200との間で仮想化制御するための仮想化サーバ機能部320と、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、CPUの制御に従い動作する。
仮想化クライアント機能部310は、情報処理装置100によって外部デバイス400の仮想化制御を実行させるためのソフトウェアであるデバイス制御部311、仮想化通信部312、通信制御部313を備えた構成である。
デバイス制御部311は、デバイス制御装置300に接続ケーブル500で接続された外部デバイス400を制御する。
仮想化通信部312は、通信制御部313を介して情報処理装置100の仮想化制御部103と連動してデバイス制御部311を制御する。
通信制御部313は、ネットワーク600と接続して情報処理装置100との間の通信を制御する。
このような構成によって、情報処理装置100は、外部デバイス400がローカル接続されたときと同様に制御することができる。
仮想化サーバ機能部320は、携帯端末200の内部デバイス250を仮想化制御するためのソフトウェアであるアプリケーション321、デバイスドライバ322、仮想化制御部323、通信制御部313を備えた構成である。
アプリケーション321は、デバイスドライバ322に対してデータ入出力要求を指示することによって、携帯端末200の内部デバイス250を制御するためのソフトウェアプログラムである。
デバイスドライバ322は、OS又はアプリケーション321からのデータ入出力要求を、携帯端末200の内部デバイス250に応じたデータ形式のデータ(以下、制御コマンドと呼ぶ)に変換して、当該制御コマンドを仮想化制御部323に送る。さらに、デバイスドライバ322は制御コマンドに対する応答をアプリケーション321に通知する。
仮想化制御部323は、デバイスドライバ322から送られた制御コマンド(つまり、データ入出力要求)をUSBデータ形式に準拠したパケットデータ(以下、USBデータと呼ぶ)に変換する。また、仮想化制御部323は通信制御部313から送られてくるUSBデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ322に送る。
さらに、仮想化制御部323は、携帯端末200の内部デバイス250に対するデータ送受信要求に対して、携帯端末200の内部デバイス250がデバイス制御装置300に直接的に接続(ローカル接続)されている際と同様の振る舞いをシミュレートする機能(以下、仮想化制御と呼ぶ)を備えている。この仮想化制御によって、デバイス制御装置300は携帯端末200の内部デバイス250をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
通信制御部313は、ネットワーク600と接続して携帯端末200との間の通信を制御する。仮想化制御部323から送られるUSBデータとLANを介して携帯端末200と通信する際のネットワークパケットとの変換処理を行って、携帯端末200との間でデータ送受信の制御を行う。また、通信制御部313は仮想化制御部323を介してアプリケーション321又はデバイスドライバ322から送られるデータ送受信要求に応じて、携帯端末200との間のセッションの接続および切断の制御を行う。
なお、図1に示してある通信制御部313は1つであるが、情報処理装置100との間の制御を行う通信制御部と携帯端末200との間の制御を行う通信制御部をそれぞれ別個に設ける構成であってもよい。
<外部デバイス400の構成>
外部デバイス400は、例えば、キーボード、マウス、およびテンキーなどの入力デバイス、CRT又は液晶ディスプレイなどの表示デバイス、HDDやUSBメモリなどの記憶装置などである。そして、外部デバイス400はデバイス制御装置300にUSBインターフェースなどの通信インターフェースによって接続される。
図3は、図1に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンス図である。
<1.情報処理装置100が外部デバイス400の仮想化制御する際のシーケンス>
まず、図1に示すデバイス制御システムにおいて、情報処理装置100がデバイス制御装置300に接続された外部デバイス400を仮想化制御する際の動作を説明する。この場合、情報処理装置100は仮想化サーバ装置、デバイス制御装置300は仮想化クライアント装置として制御が行われる。
図示の例では、デバイス制御装置300に外部デバイス400をUSBインターフェースなどの通信インターフェースで接続することによって仮想化制御が開始される。
まず、外部デバイス400をデバイス制御装置300に接続する(ステップS101)。外部デバイス400の個体識別情報がデバイス制御装置300のデバイス制御部311に送信されることにより外部デバイス400の接続通知がなされる(ステップS102)。
デバイス制御部311は接続通知を受け取ると、この個体識別情報を含む接続通知を仮想化通信部312に送る(ステップS103)。仮想化通信部312は、通信制御部313を介し、情報処理装置100に対して当該個体識別情報を外部デバイス400の接続通知として送信する(ステップS104)。
情報処理装置100は、通信制御部104を介して受信したデバイス制御装置300かの接続通知(外部デバイス400の個体識別情報)を、仮想化制御部103に送る。仮想化制御部103は、この個体識別情報をアプリケーション101に送る(ステップS105)。
アプリケーション101は、接続通知を受け取ると、仮想化制御部103に外部デバイス400の仮想化制御の開始を指示し、仮想化制御部103は外部デバイス400の仮想化制御を開始する。
情報処理装置100による外部デバイス400の仮想化制御が開始されると、情報処理装置100では、アプリケーション101がデバイスドライバ102とデータ送受信し(ステップS106)、デバイスドライバ102が仮想化制御部103とデータ送受信し(ステップS107)、仮想化制御部103が通信制御部104を介してデバイス制御装置300とデータ送受信を行う(ステップS108)。
デバイス制御装置300では、通信制御部313を介して仮想化通信部312と情報処理装置100がデータ送受信し、仮想化通信部312とデバイス制御部311がデータ送受信し(ステップS109)、デバイス制御部311が通信部のUSBインターフェースを介して外部デバイス400とデータ送受信を行う(ステップS110)。
上述したステップS106〜ステップS110のデータ送受信処理によって、デバイス制御装置300を介して、ネットワーク600上の情報処理装置100が外部デバイス400をローカル接続した場合と同一の状態であると認識して制御を実行する。
情報処理装置100による外部デバイス400の仮想化制御を終了させる場合、所定のユーザ操作などによって、外部デバイス400から終了操作(例えば、終了ボタンの押下)を実行する(ステップS111)。外部デバイス400の仮想化制御の終了を通知(以下、制御終了通知と呼ぶ)がデバイス制御装置300のデバイス制御部311に送信される(ステップS112)。なお、終了操作は、情報処理装置100、デバイス制御装置300、外部デバイス400の何れの装置からでも実行することが可能である。
デバイス制御装置300のデバイス制御部311は、仮想化通信部312に外部デバイス400の制御終了通知を送信する(ステップS113)。仮想化通信部312は、この制御終了通知を通信制御部313を介し、情報処理装置100に対して送信する(ステップS114)。
情報処理装置100は、通信制御部104を介して受信したデバイス制御装置300からの制御終了通知を、仮想化制御部103に送る。仮想化制御部103は、制御終了通知を受け取ると、アプリケーション101に外部デバイス400の制御終了通知を送る(ステップS115)。
アプリケーション101は、制御終了通知を受け取ると、仮想化制御部103に外部デバイス400の仮想化制御の終了を指示し、仮想化制御部103は、外部デバイス400の仮想化制御を終了する。
<2.デバイス制御装置が携帯端末の内部デバイスを仮想化制御する際のシーケンス>
次に、図1に示すデバイス制御システムにおいて、デバイス制御装置300に接続された携帯端末200の内部デバイス250を仮想化制御する際の動作を説明する。この場合、携帯端末200は仮想化クライアント装置、デバイス制御装置300は仮想化サーバ装置として制御が行われる。
まず、ユーザは所定の操作によって表示デバイス250Aに操作画面を表示させ、入力デバイス250Bによる接続操作(例えば、接続ボタンの押下)を実行すると(ステップS201)、仮想デバイス制御部202に対して、内部デバイス250の接続要求が送られる(ステップS202)。
仮想デバイス制御部202は、この接続要求を検出すると、仮想化通信部203に対して表示デバイス250Aおよび入力デバイス250Bの仮想デバイス識別情報202Aを送信することにより内部デバイス250の接続通知を送る(ステップS203)。
仮想化通信部203は、この接続通知を受け取ると、通信制御部313を介してデバイス制御装置300に接続通知を送信する(ステップS204)。
デバイス制御装置300は、通信制御部313を介して受信した携帯端末200からの接続通知を仮想化制御部323へ送る。仮想化制御部323は、この接続通知を受け取ると、アプリケーション321に対して携帯端末200の内部デバイス250の接続通知を送る(ステップS205)。
アプリケーション321は、接続通知を受け取ると、仮想化制御部323に内部デバイス250の仮想化制御の開始を指示し、仮想化制御部323は、携帯端末200の内部デバイス250の仮想化制御を開始する。
デバイス制御装置300による携帯端末200の内部デバイス250の仮想化制御が開始されると、デバイス制御装置300では、アプリケーション321とデバイスドライバ322がデータ送受信し(ステップS206)、デバイスドライバ322が仮想化制御部323とデータ送受信し(ステップS207)、仮想化制御部323が通信制御部313を介して携帯端末200とデータ送受信を行う(ステップS208)。
携帯端末200では、通信制御部204を介して仮想化通信部203がデバイス制御装置300とデータ送受信し、仮想化通信部203と仮想デバイス制御部202がデータ通信し(ステップS209)、仮想デバイス制御部202が内部バスに接続されたディスプレイインターフェース、入力インターフェースを介して表示デバイス250Aと入力デバイス250Bとデータ送受信を行う(ステップS210)。
上述したステップS206〜ステップS210により、アプリケーション321は、携帯端末200の内部デバイス250をローカル接続した場合と同一の状態であると認識して制御を実行する。
なお、上述したステップS209、ステップS210において、仮想デバイス制御部202のデータ形式変換処理部202Bでは、仮想化通信部203から送られるUSBデータを表示デバイス250Aのデータ形式(第1のデータ形式)に変換して、ディスプレイインターフェースを介してデータ送受信する。なお、変換が不要なデータ形式の場合は、変換処理を実行せずにデータ送受信を行う。
また、携帯端末200の仮想デバイス制御部202のデータ形式変換処理部202Bは、入力デバイス250Bによる操作で入力されたデータを入力インターフェースを介して受信し、この入力データをUSBデータ(第2のデータ形式)に変換して仮想化通信部203に送信する。
このようにして、携帯端末200の表示デバイス250Aにデバイス制御装置300から送られてくる画面データ(例えば、デバイス制御装置300に接続された液晶ディスプレイに表示される画面)が表示される。また、入力デバイス250Bを操作することによって、デバイス制御装置300に対してキーボードやテンキーと同様の入力操作を行うことができる。
デバイス制御装置300による携帯端末200の内部デバイス250の仮想化制御を終了させる場合、携帯端末200の入力デバイス250Bで所定の終了操作(例えば、終了ボタンを押下)を実行する(ステップS211)と、仮想デバイス制御部202に対して、内部デバイス250の制御終了要求が送られる(ステップS212)。
仮想デバイス制御部202は、制御終了要求を受け取ると、仮想化通信部203に制御終了通知を送る(ステップS213)。
仮想化通信部203は、制御終了通知を受け取ると、通信制御部204を介して、デバイス制御装置300に制御終了通知を送信する。
デバイス制御装置300は、通信制御部313を介して携帯端末200からの制御終了通知を受け取ると、この制御終了通知を仮想化制御部323へ送る(ステップS214)。仮想化制御部323は、制御終了通知を受け取ると、アプリケーション321に対して内部デバイス250の制御終了通知を送る(ステップS215)。
アプリケーション321は、制御終了通知を受け取ると、仮想化制御部323に内部デバイス250の仮想化制御の終了を指示し、仮想化制御部323は、携帯端末200の内部デバイス250の仮想化制御を終了する。
このように、本発明の第1の実施形態では、デバイス制御装置に仮想化サーバ機能と仮想化クライアント機能を共存させることによって、情報処理装置から要求されたデバイスを仮想化制御し、また、自身が仮想化制御したいデバイスも制御することができる。
[第2の実施形態]
図4は、本発明の第2の実施形態によるデバイス制御システムの一例を示すブロック図である。
第2の実施形態は、仮想化サーバ機能部と仮想化クライアント機能部を併せ持つ装置において、これらを内部で連携させて仮想化制御する点に特徴がある。本実施形態では、デバイス制御装置300の仮想化サーバ機能部320と仮想化クライアント機能部310を連携させることにより、デバイス制御装置300Aを介して、情報処理装置100Aのデバイスドライバ102を使って携帯端末200Aの内部デバイス250を仮想化制御する。
<システム構成>
図4のデバイス制御システムは、情報処理装置100A、携帯端末200A、デバイス制御装置300Aから構成されており、図1で示したデバイス制御システムと以下の構成が異なっている。
情報処理装置100Aが携帯端末200Aの表示デバイス250Aを制御する表示ドライバ102Aを具備しているが、デバイス制御装置300Aが表示ドライバを具備していない構成である。その他の接続構成や構成要素は、図1と同じであるため、図1に示す構成要素と同一の構成要素については同一の参照番号を付して説明を省略し、異なる点についてのみ説明する。
デバイス制御装置300Aは、情報処理装置100Aによって携帯端末200Aの内部デバイス250を仮想化制御させるために、第1の実施形態で説明した機能に加えて、仮想化クライアント機能部310と仮想化サーバ機能部320を連動させる機能を備えている。具体的には、以下のような機能を備えている。
仮想化サーバ機能部320の仮想化制御部323は、「制御モード」を設定する仮想化ブリッジ設定機能を備え、予め設定する「制御モード」に従って仮想化制御を実行する。
「制御モード」には、該当する内部デバイスのデバイスドライバを持っている場合に設定する「直接制御モード」と、他の機器のデバイスドライバを使って仮想化制御する場合に設定する「間接制御モード」がある。
また、「間接制御モード」の場合に必要となる内部デバイスのデバイス情報(USBデバイスの場合、USBクラスなどの情報)と、当該内部デバイスの仮想化制御を実行させる装置の宛先情報(例えば、IPアドレスなど)を関連付けた設定情報をデバイス制御装置300A内のメモリに予め記憶させておく。
そして、仮想化制御部323は、仮想化制御の対象となる内部デバイスを持つ装置からの接続通知、ここでは、携帯端末200Aの内部デバイス250からの接続通知を受け取ると、内部デバイス250からの接続通知に基づいて「制御モード」を判断して該当する制御モードによる仮想化制御を実行する。
「直接制御モード」に設定されている場合、仮想化制御部323は、内部デバイス250に適したデバイスドライバを自装置内で備えていると判断し、第1の実施形態で説明したデバイス制御装置300Aと携帯端末200Aの内部デバイス250の仮想化制御と同じ制御を実行する。即ち、図3で説明したステップS205〜ステップS215と同じシーケンスを実行するので、その説明は省略する。
「間接制御モード」に設定されている場合、仮想化制御部323は、内部デバイス250に適したデバイスドライバを自装置内で持っていないと判断し、仮想化クライアント機能部310の仮想化通信部312と接続し、内部デバイス250からの接続通知とともに、当該内部デバイス250に応じた設定情報を読み出して仮想化通信部312に送信する。また、仮想化通信部312から受信した情報を通信制御部313を介して内部デバイス250を持つ装置(携帯端末200A)に送信する。
仮想化クライアント機能部310の仮想化通信部312は、仮想化サーバ機能部320の仮想化制御部323が「間接制御モード」に設定されている場合、仮想化制御部323と接続し、仮想化制御部323から送られてくる内部デバイス250からの接続通知と設定情報を受け取ると、この設定情報をデバイス制御装置300A内のメモリに記憶しておく。
そして、設定情報に含まれる宛先情報の装置(ここでは、情報処理装置100A)に対し、通信制御部313を介して、内部デバイス250からの接続通知を送信する。また、情報処理装置100Aから通信制御部313を介して受信したデータに含まれるデバイス識別情報と、記憶しておいた設定情報に基づいて仮想化ブリッジ設定が「間接制御モード」であると判断すると、仮想化制御部323に対して受信したデータを送信する。
<図4のデバイス制御システムにおける仮想化制御のシーケンス>
図5は、図4に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンス図である。
図4に示すデバイス制御システムにおいて、携帯端末200Aの内部デバイス250を、デバイス制御装置300Aを介して、情報処理装置100Aによって仮想化制御する際の動作を説明する。この場合、携帯端末200Aが仮想化クライアント装置、デバイス制御装置300Aが仮想化サーバ装置及び仮想化クライアント装置、情報処理装置100Aが仮想化サーバ装置として制御が行われる。
携帯端末200Aから内部デバイス250の仮想化制御を開始させる。まず、ユーザは、携帯端末200Aで所定の操作を行い、表示デバイス250Aに操作画面を表示させ、入力デバイス250Bで接続操作(例えば、接続ボタンの押下など)を実行すると、仮想デバイス制御部202に対して、内部デバイス250の接続要求が送られる(ステップS301)。
仮想デバイス制御部202は、この接続要求を検出すると、仮想化通信部203に表示デバイス250Aおよび入力デバイス250Bそれぞれの仮想デバイス識別情報202Aを送信して内部デバイス250の接続通知を送る(ステップS302)。仮想化通信部203は、この接続通知を受け取ると、通信制御部313を介してデバイス制御装置300Aに接続通知を送信する(ステップS303)。
デバイス制御装置300Aは、携帯端末200Aから接続通知を受け取ると、通信制御部313を介して仮想化制御部323に接続通知を送る。仮想化制御部323では、接続通知から携帯端末200Aの内部デバイス250に対する仮想化ブリッジ設定を判断し、仮想化制御を開始する。以下、仮想化ブリッジ設定が「間接制御モード」に設定されている場合のシーケンスについて説明する。
仮想化ブリッジ設定が「間接制御モード」の場合、仮想化制御部323は、仮想化通信部312と接続し、表示デバイス250Aからの接続通知とともに、当該内部デバイス250に応じた設定情報を仮想化通信部312に送信する(ステップS304)。
仮想化通信部312は、仮想化制御部323から送られてくる設定情報を記憶し、通信制御部313を介して、設定情報に含まれる宛先情報の情報処理装置100Aに対して、表示デバイス250Aからの接続通知を送信する(ステップS305)。
情報処理装置100Aは、通信制御部104を介して、デバイス制御装置300Aから受信した接続通知を仮想化制御部103に送る。仮想化制御部103は、この接続通知をアプリケーション101に送る(ステップS306)。アプリケーション101は、接続通知を受け取ると、仮想化制御部103に表示デバイス250Aの仮想化制御の開始を指示し、仮想化制御部103は、携帯端末200Aの表示デバイス250Aの仮想化制御を開始する。
情報処理装置100Aでは、アプリケーション101から表示ドライバ102Aに対して、データ入出力(制御)の要求を送る(ステップS307)。表示ドライバ102Aは、表示デバイス250Aに係るパラメータを要求する第1の転送要求(以下、転送要求1)を生成して、仮想化制御部103に渡す(ステップS308)。
仮想化制御部103は、転送要求1からデバイス制御装置300Aの仮想化制御部323に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送要求1を生成し、通信制御部313を介して当該デバイス転送要求1をデバイス制御装置300Aに送信する(ステップS309)。
デバイス制御装置300Aは、情報処理装置100Aから受信したデバイス転送要求1を仮想化通信部312に送る。仮想化通信部312は、このデバイス転送要求1から仮想化制御部323に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだ転送要求2を生成する。そして、ステップS305で記憶しておいた設定情報から仮想化ブリッジ設定が「間接制御モード」であると判断し、生成した転送要求2を仮想化制御部323に渡す(ステップS310)。
仮想化制御部323は、転送要求2から携帯端末200Aの仮想化通信部203に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送要求2を生成し、通信制御部313を介して当該デバイス転送要求2を携帯端末200Aに送信する(ステップS311)。
携帯端末200Aは、通信制御部204を介してデバイス制御装置300Aからデバイス転送要求2を受け取ると、仮想化通信部203によって当該デバイス転送要求2に含まれるデバイス識別情報に応じてデータ転送を行うべき表示デバイス250Aを特定する。
そして、仮想化通信部203は、デバイス転送要求2に含まれる要求パラメータを、仮想デバイス制御部202に渡すデータ形式に変換した転送要求3を生成し、仮想デバイス制御部202に渡す(ステップS312)。仮想デバイス制御部202は、この転送要求3を表示デバイス250Aに適ったデータ形式に変換した「要求」を表示デバイス250Aに送る(ステップS313)。
仮想デバイス制御部202のデータ形式変換処理部202Bでは、仮想化通信部203から送られるUSBデータを表示デバイス250Aのデータ形式(第1のデータ形式)に変換して、ディスプレイインターフェースを介してデータ送受信する。なお、変換が不要なデータ形式の場合は、変換処理を実行せずにデータ送受信を行う。
ステップS313で情報処理装置100Aから携帯端末200Aの表示デバイス250Aへの要求が送られる。この要求に対する応答は、以下の処理ステップS314〜ステップS320のシーケンスに従って行われる。
表示デバイス250Aは、ステップS313で受け取った要求に対する制御結果である応答データを仮想デバイス制御部202に送る(ステップS314)。仮想デバイス制御部202は、この応答データを仮想化通信部203とのデータ通信に適ったデータ形式(USBデータ)に変換した転送応答3を仮想化通信部203に渡す(ステップS315)。
仮想化通信部203は、転送応答3からデバイス制御装置300Aの仮想化制御部323に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送応答3を生成し、通信制御部204を介して当該デバイス転送応答3をデバイス制御装置300Aに送信する(ステップS316)。
デバイス制御装置300Aは、携帯端末200Aから受信したデバイス転送応答3を仮想化制御部323に送る。仮想化制御部323は、「間接制御モード」に設定されているので、このデバイス転送応答3から仮想化通信部312に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだ転送応答2を生成し、仮想化通信部312に渡す(ステップS317)。
仮想化通信部312は、転送応答2から情報処理装置100Aの仮想化制御部103に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送応答2を生成し、通信制御部313を介して当該デバイス転送応答2を情報処理装置100Aに送信する(ステップS318)。
情報処理装置100Aは、通信制御部104を介してデバイス制御装置300Aからデバイス転送応答2を受け取ると、仮想化制御部103に渡す。仮想化制御部103は、当該デバイス転送応答2から表示ドライバ102Aに渡すパラメータのみを応答パラメータとして取り出して転送応答1を生成し、表示ドライバ102Aに渡す(ステップS319)。
表示ドライバ102Aは、転送応答1から応答パラメータを取り出してアプリケーション101に渡す(ステップS320)。アプリケーション101は、要求に対する応答を確認する。
このようにして、デバイス制御装置300Aを介して情報処理装置100Aが携帯端末200Aの表示デバイス250Aの仮想化制御を実行する。
また、携帯端末200Aから終了操作を行い、デバイス制御装置300Aを介した仮想化制御を終了させる場合について説明する。
携帯端末200Aで所定の操作を行い、終了操作(例えば、終了ボタンの押下)を実行すると、仮想デバイス制御部202に対して、制御終了要求が送られる(ステップS321)。
仮想デバイス制御部202は、制御終了要求を受け取ると、仮想化通信部203に制御終了通知を送る(ステップS322)。
仮想化通信部203は、制御終了通知を受け取ると、通信制御部204を介して、デバイス制御装置300Aに制御終了通知を送信する。
デバイス制御装置300Aは、通信制御部313を介して携帯端末200Aからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部323へ送る(ステップS323)。仮想化制御部323は、制御終了通知を受け取ると、「間接制御モード」に設定されているので、仮想化通信部312へ制御終了通知を送る(ステップS324)。
仮想化通信部312は、制御終了通知を受け取ると、通信制御部313を介して、情報処理装置100Aに制御終了通知を送信する(ステップS325)。
情報処理装置100Aは、通信制御部104を介してデバイス制御装置300Aからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部103へ送る。仮想化制御部103は、制御終了通知を受け取ると、アプリケーション101に対して表示デバイス250Aの制御終了通知を送る(ステップS326)。
アプリケーション101は、制御終了通知を受け取ると、仮想化制御部103に表示デバイス250Aの仮想化制御の終了を指示し、仮想化制御部103は、携帯端末200Aの表示デバイス250Aの仮想化制御を終了する。
なお、上述の例では、デバイス制御装置300が表示ドライバを具備していない構成で説明したが、これに限定されない。デバイス制御装置300がデバイスドライバ322(表示ドライバおよび入力ドライバ)を複数具備し、仮想化制御しようとする内部デバイスに適したデバイスドライバがデバイス制御装置300内にある場合には「制御モード」を「直接制御モード」に設定し、適したデバイスドライバがデバイス制御装置300内にない場合には「制御モード」を「間接制御モード」に設定するように構成することもできる。
上述したシーケンスによる制御の別の適用例として、情報配信可能なデバイス、例えば、内部デバイス250がカメラの場合に、当該カメラを「直接制御モード」かつ「間接制御モード」に設定することにより、カメラで撮った映像をアプリケーション321とアプリケーション101に配信することが可能となる。
このように、第2の実施形態では、サーバ機能とクライアント機能を連携させ、情報処理装置100Aのデバイスドライバを使って携帯端末200Aの内部デバイス250を制御させるために、デバイス制御装置300A内の仮想化制御部323と仮想化通信部312を接続し、情報処理装置100Aと携帯端末200Aのデータ送受信を中継することで、サーバ機能で仮想化したデバイスに対応するドライバがデバイス制御装置内に存在しない場合でも、他の装置のドライバを利用して制御させることが可能となる。
[第3の実施形態]
図6は、本発明の第3の実施形態によるデバイス制御システムの一例を示すブロック図である。
第3の実施形態は、ネットワークを介して接続された装置が互いに接続相手の装置の内部デバイスを仮想化制御する点に特徴がある。本実施形態では、デバイス制御装置300Aと携帯端末200Aそれぞれがサーバ機能/クライアント機能を実行することで、互いの装置が具備している内部デバイスの仮想化制御を実行する。
<システム構成>
図6のデバイス制御システムは、携帯端末200B、デバイス制御装置300Bから構成されており、ネットワーク600(有線又は無線)を介して接続されている。なお、図1、図4に示す構成要素と同一の構成要素については同一の参照番号を付して、説明を省略する。
デバイス制御装置300Bは、仮想化サーバ機能部320と、仮想化クライアント機能部330を備えている。本実施形態では、プリンタとストレージ機能を備えた複合機として説明する。ハードウェア構成としては、図1のデバイス制御装置300Bと同様、CPU、メモリ、通信部、および記憶部(ともに図示せず)などを備え、更に、印刷機能を持つプリンタ350A、データを蓄積する機能を持つストレージ350Bを内部デバイス350として備えており、これらハードウェアは内部バスで相互に接続されている。内部デバイス350以外は図1と同じ構成であるため、説明は省略する。
仮想化サーバ機能部320は、携帯端末200Bの内部デバイス250を仮想化制御するためのソフトウェアを備えており、図1で示したデバイス制御装置300Bの仮想化サーバ機能部320と同等のソフトウェア構成であるため、その説明を省略する。
仮想化クライアント機能部330は、携帯端末200Bによって内部デバイス350の仮想化制御を実行させるためのソフトウェアである仮想デバイス制御部335、仮想化通信部334、通信制御部313から構成される。
仮想デバイス制御部335は、仮想デバイス識別情報335Aおよびデータ形式変換処理部335Bを備えている。さらに、内部デバイス350を仮想的なUSBデバイスに切り替えるユーザインターフェースなどの切替部を備えている。
仮想デバイス識別情報335Aは、内部デバイス350を自装置にローカル接続されているように認識させるために用いられる。この仮想デバイス識別情報335Aを内部デバイス350であるプリンタ350Aおよびストレージ350Bの各々に割り当てて、携帯端末200Bに外部デバイス400と同様に、プリンタ350Aおよびストレージ350BをUSBデバイスとして認識させる。ここでは、USBデバイスのデータ構造を定義する構成情報(以下、USBディスクリプタと呼ぶ)を疑似的に作成したものを仮想デバイス識別情報とする(図2参照)。
データ形式変換処理部335Bは、仮想化通信部334から送られるUSBデータ形式に準拠したパケットデータ(USBデータ)と内部デバイス350で処理可能なデータ形式のデータとの変換処理を行って携帯端末200Bとの間のデータの送受信を可能にしている。
<プリンタ/ストレージの仮想化制御とデータ形式変換について>
本実施形態において、仮想デバイス制御部335は、仮想デバイス識別情報として、プリンタ350Aおよびストレージ350Bを識別したUSBディスクリプタをそれぞれ仮想化通信部334に送る。また、データ形式変換処理部335Bは、内部デバイス350から入出力された入出力データをプリンタ350Aおよびストレージ350BのUSBデータに変換し、入出力インターフェースを介して仮想化通信部334に送る。
携帯端末200Bは、仮想化サーバ機能部220と、仮想化クライアント機能部210を備えている。ハードウェア構成としては、図1の携帯端末200と同等の構成を備えているので、説明を省略する。なお、内部デバイス250として、図1の表示デバイス250Aおよび入力デバイス250Bの機能を兼ね備えたタッチパネル250Cを備える。
仮想化サーバ機能部220は、デバイス制御装置300Bの内部デバイス350を仮想化制御するためのソフトウェアであるアプリケーション221、デバイスドライバ222、仮想化制御部223、通信制御部204から構成されている。
アプリケーション221は、デバイスドライバ222に対してデータ入出力要求を指示することによって、デバイス制御装置300Bの内部デバイス350を制御するためのソフトウェアプログラムである。
デバイスドライバ222は、OS又はアプリケーション221からのデータ入出力要求を、デバイス制御装置300Bの内部デバイス350に応じたデータ形式のデータ(以下、制御コマンドと呼ぶ)に変換して、当該制御コマンドを仮想化制御部223に送る。さらに、デバイスドライバ222は制御コマンドに対する応答をアプリケーション221に通知する。ここでは、プリンタ350Aに対応したプリンタドライバ222A、ストレージ350Bに対応したストレージドライバ222Bのことを示す。
仮想化制御部223は、デバイスドライバ222から送られた制御コマンド(つまり、データ入出力要求)をUSBデータ形式に準拠したパケットデータ(以下、USBデータと呼ぶ)に変換する。また、仮想化制御部223は通信制御部313から送られてくるUSBデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ222に送る。さらに、仮想化制御部223は、携帯端末200Bの内部デバイス250に対するデータ送受信要求に対して、携帯端末200Bの内部デバイス250がデバイス制御装置300Bに直接的に接続(ローカル接続)されている際と同様の振る舞いをシミュレートする機能(以下、仮想化制御と呼ぶ)を備えている。この仮想化制御によって、デバイス制御装置300Bは、携帯端末200Bの内部デバイス250をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
仮想化クライアント機能部210は、デバイス制御装置300Bによって内部デバイス250の仮想化制御を実行させるためのソフトウェアである仮想デバイス制御部212、仮想化通信部213、通信制御部204を備えた構成である。
仮想デバイス制御部212は、仮想デバイス識別情報212Aおよびデータ形式変換処理部212Bを備えている。さらに、内部デバイス250を仮想的なUSBデバイスに切り替えるユーザインターフェースなどの切替部を備えている。
仮想デバイス識別情報212Aは、内部デバイス350を自装置にローカル接続されているように認識させるために用いられる。この仮想デバイス識別情報212Aを内部デバイス250であるタッチパネル250Cに割り当てて、図1に示す外部デバイス400と同様、タッチパネル250CをUSBデバイスとして認識させる。ここでは、USBデバイスのデータ構造を定義する構成情報(以下、USBディスクリプタと呼ぶ)を疑似的に作成したものを仮想デバイス識別情報とする(図2参照)。
データ形式変換処理部212Bは、仮想化通信部213から送られるUSBデータ形式に準拠したパケットデータ(USBデータ)と内部デバイス250で処理可能なデータ形式のデータとの変換処理を行ってデバイス制御装置300Bとの間のデータの送受信を可能にしている。
<タッチパネルの仮想化制御とデータ形式変換について>
本実施形態において、仮想デバイス制御部212は、キーボードおよびタッチパネルなどの入力デバイス250Bに係る仮想デバイス識別情報として、HIDクラスを識別したUSBディスクリプタを仮想化通信部334に送る。また、データ形式変換処理部335Bは、入力デバイス250Bから入力された入力データをHIDクラスのUSBデータに変換し、入力インターフェースを介して仮想化通信部334に送る。
さらに、仮想デバイス制御部212は、ディスプレイなどの表示デバイス250Aに係る仮想デバイス識別情報202Aとして、ベンダー固有情報(ベンダークラス)を識別したUSBディスクリプタを仮想化通信部213に送る。また、データ形式変換処理部202Bは、仮想化通信部213から送られるUSBデータを表示デバイス250Aのデータ形式に変換して、ディスプレイインターフェースを介して表示デバイス250Aに送る。
例えば、携帯端末200Bに備えられたタッチパネル250Cからネットワーク上のデバイス制御装置300Bを遠隔操作する際には、タッチパネル250Cからの切り替え操作に応じて上述したような仮想デバイス識別情報212Aがネットワーク上のデバイス制御装置300Bへ送られ、内部デバイス250であるタッチパネル250C(つまり、タッチ入力およびディスプレイ出力)がネットワーク上のデバイス制御装置300Bからの仮想化制御に切り替わる。これによって、携帯端末200Bに備えられたタッチパネル250Cからネットワーク上のデバイス制御装置300Bを遠隔操作することができるようになる。
<図6のデバイス制御システムにおける仮想化制御のシーケンス>
図7は、図6に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンス図である。
まず、デバイス制御装置300Bによって、携帯端末200Bのタッチパネル250Cの仮想化制御を開始させる。まず、ユーザは、携帯端末200Bで所定の操作を行い、タッチパネル250Cに操作画面を表示させ、接続操作(例えば、接続ボタンの押下など)を実行する(ステップS401)。仮想デバイス制御部212に対して、内部デバイス250、即ち、タッチパネル250Cの接続要求が送られる(ステップS402)。
仮想デバイス制御部212は、この接続要求を検出すると、仮想化通信部213に対してタッチパネル250Cの仮想デバイス識別情報212Aを送信してタッチパネル250Cの接続通知を送る(ステップS403)。仮想化通信部213は、この接続通知を受け取ると、通信制御部204を介してデバイス制御装置300Bに接続通知を送信する(ステップS404)。
デバイス制御装置300は、通信制御部313を介して受信した携帯端末200Bからの接続通知を仮想化制御部323へ送る。仮想化制御部323は、この接続通知を受け取ると、アプリケーション321に対して携帯端末200Bのタッチパネル250Cの接続通知を送る(ステップS405)。
アプリケーション321は、接続通知を受け取ると、仮想化制御部323にタッチパネル250Cの仮想化制御の開始を指示し、仮想化制御部323は、携帯端末200Bの仮想化通信部213を介してタッチパネル250Cの仮想化制御を開始する。
デバイス制御装置300Bによる携帯端末200Bのタッチパネル250Cの仮想化制御が開始されると、携帯端末200Bでは、タッチパネル250Cで入力操作が行われると、タッチパネル250Cと内部バスに接続された入出力インターフェースを介して接続された仮想デバイス制御部212にデータを送り(ステップS406)、仮想デバイス制御部212と仮想化通信部213がデータ送受信し(ステップS407)、仮想化通信部213が通信制御部204を介してデバイス制御装置300Bとデータ送受信を行う(ステップS408)。
デバイス制御装置300Bでは、通信制御部313を介して携帯端末200Bとデータ送受信し、仮想化制御部323がデバイスドライバ322とデータ送受信し(ステップS409)、デバイスドライバ322はアプリケーション321とデータ送受信する(ステップS410)。
上述したステップS405〜ステップS410により、デバイス制御装置300Bのアプリケーション321は、携帯端末200Bのタッチパネル250Cをローカル接続した場合と同一の状態であると認識して制御を実行する。
このとき、携帯端末200Bのタッチパネル250Cには、デバイス制御装置300Bから送られてくる画面データ(例えば、デバイス制御装置300Bに接続された液晶ディスプレイに表示される画面)が表示される。また、タッチパネル250Cを操作することによって、デバイス制御装置300Bに対してキーボードやテンキーと同様の入力操作を行うことができる。
また、上述したステップS405において、デバイス制御装置300Bのアプリケーション321は、仮想化制御部323に対してタッチパネル250Cの仮想化制御に接続開始を指示するとともに、自装置の内部デバイス350の接続要求を仮想化制御部323に送る(ステップS411)。
仮想化制御部323は、接続要求を受け取ると、仮想デバイス制御部335に対して内部デバイス350の接続通知を送り(ステップS412)、仮想デバイス制御部335は仮想化通信部334に内部デバイス350の接続通知を送る(ステップS413)。仮想化通信部334は、接続通知を受け取ると、通信制御部313を介して、携帯端末200Bに接続通知を送信する(ステップS414)。
携帯端末200Bは、通信制御部204を介してデバイス制御装置300Bからの接続通知を受け取ると、この接続通知を仮想化制御部223へ送る。仮想化制御部223は、接続通知を受け取ると、アプリケーション221に対してタッチパネル250Cの接続通知を送る(ステップS415)。アプリケーション221は、仮想化制御部323に内部デバイス350の仮想化制御の開始を指示し、仮想化制御部323は、デバイス制御装置300Bの内部デバイス350の仮想化制御を開始する。
内部デバイス350の仮想化制御が開始されると、携帯端末200Bでは、内部デバイス350に対するデータの入出力が可能となる(ステップS416)。データ入出力が実行されると、アプリケーション221とデバイスドライバ222がデータ送受信し(ステップS417)、デバイスドライバ222は仮想化制御部223とデータ送受信し(ステップS418)、仮想化制御部223が通信制御部204を介してデバイス制御装置300Bとデータ送受信を行う(ステップS419)。
デバイス制御装置300Bでは、通信制御部313を介して仮想化通信部334が携帯端末200Bとデータ送受信し、仮想化通信部334と仮想デバイス制御部212がデータ通信し(ステップS420)、仮想デバイス制御部335が内部バスに接続された入出力インターフェースを介して内部デバイス350とデータ送受信を行う(ステップS421)。
上述したステップS415〜ステップS421により、携帯端末200Bのアプリケーション221は、デバイス制御装置300Bの内部デバイス350をローカル接続した場合と同一の状態であると認識して制御を実行する。
このようにして、携帯端末200Bとデバイス制御装置300Bがそれぞれ相手装置の内部デバイスの仮想化制御を行う。
携帯端末200B、デバイス制御装置300Bによる相手装置の内部デバイスの仮想化制御を終了させる場合、携帯端末200Bで所定の操作を行う。タッチパネル250Cに操作画面を表示させ、終了操作(例えば、終了ボタンの押下)を実行する(ステップS422)と、仮想デバイス制御部212に対して、タッチパネル250Cの制御終了要求が送られる(ステップS423)。
仮想デバイス制御部212は、制御終了要求を受け取ると、仮想化通信部213に制御終了通知を送る(ステップS424)。
仮想化通信部213は、制御終了通知を受け取ると、通信制御部204を介して、デバイス制御装置300Bに制御終了通知を送信する。
デバイス制御装置300Bは、通信制御部313を介して携帯端末200Bからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部323へ送る(ステップS425)。仮想化制御部323は、制御終了通知を受け取ると、アプリケーション321に対してタッチパネル250Cの制御終了通知を送る(ステップS426)。
アプリケーション321が仮想化制御部323に携帯端末200Bのタッチパネル250Cの仮想化制御の終了を指示し、仮想化制御部323は、タッチパネル250Cの仮想化制御を終了する。
また、アプリケーション321は、仮想化制御部323にタッチパネル250Cの仮想化制御の終了を指示するとともに、デバイス制御装置300Cの内部デバイス350の制御終了要求を送る(ステップS427)。
仮想化制御部323は、制御終了要求を受け取ると、仮想化通信部334に内部デバイス350の制御終了通知を送る(ステップS428)。仮想化通信部334は、制御終了通知を受け取ると、通信制御部313を介して、携帯端末200Bに制御終了通知を送信する(ステップS429)。
携帯端末200Bは、通信制御部204を介してデバイス制御装置300Bからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部223へ送る。仮想化制御部223は、制御終了通知を受け取ると、アプリケーション221に対して内部デバイス350の制御終了通知を送る(ステップS430)。
アプリケーション221は、制御終了通知を受け取ると、仮想化制御部223に内部デバイス350の仮想化制御の終了を指示し、仮想化制御部323は、デバイス制御装置300Bの内部デバイス350の仮想化制御を終了する。
このように、第3の実施形態では、一台のデバイス制御装置内にサーバ機能とクライアント機能を共存させ、デバイス制御装置同士を接続して、互いに接続した相手方装置の機能(内部デバイス)を仮想化制御させる。これにより、相手方装置が持っている機能(内部デバイス)を自装置に直接接続された装置の機能と同様に制御することが可能となり、互いの装置のデバイスドライバを組み込まなくてもアプリケーションがデバイスを利用できるメリットがある。
[第4の実施形態]
図8は、本発明の第4の実施形態によるデバイス制御システムの一例を示すブロック図である。
第4の実施形態は、仮想化サーバ機能部と仮想化クライアント機能部を併せ持つ装置において、デバイスドライバ切替部324と仮想デバイス制御部314と使用することにより、仮想化制御の接続先を切り替えできる点に特徴がある。本実施形態では、デバイス制御装置300C内にデバイスドライバ切替部324と仮想デバイス制御部314を備え、内部デバイスまたは外部デバイスの仮想化制御を実行させる宛先の情報を参照することで、仮想化制御の接続先を切り替える。
<システム構成>
図8のデバイス制御システムは、情報処理装置100C、携帯端末200C、デバイス制御装置300Cから構成されている。図4に示す構成要素に対し、デバイス制御装置300Cが仮想デバイス制御部314とデバイスドライバ切替部324とデバイスドライバ322内に表示ドライバ322Aを具備している点が異なる。加えて、携帯端末200Cには、外部デバイス400Cが接続ケーブル500などによってローカル接続されている点が異なる。表示ドライバ322Aは、情報処理装置100C内の表示ドライバ102Aと同等の役割を行う。また、その他の接続構成や構成要素は、図4と同じであるため、図4に示す構成要素と同一の構成要素については同一の参照番号を付して説明を省略し、異なる点についてのみ説明する。
デバイスドライバ切替部324と仮想デバイス制御部314の機能部について説明する。デバイスドライバ切替部324は、デバイス制御装置300C内に内部デバイス250を接続するためのデバイスドライバが無い場合に、携帯端末200Cから通知された内部デバイス250のデバイス情報(USBデバイスの場合、USBクラスなどの情報)を基に、デバイス制御装置300C内に仮想デバイス制御部314を生成する。また、デバイス制御装置300C内に内部デバイス250を接続するためのデバイスドライバが有る場合には、デバイス制御装置300C内に仮想デバイス制御部314を生成することなく、デバイス制御装置300C内で仮想化制御を実施する。
仮想デバイス制御部314は、携帯端末200Cの内部デバイス250のデバイス情報と当該内部デバイス250の仮想化制御を実行させる情報処理装置100Cの宛先情報(例えば、IPアドレスなど)を仮想化通信部312に通知する。仮想化通信部312に処理が渡った後の動作は、第2の実施形態で説明した処理と同等なので、説明を省略する。
仮想デバイス制御部314は、仮想化制御される内部デバイス毎に生成され、各内部デバイスの仮想化制御が終了する度に削除される。
内部デバイス250の仮想化制御の接続先に関する宛先情報は、デバイス制御装置300C内のメモリ内(不図示)に予め記憶させておく。このメモリ内の宛先情報は、例えばユーザがデバイス制御装置300Cのユーザインターフェースなどを使用することで変更可能である。このメモリ内の宛先情報を参照することで、仮想化制御の接続先の切り替えが可能になる。
なお、デバイス制御装置300C内に携帯端末200Cの内部デバイス250を接続するためのデバイスドライバが有る場合でも、内部デバイス250の仮想化制御の接続先に関する宛先情報を情報処理装置100Cに設定することで、デバイス制御装置300C内に内部デバイス250を接続するためのデバイスドライバが無い場合と同様に、デバイス制御装置300C内に仮想デバイス制御部314を生成し、内部デバイス250を仮想化制御する接続先をデバイス制御装置300Cではなく、情報処理装置100Cにすることができる。
外部デバイス400Cについても内部デバイス250の仮想化制御と同様に、情報処理装置100Cで仮想化制御を実施できる。
<図8のデバイス制御システムにおける仮想化制御のシーケンス>
図8に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンスを図9にて説明する。図9は、内部デバイス250を情報処理装置100Cで仮想化制御する場合と、内部デバイス250をデバイス制御装置300Cで仮想化制御する場合の2つのシーケンスが記載されている。
最初に、内部デバイス250を情報処理装置100Cで仮想化制御する場合のシーケンスについて説明する。接続構成や構成要素は、図4と同じであるため、図4に示す構成要素と同一の構成要素については同一の参照番号を付して説明を省略し、異なる点についてのみ説明する。
携帯端末200Cから内部デバイス250の仮想化制御を開始させる。まず、ユーザは、携帯端末200Cで所定の操作を行い、表示デバイス250Aに操作画面を表示させ、入力デバイス250Bで接続操作(例えば、接続ボタンの押下など)を実行すると、仮想デバイス制御部202に対して、内部デバイス250の接続要求が送られる(ステップS501)。
仮想デバイス制御部202は、この接続要求を検出すると、仮想化通信部203に表示デバイス250Aおよび入力デバイス250Bそれぞれの仮想デバイス識別情報202Aを送信して内部デバイス250の接続通知を送る(ステップS502)。仮想化通信部203は、この接続通知を受け取ると、通信制御部313を介してデバイス制御装置300Cに接続通知を送信する(ステップS503)。
仮想化制御部323は、ステップS501〜ステップS503による接続通知をデバイスドライバ切替部324に通知する(ステップS504)。
デバイスドライバ切替部324が接続通知を受け取ると、本シーケンスではデバイス制御装置300C内に携帯端末200Cの内部デバイス250を接続するためのデバイスドライバが無いので、デバイスドライバ切替部324は、内部デバイス250のデバイス情報を基に、デバイス制御装置300C内に仮想デバイス制御部314を生成する。仮想化制御部323は、仮想デバイス制御部314が生成されると、接続通知を仮想デバイス制御部314に通知する(ステップS505)。仮想デバイス制御部314は、内部デバイス250のデバイス情報と当該内部デバイス250の仮想化制御を実行させる情報処理装置100Cの宛先情報を仮想化通信部312に通知する(ステップS506)。
仮想化通信部312は、仮想化制御部323から送られてくる設定情報を記憶し、通信制御部313を介して、設定情報に含まれる宛先情報の情報処理装置100Cに対して、表示デバイス250Aからの接続通知を送信する(ステップS507)。
情報処理装置100Cは、通信制御部104を介して、デバイス制御装置300Cから受信した接続通知を仮想化制御部103に送る。仮想化制御部103は、この接続通知をアプリケーション101に送る(ステップS508)。アプリケーション101は、接続通知を受け取ると、仮想化制御部103に表示デバイス250Aの仮想化制御の開始を指示し、仮想化制御部103は、携帯端末200Cの表示デバイス250Aの仮想化制御を開始する。
情報処理装置100Cでは、アプリケーション101から表示ドライバ102Aに対して、データ入出力(制御)の要求を送る(ステップS509)。表示ドライバ102Aは、表示デバイス250Aに係るパラメータを要求する第1の転送要求(以下、転送要求1)を生成して、仮想化制御部103に渡す(ステップS510)。
仮想化制御部103は、転送要求1からデバイス制御装置300Cの仮想化制御部323に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送要求1を生成し、通信制御部313を介して当該デバイス転送要求1をデバイス制御装置300Cに送信する(ステップS511)。
仮想化通信部312は、仮想化制御部103から受けたデバイス転送要求1を仮想デバイス制御部314に渡し、仮想デバイス制御部314は仮想化制御部323に通知するパラメータのみを要求パラメータとして取り出し、転送要求2を生成する(ステップS512)。仮想デバイス制御部314は、転送要求2を仮想化制御部323に送信する(ステップS513)。
仮想化制御部323は、転送要求2から携帯端末200Cの仮想化通信部203に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送要求2を生成し、通信制御部313を介して当該デバイス転送要求2を携帯端末200Cに送信する(ステップS514)。
携帯端末200Cは、通信制御部204を介してデバイス制御装置300Cからデバイス転送要求2を受け取ると、仮想化通信部203によって当該デバイス転送要求2に含まれるデバイス識別情報に応じてデータ転送を行うべき表示デバイス250Aを特定する。
そして、仮想化通信部203は、デバイス転送要求2に含まれる要求パラメータを、仮想デバイス制御部202に渡すデータ形式に変換した転送要求3を生成し、仮想デバイス制御部202に渡す(ステップS515)。仮想デバイス制御部202は、この転送要求3を表示デバイス250Aに適ったデータ形式に変換した「要求」を表示デバイス250Aに送る(ステップS516)。
ステップS516で情報処理装置100Cから携帯端末200Cの表示デバイス250Aへの要求が送られる。この要求に対する応答は、以下の処理ステップS517〜ステップS524のシーケンスに従って行われる。
表示デバイス250Aは、ステップS516で受け取った要求に対する制御結果である応答データを仮想デバイス制御部202に送る(ステップS517)。仮想デバイス制御部202は、この応答データを仮想化通信部203とのデータ通信に適ったデータ形式(USBデータ)に変換した転送応答3を仮想化通信部203に渡す(ステップS518)。
仮想化通信部203は、転送応答3からデバイス制御装置300Cの仮想化制御部323に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送応答3を生成し、通信制御部204を介して当該デバイス転送応答3をデバイス制御装置300Cに送信する(ステップS519)。
仮想化制御部323は、仮想化通信部203から受け取ったデバイス転送応答3から仮想デバイス制御部314に通知するパラメータのみを要求パラメータとして取り出し、転送応答3を生成し、仮想デバイス制御部314に通知する(ステップS520)。
仮想デバイス制御部314は、転送応答3から仮想化通信部312に通知するパラメータのみを要求パラメータとして取り出し、仮想化制御を実行させる情報処理装置100Cの宛先情報を加え、転送応答2を生成する。そして、仮想デバイス制御部314は、生成した転送応答2を仮想化通信部312に送信する(ステップS521)。
仮想化通信部312は、転送応答2から情報処理装置100Cの仮想化制御部103に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送応答2を生成し、通信制御部313を介して当該デバイス転送応答2を情報処理装置100Cに送信する(ステップS522)。
情報処理装置100Cは、通信制御部104を介してデバイス制御装置300Cからデバイス転送応答2を受け取ると、仮想化制御部103に渡す。仮想化制御部103は、当該デバイス転送応答2から表示ドライバ102Aに渡すパラメータのみを応答パラメータとして取り出して転送応答1を生成し、表示ドライバ102Aに渡す(ステップS523)。
表示ドライバ102Aは、転送応答1から応答パラメータを取り出してアプリケーション101に渡す(ステップS524)。アプリケーション101は、要求に対する応答を確認する。
また、携帯端末200Cから終了操作を行い、デバイス制御装置300Cを介した仮想化制御を終了させる場合について説明する。
携帯端末200Cで所定の操作を行い、終了操作(例えば、終了ボタンの押下)を実行すると、仮想デバイス制御部202に対して、制御終了要求が送られる(ステップS525)。
仮想デバイス制御部202は、制御終了要求を受け取ると、仮想化通信部203に制御終了通知を送る(ステップS526)。
仮想化通信部203は、制御終了通知を受け取ると、通信制御部204を介して、デバイス制御装置300Cに制御終了通知を送信する。デバイス制御装置300Cは、通信制御部313を介して携帯端末200Cからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部323へ送る(ステップS527)。
仮想化制御部323は、デバイスドライバ切替部324に制御終了通知を通知する(ステップS528)。デバイスドライバ切替部324は、制御終了通知を受け取ると、仮想デバイス制御部314へ制御終了通知を通知する(ステップS529)。
仮想デバイス制御部314は、制御終了通知を受け取ると、情報処理装置100Cの宛先情報を付加し、仮想化通信部312へ制御終了通知を通知する(ステップS530)。
仮想化通信部312は、制御終了通知を受け取ると、通信制御部313を介して、情報処理装置100Cに制御終了通知を送信する(ステップS531)。
情報処理装置100Cは、通信制御部104を介してデバイス制御装置300Cからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部103へ送る。仮想化制御部103は、制御終了通知を受け取ると、アプリケーション101に対して表示デバイス250Aの制御終了通知を送る(ステップS532)。
アプリケーション101は、制御終了通知を受け取ると、仮想化制御部103に表示デバイス250Aの仮想化制御の終了を指示し、仮想化制御部103は、携帯端末200Cの表示デバイス250Aの仮想化制御を終了する。
ここまでが、携帯端末200Cの内部デバイス250を情報処理装置100Cで仮想化制御する場合のシーケンスの説明である。
次に、本シーケンスでは、携帯端末200Cの内部デバイス250をデバイス制御装置300Cで仮想化制御する際の動作を説明する。
携帯端末200Cから内部デバイス250の仮想化制御を開始させる。まず、ユーザは、携帯端末200Cで所定の操作を行い、表示デバイス250Aに操作画面を表示させ、入力デバイス250Bで接続操作(例えば、接続ボタンの押下など)を実行すると、仮想デバイス制御部202に対して、内部デバイス250の接続要求が送られる(ステップS601)。
仮想デバイス制御部202は、この接続要求を検出すると、仮想化通信部203に表示デバイス250Aおよび入力デバイス250Bそれぞれの仮想デバイス識別情報202Aを送信して内部デバイス250の接続通知を送る(ステップS602)。仮想化通信部203は、この接続通知を受け取ると、通信制御部313を介してデバイス制御装置300Cに接続通知を送信する(ステップS603)。
デバイス制御装置300Cは、携帯端末200Cから接続通知を受け取ると、通信制御部313を介して仮想化制御部323に接続通知を送る。仮想化制御部323では、接続通知から携帯端末200Cの内部デバイス250に対する仮想化ブリッジ設定を判断し、仮想化制御を開始する(ステップS604)。
デバイスドライバ切替部324が接続通知を受け取ると、本シーケンスではデバイス制御装置300C内に内部デバイス250を接続するためのデバイスドライバが有るので、デバイスドライバ切替部324は、仮想デバイス制御部314を作ることなく、デバイス制御装置300C内のアプリケーション321に接続通知を送信する(ステップS605)。
デバイス制御装置300Cでは、アプリケーション321から表示ドライバ322Aに対して、データ入出力(制御)の要求を送る(ステップS606)。
表示ドライバ322Aは、アプリケーション321からの要求を転送要求1として仮想化制御部323に通知する(ステップS607)。
仮想化制御部323は、転送要求1から携帯端末200Cの仮想化通信部203に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送要求1を生成し、通信制御部313を介して当該デバイス転送要求1を携帯端末200Cに送信する(ステップS608)。
携帯端末200Cは、通信制御部204を介してデバイス制御装置300Cからデバイス転送要求1を受け取ると、仮想化通信部203によって当該デバイス転送要求1に含まれるデバイス識別情報に応じてデータ転送を行うべき表示デバイス250Aを特定する。
そして、仮想化通信部203は、デバイス転送要求1に含まれる要求パラメータを、仮想デバイス制御部202に渡すデータ形式に変換した転送要求2を生成し、仮想デバイス制御部202に渡す(ステップS609)。仮想デバイス制御部202は、この転送要求2を表示デバイス250Aに適ったデータ形式に変換した「要求」を表示デバイス250Aに送る(ステップS610)。
ステップS610で情報処理装置100Cから携帯端末200Cの表示デバイス250Aへの要求が送られる。この要求に対する応答は、以下の処理ステップS611〜ステップS615のシーケンスに従って行われる。
表示デバイス250Aは、ステップS610で受け取った要求に対する制御結果である応答データを仮想デバイス制御部202に送る(ステップS611)。仮想デバイス制御部202は、この応答データを仮想化通信部203とのデータ通信に適ったデータ形式(USBデータ)に変換した転送応答2を仮想化通信部203に渡す(ステップS612)。
仮想化通信部203は、転送応答2からデバイス制御装置300Cの仮想化制御部323に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス250Aを特定するためのデバイス識別情報を含んだデバイス転送応答2を生成し、通信制御部204を介して当該デバイス転送応答2をデバイス制御装置300Cに送信する(ステップS613)。
仮想化制御部323は、仮想化通信部203から受け取ったデバイス転送応答2から表示ドライバ322Aに通知するパラメータのみを要求パラメータとして取り出し、転送応答1を生成し、表示ドライバ322Aに通知する(ステップS614)。
表示ドライバ322Aは、転送応答1から応答パラメータを取り出してアプリケーション321に渡す(ステップS615)。アプリケーション321は、要求に対する応答を確認する。
携帯端末200Cで所定の操作を行い、終了操作(例えば、終了ボタンの押下)を実行すると、仮想デバイス制御部202に対して、制御終了要求が送られる(ステップS616)。
仮想デバイス制御部202は、制御終了要求を受け取ると、仮想化通信部203に制御終了通知を送る(ステップS617)。
仮想化通信部203は、制御終了通知を受け取ると、通信制御部204を介して、デバイス制御装置300Cに制御終了通知を送信する。デバイス制御装置300Cは、通信制御部313を介して携帯端末200Cからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部323へ送る(ステップS618)。
仮想化制御部323は、デバイスドライバ切替部324に制御終了通知を通知する(ステップS619)。
デバイスドライバ切替部324は、制御終了通知をアプリケーション321に通知する(ステップS620)。
このように、第4の実施形態では、サーバ機能とクライアント機能を連携させ、デバイス制御装置300C内にデバイスドライバ切替部324と仮想デバイス制御部314を具備することで、デバイス制御装置300C内に内部デバイス250、または、外部デバイス400を接続するためのデバイスドライバの有無、および、内部デバイスの仮想化制御の接続先に関する宛先情報の設定に基づき、内部デバイス250を仮想化制御する接続先を切り替えることが可能になる。
加えて、今回は仮想化制御の接続完了後、データの送受信時にデバイスドライバ切替部324を通らない場合について説明したが、データ送受信時にデバイスドライバ切替部324を通る場合も同様に考えられる。
また、第4の実施形態で説明した、デバイスドライバ切替部324と仮想デバイス制御部314を使用する点や、仮想化制御の接続先を切り替えることができるという点については、第3の実施形態でも同様に適用できる。
以上、本発明について実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
上述した第1〜第4の実施形態に示すデバイス制御システムは、情報処理装置100、携帯端末200、デバイス制御装置300、および外部デバイス400がそれぞれ1台で構成されているが、情報処理装置100、携帯端末200、デバイス制御装置300、および外部デバイス400の台数は図示の例に限定されるものではない。
また、デバイス制御装置300は、複合機などのオフィス機器に限定されるものではなく、様々な組込み装置、携帯電話機、又はモバイル端末機器であってもよい。
さらに、デバイス制御装置300に接続される外部デバイス400の通信インターフェースは、USB又はHDMI(登録商標)に限定されるものではなく、他のインターフェースに準拠するインターフェースを用いるようにしてもよい。
外部デバイス400は、例えば、キーボード、マウス、又はカードリーダのような入力機器およびディスプレイなどの表示機器(出力機器)、プリンタ、スキャナなどの単機能周辺機器である。また、外部デバイス400は印刷機能の他に、スキャン機能、コピー機能、およびストレージ機能などを備えた多機能周辺機器であってもよく、他の入出力機器であってもよい。なお、デバイス制御装置300と外部デバイス400とは一体化するようにしてもよい。
例えば、上記の実施形態の機能を制御方法として、この制御方法をデバイス制御装置に実行させるようにすればよい。また、上述の実施形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムをデバイス制御装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
また、本発明は、以下の処理を実行することによっても実現される。つまり、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種の記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPUなど)がプログラムを読み出して実行する処理である。