(第1の実施形態)
図1は、本実施形態の全体構成の一例を示す概念図である。
図1において、101、102、106、107はそれぞれ被操作対象のデバイスであり、103、105はそれぞれデバイスの操作を行う操作端末装置である。104はデバイスおよび操作端末装置を接続し、それらの間でデータおよび命令のやり取りを行うためのネットワークである。操作端末装置103、105はそれぞれ、ネットワーク104を通じて操作コマンドを送ることにより、デバイス101、102、106、107を操作する。
図2は本実施形態における操作端末装置103のハードウェア構成の一例を示すブロック図である。
202はCPUであり、各種処理のための演算や論理判断等を行い、バス201に接続された各構成要素を制御する。本装置には、プログラムメモリとデータメモリを含むメモリが搭載されている。プログラムメモリには、フローチャートにつき後述する処理手順を含むCPUによる制御のためのプログラムを格納する。メモリはROM203であってもよいし外部記憶装置などからプログラムがロードされるRAM204であってもよい。
205はデータやプログラムを記憶しておくための不揮発性メモリやハードディスクなどの記憶装置である。206はユーザからの情報を入力するための入力装置であり、この装置はマウス、タッチパネル、キーボードなどある。208は分析されたデータ出力情報を出力する出力装置であり、CRTや液晶表示器などの表示装置である。207はネットワークI/Fであり、ネットワークで接続された他のデバイスとのやり取りを行う。
図3は、本実施形態における全体の構成の一例を表わす図である。
317は図1における103、105に相当する操作端末装置を示している。この操作端末装置317は操作端末全体の処理を制御する操作端末301を中心として、種別・デバイス対応テーブル304、テンプレート305、UIデータ312などを内部に所持しており、例えば図2で説明したようなハードウェア構成をしている。
また、318は、図1の101、102、106、107に相当するデバイスを示している。このデバイス318はデバイス全体の処理を制御するデバイス302を中心として、デバイス情報303を内部に所持しており、操作端末301からの要求に応じてネットワークを経由してデバイス情報303を操作端末301に送信する。
デバイス情報303は、ネットワークカメラ、ビデオ、プリンタなどといったデバイス種別307と、そのデバイスを操作するための操作コマンド308と、個々のデバイス固有のデバイスID315を含む。
操作端末301は、デバイス情報303を元にUIを構成するためのUIデータ312を動的に生成するためのテンプレート305を有する。テンプレートには、その1種としてデバイステンプレート306があり、該デバイステンプレートはデバイス識別情報311と、UI部品310と、UI部品と操作コマンドの対応情報309を含む。
該デバイス識別情報311は、デバイス情報303中のデバイスID315によって補完されるべきであることを示しており、生成されるUIがどのデバイスのUIであるのかを識別するために使用される。該UI部品310は、実際に表示されるUI上のボタン、スライダ、リストボックスなどの部品である。
該UI部品と操作コマンドの対応情報309は、どのUI部品310を操作するとどの操作コマンド308がデバイス302に対して発行されるかという対応関係を表わす情報である。
また、操作端末301は、該デバイス種別と該デバイステンプレート306との対応関係を表わす種別・テンプレートの組314を複数含む種別・テンプレート対応テーブル304を有する。316は、操作端末が生成したUIデータ312からUIを構築するブラウザであり、出力313に対して表示を行う。
図3に示される全体の構成は具体的には図27にように表現することができる。
2701は図3の操作端末301に相当し、例えば、デバイス(ネットワークカメラ)2702とネットワークによって接続されている。このデバイス(ネットワークカメラ)2702は図3のデバイス302に相当する。
操作端末2701はデバイス(ネットワークカメラ)2702からデバイス情報2704を取得する。このデバイス情報2704は図3におけるデバイス情報303に相当し、その中の情報である操作コマンド2705は図3における操作コマンド308に、デバイス種別2706はデバイス種別307にそれぞれ相当する。操作端末2701は、取得したデバイス情報2704を、現在接続中のデバイスを制御するUIを構築する際に使用する。
操作端末2701は、デバイス(ネットワークカメラ)2702のデバイス情報2704中のデバイス種別2706をキーとして種別・テンプレート対応テーブル2707における、デバイス種別とデバイステンプレートファイル名2708の組を順に検索し、デバイス(ネットワークカメラ)2702のデバイス種別2706(ここでは、"urn:schemas-canon-org:
device:NetworkCamera:1"とする)に対応するテーブル上の組を発見し、デバイステンプレートのファイル名2708であるネットワークカメラテンプレート2712を決定する。
ここで、種別・デバイステンプレート対応テーブル2707は図3における種別・テンプレート対応テーブル304に、デバイス種別とデバイステンプレートファイル名2708の組は種別・テンプレート組314に、ネットワークカメラテンプレート2712はテンプレート305の一種であるデバイステンプレート306に相当する。このデバイステンプレート306の具体的な一例は図6に示される。図6については後で詳細に説明する。
操作端末2701はネットワークカメラテンプレート2712とデバイス情報2704からデバイス2702用のUIデータ2710を生成する。このUIデータ2710は図3におけるUIデータ312に相当する。
操作端末2701は各デバイスのデバイステンプレート306を使用して各デバイス用のUIを構築し、UIデータ2710として生成、最後にブラウザ2715に対してUIを表示する。このブラウザ2715は図3におけるブラウザ316に相当し、実際に出力313(ハードウェア構成上は図2の出力装置208)に表示する。
図4は本実施形態におけるUI生成処理の流れの一例を示すフローチャートである。図4において、ステップS401からステップS407は各ステップを表わす。
まず、操作端末301はデバイス302にデバイス情報303を要求し、デバイスからデバイス情報303を取得する(ステップS401)。
次に、取得したデバイス情報303からデバイス種別307を取り出し(ステップS402)、該デバイス種別307を用いて、デバイス302に対応するデバイステンプレート2711を検索する(ステップS403)。
そして、該検索の結果、該デバイス種別に対応するデバイステンプレート2711が存在するか否かを判断し(ステップS404)、対応するデバイステンプレート2711が存在する場合には、該デバイステンプレート2711を入力とし、UIデータ領域を新たに出力とする入出力の設定を行った(ステップS405)後に、UIデータ生成処理を行う(ステップS406)。
それから、該UIデータ312によりUIを構築・表示し(ステップS407)、処理を終了する。ステップS404の判断の結果、ステップS402で得たデバイス種別307に対応するデバイステンプレート306が存在しない場合には、処理を終了する。
図7は本実施形態におけるデバイス情報303の一例としてXMLデータを示す図である。
図7において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。行番号0708にある7Aはデバイス情報303におけるデバイス種別307を示す記述である。このうち"urn:schemas-canon-org:device:NetworkCamera:1"が実際のデバイス種別307を示す文字列である。
行番号0709にある7Bはデバイス名を示す記述である。このうち"Catharine"が実際のデバイス名を示す文字列である。行番号0717にある7CはデバイスID315を示す記述である。このうち"uuid:upnp-canon-nc1_1_0-00008522CD3A"が実際のデバイスID315を示す文字列である。行番号0724にある7Dはデバイス302を操作するための操作サービスを示すXMLデータへのリンクを示している。
図9は、本実施形態における種別・テンプレート対応テーブル900の一例を示す図である。
図9において、900は種別・テンプレート対応テーブル全体であり、種別・テンプレート対応テーブル304を具体的に表わしたものである。該テーブル900はファイルとして記憶装置205中に保持されており、更新することが可能である。
910、920はそれぞれ1組のデバイスの種別とデバイステンプレートファイルの対応関係を表わしており、種別・テンプレート組314を具体的に表わしたものである。911、921はそれぞれ、1つのデバイス種別を表わしており、共にデバイス種別307を具体的に表わしたものである。
912、922はそれぞれ、1つのデバイステンプレートを表わしており、共にデバイステンプレート306に対応している。これらは、記憶装置205に保存されており、それぞれの文字列はファイル名を表わしている。
すなわち、図9はデバイス種別が911であれば、デバイステンプレート912が選択され、デバイス種別が921であれば、デバイステンプレート922が選択されることを表わしている。
図11は、本実施形態における対応テンプレート検索処理の流れの一例を示すフローチャートである。図11において、ステップS1101からステップS1105は各ステップを表わす。
まず、種別・テンプレート対応テーブル900にまだデバイス種別とテンプレートの組が存在するか否かを判断し(ステップS1101)、存在するならば該デバイス種別とテンプレート2711の組を得て(ステップS1102)、その中のデバイスの種別を得る(ステップS1103)。
次に、該デバイスの種別がステップS402で得たデバイスの種別に一致するか否かを判断し(ステップS1104)、一致するならばステップS1102で得たデバイス種別307とテンプレート305の組からデバイステンプレート2711を得て、対応するデバイステンプレート2711として(ステップS1105)、処理を終了する。
ステップS1104の判断の結果、両デバイスの種別が一致しない場合には、ステップS1101の判断に戻る。ステップS1101の判断の結果、種別・テンプレート対応テーブル900にもうデバイス種別307とテンプレート305の組が存在しないならば、処理を終了する。
すなわち本処理は、本実施形態においてはデバイス種別が"urn:schemas-canon-org:device:NetworkCamera:1"であるデバイス種別307とテンプレート305の組を種別・テンプレート対応テーブル900から検索し、デバイス種別307とテンプレート305の組910を得て、対応するデバイステンプレート2711のファイル名として「ネットワークカメラテンプレート」を返す。
図6は本実施形態におけるデバイステンプレート306の一例としてXMLデータを示す図である。
図6において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。行番号0608、0615、0617、0619の6A〜6Dは、それぞれデバイス情報303中のデバイス識別情報311を意味する特別な変数($uid)である。行番号0622の6Eは、デバイス情報303中のデバイス名識別情報($devName)である。
また、行番号0614から0619は、デバイスに対して操作コマンドが発行されることを示している。例えば、行番号0615の6Gは"method="CameraControlPan""となっており、この行が実行された時に発行される操作コマンドが"CameraControlPan"であることを示している。また、行番号0614には6Fに示すように本データ中で一意な識別子として"pan"が与えられている。
また、6I、6J、6Kには、UIを構成するUI部品についての記述がある。6I〜6Kはそれぞれ特定の範囲からの選択を行うUI部品"xforms:range"を表わしており、それぞれのレイアウト情報および現在の値を保持しているデータモデルへの参照と、値が変更された場合にどの操作コマンドが発行されるかの対応情報がふくまれている。
例えば、6I中の行番号0635中の6Hは"submission="pan" "となっており、UI部品"xforms:range"の値が変更された場合に識別子が"pan"である行を実行することが示されている。すなわち、0614行の6Fと0635行の6Hの記述により、6IのUI部品と6Gの操作コマンド"CameraControlPan"が対応付けられている。よって、このデバイステンプレート2711中には、デバイス情報303に記載の操作コマンドとデバイステンプレート922に記載のUIを構成するUI部品との対応情報が含まれている。
図8は、本実施形態におけるデバイス2702を操作するための操作サービスを示すデバイス情報2704の一例としてXMLデータを示す図である。
図8において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図8は、図7において7Dで表わされた操作サービスを示すデバイス情報である。
図8において、8A、8B、8Cはそれぞれ別の操作コマンドを表わしており、それぞれの操作コマンド名がCameraControlPan、CameraControlTilt、CameraControlZoomであること、およびそれぞれの操作コマンドの引数などを示している。また、8Dは状態変数を示しており、その名称がMotionDetectであることを示している。
図5は、本実施形態におけるUI生成処理の流れを示すフローチャートである。図において、ステップS501からステップS509は各ステップを表わす。
まず、ステップS405で設定された入力において現在の位置が入力の終端に達しているか否かを判断し(ステップS501)、まだ終端に達していない場合には、構文上の1行を読み込む(ステップS502)。
次に、読み込んだ行中にデバイス識別情報311が含まれているか否かを判断し(ステップS503)、デバイス識別情報311が含まれている場合には、ステップS401で得たデバイス情報302中から得たデバイスIDを得て(ステップS504)、バッファに読み込んだ行中のデバイス識別情報311に実際のデバイスIDを挿入する(ステップS505)。ステップS503の判断の結果、デバイス識別情報311が含まれていない場合には、ステップS506の判断に移る。
次に、読み込んだ行中にデバイス名識別情報が含まれているか否かを判断し(ステップS506)、デバイス名識別情報が含まれている場合には、ステップS401で得たデバイス情報中から得たデバイス名を得て(ステップS507)、バッファに読み込んだ行中のデバイス名識別情報に実際のデバイス名を挿入する(ステップS508)。ステップS506の判断の結果、デバイス名識別情報が含まれていない場合には、ステップS509の処理に移る。
そして、バッファ中の読み込んだ行をUIデータ2710に書き込んだ(ステップS509)後ステップS501の判断に戻り、一連の処理を繰り返す。ステップS501の判断の結果、すべての行の処理を終えて、デバイステンプレート2711の終端に達した場合には、処理を終了する。
すなわち本処理においては、ステップS405で入力に設定された図6のようなデバイステンプレート922を、ステップS502において1行ずつ読み込む。
図6の行番号0608、0615、0617、0619においては、ステップS503の判断において行中にデバイス識別情報6A〜6D($uid)が含まれているので、ステップS504において図7のデバイス情報7Cに含まれるデバイスID("uuid:upnp-canon-nc1_1_0-00008522CD3A")を得て、ステップS505で該デバイス識別情報に該デバイスIDを代入する。
すなわち、文字列6A〜6D"$uid"を"uuid:upnp-canon-nc1_1_0-00008522CD3A"に置換する。これらの行においては、デバイス名識別情報は行中に含まれていないので、ステップS506の判断において判定結果が否となり、ステップS509の処理に移り、デバイスIDが補完されたデータがUIデータ2710に追加され、ステップS501の判断に戻る。
図6の行番号0622においては、ステップS503の判断においてデバイスID識別の為の変数が行中に含まれないため、判断結果が否となり、ステップS506の判断に移る。ステップS506の判断においては、行中にデバイス名識別情報($devName)が含まれているので、ステップS507において図7のデバイス情報7Bに含まれるデバイス名("Catharine")を得て、ステップS508で該デバイス名識別情報に該デバイス名を代入する。すなわち、文字列6Eの"$devName"を"Catharine"に置換する。そして、ステップS509において、デバイス名が補完されたデータがUIデータ2710に追加され、ステップS501の判断に戻る。
他の行はステップS503、ステップS506の判断とも偽となるので、ステップS509においてそのままUIデータ2710に追加される。図6のテンプレートが行番号0650に達すると、ステップS501の判断において、デバイステンプレート2711の現在の位置がテンプレートの終端に達しているので、処理を終了する。この結果、本処理によって図6のようなデバイステンプレート2711から図10のようなUIデータ2710を生成することができる。
図10は、本実施形態におけるUIデータ生成処理によって生成されたUIデータの一例としてXMLデータを示す図である。
図10において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。該UIデータは図6のデバイステンプレート2711を基に、図7のデバイス情報を用いて図5のUIデータ生成処理によって生成されるものであり、UIデータ312、および2710に該当する。
図10において、10A、10B、10C、10Dはそれぞれ図6のデバイステンプレート2711中の6A、6B、6C、6Dがデバイス情報中のデバイスID7Cにより補完されたものであり、10Eは図6のデバイステンプレート2711中の6Eがデバイス情報中のデバイス名7Bにより補完されたものである。このUIデータ312をブラウザ316に渡すことによりUIが構築され、出力313によりUIが表示される。
図17は、本実施形態におけるデバイスと表示されるUIとの関係を示す図である。
図17において、図17aのように操作端末1705に対してデバイス(ネットワークカメラ)1706が接続されている場合には、デバイスの種別がネットワークカメラを表わすデバイス種別(本実施形態においては"urn:schemas-canon-org:device:NetworkCamera:1")であるので、これまでに説明した流れで図10のようなUIデータ2710が生成され、それを基にブラウザ316によりUI1701のようなUIが構築される。
UI1701において、1702はカメラの横方向の回転を表わすUI部品であり、図10の行番号1033から1035に記載の特定の範囲からの選択を行うUI部品を表わす要素"xforms:range"から生成されたものである。同様に1703、1704はそれぞれカメラのズーム、縦方向の回転を表わすUI部品であり、図10の行番号1039から1041、1045から1047に記載の特定の範囲からの選択を行うUI部品を表わす要素"xforms:range"から生成されたものである。
一方、図17bのように操作端末1712に対してデバイス(ビデオ)1713が接続されている場合には、デバイスの種別がビデオを表わすデバイス種別(本実施形態においては"urn:schemas-canon-org:device:Video:1")であるので図9の種別・テンプレート対応テーブル900中からデバイステンプレート922が選択され、同様の処理で対応するUIデータ2710が生成され、それを基にブラウザ316によりUI1711のようなUIが構築される。
以上のように、本実施形態の操作端末1712においては、デバイスを操作する為のUIは、デバイス情報303及びデバイステンプレート2711から構築される為に、操作端末1712のプログラムを変更する事無く、デバイステンプレート2711を入れ替える事で、UIの変更が可能になる。また、個々のデバイスの識別子をUIデータ2710中に埋め込むことにより、UIからの個々の機器の操作が可能となる。
(第2の実施形態)
本実施形態においては、構築されるUIにおけるUI部品の有無及びUIのレイアウトを変更する為の条件記述をデバイステンプレートに含む場合について、図面を参照しながら説明する。
図12は、本実施形態におけるデバイステンプレートの一例としてXMLデータを示す図である。
図12において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。12A〜12G、12I、12Jは、それぞれ図8に示したデバイスを操作するための操作サービスを示すデバイス情報303中に、操作コマンドが存在するか否かによって生成するUIデータ2710を変えるための条件の記述部分である。
このうち、行番号1210、1220、1246はすべて同様の記述となっており、XMLの属性の記述"control="CameraControlPan""のうち、属性名"control"は条件文がデバイス情報303中の操作コマンドを対象とすることを表わしており、"CameraControlPan"は操作コマンド名が"CameraControlPan"であることを示している。
そして、XMLの要素名"ui_template:ifexist"が属性で示したものがデバイス情報中に存在するならば、該要素の子要素を解釈し、必要に応じてUIデータ2710に追加するという条件を表わしている。
すなわち、行番号1210、1220、1246はすべて、デバイス情報303中に"CameraControlPan"という操作コマンドが存在するならば、それぞれの子要素を解釈し、必要に応じてUIデータ2710に追加するという条件文である。
同様に、行番号1213、1224、1266はすべて、デバイス情報303中に"CameraControlTilt"という操作コマンドが存在するならば、それぞれの子要素を解釈し、必要に応じてUIデータ2710に追加するという条件文であり、行番号1216、1228、1273はすべて、デバイス情報303中に"CameraControlZoom"という操作コマンドが存在するならば、それぞれの子要素を解釈し、必要に応じてUIデータ2710に追加するという条件文である。
これにより、12G、12I、12Jの条件文の子要素として記述されている特定の範囲からの選択を行うUI部品"xforms:range"はそれぞれの条件が満たされた場合にはUI上に存在するが、条件が満たされない場合には存在しないことになる。
また、12Hはデバイス情報303中の状態変数の値によって生成するUIデータ2710を変えるための条件の記述部分である。このうち、行番号1255のXMLの属性の記述"variable="MotionDetect""は、条件文の対象となる状態変数名が"MotionDetect"であることを示しており、"value="1""は、条件文の指定する値が"1"であることを示している。そして、XMLの要素名"ui_template:ifcond"が属性で示した状態変数の値の条件が満たされているならば、該要素の子要素をUIデータ2710に追加するという条件を表わしている。
すなわち、行番号1255は、図8に示したデバイスを操作するための操作サービスを示すデバイス情報中の状態変数"MotionDetect"の値が"1"であるならば、子要素をUIデータ2710解釈し、必要に応じてに追加するという条件文である。
また、12Kは変数の定義部である。行番号1243、1244共に、要素名"ui_template:variable"は変数の定義であることを示しており、属性名"name"は変数名を、"value"は変数の初期値を表わしている。すなわち、行番号1243は"$x"という名前で初期値は97である変数の定義を、行番号1244は"$y"という名前で初期値は381である変数の定義を表わしている。12M、12Oはそれぞれ式を表わしており、12Mは12Kで定義した変数$xに50を加算する式を、12Oは12Kで定義した変数$yに50を加算する式を表わしている。
12L、12N、12Pはすべて同様の記述となっており、"x="$x""と"y="$y""の2つのXMLの属性の記述をあわせたものである。このうち、"x="$x""はX座標として変数$xの値を使うことを意味しており、"y="$y""はY座標として変数$yの値を使うことを意味している。すなわち、行番号1247および1274の要素名"xforms:range"で表わされる特定の範囲からの選択を行うUI部品のXおよびY座標は、それぞれその時点の変数$x、$yの値によって変わる事を表わしている。
したがって、12Gおよび12Hの条件ブロックの条件文が成立するか否かに応じて、それぞれ12M、12Oの式が実行されるか否かが変わり、それによって行番号1259の画像および行番号1274の特定の範囲からの選択を行うUI部品のレイアウトが変わることを表わしている。
図13は、本実施形態におけるUI生成処理の流れを示すフローチャートである。図13において、ステップS1301からステップS1318は各ステップを表わす。
まず、あらかじめ本処理の外部で設定された入力において現在の位置が入力の終端に達しているか否かを判断し(ステップS1301)、まだ終端に達していない場合には、構文上の1行を読み込む(ステップS1302)。
次に、読み込んだ行が条件文であるか否かを判断し(ステップS1303)、該判断の結果、条件文ではない場合には、読み込んだ行が変数の定義であるか否かを判断する(ステップS1304)。
該判断の結果、読み込んだ行が変数の定義ではない場合には、読み込んだ行の子要素が変数の式であることを示す行か否かを判断し(ステップS1305)、該判断の結果、読み込んだ行の子要素が変数の式あることを示す行でない場合には、読み込んだ行中にデバイス識別情報311が含まれているか否かを判断し(ステップS1306)、デバイス識別情報311が含まれている場合には、ステップS401で得たデバイス情報303中から得たデバイスIDを得て(ステップS1307)、バッファに読み込んだ行中のデバイス識別情報311に実際のデバイスIDを挿入する(ステップS1308)。ステップS1306の判断の結果、デバイス識別情報311が含まれていない場合には、ステップS1309の判断に移る。
次に、読み込んだ行中にデバイス名識別情報が含まれているか否かを判断し(ステップS1309)、デバイス名識別情報が含まれている場合には、ステップS401で得たデバイス情報中から得たデバイス名を得て(ステップS1310)、バッファに読み込んだ行中のデバイス名識別情報に実際のデバイス名を挿入する(ステップS1311)。ステップS1309の判断の結果、デバイス名識別情報が含まれていない場合には、ステップS1312の処理に移る。
次に、変数があるならば該変数に現在の値を代入する処理を行い(ステップS1312)、バッファ中の読み込んだ行をUIデータ2710に書き込んだ(ステップS1313)後、ステップS1301の判断に戻り、一連の処理を繰り返す。
ステップS1303の判断の結果、読み込んだ行が条件文である場合には、該条件文とその子要素の処理を行った(ステップS1314)後、ステップS1301の判断に戻る。ステップS1304の判断の結果、読み込んだ行が変数の定義である場合には、該変数の変数名とその初期値を登録する処理を行った(ステップS1315)後、ステップS1301の判断に戻る。
ステップS1305の判断の結果、読み込んだ行の子要素が変数の式であることを示す行である場合には、さらに1行を読み込み(ステップS1316)、読み込んだ行の子要素が変数の式であることを示す要素の終端を示す行であるか否かを判断する(ステップS1317)。
ステップS1317の判断の結果、読み込んだ行の子要素が変数の式であることを示す要素の終端を示す行でない場合には、読み込んだ行は変数の式であるので、該変数の式の処理を行い(ステップS1318)、ステップS1316の処理に戻る。ステップS1317の判断の結果、読み込んだ行が子要素が変数の式であることを示す要素の終端を示す行である場合には、ステップS1301の判断に戻る。ステップS1301の判断の結果、すべての行の処理を終えて、入力の終端に達した場合には、処理を終了する。
図14は、本実施形態における条件文とその子要素の処理の流れを示すフローチャートである。図14において、ステップS1401からステップS1411は各ステップを表わす。
まず、読み込んだ行が操作コマンドの有無に関する条件文であるか否かを判断し(ステップS1401)、該判断の結果、読み込んだ行が操作コマンドの有無に関する条件文ではない場合には、読み込んだ行が状態変数の有無に関する条件文であるか否かを判断する(ステップS1402)。
該判断の結果、読み込んだ行が状態変数の有無に関する条件文ではない場合には、読み込んだ行が状態変数の値に関する条件文であるか否かを判断し(ステップS1403)、該判断の結果、読み込んだ行が状態変数の値に関する条件文である場合には、ステップS401で得たデバイス情報中から得た状態変数の値を得て(ステップS1404)、条件文が満たされているか否かを判断する(ステップS1405)。
同様に、ステップS1401の判断の結果、読み込んだ行が操作コマンドの有無に関する条件文である場合には、ステップS401で得たデバイス情報中から得た操作コマンドの一覧から指定された操作コマンドを検索し(ステップS1410)、ステップS1402の判断の結果、読み込んだ行が状態変数の有無に関する条件文である場合には、ステップS401で得たデバイス情報中から得た状態変数の一覧から指定された状態変数を検索し(ステップS1411)、条件文が満たされているか否かを判断する(ステップS1405)。
ステップS1405の判断の結果、読み込んだ行の条件文が満たされているならば、該条件の範囲の保存処理を行い(ステップS1406)、該保存された条件の範囲を新たな入力とする設定を行った(ステップS1407)後に、該入力すなわち保存された条件の範囲に対して本UIデータ処理を再帰的に実行する(ステップS1408)。
そして、保存した条件の範囲を破棄し(ステップS1409)、処理を終了する。ステップS1405の判断の結果、読み込んだ行の条件文が満たされていない場合には、該条件の範囲を読み飛ばした(ステップS1412)後、処理を終了する。
図15は、本実施形態における条件の範囲保存処理の流れを示すフローチャートである。図15において、ステップS1501からステップS1505は各ステップを表わす。
まず、条件の範囲保存用のファイルを開き(ステップS1501)、入力から1行を読み込む(ステップS1502)。
次に、入力が終端に達しているか否かを判断し(ステップS1503)、入力が終端に達していないならば、読み込んだ行を条件の範囲保存用のファイルに書き込み(ステップS1504)、ステップS1502の処理に戻る。ステップS1503の判断の結果、入力が終端に達したならば、条件の範囲保存用のファイルを閉じて(ステップS1505)、処理を終了する。
図16は、本実施形態における変数に現在の値を代入する処理の流れを示すフローチャートである。図16において、ステップS1601からステップS1604は各ステップを表わす。
まず、登録されている変数から最初の変数とその現在値を得て(ステップS1601)、変数があったか否かを判断する(ステップS1602)。該判断の結果、変数があったならば、バッファに読み込んだ行中の該変数の変数名に一致する変数をすべて該変数の現在値に置き換え(ステップS1603)、登録されている次の変数とその現在値を得て(ステップS1604)、ステップS1602の判断に戻る。ステップS1602の判断の結果、登録されている変数がもうないならば、処理を終了する。
次に、図13のUIデータ生成処理とそのサブルーチンである図14から図16によって、図7、図8のデバイス情報および図12のデバイステンプレート2711からUIデータ2710を生成する処理について具体的に説明する。
まず、ステップS406において行われるUIデータ生成処理は、ステップS405でデバイステンプレート2711を入力としているので、図12のデバイステンプレート2711を1行ずつ処理する。行番号1201から1209まではステップS1303からステップS1305のいずれの判断も偽なので、図5のUIデータ生成処理と同様にステップS1306の判断からステップS1312の処理を実行し、必要な置換が行われた後、ステップS1313でUIデータ2710に書き込まれる。
次に、ブロック12Aの処理においては、行番号1210はステップS1303において判断が真となるので、ステップS1314において図14に記載の条件文とその子要素の処理に移る。その後、ステップS1401の判断が真となるため、ステップS1410において操作コマンド"CameraControlPan"が図8のデバイス情報から検索され、行番号0809に存在するため、ステップS1405の条件判断が真となる。よって、ステップS1406において条件の範囲すなわち行番号1211が保存され、条件文の終端を表わす行番号1212まで読み込みが終わる。
次に、ステップS1407で該条件の範囲を入力とし、ステップS1408において該入力に対してUIデータ生成処理を再帰的に行う。ここでは、行番号1211がUIデータ2710に追加される。そして、ステップS1409において保存した条件の範囲が破棄され、次の行に処理が進む。
12B、12Cについても同様のステップを踏んで、それぞれ行番号1214、1217がUIデータ2710に追加される。12D、12E、12Fは処理の流れは12Aと同様であるが、条件の範囲がそれぞれ行番号1221と1222、1225と1226、1229と1230の2行であること、またデバイス識別情報を有することが異なる。
これらの行は行番号1211と同様に、図14のステップS1408において再帰的に呼び出されたUIデータ処理の中で、ステップS1308においてデバイスIDを置換された後にステップS1313でUIデータ2710に書き込まれる。
12Kは2行とも変数の定義であるので、それぞれステップS1304で判断が真となり、ステップS1315において変数の変数名とその初期値、すなわち変数名として$x、その値として97が、また変数名として$y、その値として381が登録される。
12Gは12Aと同様に行番号1246が条件文であるため、ステップS1303において判断が真となるので、ステップS1314において図14に記載の条件文とその子要素の処理に移る。その後、ステップS1401の判断が真となるため、ステップS1410において操作コマンド"CameraControlPan"が図8のデバイス情報から検索され、行番号0809に存在するため、ステップS1405の条件判断が真となる。よって、ステップS1406において条件の範囲すなわち行番号1247から1253が保存され、条件文の終端を表わす行番号1254まで読み込みが終わる。
次に、ステップS1407で該条件の範囲を入力とし、ステップS1408において該入力に対して図13に記載のUIデータ生成処理を再帰的に行う。ここで、その処理について具体的に説明する。行番号1247および1248が読み込まれると、この行はステップS1303からステップS1306、そしてステップS1309のいずれの判断も偽なので、ステップS1312に処理が進み、図16に詳細を示したステップS1312の変数に現在の値を代入する処理により、12Lの部分が"x="97"y="381""と置換され、UIデータ2710に追加される。
行番号1249および1250は、ステップS1303からステップS1306 、そしてステップS1309のいずれの判断も偽なので、ステップS1313においてそのままUIデータ2710に追加される。
12Mの部分は、行番号1251は子要素が変数の式であることを示す行であるため、当該行の処理においてステップS1305の判断が真となる。その結果、行番号1252がステップS1316において読み込まれ、ステップS1318において当該行の処理が行われ、変数$yに50が加算され、値が431に更新される。そして行番号1253がステップS1316で読み込まれ、子要素が変数の式であることを示す要素の終端を表わす行であるため、ステップS1317において判断が真となり、次の行へ処理が進む。
行番号1254は条件文の終端を表わす行なので、以上でステップS1408における12Gの条件範囲のUIデータ生成処理は終了し、ステップS1409において保存した条件の範囲が破棄され、次の行に処理が進む。
次に、12Hの部分の処理について説明する。12Hの処理は12Gの処理とほぼ同様であるが、行番号1255が状態変数の値に関する条件文であるため、行番号1246が図14のステップS1401の判断が真になるのに対して、行番号1255はステップS1403の判断が真となる。そのためステップS1404において状態変数"MotionDetect"の値"0"が図8のデバイス情報の行番号0843から得られ、行番号1255の条件文すなわち「状態変数"MotionDetect"の値が"1"である」が真であるか否かがステップS1405において判断される。この条件文は真でないため、処理はステップS1412に移り、条件文の終端である行番号1264までが読み捨てられる。12I、12Jの処理は12Gの処理と同様である。
その他の行はステップS1303からステップS1305のいずれの判断も偽なので、行番号1201から1209までと同様にUIデータ2710に追加される。
以上、説明したような処理により、図7、図8のデバイス情報および図12のデバイステンプレート2711から図10のUIデータ2710が生成され、ブラウザ316によりそれを基に図17で説明したように1701のようなUIが構築される。
図18は、本実施形態において図8同様にデバイス302を操作するための操作サービスを示すデバイス情報303として示すXMLデータを示す図である。
図18において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図8との差異は、18Aで表わされた部分に記載された状態変数MotionDetectの値が"0"ではなく"1"であることである。
図19は、図18のデバイスを操作するための操作サービスを示すデバイス情報303を用いた場合に生成されるUIデータ2710の一例としてXMLデータを示す図である。
図19において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
図8のデバイス情報用いた場合に生成される図10のUIデータ2710との差異は、図18の18Aにおいて状態変数MotionDetectの値が"1"であることにより、図12に示すデバイステンプレートの12Hを処理する際に、行番号1255の処理において、ステップS1405の判断が真となるために、行番号1256から1260までが必要な置換を行った上で追加された19Aの部分が存在することである。また、12Oの変数の式が12Mと同様に処理されることにより、19Dで示したX座標の値が図10とは異なる。
図20は、図19のUIデータ2710により構築されたUIの一例を示す図である。
図20において、UI部品1702および1703は図17と同様であるが、図19の19Aの部分により、行番号1941に記載の動体検知を表わすイメージデータ2001がUI1701上に表示される。また、19BのX座標の値が異なることによりUI部品1703の位置が移動している。
図21は、本実施形態において図8同様にデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
図21において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図8との差異は、データ中に8C、8Dと同様の21A、22Bは含むが、8A、8Bに相当する部分が存在しないことである。
図22は、図21のデバイスを操作するための操作サービスを示すデバイス情報303を用いた場合に生成されるUIデータ2710の一例としてXMLデータを示す図である。
図22において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
図8のデバイス情報用いた場合に生成される図10のUIデータ2710との差異は、図21において、図8の8A、8Bに相当する部分が存在しないことにより、図12に示すデバイステンプレート2711の12Gおよび12Iを処理する際に、行番号1246および1266の処理において、ステップS1405の判断が偽となるために、12Gおよび12Iの部分が読み捨てられ、図10の行番号1033から1037および行番号1039から1043の部分が存在しないことである。また、12Mの変数の式が処理されないことにより、22AのY座標の値が図10とは異なる。
図23は、図22のUIデータ2710により構築されたUIの一例を示す図である。
図23において、図22には図10の行番号1033から1037および行番号1039から1043の部分が存在しないことにより、図17とは異なりUI部品1702および1703が存在しない。また、UI部品1703は22AのY座標の値が異なることにより位置が移動している。
以上のように、本実施形態のリモート操作端末においては、同一のデバイステンプレートにより、デバイスの機能あるいは状態に応じて、UI部品の有無およびのレイアウトを変更することが可能になる。
(第3の実施形態)
本実施形態においては、デバイステンプレート2711を変更した場合について、図面を参照しながら説明する。
図24は、本実施形態におけるデバイステンプレート2711の一例としてXMLデータを示す図である。
図24において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。該デバイステンプレート2711は図6に示したデバイステンプレート2711とほぼ同様であるが、24Aに示したスライダの向きを指定する部分が変更されている。また、24Bに示した部分において各座標値が変更されている。
このように特定のデバイスに対するデバイステンプレート2711は、記憶装置205に複数保持している、あるいは外部のサーバに保持されているものを、ユーザが選択することにより、種別・テンプレート対応テーブル304中に記載されているデバイステンプレートファイル名を変更することで変更可能である。
図25は、図24のデバイステンプレート2711を用いた場合に生成されるUIデータ2710の一例としてXMLデータを示す図である。
図25において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図6のデバイステンプレート2711を用いた場合に生成される図10のUIデータ2710との差異は、25A、25Bの部分が、図24の24A、24B部分がそのまま反映されているために異なる。
図26は、図25のUIデータ2710により構築されたUIの一例を示す図である。
図26において、図17とは異なり、カメラのズームを表わすUI部品1703がUI部品2601のように変更されている。これは、図25の25Aの部分によりスライダの向きが、25Bの部分によりスライダの位置が変更されたものである。
(第4の実施形態)
本実施形態においては操作端末が複数のデバイスとネットワーク接続されると、操作端末はネットワーク接続された各々のデバイス情報をデバイスリストとして保持し、フレームテンプレートを基に、それぞれのデバイスに対応するデバイステンプレートを複数組み合わせて、同時に複数のデバイスを制御する為のUIを構築する例を示す。
図29は、本実施形態における具体的な構成を示す図である。
操作端末2901はデバイス(ネットワークカメラ)2902、デバイス(ビデオ)2903、デバイス(プリンタ)2904とネットワークによって接続されている。
操作端末2901はデバイス(ネットワークカメラ)2902、デバイス(ビデオ)2903、デバイス(プリンタ)2904からデバイス情報2905、デバイス情報2906、デバイス情報2907を取得する。
取得したデバイス情報2905〜2907をデバイスリスト2908として管理し、現在接続中のデバイスを制御するUIを構築する際に使用する。このデバイスリストの詳細は図31に示される。
操作端末2901はデバイスを制御するUIを構築するために、まず、フレームテンプレート2909を読み込む。操作端末2901はフレームテンプレート2909を解析し、必要に応じて、各デバイスのデバイステンプレート2911を使用してUIを構築する。
例えば、フレームテンプレート2909中にデバイス(ネットワークカメラ)2902のUIを構築する内容が記載されていた場合には、操作端末2901はデバイスリスト2908を参照し、デバイス(ネットワークカメラ)2902のデバイス情報2905中のデバイス種別をキーとして種別・テンプレート対応テーブル2910を検索し、デバイス(ネットワークカメラ)2902に対応するデバイステンプレート2911であるネットワークカメラテンプレート2912を決定する。
デバイス(ビデオ)2903に対応するデバイステンプレート2911はビデオテンプレート2913、デバイス(プリンタ)2904に対応するデバイステンプレート2911はプリンタテンプレート2914である。
操作端末2901はネットワークカメラテンプレート2912とデバイス情報2905から2915に対してデバイス(ネットワークカメラ)2902用のUIデータ2915を追加生成する。
操作端末2901はフレームテンプレート2909に記載されている通り、各デバイスのデバイステンプレートを使用して各デバイス用のUIを構築し、複数のデバイスのUIを一つのUIデータ2915として合成し、最後にブラウザ2916に対してUIを表示する。
図30は、本実施形態における、デバイスとデバイスID・種別の対応を表す図である。
欄3001は、図29中のデバイス(ネットワークカメラ)2902のデバイスIDは「uuid:upnp-canon-vbc_1_0-00008522CD3A」デバイス種別は「urn:schemas-canon-org:device:NetworkCamera:1」であることを示している。
同様に、欄3002は、デバイス(ビデオ)2903のデバイスIDは「uuid:upnp-canon-video_1_0-00009633DE4B」デバイス種別は「urn:schemas-canon-org:device:Video:1」であることを示している。
同様に、欄3003は、デバイス(プリンタ)2904のデバイスIDは「uuid:upnp-canon-printer_1_0-00000744EF5C」デバイス種別は「urn:schemas-canon-org:device:Printer:1」であることを示している。
図31は、図29における2908デバイスリストの例を示す図である。ここで、図29において接続されている3つのデバイス2902〜2904のデバイスリスト3101は、先頭がデバイス(ネットワークカメラ)2902のデバイス情報3102(デバイス情報2905と同じ)、続いて、デバイス(ビデオ)2903のデバイス情報3103(デバイス情報2906と同じ)、最後がデバイス(プリンタ)2904のデバイス情報3104(デバイス情報2907と同じ)となっている。このデバイスリストの生成方法については、ネットワークに参加した順番や、ユーザ独自のデバイス優先度、などを基に順序を変えることが可能である。
図32は、本実施形態における全体処理の流れを示すフローチャートである。
操作端末2901は、複数のデバイスを制御するUIを構築するために、まずステップS3201においてフレームテンプレート2909を参照する。
続いて、操作端末2901はステップS3202においてフレームテンプレート2909の全てを処理したかどうかを判定する。ステップS3202の判定においてフレームテンプレート2909の全てについて処理が終了していない場合には処理の流れはステップS3203へ進み、処理が終了した場合には、ステップS3207へ進む。
ステップS3203において、フレームテンプレート2909から1行読み込む。続いてステップS3203において読み込んだ1行がUIデータ2915の生成処理の開始を指示した文であるかどうかを判定する(ステップS3204)。
読み込んだ1行がUIデータ2915の生成処理の開始指示文でない場合にはステップS3206へ進み、読み込んだ行をそのままUIデータ2915に書き込む。読み込んだ1行がUIデータ2915の生成処理の開始指示文である場合にはステップS3205のUIデータ生成処理へ進む。この処理の流れは図33に示される。
ステップS3205またはステップS3206の処理が終了すると、ステップS3202の判定に戻り、フレームテンプレート2909全てについて処理が終了するまで処理を繰り返す。
ステップS3202の判定において2909フレームテンプレート全てについて処理が終了したと判定された場合には、最後にステップS3207において、操作端末2901は生成されたUIデータ2915を用いてUIデータ表示処理を行い(ステップS3207)、ブラウザ2916に依頼してUIを表示して全体の処理を終了する。
図33は、本実施形態におけるUIデータ生成処理の流れを示すフローチャートである。本処理は第2の実施形態の図13に示すUIデータ生成処理にステップS3319〜ステップS3323を追加したものである。
まず現在の読込位置のカレントポインタが対象範囲の終端に達しているかどうかをステップS3301にて判断し、未だ終端に達していない場合には、構文上の1行を読み込む(ステップS3302)。
次に、読み込んだ行がUIデータ生成処理の対象範囲の終了を示す構文行であった場合には、処理を終了する(ステップS3319)。続いて、デバイステンプレートの読込指示文であった場合には、ステップS3320の判定はステップS3321へ進み、読込指示文によって指定されたデバイスリスト2908中の指定デバイスのテンプレート読込処理を行う。(ステップS3321)。この処理の詳細は図34に示される。
ステップS3320の判定において、デバイステンプレート2911の読込指示文でなかった場合には、読み込んだ1文がデバイスリスト2908の各デバイスに対する処理であるかどうかを判定する(ステップS3322)。
各デバイスに対する処理指示文であった場合には、ステップS3322の判定はステップS3323へ進み、各デバイスに対する処理を行う。この処理の詳細は図35に示される。
以上の処理をステップS3301の判定においてフレームテンプレート2909全てについて処理が終了するまで繰り返す。ステップS3301の判定において処理が終了したと判定された場合には、UIデータ生成処理を終了する。
図34は、ステップS3321に相当するデバイステンプレート読込処理の流れを示すフローチャートである。
まず、ステップS3401において、デバイスリスト2908上のポインタであるカレントデバイスの位置をindexの値とする。カレントデバイスの位置の初期値は0となっている。
次に、ステップS3402において、ステップS3321への入力である読込文のindex属性値が指定されているかどうかを判定する。指定されている場合には、ステップS3403において、indexの値を指定値とする。
続いて、デバイスリスト2908中のindex番目のデバイスを検索し(ステップS3404)、対応するデバイスを検索できた場合にはステップS3405の判定はステップS3406へ進む。指定されたindex番目のデバイスが存在しない場合には、そのまま処理を終了する。
この結果、検索したデバイスのデバイス情報を取得し(ステップS3406)、そのデバイス情報中から、デバイス種別を取得する(ステップS3407)。取得されたデバイス種別をもとに、対応するデバイステンプレート2911を検索する(ステップS3408)。この処理の流れは図11に示されるものと同様である。
該検索の結果、該デバイス種別に対応するデバイステンプレート2911が存在するか否かを判断し(ステップS3409)、対応するデバイステンプレー2911トが存在する場合には、該デバイステンプレート2911を入力とし、UIデータ領域を新たに出力とする入出力の設定を行った(ステップS3410)後に、UIデータ生成処理を行う(ステップS3411)。ステップS3409の判断の結果、ステップS3407で得たデバイス種別に対応するデバイステンプレート2911が存在しない場合には、処理を終了する。
図35は、ステップS3323に相当するデバイスリスト中の各デバイスに対する処理の流れを示すフローチャートである。
まず変数indexの値を0とし(ステップS3501)、ステップS3323への入力である読込文にstart属性値が指定されているかどうかを判定する(ステップS3502)。start属性値が指定されている場合には、変数indexの値をstart属性値で指定された値に設定する(ステップS3503)。
続いて、各デバイスに対する処理を宣言する文(foreach文)の終端を条件の終端として設定し(ステップS3504)、第2の実施形態と同様に、条件の範囲を保存する(ステップS3505)。この処理の流れは図15に示されるとおりである。
更に、ステップS3505で保存された条件の範囲を入力として設定する(ステップS3506)。ステップS3507において、indexで指定されたデバイスをデバイスリスト2908から検索し、指定されたデバイスが存在した場合には、ステップS3508の判定はステップS3509へ進む。
デバイスリスト2908中のカレントデバイスは検索されたデバイスと設定し(ステップS3509)、ステップS3506で指定された条件の範囲を入力として、UIデータ生成処理を行う(ステップS3510)。
ステップS3510の処理の終了後、変数indexの値を1増やし(ステップS3511)、ステップS3507へ戻り、ステップS3508において、デバイスリスト2908からデバイスを検索できなくなるまで処理を繰り返す。
図36は、本実施形態における操作端末2901が所持する具体的なフレームテンプレートの例を示す図である。図において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
行3606(36A)「<ui_template:template>」はUIデータ生成処理の開始を宣言する構文であり、行3626(36I)「</ui_template:template>」でUIデータ生成処理の終了を宣言している。よって行3606から行3626までがUIデータ生成処理の対象範囲を示している。
行3607(36B)はUIデータ2915の変数の定義部であり、複数のデバイスのUIを合成した際に、各デバイスのセッションを管理するための変数$sessionの初期値を20と設定している。
また、行3612(36D)、行3618(36F)、行3624(36H)では、要素名"ui_template:device"によって、デバイステンプレート2911の読込を指示しており、属性名"index"はデバイスリスト2908中の順番を示している。即ち、36C(行3609〜3613)、36E(3615〜3619)、36G(3621〜3625)では、指定したindex番目のデバイス情報をデバイスリスト2908から取得し、対応するデバイスのUIを指定された範囲(位置/レイアウト)に合成することが記述されている。
例えば、行3612(36D)「<ui_template:device index="1"」という記述は、36C(行3609〜3613)の<svg></svg>で囲まれた範囲に、デバイスリスト2908の先頭にあるデバイスのUIを合成することを指示している。
図37は、本実施形態におけるデバイス(ネットワークカメラ)2902が所持するネットワークカメラテンプレート2912に対応するデバイステンプレート2911の具体的な例を示す図である。
本図において、3704、3717、3718、3721に記載の"$uid"は、デバイス識別情報を示す記号である。3721に記載の$sessionは、図36中の3607において定義された変数で、デバイスのセッション管理のために用いられている。他のデバイスと区別するために、行3733〜3735においてデバイス毎に10ずつ、ずらすように記述されている。
3723に記載の"$devName"はデバイス名識別情報を示す記号であり、実際の値はデバイス情報2905から得られる。また、行3706〜3708、行3709〜3711、行3712〜3714に記載されている<ui_template:ifexist></ ui_template:ifexist >で囲まれた範囲は、対応するデバイス情報中に指定された変数・操作コマンドが存在するかどうかを判定して、UIデータ2915を生成する。この処理は第2の実施形態と同様である。
デバイス(ビデオ)2903、デバイス(プリンタ)2904も各々が対応するデバイステンプレートを所持している。デバイス(ネットワークカメラ)2902、デバイス(ビデオ)2903、デバイス(プリンタ)2904が順にネットワークに接続されたとき、操作端末2901が図31のようなデバイスリスト2908を作成し、図36のようなフレームテンプレート2911を使用した際の、図32における処理の流れについて以下で詳細に説明する。
図31のデバイスリスト3101は、ネットワークに接続された順に並んでいる。即ち、新しくネットワークに接続されたものが後ろに繋がっていくように作成されている。操作端末2901は図32のステップS3201において、図36のようなフレームテンプレート2911を参照する。続いて、ステップS3202において図36のフレームテンプレート2911の処理が未終了であるので、処理の流れはステップS3203へ進む。
ステップS3203において、図36のフレームテンプレート2911から1行読み込む。その内容は、行3601「<svg id="svg" x="0" y="0" width="100%" height="100%"」である。ステップS3204において、読み込んだ1行がUIデータ2915の生成処理の開始指示文(<ui_template:template>)でないので、処理の流れはステップS3206へ進み、読み込んだ行「「<svg id="svg" x="0" y="0" width="100%" height="100%"」をそのままUIデータ2915に書き込み、ステップS3202の判定に戻る。
ステップS3202の判定において、図36のフレームテンプレート2911の処理は未終了であるので、ステップS3203において、図36の次の行3602「preserveAspectRatio="none"」を読み込む。行3602〜3606までは行3601の処理と同様に、ステップS3204の判定はステップS3206へ進み、読み込んだ1行をそのままUIデータ2915に書き込み、ステップS3202の判定に戻ることを繰り返す。
続いて、ステップS3203において行3607「<ui_template:template>」を読み込む。ステップS3204において、読み込んだ1行がUIデータ2915の生成処理の開始指示文「<ui_template:template>」であるので、処理の流れはステップS3205へ進む。
続いてステップS3205においてUIデータ生成処理を行う。まず、ステップS3302において、構文上の1行、行3607「<ui_template:variable name="$session" value="20"/>」を読み込む。読み込んだ行3607はUIデータ生成処理の終了構文「</ui_template:template>」ではないので、ステップS3319の判定はステップS3320へ進む。
さらに、読み込んだ行3607はデバイステンプレート2911の読込指示文(「<ui_template:device」で始まる文)でないので、ステップS3320の判定はステップS3322へ進む。ここでも、読み込んだ行3607は各デバイスに対する処理を指示する構文「<ui_template:foreach device」ではないので、ステップS3303へ進み、第2の実施形態と同様に、変数$sessionの設定処理を行い、ステップS3301の判定に戻る。行3608〜3611までは第1及び第2の実施形態と同様に処理を行う。
ステップS3302において、行3612「<ui_template:device index="0"/>」を読み込むと、読み込んだ行3612はUIデータ生成処理の終了構文「</ui_template:template>」ではないので、ステップS3319の判定はステップS3320へ進む。
続いて、行3612は、デバイステンプレートの読込みを指示した文(「<ui_template:device」で始まる文)であるので、ステップS3320の判定はステップS3321へ進みデバイステンプレート読込処理を行う。
デバイステンプレート読込処理においては、まず、ステップS3401において、デバイスリスト2908上のポインタであるカレントデバイスの位置をindexの値とする。現在カレントデバイス位置は初期値の0となっている。
ステップS3402において、行3612「<ui_template:device index="0" />」によって、index="0"であるデバイスの読み込みを指示されているの、indexの値を0と設定する(ステップS3403)。続いて、デバイスリスト2908中の0番目のデバイスを検索し、対応するデバイスを検索する(ステップS3405)。
ここで、図31のデバイスリスト3101の0番目はデバイスリスト3101の先頭であるのでステップS3405の判定はステップS3406へ進み、検索された指定デバイス(デバイスリストの先頭)のデバイス情報を取得し(ステップS3406)、そのデバイス情報中から、検索された先頭のデバイスのデバイス種別「urn:schemas-canon-org:device:NetworkCamera:1」を取得する (ステップS3407)。
このデバイス種別「urn:schemas-canon-org:device:NetworkCamera:1」をキーとして、2910種別・テンプレート対応テーブルを検索し、対応するデバイステンプレート2911を検索する(ステップS3408)。このデバイステンプレート2911の検索については第1の実施形態に説明したとおりである。この結果、デバイステンプレート「ネットワークカメラテンプレート」が取得される。
検索されたデバイス種別に対応するデバイステンプレート2911が存在するので、ステップS3409の判定はステップS3410へ進み、UIデータ領域を新たに出力とする入出力の設定を行う。検索されたデバイステンプレート2911と、ステップS3406において取得されたデバイス情報を基に、第1及び第2の実施形態と同様にUIデータ生成処理を行う(ステップS3411)。以上の処理をステップS3301の判定が終了となるまで繰り返すと、図38のようなUIデータ2915となる。
図38は、デバイス(ネットワークカメラ)2902、デバイス(ビデオ)2903、デバイス(プリンタ)2904が順にネットワークに接続されたとき、操作端末2901がこれら3つのデバイスのUIを合成して作成したUIデータ2915の例を示す図である。
図38中の38Aの部分に図31のデバイスリスト3101先頭のデバイス(ネットワークカメラ)のUIが合成されており、38Bの部分にデバイスリスト3101の2番目のデバイス(ビデオ)のUI、38Cの部分にデバイスリスト3番目のデバイス(ディスプレイ)のUIが合成されている。
このUIデータ2915を用いてUIデータ表示処理を行い(ステップS3207)、ブラウザ2916に依頼してUIを表示して全体の処理を終了する。表示された画面は図39のように示される。
図39は、3つのデバイスを同時に操作できるように1つのUIに合成した画面の例を示す図である。
3901はデバイス(ネットワークカメラ)のUI、3902はデバイス(ビデオ)のUI、3903はデバイス(ディスプレイ)のUIであり、図36のフレームテンプレート2911に指定されたとおりの位置にレイアウトされている。
例えば、デバイスリスト3101の順番が図40のようになっている場合には、デバイスリスト3101の2番目、3番目のデバイスが入れ替わり、作成される画面も図41のように、デバイス(ネットワークカメラ)のUI4101はほぼ同じであるが、デバイス(ビデオ)のUI4103とデバイス(プリンタ)のUI4102の位置が異なる画面となる。
また、操作端末2901がデバイス(ネットワークカメラ)2902、デバイス(ビデオ)2903、デバイス(プリンタ)2904の接続によって図31のようなデバイスリストを作成し、図42のようなフレームテンプレート2911を使用した場合について説明する。ここで、デバイス(ネットワークカメラ)2902のデバイステンプレートが2911図43のように表されるとする。
図42は、本実施形態における操作端末2901が所持する具体的なフレームテンプレート2909の例を示す図である。図42において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
行4206(42A)「<ui_template:template>」はUIデータ生成処理の開始を宣言する構文であり、行4212(42E)「</ui_template:template>」でUIデータ生成処理の終了を宣言している。よって行4206から行4212までがUIデータ生成処理の対象範囲を示している。
42BはUIデータの変数の定義部である。行4207においては変数$xの初期値を105と設定・定義しており、行4208のおいては、複数のデバイスのUIを合成した際に、各デバイスのセッションを管理するための変数$sessionの初期値を20と設定している。
また、42Cは、行4207の要素名" <ui_template:foreach device"によって、デバイスリストに存在するデバイス全てに対して、行4211「</ui_template:foreach>」で終了が宣言される範囲までの処理を行うように指示しており、行4207の属性名"start"はデバイスリスト2908の開始位置を指示している。
ここで、全てのデバイスに対する処理として、行4210の「ui_template:device/>」によって、テンプレートの読込を指示している。ここで、行4210は、図36の3612等と違い、属性"index"が指定されていない。この場合は、デバイスリストのカレントポインタで指定された位置にあるデバイスのUIを合成することを指示している。
図43は、本実施形態におけるデバイス(ネットワークカメラ)2902が所持するネットワークカメラテンプレート2912に対応するデバイステンプレートの具体的な例を示す図である。図43において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
図43において、行4333〜4336は式を表しており、行4333は図42の行4207において定義した変数$xに130を加算する式を、行4335は図42の行4208において定義した変数$sessionに10を加算する式を表している。
4301の"x="$x""はX座標として、変数$xの値を使うことを意味している。即ち、読み込まれるデバイステンプレート(図43)の行4301の要素名"<svg id="svg""で表される特定の範囲に読み込まれるデバイスのUI表示位置のX座標がその時点での$xの値によって変わることを表している。従って、このデバイステンプレートが読み込まれる以前に$xの値が変化しているかどうかによって、デバイステンプレートのレイアウトが変化することを意味している。
4304、4317、4318、4321に記載の"$uid"は、デバイス識別情報を示す記号である。4321に記載の"$session"は、図42中の4208において定義された変数で、デバイスのセッション管理のために用いられている。他のデバイスと区別するために、行4335においてデバイス毎に10ずつ、ずらすように記述されている。4323に記載の"$devName"はデバイス名識別情報を示す記号であり、デバイス情報2905から得られる。
また、行4306〜4308、行4309〜4311、行4312〜4314に記載されている<ui_template:ifexist></ ui_template:ifexist >で囲まれた範囲は、対応するデバイス情報中に指定された変数・操作コマンドが存在するかどうかを判定して、UIデータ2915を生成する。この処理は第2の実施形態と同様である。
デバイス(ビデオ)2903、デバイス(プリンタ)2904も各々が対応するデバイステンプレート2911を所持しており、これらのデバイステンプレート2911中には、変数$xを変化させるような記述が含まれている場合がある。
本実施形態の処理によって図42のようなフレームテンプレート2911と図43のようなデバイステンプレート2911と、図31のようなデバイスリスト3101を用いて作成されるUIデータ生成処理に関して、図42の42Cの部分についての処理の流れを説明する。
図33ステップS3302において、行4209「<ui_template:foreach device start="0">」を読み込むと、ステップS3322の判定は、ステップS3323へ進む。ステップS3323各デバイスに対する処理(図35)において、まず変数indexの値を0とし(ステップS3501)、行4209にはstart属性値が指定されているので、ステップS3502の判定はステップS3503へ進み、変数indexの値をstart属性値で指定された値("0")に設定する(ステップS3503)。
続いて、各デバイスに対する処理を宣言する文(foreach文)の終端(行4211の読込)を条件の終端として設定し(ステップS3504)、第2の実施形態と同様に、条件の範囲を保存する(ステップS3505)。
更に、ステップS3505で保存された条件の範囲「行4120「<ui_template:device/>」」を入力として設定し(ステップS3506)、ステップS3507において、indexで指定されたデバイスリスト3101の先頭のデバイスを検索する。
先頭のデバイスが存在するので(ステップS3508)、デバイスリスト中のカレントデバイスを検索されたデバイス(デバイスリストの先頭デバイス)と設定し(ステップS3509)、ステップS3506で指定された条件の範囲を入力として、UIデータ生成処理を行う(ステップS3510)。ステップS3510の処理により、先頭デバイスのデバイステンプレートの読込が図34の処理の流れに従って、行われる。
ステップS3510の処理の終了後、変数indexの値を1増やしながら、ステップS3508において、デバイスリストからデバイスを検索できなくなる(デバイスリストの全デバイスに対する処理が終了する)まで処理を繰り返す。この処理によって作成されるUI画面は図44のようにデバイス(ネットワークカメラ)のUI4401、デバイス(プリンタ)のUI4402、デバイス(ビデオ)のUI4403が並んで表示される。
以上説明したように、本実施形態に拠れば、複数のデバイスからのデバイス情報と、それぞれのデバイスに対応するデバイステンプレート2911を複数組み合わせて、複数のデバイスを制御するためのユーザインタフェースを構築する事で、ある1つのデバイスが機能更新などのバージョンアップをした場合でも全UIを更新することなく、そのデバイスに対応するデバイステンプレート2911のみを変更することで、複数のデバイスを制御する為のユーザインタフェースを更新することができる効果がある。
また、複数のデバイスからのデバイス情報に順位付けを行い、その順位付けに従って、それぞれのデバイスに対応する複数のデバイステンプレート2911から構成されているUIを、デバイステンプレート2911の組み合わせを変更する事で、操作対象となる複数のデバイスの組み合わせが変更されたUIを容易に実現できる効果がある。
(第5の実施形態)
本実施形態においては第3の実施形態におけるフレームテンプレートから別のフレームテンプレートをリンクし、それぞれのテンプレートにデバイスに対応するデバイステンプレートを複数組み合わせて、同時に複数のデバイスを制御する為のUIを構築する例を示す。本実施形態においても全体の流れは第3の実施形態の図32と同様である。
図45は、本実施形態における具体的な構成を示す図である。
本実施形態においては第3の実施形態の構成(図29)と比べると、フレームテンプレート4509の構成、種別・デバイステンプレート対応テーブル4510の構造、デバイステンプレート4511の種類が異なっている。
操作端末4501はデバイスを制御するUIを構築するために、まず、親フレームテンプレート4516を読み込む。ここで、操作端末4501は図46に示されるようなデバイスリスト4601を所持しているとする。
操作端末4501は親フレームテンプレート4516を解析し、必要に応じて、子フレームテンプレート4517や各デバイスのデバイステンプレート4511を使用してUIを構築する。ここで、親フレームテンプレート4516から呼び出されるデバイステンプレートのテンプレートタイプを"メイン"、子フレームテンプレート4517から呼び出されるデバイステンプレート4511のテンプレートタイプを"サブ"とする。
例えば、親フレームテンプレート4516中にデバイス4503のUIを構築する内容が記載されていた場合には、操作端末4501はデバイスリスト4508を参照し、デバイス(TV)4503のデバイス情報4505中のデバイス種別とテンプレートタイプ="メイン"(親フレームテンプレート4517からの呼び出しであるので)とキーとして種別・テンプレート対応テーブル4510を検索してデバイス(TV)4503のテンプレートタイプ="メイン"に対応するデバイステンプレート4511であるテレビメインテンプレート4513を決定する。
操作端末4501はテレビメインテンプレート4512とデバイス情報4506から4514に対してデバイス4503用のテンプレートタイプがメインであるUIデータ4514を追加生成する。
操作端末4501はフレームテンプレート4509に記載されている通り、各デバイスのデバイステンプレートを使用して各デバイス用のUIを構築し、複数のデバイスのUIを一つのUIデータ4514として合成し、最後にブラウザ4515に対してUIを表示する。
ここで、デバイス(ネットワークカメラ)4502のデバイスIDは「uuid:upnp-canon-vbc_1_0-0008522CD3A」、デバイス種別は「urn:schemas-canon-org:device:NetworkCamera:1」、デバイス(TV)4503のデバイスIDは「uuid:upnp-canon-csed-1000-00008522NEKO」、デバイス種別は「urn:schemas-canon-org:device:TvDevice:1」、デバイス(ネットワークカメラ)4504のデバイスIDは「uuid:upnp-canon-vbc_1_0-0007411BC2Z」、デバイス種別は「urn:schemas-canon-org:device:NetworkCamera:1」である。
図46は、本実施形態においてデバイス(TV)4503、デバイス(ネットワークカメラ)4502、デバイス(ネットワークカメラ)4504が順にネットワークに接続されたとき、操作端末4501が作成するデバイスリスト4601を表す図である。
デバイスリストの先頭4602にデバイス(TV)4503に対応するデバイス情報が、デバイスリストの2番目4603にデバイス(ネットワークカメラ)4502に対応するデバイス情報が、デバイスリストの3番目4604にデバイス(ネットワークカメラ)4504に対応するデバイス情報がつながっている。
デバイスリストの2番目と3番目は、同じデバイス種別「urn:schemas-canon-org:device:NetworkCamera:1」をもつデバイスの情報であるが、図7の(7C)のようにデバイス情報中にデバイスIDが記載されており各々を識別できる。
図47は、本実施形態におけるUIデータ生成処理の流れを示すフローチャートである。本処理は第3の実施形態の図35に示すUIデータ生成処理にステップS4722〜ステップS4725までを追加したものである。
操作端末4501は、複数のデバイスを制御するUIを構築するために、まずステップS4701において親フレームテンプレート4516を参照する。
続いて4501操作端末はステップS4702においてフレームテンプレート4509の全てを処理したかどうかを判定する。まず、読込位置のカレントポインタが対象範囲の終端に達しているかどうかをステップS4701にて判断し、未だ終端に達していない場合には、構文上の1行を読み込む(ステップS4702)。次に、読み込んだ行がUIデータ生成処理の終了を示す構文行であった場合には、処理を終了する。(ステップS4719)。
続いて、読み込んだ行が親フレームテンプレート4516から他のファイル(他のフレームテンプレート、子フレームテンプレート4517等)の読み込みを指示する構文行であった場合には、ステップS4722の判定は処理の流れはステップS4723へ進む。
ステップS4724において、読み込みを指示された他のファイルが存在するかどうかを判定し、存在する場合には、このファイルを対象にUIデータ生成処理を再帰的に呼び出す(ステップS4725)。存在しない場合には、ステップS4701へ戻る。
ステップS4722の判定において、他のファイル(他のフレームテンプレート、子フレームテンプレート4517等)の読み込みを指示する構文行でなかった場合には、ステップS4722の判定はステップS4720へ進み、第4の実施形態と同様に処理を行い、ステップS4701の判定へ戻る。
以上の処理をステップS4701の判定において親フレームテンプレート4516全てについて処理が終了するまで、あるいはステップS4719において対象範囲の終了文を繰り返す。ステップS4701の判定において処理が終了したと判定された場合には、UIデータ生成処理を終了する。
図48は、本実施形態におけるステップS4721に相当する、デバイステンプレート読込処理の流れを示すフローチャートである。この図は第4の実施形態におけるデバイステンプレート読込処理にステップS4804およびステップS4805を追加した物である。
本実施形態におけるデバイステンプレート読込処理においてはステップS4721への入力である読込文にtype属性値が指定されているかどうかを判定し(ステップS4804)、指定されている場合には、typeの値を指定値として設定する(ステップS4805)。
ここで指定されたテンプレートタイプの値とステップS4809で取得されたデバイス種別を用いて、対応するデバイステンプレート4511を検索する(ステップS4810)。この処理の流れは図49 に示される。
図49は、本実施形態におけるステップS4810に相当する対応テンプレート検索処理の流れを示すフローチャートである。
まず、種別・テンプレート対応テーブル4510にまだデバイス種別とテンプレートとタイプの組が存在するか否かを判断し(ステップS4901)、存在するならば該デバイス種別とテンプレートとタイプの組を得て(ステップS4902)、その中のデバイスの種別を得る(ステップS4903)。
次に、該デバイスの種別がステップS4809で得たデバイスの種別に一致するか否かを判断し(ステップS4904)、一致するならばステップS4905において、ステップS4805で設定された(テンプレート)タイプを得て、ステップS4902で得た(テンプレート)タイプが一致する場合には、ステップS4902で得たデバイス種別とテンプレートとタイプの組からデバイステンプレート4511を得て、対応するデバイステンプレート4511として(ステップS4907)、処理を終了する。
ステップS4904の判断の結果、両デバイスの種別が一致しない場合には、ステップS4901の判断に戻る。ステップS4901の判断の結果、種別・テンプレート対応テーブル4510にもうデバイス種別とテンプレートとタイプの組が存在しないならば、処理を終了する。
ステップS4906の判断の結果、両デバイスの種別が一致するが、タイプのみが異なる場合には、ステップS4908において、仮の結果テンプレートとして設定し、もしステップS4805において(テンプレート)タイプが設定されていない場合には、始めに見つかった種別・テンプレート対応テーブルの組に対応するテンプレートが返される。
図50は本実施形態における操作端末4501が所持する具体的な親フレームテンプレート4516の例を示す図である。図50において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
行5011(50A)「<ui_template:template>」はUIデータ生成処理の開始を宣言する構文であり、行5020(50E)「</ui_template:template>」でUIデータ生成処理の終了を宣言している。よって行5011から行5020までがUIデータ生成処理の対象範囲を示している。
行5017(50C)では、要素名"ui_template:device"によって、デバイステンプレート4511の読込を指示しており、属性名"type"はデバイスのテンプレートタイプを示している。但し、属性値"index"による指定はないため、読み込むデバイスはデバイスリスト4601のカレントポインタ(初期値は先頭)である。
即ち、50B(行5012〜5018)では、指定したテンプレートタイプでデバイスリスト4601の先頭にあるデバイスのデバイス情報を取得し、対応するデバイスのUIを指定された範囲50B(位置/レイアウト)に合成することが記述されている。
また、行5019(50D)では、要素名"<ui_template:import"により、ファイルの読み込みを指定している。ここで、属性名"xlink:href"のファイルパスで指定されているファイルを読み込むことを指示している。即ち行5020(50E)では、ファイル"sub_template.svg"を読み込んで処理することを指示している。
図51は、本実施形態におけるデバイス(TV)4503が所持するテレビメインテンプレート4513に対応するテンプレートタイプ="main"であるデバイステンプレート4511の具体的な例を示す図である。図51において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
図51において、51A、51B、51C、51D、51E、51FはUIにおけるUI部品の有無及びレイアウトを変更するための条件記述であり、図52のようなデバイス情報および図53に記載の操作コマンドの有無によってUI部品<xforms:range>を表示するか否かを判定する条件記述である。
図52は、本実施形態におけるデバイス(TV)4503のデバイス情報4506の一例としてXMLデータを示す図である。
図52において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。行番号5208にある52Aはデバイス情報におけるデバイス種別を示す記述である。このうち"urn:schemas-canon-org:device:TvDevice:1"が実際のデバイス種別を示す文字列である。
行番号5209にある52Bはデバイス名を示す記述である。このうち"Canon TV"が実際のデバイス名を示す文字列である。行番号5217にある52CはデバイスIDを示す記述である。このうち"uuid:upnp-canon-csed-1000-00008522NEKO"が実際のデバイスIDを示す文字列である。行番号5224にある52Dはデバイスを操作するための操作サービスを示すXMLデータへのリンクを示している。
図53は、本実施形態においてデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
図53において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図53は、図52において52Dで表わされた操作サービスを示すデバイス情報である。
図53において、53A、53B、53Cはそれぞれ別の操作コマンドを表わしており、それぞれの操作コマンド名がIncreaseChannel、DecreaseChannel、ControlVolumeであること、およびそれぞれの操作コマンドの引数などを示している。
また、53D、53Eは状態変数を示しており、その名称がそれぞれ、Channel、Volumeであることを示している。
図54は、図50の行5019(50D)よりインポートされている子テンプレート(sub_template.svg)の例を示す図である。このファイルはSVGファイルであってもよいし、別の形式のテキストファイルであってもよい。図54において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
54AはUIデータ4514の変数の定義部である。行5406においては変数$xの初期値を105と設定・定義しており、行5407のおいては、複数のデバイスのUIを合成した際に、各デバイスのセッションを管理するための変数$sessionの初期値を20と設定している。
また、54Cは、行5408の要素名"<ui_template:foreach device"によって、デバイスリスト4601に存在するデバイス全てに対して、行5410「</ui_template:foreach>」で終了が宣言される範囲までの処理を行うように指示おり、行5408の属性名"start"はデバイスリスト4601の開始位置を指示している。
ここで、デバイスリスト4601のindex=1(先頭から2番目)のデバイスから初めて、全てのデバイスに対する処理として、行5409の「<ui_template:device」によって、テンプレートの読込を指示している。
さらに行5409では、属性"type"によって、読み込むデバイスのテンプレートタイプが指定されている。ここではテンプレートタイプ="sub"であるものを指定している。また行5409では属性"index"が指定されていない。この場合は、デバイスリスト4601のカレントポインタで指定された位置にあるデバイスのUIを合成することを指示している。
図55は、本実施形態における4502デバイス(ネットワークカメラ)に対応する4518ネットワークカメラに対応するテンプレートタイプ="sub"であるデバイステンプレート4511の具体的な例を示す図である。
図55において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
本図において、行5506〜5508は式を表しており、行5507において、変数$xに130を加算する式を表している。5501の"x="$x""はX座標として、変数$xの値を使うことを意味している。即ち、読み込まれるデバイステンプレート(図55)の行5501の要素名"<svg id="svg""で表される特定の範囲に読み込まれるデバイスのUI表示位置のX座標がその時点での$xの値によって変わることを表している。したがって、このデバイステンプレート4511が読み込まれる以前に$xの値が変化しているかどうかによって、デバイステンプレート4511のレイアウトが変化することを意味している。
各デバイスはテンプレートタイプ(main/sub)に対応するデバイステンプレート4511をそれぞれ所持しており、これらのデバイステンプレート4511中には、変数$xを変化させるような記述が含まれている場合がある。
ここで、デバイス(TV)4503、デバイス(ネットワークカメラ)4502、デバイス(ネットワークカメラ)4504が順にネットワークに接続によって、操作端末4501が図46のようなデバイスリスト4601を作成し、図50のような親フレームテンプレート4516を使用した際の、図32および図47における処理の流れについて以下で詳細に説明する。図46のデバイスリスト4601は、ネットワークに接続された順に並んでいる。即ち、新しくネットワークに接続されたものが後ろに繋がっていくように作成されている。
操作端末4501は図32のステップS3201において、図50のような親フレームテンプレート4516を参照する。続いてステップS3202において図50の親フレームテンプレートの処理が未終了であるので、処理の流れはステップS3203へ進む。ステップS3203において、図50の親フレームテンプレートから1行読み込む。その内容は、行5001「<?xml version="1.0" standalone="no"?>」である。
ステップS3204において、読み込んだ1行がUIデータ4514の生成処理の開始指示文(<ui_template:template>)でないので、処理の流れはステップS3206へ進み、読み込んだ行「<?xml version="1.0" standalone="no"?>」をそのままUIデータ4514に書き込み、ステップS3202の判定に戻る。
ステップS3202の判定において、図36のフレームテンプレート4511の処理は未終了であるので、ステップS3203において、図50の次の行5002「<svg id="svg" x="0" y="0" width="100%" height="100%"」を読み込む。
行5002〜5010までは行5001の処理と同様に、ステップS3204の判定はステップS3206へ進み、読み込んだ1行をそのままUIデータ4514に書き込み、ステップS3202の判定に戻ることを繰り返す。ステップS3203において行5411「<ui_template:template>」を読み込む。
ステップS3204において、読み込んだ1行がUIデータ4514の生成処理の開始指示文「<ui_template:template>」であるので、処理の流れはステップS3205へ進む。
ステップS3205においてUIデータ生成処理を行う。この処理は図47に示されるとおりである。
処理は終了していないのでステップS4701の判定はステップS4702へ進み、構文上の1行、行5012「<svg id="svg" x="0" y="0" width="100%" height="100%"」を読み込む(ステップS4702)。読み込んだ行5012はUIデータ生成処理の終了構文「</ui_template:template>」ではないので、ステップS4719の判定はステップS4722へ進む。
ステップS4722の判定において、他のファイル(フレームテンプレート)の読み込みを指示する構文行「<ui_template:import」ではないでの、ステップS4722の判定はステップS4720へ進む。
さらに、読み込んだ行5012はデバイステンプレート4511の読込指示文(「<ui_template:device」で始まる文)でないので、ステップS4720の判定はステップS4703へ進み、第2の実施形態と同様に処理を行い、ステップS4701の判定に戻る。行5012〜5016までは第2の実施形態と同様に処理を行う。
ステップS4702において、行5017「<ui_template:device type="main">」を読み込むと、読み込んだ行がUIデータ生成処理の終了を示す構文行「</ui_template:template>」でないので、ステップS4719の判定はステップS4722へ進む。
ステップS4722の判定において、他のフレームテンプレートの読み込みを指示する構文行「<ui_template:import」ではないので、ステップS4722の判定はステップS4720へ進む。ここで、読み込んだ行5017はデバイステンプレート4511の読込指示文(「<ui_template:device」で始まる文)であるので、処理の流れはステップS4721へ進む。
読込指示文によって指定されたデバイスリスト中の指定デバイスに対するデバイステンプレート読込処理を行う(ステップS4721)。ここで、行5017では属性値"index"による指定はないため、ステップS4801で取得されたカレントデバイス(index=0)により、デバイスリスト4601の先頭にあるデバイスのデバイス(ネットワークカメラ)4502が検索される(ステップS4806)。
さらに、デバイスリスト4601から検索したデバイス情報を取得する(ステップS4808)。このデバイス情報は図52、53に示されるようなものである。取得したデバイス情報から5208のデバイス種別"urn:schemas-canon-org:device:TvDevice:1"を取得する(ステップS4809)。
行5017では属性名"type"が"main"と指定されているので、ステップS4804の判定はステップS4805へ進み、デバイスのテンプレートタイプを"メイン"(type=main)と設定する。
この結果、ステップS4809において取得したデバイス種別"urn:schemas-canon-org:device:TvDevice:1"とステップS4805において設定したテンプレートタイプ"メイン"(type=main)をキーとして、種別・テンプレート対応テーブル4510を検索し、対応するデバイステンプレート4511であるテレビメインテンプレート4513を検索する(ステップS4810)。このテレビメインテンプレート4513は図51に示されるようなものである。
検索の結果、デバイス種別に対応するデバイステンプレート4511が存在するので、ステップS4811の判定はステップS4812へ進み、UIデータ領域を新たに出力とする入出力の設定を行う。
検索されたテレビメインテンプレート4513(図51)と、ステップS4722において取得されたデバイス情報(図52、53)を基に、第1及び第2の実施形態と同様にUIデータ生成処理を行う(ステップS4813)。ステップS4813のUIデータ生成処理が終了後、ステップS4701の判定へ戻り、処理を続ける。
ステップS4702において行5019「<ui_template:import…」を読み込むと、読み込んだ行がUIデータ生成処理の終了を示す構文行「</ui_template:template>」でないので、ステップS4719の判定はステップS4722へ進む。ステップS4722の判定において、他のファイル・フレームテンプレートの読み込みを指示する構文行「<ui_template:import」であるので、処理の流れはステップS4723へ進む。
ステップS4723において、属性値"xlink:href"によって読み込みを指示された他のフレームテンプレート"sub_template.svg"を参照し、このファイルが存在するので、入力を"sub_template.svg"に設定し(ステップS4724)、このフレームテンプレートを対象にUIデータ生成処理を再帰的に呼び出す(ステップS4725)。sub_template.svgは図54に示されるような物である。
ステップS4725においては、図54に示されるようなフレームテンプレート4509を対象にUIデータ生成処理を行う。この再帰的に呼び出されるUIデータ生成処理において、ステップS4702において、行5408を読み込んだ際には、デバイスリスト4601のindex=1(先頭から2番目)のデバイスから始めて、デバイスリスト4601中の全てのデバイスに対して、行5409の「<ui_template:device」によって指示された、テンプレートタイプ="sub"であるデバイステンプレート4511のUIをUIデータ4514に追加する処理を行う。この処理の流れは図47、49に示される処理の流れに従って行なわれる。
続いて、ステップS4702において行5020「</ui_template:template」を読み込むと、読み込んだ行がUIデータ生成処理の終了を示す構文行「</ui_template:template>」であるのでUIデータ生成処理を終了する。このようにして生成されたUIデータ4514は図56のように示される。
図56中の56Aは親フレームテンプレート4516から読み込まれた、図46にあるデバイスリストの先頭のテンプレートタイプ="メイン"のデバイス(デバイス(TV)、デバイスID:uuid:upnp-canon-csed-1000-00008522NEKO)のデバイステンプレート4511から作成されたUIである。
56Bは、親フレームテンプレート4516からimportされた他のフレームテンプレート(子フレームテンプレート4517)により構成されたUIである。この中で、56Cは子フレームテンプレート4517から読み込まれた、図46にあるデバイスリスト4601の2番目のデバイス(デバイス(ネットワークカメラ)、デバイスID:uuid:upnp-canon-vbc_1_0-0008522CD3A)のテンプレートタイプ="サブ"のデバイステンプレート4511から作成されたUIである。
また、56Dは子フレームテンプレート4517から読み込まれた、図46にあるデバイスリストの3番目のデバイス(デバイス(ネットワークカメラ)、デバイスID:uuid:upnp-canon-vbc_1_0-0007411BC2Z)のテンプレートタイプ="サブ"のデバイステンプレート4511から作成されたUIである。
図56のようなUIデータ4514をブラウザ4515に対して表示を依頼すると、図57のような画面が表示される。
5701はデバイス(TV)、デバイスID:uuid:upnp-canon-csed-1000-00008522NEKOのデバイスを操作するためのUIである。
5704、5705、5706は図51のテレビメインテンプレート4513中の51Eによって表示された、TVのチャンネルを変えるためのUI部品である。5707、5708は図51のテレビメインテンプレート4513中の51Fによって表示されたTVの音量を変えるためのUI部品である。
同様に、5702はデバイス(ネットワークカメラ)、デバイスID:uuid:upnp-canon-vbc_1_0-0008522CD3AのUI、5703はデバイス(ネットワークカメラ)、デバイスID:uuid:upnp-canon-vbc_1_0-0007411BC2ZのUIを示しており、複数のデバイスのUIを一つのUIとして合成表示している。
以上説明したように、本実施形態に拠れば、UIを構成している複数のデバイステンプレート4511が、それぞれのデバイステンプレート4511が適用される操作画面上のレイアウト情報を保持する親テンプレートと共に用いられ、さらに、複数のデバイスからのデバイス情報に順位付けを行い、この順位付けに従って、前記親テンプレートにおけるレイアウト情報とデバイステンプレート4511との対応情報を変更してUIを再構築する事により、デバイスに対応する個々のUIを簡単に入れ替える事ができる効果がある。
(第6の実施形態)
前述の第1〜第5の実施形態においては、デバイステンプレートにデバイス情報が適用される事により生成されるUIデータは、操作端末において、ユーザがリモート操作を行おうとする際、即ち、ユーザがデバイスを選択し、その結果、最初にUIが構築される時に一度だけ作成されるものであった。しかし、実際に、操作端末においてデバイスに対するリモート操作を行う際には、ユーザによって使用されるUIは、デバイス自体のネットワークからの離脱や新たなデバイスの参加によるイベント通知、ユーザのUI部品に対する操作によるイベント発生、そしてデバイスからのデバイス内の状態変数の変化によるイベント通知など、様々なイベントにより、UI自体を再構築する必要が生じる場合がある。
例えば、ユーザがリモート操作中のデバイスが、ネットワークから離脱した場合には、操作中のUIは操作端末の画面からは消去され、あるいは、その代わりとなるデバイスのUIに再構築されなくてはならない。また、操作端末において、親子画面からなるUIを構築し、親画面でTVデバイスを操作しながら映像を鑑賞中に、子画面の監視カメラデバイスで睡眠中の子供の様子をモニタしている様な場合に、子供が起きた事による監視カメラデバイスからの動体監視イベントにより、子画面で構成されていた監視カメラ用のUIが、TVデバイスと入れ替わり、TVデバイスが子画面となる新たなUIに再構築される場合もある。また、前述のTVデバイスと監視カメラのUI再構築に関しては、ユーザによるUIへの親子画面の入れ替えボタン操作等によっても行われる可能性がある。
図58は、本実施形態における操作端末の、具体的な構成を示す図である。
本実施形態においては第5の実施形態の図45の構成に較べて、各デバイスからの、ネットワーク接続及び離脱の際に通知されるイベント情報及びデバイスの状態変数の変化を通知するイベント情報、さらに、操作端末におけるUI操作によるイベント情報の記述が追加されている点が異なっている。
以下、デバイスリスト5808に登録された情報に基づき、第4の実施形態と同様に、UIデータ5814の作成が行われる。操作端末5801はデバイスを制御するUIを構築するために、まず、親フレームテンプレート5816を読み込む。操作端末5801は親フレームテンプレート5816を解析し、必要に応じて、子フレームテンプレート5817や各デバイスのデバイステンプレート5811を使用してUIを構築する。
ここで、親フレームテンプレート5816から呼び出されるデバイステンプレート5811のテンプレートタイプを"メイン"、子フレームテンプレート5817から呼び出されるデバイステンプレート5811のテンプレートタイプを"サブ"とする。
例えば、親フレームテンプレート5816中にデバイス(テレビ)5802のUIを構築する内容が記載されていた場合には、操作端末5801はデバイスリスト5808を参照し、デバイス(テレビ)5802のデバイス情報5805中のデバイス種別とテンプレートタイプ="メイン"(親フレームテンプレート5816からの呼び出しであるので)とキーとして種別・テンプレート対応テーブル5810を検索してデバイス(テレビ)5802のテンプレートタイプ="メイン"に対応するデバイステンプレート5811であるテレビメインテンプレート5813を決定する。
操作端末5801はテレビテンプレート5813とデバイス情報5805からUIデータ5814に対してデバイス(テレビ)5802用のテンプレートタイプがメインであるUIデータ5814を追加生成する。
また同様に、デバイスリスト5808中に次のデバイスとしてデバイス(ネットワークカメラ)5803が存在していた場合には、親フレームテンプレート5816から参照される子フレームテンプレート5817及び、デバイス情報5806中のデバイス種別とテンプレートタイプ="サブ"とをキーとして種別・テンプレート対応テーブル5810を検索してデバイス(ネットワークカメラ)5803のテンプレートタイプ="サブ"に対応するネットワークカメラサブテンプレート5818を決定する。
操作端末5801はフレームテンプレート5809に記載されている通り、各デバイスのデバイステンプレートを使用して各デバイス用のUIを構築し、複数のデバイスのUIを一つのUIデータ5814として合成し、最後にブラウザ5815に対してUIを表示する。
ここで、デバイス(ネットワークカメラ)5803は、撮影対象の画像に変化が生じ、撮影対象が動いたとする事でデバイス内の状態変数を変更し、それに伴い、イベント情報を発行する動体検知機能を搭載しており、当該イベント情報はネットワーク接続により操作端末に通知される。また、5802〜5804の全てのデバイスは、ネットワークへの接続及び離脱の際は、やはり同様に、操作端末に通知を行う。これにより、操作端末においては、デバイスリストの変更を行い、ユーザに対して、現在リモート操作可能なデバイスの一覧を提示する事が可能となる。さらには、ユーザによるUI操作によってもUIの構成を変更する為のイベント情報が発信される場合がある。
図59は、本実施形態において操作端末上に構成されているUI画面を示す図である。ここで、5901は操作端末の全体表示画面、5902はTVデバイスの表示画面を含むUI、5903及び5904はネットワークカメラのUIを示している。
5902、5903及び5904は、PinP(Picture in Picture)の構成からなる親子関係を構成する親フレームテンプレート5816と複数の子フレームを収容可能な子フレームテンプレート5817を用いて作成されている。即ち、親フレームテンプレート5816にはテレビデバイスのメインテンプレートタイプであるデバイステンプレート5811が、そして子フレームテンプレート5817にはネットワークカメラデバイスのサブテンプレートタイプであるデバイステンプレート5811が適用されてUIデータ5814の構築が行われる。
その結果、テレビデバイスについては表示画面を含むUI画面、そしてネットワークカメラデバイスについては子フレームテンプレート5817に適用され表示されている為に、映像のみを表示するUIデータ5814が生成され、ブラウザ5815において5901の如くUIの表示が行われている。また、5909は、親フレームテンプレート5816に記述されている親子UIの入れ替えを実行する為のボタンUI部品である。
図60は、前述の図59のUI画面を構成する親フレームテンプレート5816を示す図である。
図60において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。ここで、行6018から行6021はUI画面における親子関係を入れ替える為のチェンジ操作の為のボタンUI部品の記述であり、ユーザが当該ボタンを操作する事により、操作端末5801に対し"DOMActivate"イベントが発生し、"changeWindow"という名称のハンドラが呼ばれる記述である。
操作端末5801においては、前記のハンドラが呼ばれる事で、操作端末5801に現在登録されているデバイスリスト5808の順番を先頭に向かって一つずつ入れ替え、またデバイスリストの先頭にあったものを最後尾に移動する。
続いて、操作端末5801内では、順番が入れ替わったデバイスリスト5808に対応じて、各フレームテンプレートに割り当てられるデバイステンプレート5811の変更が行われる。この様に、フレームテンプレート5809に新たなデバイステンプレート5811が適用される事により、新たなUIデータ5814が構築され、当該UIデータ5814をブラウザ5815で表示する事で親子関係にあるデバイスのUI画面が入れ替わるものである。
図61は、前記の図59のUI画面を構成する子フレームテンプレート5817を示す図である。
ここでは、第5の実施形態に示す子フレームテンプレート4517と同様、一つのメイン画面に複数の子画面が並ぶ事が可能な子フレームテンプレート5817となっている。
図62は、テレビデバイスのメイン画面用デバイステンプレートの例を示す図である。
図62において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。当該メイン画面用デバイステンプレートが、前述の親フレームテンプレート5816に適用される事で、テレビデバイスのUIがPinP表示の親画面となる様なUIデータ5814が構築される。
図63は、動体検知イベントを発行可能なネットワークカメラデバイスのサブ画面用デバイステンプレートの例を示す図である。
図63において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。当該サブ画面用デバイステンプレートが前述の子フレームテンプレート5817に適用される事で、ネットワークカメラデバイスのUIがPinP表示の子画面となる様なUIデータ5814が構築される。
ここで、行6305から行6306はネットワークカメラデバイスが動体検知による特定の状態変数の変化を通知して来た際の動作を記述している。当該特定の状態変数の変化がイベント通知されると、行6305のsubmission動作が行われ、次の行6306で、当該submission動作において、操作端末5801に対して、メソッド"UIMANAGER_MOVE_TO_1ST"を実行する為の記述がされている。
操作端末5801が前記のメソッドを受け取る事で、当該デバイステンプレート5811に対応するデバイスをデバイスリスト5808の先頭へと移動し、空いた部分のリストが詰められて、順番が入れ替わったデバイスリスト5808が作成される。続いて、操作端末5801内では、順番が入れ替わったデバイスリスト5808に対応じて、それぞれのフレームテンプレート5809に割り当てられるデバイステンプレート5811の変更が行われる。
この様に、フレームテンプレート5809に新たなデバイステンプレート5811が適用される事により新たなUIデータ5814が構築され、当該UIデータ5814をブラウザ5815で表示する事で親子関係にあるデバイスのUI画面が入れ替わるものである。
図64は本実施形態におけるUIデータ生成処理によって生成されたUIデータ5814の一例としてXMLデータを示す図である。
図64において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。また、64A、64B、64C、64Dはそれぞれデバイステンプレート5811である図62、図63が、フレームテンプレートで図60、図61に基づいて構成されたものであり、デバイステンプレート5811中のデバイスを特定する為の各種情報は、UIデータ5814が構築される時点で適宜、補完される事になる。
このUIデータ5814を操作端末5801のブラウザ5815に渡すことによりUIが構築され、出力5815によりUIが表示される。
図65は、操作端末内に作成されるデバイスリスト6501の構造図を示すであり、ユーザが予め選択した順番にリストに登録されているものである。本実施形態においては、TVデバイスを視聴中にネットワークカメラデバイスの映像モニタする必要が生じた為に、先頭にTVデバイス、以降に、2つのネットワークカメラデバイスが登録されている。
図66は、操作端末5801において、図64のUIデータ5814による親子画面から成るUIが表示されている状態で、ユーザ操作により親子画面を順番に入れ替える為のボタンが操作された際に、現在保持しているデバイスリストの順番を入れ替え、UIデータ5814を再構築すると共に、UIの再表示を行うchangeWindowメソッドハンドラに対応する処理を示すフローチャートである。
ここで、ステップS6601はchangeWindowの処理を開始するステップ、ステップS6602はデバイスリスト6501の先頭デバイスをテンポラリに仮保存するステップ、ステップS6603は、デバイスリスト6501の2番目をデバイスリスト6501の参照先となる先頭デバイスとして設定するステップ、ステップS6604は先に仮保存したデバイスをデバイスリスト6501の最後尾に追加するステップである。
ここまでの流れにより、デバイスリスト6501は、親画面に対応していたデバイスがデバイスリスト6501の最後尾に移動し、子画面の一番目に表示されていたデバイスがデバイスリスト6501の先頭へと移動する事になる。
さらに、ステップS6605においては、当該作り直されたデバイスリスト6501を使用してUIデータ5814の再構築が行われ、ステップS6606において、再構築されたUIデータ5814がブラウザ5815に送られ、新たなUIとして表示され、ステップS6607において、処理を終了する。
図67は、操作端末5801において、図64のUIデータ5814による親子画面から成るUIが表示されている状態で、子画面に表示中のネットワークカメラデバイスから、撮影中の被写体について、動体検知イベントが通知され、当該通知を行ったデバイスをデバイスリスト6501の先頭に移動させると共に、UIデータ5814を再構築し、UIの再表示を行うUIMANAGER_MOVE_TO_1STメソッドの処理を示すフローチャートである。
ここで、ステップS6701はUIMANAGER_MOVE_TO_1STの処理を開始するステップ、ステップS6702はデバイスリスト6501内でイベントを通知したデバイスを特定するステップ、ステップS6703はステップS6702で特定されたデバイスを仮保存するステップ、ステップS6704はデバイスリスト6501内の特定されたデバイスの前後を短絡するステップである。
ステップS6705は、現在のデバイスリスト6501の先頭を仮保存するステップ、ステップS6706はイベントを通知したデバイスをデバイスリスト6501の参照先にするステップ、ステップS6707は通知したデバイスを参照先とする新たなデバイスリスト6501に、ステップS6705で保存した旧デバイスリスト6501を追加するステップ、ステップS6708は更新されたデバイスリストを基に、UIデータ5814の再構築を行うステップ、ステップS6709は再構築されたUIデータ5814を基に、UIを再表示するステップである。
以下、図65に示すデバイスリスト6501が構築され、図59に示す様なUIが操作端末に表示されている状態から、各種のイベント通知が操作端末に対して行われた場合を詳細に説明する。
今、ユーザが図59のPinP画面構成となっているUI画面において、「入れ替え」ボタン5909の操作を行ったとする。すると、UIを構成している図64のUIデータ5814の行6453から行6456に記載のボタンが操作された事になり、その結果、DOMActivateイベントが発生する。
当該ボタン5909において、DOMActivateイベントが発生した際には、行6455に記載された様に"changeWindow"ハンドラが呼ばれる事になる。"changeWindow"ハンドラは、UIデータ5814を処理する操作端末5801の内部で記述され、処理されるメソッドであり、その結果、図66に示す処理が行われる。
図66の処理が行われると、図65のデバイスリスト6501の内、テレビデバイス6502がデバイスリスト6501の最後尾に移動し、先頭がネットワークカメラ6503に変更される。即ち、デバイスリスト6501は図68の如く変化し、その結果UI画面も図69の様に変化する事になる。
次に、先程と同様に、図65に示すデバイスリスト6501が構築され、図59に示す様なUI5901が操作端末5801に表示されている状態から、今度は、画像サムネールUIを表示中のネットワークカメラデバイスUI5903より、動体検知のイベントが発生した際の動作を説明する。
カメラからの動体検知イベント5821が、図58の如く操作端末5801に通知されると、図64のUIデータ5814に記載の、2番目のネットワークカメラの記述となる行6479から行6491のうち、行6483に記載のDOMCharacterDataModifiedイベントが通知され、その結果、行6485の"UIMANAGER_MOVE_TO_1ST"メソッドが呼ばれる事になる。
"UIMANAGER_MOVE_TO_1ST"が呼ばれると、図67の処理が実行され、図65のデバイスリスト6501の内、ネットワークカメラデバイス6504がデバイスリストの先頭になり、以下、テレビデバイス6502、ネットワークカメラデバイス6503の順にデバイスリスト6501が変更される。即ち、デバイスリスト6501は図70の如く変化し、その結果UI画面も図71の様に変化する事になる。
以上説明した様に、本実施形態によれば、操作端末5801が受け取る各種のイベント通知により、フレームテンプレート5809に対応するデバイステンプレート5811の割り当て及びタイプを変更する事で、デバイスのネットワーク接続状態変化、デバイス自体の状態変化、及びユーザによるUI操作などのイベント発生手段により、現在提示中のUIを動的に変更する事が可能であり、且つ、前記のイベントに対応した適切なUIを構築する事が可能となる。
(第7の実施形態)
前述の第6の実施形態においては、現在提示中のUIを構成するフレームテンプレート5809を固定のものとし、操作端末が受け取る各種のイベント通知により、当該フレームテンプレート5809に対応するデバイステンプレート5811及びそのタイプを変更する事で、動的にUIを変更していたが、当該イベント通知により、デバイステンプレート5811を適用するフレームテンプレート5809自体を変更する構成としてもよい。
図72は、イベントの種類と、当該イベントが受け取られた際に使用されるフレームテンプレートの名称を対応付けたテーブルである。ここで、イベントは、先の実施例にあげたネットワークカメラデバイスの動体検知によるイベントDOMCharacterDataModifiedやユーザのボタン操作によるイベントDOMActivate、そして初期立ち上げ時など、イベントによらないUI画面の起動などが上げられている。
また、フレームテンプレートの種類としては、PinP画面となる親及び子のフレームテンプレート、及び左画面及び右画面からなる2画面を構成する為のフレームテンプレート5809などが存在している。
このテーブルは、操作端末がUI画面を、フレームテンプレート5809を用いて構築する際に、そのトリガとなったイベントの種類に応じて使用するフレームテンプレート5809を選択するものである。
初期立ち上げ状態において、図72のテーブルに基づき、親及び子のフレームテンプレートと、図65からなるデバイスリスト6501により、図59に示す様なUI画面が構成されている。この時、ネットワークカメラデバイスより動体検知イベントが通知されると、先の実施形態と同様にデバイスリスト6501の再構成が行われ、次に、図72のテーブルに基づき、動体検知によるイベントDOMCharacterDataModifiedに対応する左画面及び右画面からなる2画面を構成するフレームテンプレート5809が選択され、デバイスリスト5808の順番に、左画面、右画面の順番にデバイスが対応したUIデータ5814が作成され、その結果、図73に示す様な2画面表示が行われる。
以上説明した様に、本実施形態によれば、操作端末5801が受け取る各種のイベント通知の種類により、再構成するUI画面を変更する事ができ、例えば、テレビを視聴中に、動体検知イベント通知を操作端末が受け取り、当該動体検知イベントを通知したデバイスのUI画面を拡大されて表示される状況でも、テレビのUI画面をいきなり小さな画面にする事無く視聴でき、イベント種類毎に、ユーザに最適なUI画面を提供する事が可能となる。
(本発明に係る他の実施形態)
本発明に係るUIデータ生成処理において、UIデータに埋め込む情報として、デバイスID、デバイス名以外にIPアドレス、シリアル番号、MACアドレスなどを利用するように構成してもよい。
本発明に係る第2の実施形態に記載の条件文処理において、条件とは前述したものだけではなく、操作コマンドや状態変数がない場合や、状態変数が特定の値に一致しない場合のみ、あるいは状態変数の値が特定の値より大きい場合や小さい場合、あるいは状態変数の値が特定の範囲内である場合など、様々な条件に応じて子要素の記述が有効となるように構成してもよい。
また、本発明において、表示装置を操作端末とは別体として、あるいはブラウザ316を含む表示装置を操作端末とは別体として構成しても良い。
前述した本発明の実施形態におけるリモート操作端末装置を構成する各手段は、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムまたは装置に直接、または遠隔から供給する。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、その他の方法として、本発明のプログラムを暗号化してCD−ROM等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。