以下、発明の実施の形態について図面により詳細に説明する。
(サーバ/クライアント型の電子会議システム)
本発明の一実施例として、サーバに記憶された会議資料文書を複数のクライアントが閲覧、編集しながら会議を行うサーバ/クライアント型の電子会議システムを例にして説明する。
図2は、本発明に係るサーバ/クライアント型の電子会議システムの構成例を示す。本発明のシステムは、サーバ1とそれに接続された大型ディスプレイ装置2と、各会議参加者が使用するクライアント3〜6から構成されており、これらの機器は無線LAN(例えばIEEE(Institute of Electrical and Electronics Engineers)802.11b)で接続されている。
サーバ1は例えばPC−AT(The Personal Computer for Advanced Technologies)アーキテクチャ(IBM社)のコンピュータであり、そのPCI(Peripheral Compornent Interconnect)バスに接続されたPCIアダプタボードを介して無線LAN用PCカード(PCMCIA(Personal Computer Memory Card International Association)規格に準拠)が装着されている。また、サーバ1にはOSとしてLinux、ウィンドウシステムとしてXウィンドウが実装されている。なお、図1中、サーバ1に接続されたキーボードの図示は省略している。
大型ディスプレイ装置2は、例えばPDP(Plasma Display Panel)の表示面にタッチパネルが付着されており、VGAケーブルとRS−232Cケーブルによってサーバ1と接続され、サーバ1の表示装置として機能するとともに、サーバ1のタッチ入力装置として機能する。なお、VGAケーブルはサーバ1からPDPへ画面表示信号を出力し、RS−232Cケーブルはタッチパネルが検出したタッチ入力座標データをサーバ1へ入力する。また、サーバ1は入力されるタッチ入力座標データを、マウス入力データと同様に処理する。
クライアント3〜6は、ユーザにより入力されたテキストデータや手書きデータをサーバ1へ送信し、またサーバ1から受信した画面データの表示を行うという機能に特化された携帯型表示パッドであり、電子ペン7〜10が付属されている。
クライアント3〜6である携帯型表示パッド20のハードウェア構成を図3に示す。携帯型表示パッド20は、CPU21、クロック22、メインメモリ23、ROM24、RTC25、無線LANコントローラ26、アンテナ27、LCD表示コントローラ28、LCD29、タッチパネルコントローラ30、タッチパネル31、USBコントローラ32、USB I/F33、システムバス34、バッテリ35、DC−DCコンバータ36、充電回路37、ACアダプタ38等から構成されている。CPU21は、ROM(Read Only Memory)24に記憶された制御処理プログラム、OSや各種のアプリケーションプログラムを実行、処理する。クロック22は、水晶発振子と分周回路から構成されており、CPU21やシステムバス34の動作タイミングを制御するためのクロックを生成している。メインメモリ23は、DRAM(Dynamic Random Access Memory)より構成されており、CPU21のワークエリア等で使用される。ROM24は、システム全体の制御を行うためのプログラムが予め書き込まれている。RTC(Real Time Clock)25は、日付時計であり、専用バッテリ(図示を省略)によりバックアップされている。無線LANコントローラ26は、IEEE802.11b規格に準拠した無線通信を実行、制御する。LCD表示コントローラ28は、文字やグラフィックデータ、またサーバ1から受信した画面データをD/A(Digital/Analog)変換するとともに、これらのデータをLCD29に表示するための制御を行う。タッチパネルコントローラ30は、タッチパネル31上でタッチペン7のペン先が接触した部分を検出し、その位置情報を取り込む。タッチパネル31はLCD29と重ね合わせて密着している。USB(Universal Serial Bus)コントローラ32はUSB規格に準拠したデータ転送を実行、制御する。バッテリ35は、充電が可能な例えばリチウムイオンバッテリ等である。DC−DCコンバータ36はACアダプタ38またはバッテリ35から供給される電源を所定の電圧に変換して携帯型表示パッド20内部に供給するとともに、ACアダプタ38からの電源供給が無い場合はバッテリ35からの電源供給に切り換える。充電回路37はACアダプタ38から電源が供給されている時にバッテリ35を充電する。ACアダプタ38は着脱可能な電源ケーブルと一体化しており、内蔵されたAC−DCコンバータにより、交流電源を所定の電圧の直流に変換する。携帯型表示パッド20にはOSとしてLinux、ウィンドウシステムとしてXウィンドウが実装されている。
次に、サーバ1にある画面データがクライアント3〜6へ送信され、クライアント3〜6からサーバ1へはユーザの入力データが送信されるサーバ/クライアントソフトウェアの動作について説明する。このサーバ/クライアントソフトウェアとして、前述したVNCを使用した場合について、以下説明する。
VNCサーバプロセス(以下、VNCサーバ)は、その起動時に、デスクトップの表示画面データあるいは文書の表示画面データを記憶するための1つの画面バッファを生成し、VNCクライアントプロセス(以下、VNCクライアント)はこの画面バッファにある画面データを自装置のディスプレイに表示する。VNCサーバからVNCクライアントへ送信される画面データおよびVNCクライアントからVNCサーバへ送信されるユーザの入力データはRFB(Remote Frame Buffer)プロトコルを使用して転送される。RFBプロトコルは1画面のデータを小領域(矩形)に分割し、さらにこの小領域の画像データを圧縮して送信する機能を持っている。この小領域の最小ブロックはタイルと呼ばれ、16×16画素である。このように、VNCサーバは1画面のデータを分割して送信することができるため、1画面の中で変更のあった領域のみを選択して送信することができる。なお、サーバ1に存在するVNCサーバプロセスとクライアント3〜6に存在するVNCクライアントプロセスとはソケットにより通信できるようになっている。
VNCサーバはVNCクライアントから受信したユーザの入力データをキーイベントまたはポインタイベントとして処理する。これらのイベントを受けると、VNCサーバはXサーバとして動作し、Xクライアントに対してXイベントを通知するため、VNCクライアントはサーバ1で動いているアプリケーション(Xクライアント)を操作できるようになっている。このVNCプロトコル(RFBプロトコル)とXプロトコルとの関係を図4に示す。
次に、クライアント3〜6がサーバ1に接続してサーバ1で動いているアプリケーション(Xウィンドウ)を操作して、文書を表示できるようになるまでの動作シーケンスについて説明する。サーバ1ではまず、必要とされる画面バッファの数だけ、VNCサーバプロセスを起動しておく。この画面バッファが複数のクライアントにより共有されないようにする、すなわち、1つのクライアントのみがアタッチするように設定する場合、VNCサーバの起動コマンドには画面番号のみを指定する。例えば、画面番号を2とした場合のVNCサーバの起動コマンドは以下のようになる。
vncserver :2
サーバ1の画面バッファが複数のクライアントにより共有されるようにする場合には、VNCサーバの起動コマンドに画面番号に加えて共有を指示するオプションを指定する。例えば、画面番号1を共有とする場合のVNCサーバの起動コマンドは以下のようになる。
vncserver −alwaysshared :1
このようにして、サーバ1にて画面番号1を共有、画面番号2〜5を各クライアント3〜6が個別にアタッチするようにVNCサーバプロセスを起動しておく。そして、各クライアント3〜6はサーバ1のIP(Internet Protocol)アドレスとアタッチする画面番号を指定してVNCクライアントプロセスを起動する。アタッチする画面番号を3とした場合のVNCクライアントの起動コマンド例を以下に示す。
vncviewer 192.168.1.1:3
ここで、192.168.1.1は、IPアドレスである。
図5は、サーバのメインメモリ上に確保された画面バッファの一例を示す。各クライアント3〜6は共有画面(画面番号1)用のVNCクライアントと1つの個別画面(画面番号2〜5)用のVNCクライアントをそれぞれ起動する。そして、各クライアント3〜6では、共有画面を表示させるウィンドウと個別画面を表示させるウィンドウをLCD29に表示させる。サーバ1では、共有画面を大型ディスプレイ装置2に表示させるために、自装置のIPアドレスと画面番号1を指定してVNCクライアントプロセスを起動する。このようにして、大型ディスプレイ装置2には共有画面のみが表示され、各クライアント3〜6には、共有画面と個別画面がそれぞれ表示される。
次に、クライアント3〜6の内、1つのクライアントが所定のアプリケーションを使用して、共有画面表示ウィンドウに任意の文書を表示させると、同じ文書が大型ディスプレイ装置2と他のクライアント3〜6の共有画面表示ウィンドウに表示される。続いて、クライアント3〜6の各クライアントは、共有画面表示ウィンドウに文書を表示させる際に使用したのと同じアプリケーションを使用して、共有画面表示ウィンドウに表示された文書と同じ文書を個別画面表示ウィンドウに表示させる。
以上の処理は、公知のVNCサーバ/クライアントソフトウェアを使用することにより実現可能である。
以下に説明する処理が本発明に関わる処理動作である。
発明では、同じ文書が共有画面表示ウィンドウと個別画面表示ウィンドウに表示されていて、かつ、2つのウィンドウでの文書の表示位置が同じ場合、すなわち同一の文書データが共有画面表示ウィンドウと個別画面表示ウィンドウに表示されている場合において、個別画面表示ウィンドウに表示された文書を編集したとき、所定のタイミング後に、共有画面表示ウィンドウに表示された文書に対して、上記した編集と同一の編集が実行される。
個別画面を管理するVNCサーバは、個別画面表示ウィンドウに表示された文書が編集されているときに、VNCクライアントから受信したキーイベントデータとポインタイベントデータを全て記憶しておく。そして、所定のタイミングでこれらの記憶されたイベントを順次共有画面を管理するVNCサーバに通知する。共有画面を管理するVNCサーバは、個別画面を管理するVNCサーバから受信するキーイベントとポインタイベントに対してVNCクライアントから受信する時と同様な処理を実行する。すなわち、個別画面を管理するVNCサーバがVNCクライアントから受信したキーイベントやポインタイベントに対してリアルタイムに実行した処理と同じ処理を、所定のタイミング期間後に共有画面を管理するVNCサーバが実行する。上記2つのVNCサーバ間でのキーイベントデータやポインタイベントデータの受け渡しは、ソケットを使用したプロセス間通信により行う。
なお、本発明では、上記した編集操作が複数のクライアント(または端末)で同時に実行されることを禁止する。つまり、本発明は、操作権の排他制御の基で処理が実行される。従って、例えば文章を追加する場合、追加直前にその追加位置付近の文章が他のクライアント(または端末)により削除され、意図しない位置に文章が追加されてしまうという不具合を防止できる。なお、操作権の排他制御としては、例えばMERMAID(非特許文献1を参照)またはITU−T勧告T.124、ITU−T勧告T.125などに記載されているような公知の技術を用いる。
(実施例1)
実施例1は、上記した所定のタイミングとして、文章終端記号の入力を用いる実施例である。
クライアント3〜6では、キーボードウィンドウをLCD29に表示して、電子ペンを使用して文字(テキスト)を入力したり、USBキーボードをUSB I/F33に接続してUSBキーボードから文字を入力することができる。
(1)文書の表示位置が同じ場合;
まず、同一の文書が全てのクライアントの共有画面表示ウィンドウと個別画面表示ウィンドウに表示されていて、かつこれらの2つのウィンドウでの文書の表示位置が同じ場合、例えば共有画面表示ウィンドウと個別画面表示ウィンドウに同じ文書の1ページ目の先頭から表示されている場合について説明する。
例えば、クライアント3のユーザが個別画面表示ウィンドウに表示された文書のある位置に文章を追加するために、キーボードウィンドウ上で電子ペンを用いて文字(テキスト)を入力しているとする。このとき、文章終端記号である「。」(日本語)や「.」または「?」(英語)等が入力されるまでは、この追加された文章はクライアント3の個別画面表示ウィンドウにのみ表示されている。そして、文章終端記号が入力されると、それまで入力された文字列(テキスト)と文章終端記号を共有画面表示ウィンドウに表示された文書の同じ位置から追加する。すなわち、文字入力が開始されてから文章終端記号が入力されるまでは、クライアント3の共有画面表示ウィンドウに表示された文書の内容と個別画面表示ウィンドウに表示された文書の内容は異なっているが、文章終端記号が入力された時点で、個別画面表示ウィンドウに表示された文書の内容が共有画面表示ウィンドウに表示された文書の内容に反映されて、両者の文書の内容が同一となる。
また、クライアント3から文章終端記号が入力され、共有画面表示ウィンドウに表示された文書が更新されると、他のクライアント4〜6の共有画面表示ウィンドウと大型ディスプレイ装置2にも、更新された文書が表示される。さらに、他のクライアント4〜6の個別画面表示ウィンドウにも、更新された文書が表示される。
上記した動作を詳細に説明する。サーバ1の内部プロセスおよび各プロセスとクライアント3〜6との間のデータの流れを図6に示す。また、図8、図9は、各クライアントの画面表示(図7)において、クライアント3のユーザが個別画面表示ウィンドウ内で文字(テキスト)を入力したときのVNCサーバ2の動作フローを示す。
以下、図6、図8、図9を参照して説明する。サーバ1では、共有画面(画面番号が1)を管理するVNCサーバ1とクライアント3〜6の個別画面(画面番号が2〜5)を管理する各VNCサーバ(VNCサーバ2〜5)、クライアント3〜6のいずれかの共有画面を操作して起動された文書編集アプリケーション1、クライアント3〜6の各個別画面を操作して起動された文書編集アプリケーション2〜5、共有画面(画面番号が1)の画面データを大型ディスプレイ装置2に表示するVNCクライアント1の各プロセスが起動されている。
また、クライアント3では、画面番号が1の共有画面を表示、操作するVNCクライアント3−Aのプロセスと、画面番号が2の個別画面を表示、操作するVNCクライアント3−Bのプロセスが起動されている。クライアント4では、画面番号が1の共有画面を表示、操作するVNCクライアント4−Aのプロセスと、画面番号が3の個別画面を表示、操作するVNCクライアント4−Bのプロセスが起動されている。クライアント5では、画面番号が1の共有画面を表示、操作するVNCクライアント5−Aのプロセスと、画面番号が4の個別画面を表示、操作するVNCクライアント5−Bのプロセスが起動されている。クライアント6では、画面番号が1の共有画面を表示、操作するVNCクライアント6−Aのプロセスと、画面番号が5の個別画面を表示、操作するVNCクライアント6−Bのプロセスが起動されている。
クライアント3の個別画面表示ウィンドウに表示された文書に対して文字(テキスト)入力する位置にカーソルを移動するために電子ペン7でポイントされると、クライアント3のVNCクライアント3−Bは、ポイント位置データ(座標データ)をサーバ1のVNCサーバ2へ送信する(図6の矢印41)。VNCサーバ2は、座標データをポインタイベントとして受信し(ステップ101でYES)、座標データを文書編集アプリケーション2へ渡すとともに(矢印42、ステップ102)、イベントデータをキュー(キュー2)に入れる(ステップ103)。このキューはプログラム中に定義された配列である。
次いで、文書編集アプリケーション2は、受信した座標データの位置にカーソルを移動し、VNCサーバ2へ描画リクエストを出す(矢印43)。VNCサーバ2は描画リクエストを受信すると(ステップ104でYES)、カーソルの表示位置を変えるとともに更新された画面データをクライアント3へ送信する(矢印44、ステップ105)。
続いて、クライアント3の個別画面表示ウィンドウ内で文字(テキスト)が入力されると、VNCクライアント3−Bはこの文字コードをVNCサーバ2へ送信する(矢印41)。VNCサーバ2はこれらの文字コードをキーイベントとして受信し(ステップ106でYES)、これらの文字コードを文書編集アプリケーション2へ渡す(矢印42)とともに(ステップ107)、このイベントデータをキュー2に入れる(ステップ108)。
文書編集アプリケーション2はこれらの文字コードを受信すると、これらの文字コードを文書データに追加するとともに、VNCサーバ2へ描画リクエストを出す(矢印43)。VNCサーバ2は、描画リクエストを受信すると(ステップ109でYES)、各文字コードに対応した文字フォントをカーソル位置に表示させるとともに更新された画面データをクライアント3へ送信する(矢印44、ステップ110)。
上記したように、ユーザにより文字列が入力され、文章終端記号が入力されると、VNCサーバ2は文章終端記号を受信し(ステップ111でYES)、文章終端記号(文字コード)を文書編集アプリケーション2へ(矢印42)渡すとともに、このイベントデータ(文章終端記号)をキュー2に入れる(ステップ112)。
文書編集アプリケーション2は文章終端記号(文字コード)を受信すると、文章終端記号(文字コード)を文書データに追加するとともに、VNCサーバ2へ描画リクエストを出す(矢印43)。VNCサーバ2は、描画リクエストを受信すると(ステップ113でYES)、文章終端記号(文字コード)に対応した文字フォントをカーソル位置に表示させるとともに更新された画面データをクライアント3へ送信する(矢印44、ステップ114)。
VNCサーバ2は、キュー2に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、VNCサーバ1とVNCサーバ3〜5へ送信する(ステップ115)。なお、キュー2に入っているイベントデータを送信する前後に、これらのイベントデータ群の開始を示すデータ(イベント群開始データ)と終了であることを示すデータ(イベント群終了データ)を含めたイベントデータもVNCサーバ1とVNCサーバ3〜5へ送信する(矢印45〜48)。
VNCサーバ1は、イベント群開始データとイベント群終了データとの間にあるこれらのイベントデータを文書編集アプリケーション1へ渡す(矢印49)。文書編集アプリケーション1は、これらのイベントデータに対応した処理を行い(矢印50)、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行う。VNCサーバ1は、イベント群開始データを受信してからイベント群終了データを受信する前までの間、更新された画面データ(共有画面データ)をクライアント3〜6へ送信しない。そして、VNCサーバ1はイベント群終了データを受信すると、その時の画面データをクライアント3へ送信する(矢印51)。これにより、クライアント3の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が同じになる。また、VNCサーバ1は、この更新された共有画面データをクライアント4〜6へ送信する(矢印52〜54)とともに、VNCクライアント1へ送信する(矢印55)。クライアント4〜6は、これらの共有画面データをLCD29に表示し、VNCクライアント1は大型ディスプレイ装置2に表示する。
VNCサーバ3〜5はVNCサーバ1と同様な処理を行い、従って、クライアント4〜6の個別画面表示ウィンドウの表示画面が更新され(矢印56〜64)、クライアント3〜6の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が全て同一の文書内容となる。
(2)文書の表示位置が異なる場合;
次に、同一文書が各クライアントの共有画面表示ウィンドウと個別画面表示ウィンドウに表示されているが、これらの2つのウィンドウでの文書の表示位置が異なる場合、すなわち共有画面表示ウィンドウと個別画面表示ウィンドウに表示された文書データが異なる場合について説明する。
例えば、クライアント3〜6の共有画面表示ウィンドウには1ページ目が、クライアント3とクライアント5の個別画面表示ウィンドウには2ページ目が、クライアント4の個別画面表示ウィンドウには3ページ目が、クライアント6の個別画面表示ウィンドウには4ページ目が表示されているとする。図7は、このときのクライアント3〜6の画面表示例を示す。
クライアント3のユーザが個別画面表示ウィンドウに表示された2ページ目の文書のある位置にカーソルを移動し、文章を追加するためにキーボードウィンドウ上で電子ペンを用いて文字(テキスト)を入力すると、クライアント3のVNCクライアント3−Bはこれらのポイント位置データ(座標データ)と文字コードをサーバ1のVNCサーバ2へ送信する(矢印41)。
VNCサーバ2はこの座標データをポインタイベントとして受信し、文字コードをキーイベントとして受信し、座標データと文字コードを文書編集アプリケーション2へ渡す(矢印42)とともに、これらのイベントデータをキュー2に入れる。文書編集アプリケーション2は座標データを受信すると2ページ目のその位置にカーソルを移動し、VNCサーバ2へ描画リクエストを出す(矢印43)。また、文書編集アプリケーション2は文字コードを受信すると(矢印42)、これらの文字コードを文書データに追加するとともに、VNCサーバ2へ描画リクエストを出す(矢印43)。VNCサーバ2は、カーソルの表示位置を変えるとともに更新された画面データをクライアント3へ送信し(矢印44)、また各文字コードに対応した文字フォントをカーソル位置に表示させるとともに更新された画面データをクライアント3へ送信する(矢印44)。
上記したように、ユーザにより文字列が入力され、文章終端記号が入力されると、VNCサーバ2は文章終端記号を受信し、文章終端記号(文字コード)を文書編集アプリケーション2へ(矢印42)渡すとともに、このイベントデータ(文章終端記号)をキュー2に入れる。
文書編集アプリケーション2は文章終端記号(文字コード)を受信すると、文章終端記号(文字コード)を文書データに追加するとともに、VNCサーバ2へ描画リクエストを出す(矢印43)。VNCサーバ2は、描画リクエストを受信すると、文章終端記号(文字コード)に対応した文字フォントをカーソル位置に表示させるとともに更新された画面データをクライアント3へ送信する(矢印44)。
VNCサーバ2は、キュー2に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、VNCサーバ1とVNCサーバ3〜5へ送信する。なお、キュー2に入っているイベントデータを送信する前後に、これらのイベントデータ群の開始を示すデータ(イベント群開始データ)と終了であることを示すデータ(イベント群終了データ)を含めたイベントデータもVNCサーバ1とVNCサーバ3〜5へ送信する。(矢印45〜48)。
VNCサーバ1は、イベント群開始データとイベント群終了データとの間にあるこれらのイベントデータを文書編集アプリケーション1へ渡す(矢印49)。文書編集アプリケーション1は、これらのイベントデータに対応した処理を行い(矢印50)、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行う。
VNCサーバ1は、イベント群開始データを受信してからイベント群終了データを受信する前までの間、更新された画面データ(共有画面データ)をクライアント3〜6へ送信しない。そして、VNCサーバ1はイベント群終了データを受信すると、その時の画面データをクライアント3へ送信する(矢印51)。従って、クライアント3の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が同じとなる。また、VNCサーバ1は、この更新された共有画面データをクライアント4〜6へ送信する(矢印52〜54)とともに、VNCクライアント1へ送信する(矢印55)。クライアント4〜6はこれらの共有画面データをLCD29に表示し、VNCクライアント1は大型ディスプレイ装置2に表示する。
VNCサーバ3は、VNCサーバ2から受信したイベントデータを文書編集アプリケーション3へ渡す(矢印56)。文書編集アプリケーション3は、これらのイベントデータに対応した処理を行い、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行うが、処理を行ったページ(2ページ目)はクライアント4に表示されていないため、VNCサーバ3へは描画リクエストを出さない。この場合、VNCサーバ3はイベント群終了データを受信すると、画面データに変化が無いためその時の画面データをクライアント4へは送信しない。したがって、クライアント4の個別画面表示ウィンドウの表示内容は変化しない。
VNCサーバ4はVNCサーバ2から受信したイベントデータを文書編集アプリケーション4へ渡す(矢印59)。文書編集アプリケーション4は、これらのイベントデータに対応した処理を行い、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行い、VNCサーバ4へ指示された位置でのカーソルの描画リクエストと追加された文字の描画リクエストを出す(矢印60)。VNCサーバ4は、カーソルの表示位置を変え、各文字コードに対応した文字フォントをカーソル位置に表示させる。そして、VNCサーバ4はイベント群終了データを受信すると、その時の画面データをクライアント5へ送信する(矢印61)。従って、クライアント5の個別画面表示ウィンドウの表示内容が更新され、クライアント3の個別画面表示ウィンドウに表示された文書の内容と同じ内容になる。
VNCサーバ5は、VNCサーバ2から受信したイベントデータを文書編集アプリケーション5へ渡す(矢印62)。文書編集アプリケーション5は、これらのイベントデータに対応した処理を行い、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行うが、処理を行ったページ(2ページ目)はクライアント6に表示されていないため、VNCサーバ5へは描画リクエストを出さない。この場合、VNCサーバ5はイベント群終了データを受信すると、画面データに変化が無いためその時の画面データをクライアント6へは送信しない。したがって、クライアント6の個別画面表示ウィンドウの表示内容は変化しない。
なお、上記した実施例では、クライアント3の個別画面表示ウィンドウ内で文字(テキスト)が入力された場合の動作について説明したが、クライアント4〜6の任意の個別画面表示ウィンドウ内で文字(テキスト)が入力された場合も対応するVNCサーバ(3〜5)がVNCサーバ2と同様な動作を実行することで、各クライアントの画面表示内容を上記したのと同様に表示することができる。
(実施例2)
上記した実施例1は、VNCサーバ2がクライアント3から文章終端記号を受信したときに、それまで受信していたイベントデータ(文章終端記号も含む)をVNCサーバ1とVNCサーバ3〜5へ送信し、文書編集アプリケーション1〜5が同じ編集処理を実行する実施例であるが、本実施例では、VNCサーバ2がクライアント3から改行コードを受信したときに、実施例1と同様な処理を実行する。実施例2の動作は、図8、9で説明した実施例1の文章終端記号を改行コードに置き換えたものとなる。
すなわち、VNCサーバ2がキュー2に貯めたイベントデータをVNCサーバ1とVNCサーバ3〜5へ送信するタイミングがクライアント3から文章終端記号を受信したときではなく、改行コードを受信したときである。従って、実施例2では、ユーザが1行分の文字(テキスト)を入力して改行がなされるまでは共有画面表示ウィンドウと個別画面表示ウィンドウに表示された文書の内容が異なるが、改行がなされたときに、これらのウィンドウに表示される文書の内容が同じになる。
上記した実施例2は1行分の文字(テキスト)を入力する例であるが、本発明はこれに限定されず、ユーザが複数行分の文字(テキスト)を入力したとき、つまりVNCサーバ2が複数個の改行コードを受信した場合についても、上記した実施例2と同様に実行できる。
(実施例3)
実施例3は、クライアントのユーザがテキスト入力ではなく、手書き入力する場合の実施例である。本実施例では、ユーザが筆記動作を行っているか否かを、電子ペンがアップされている状態の持続時間から判断する。
各クライアントの画面表示が図7であるとして、図6、図10(VNCサーバ2の動作フローチャート)を参照して実施例3を説明する。
電子ペンがタッチパネル31(図3)に接触したことを、クライアント3のタッチパネルコントローラ30が検出すると、クライアント3は座標検出用の所定の時間間隔毎に、この接触座標をVNCサーバ2へ送信する(矢印41)。VNCサーバ2は座標データをポインタイベントとして受信し、座標データを文書編集アプリケーション2へ渡す(矢印42)。
文書編集アプリケーション2は、座標データをカーソルの位置データとして使用し、あるいは自由線描画の描画位置データとして使用する。今、文書編集アプリケーション2は受信した座標データを自由線描画の描画位置データとして使用するモードにあり、1つのストローク(ペンダウンからペンアップまで)中は受信した座標間を線で描画する機能を実行している。この自由線描画機能の開始時に、文書編集アプリケーション2はVNCサーバ2へ描画線の色や太さ等の設定情報を送信する。これは、XプロトコルにおけるXクライアントからXサーバへのリクエストである。
VNCサーバ2が描画線の設定情報を受信すると(ステップ201でYES)、手書き入力モードとして動作する(ステップ202)。VNCサーバ2が手書き入力モードになると、クライアント3から受信するポインタイベント間の時間を計測する(ステップ203、204)。この計測時間が所定の時間以内である場合は、VNCサーバ2は座標データを文書編集アプリケーション2へ渡すとともに(矢印42、ステップ205)、そのポインタイベントデータをキュー2に入れる(ステップ206)。このキューはプログラム中に定義された配列である。
文書編集アプリケーション2は座標データを受信すると、先に受信した座標との間を線で描画するリクエストをVNCサーバ2へ出す(矢印43)。VNCサーバ2は描画リクエストを受信すると(ステップ207でYES)、座標間を線で描画するとともに更新された画面データをクライアント3へ送信する(矢印44、ステップ208)。そして、ポインタイベント間の計測時間が所定の時間を超えた場合、すなわちポインタイベント受信時に開始したタイマーがタイムアウトした場合には(ステップ209でYES)、VNCサーバ2はキュー2に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、VNCサーバ1とVNCサーバ3〜5へ送信する(ステップ210)。
なお、キュー2に入っているイベントデータを送信する前後に、これらのイベントデータ群の開始を示すデータ(イベント群開始データ)と終了であることを示すデータ(イベント群終了データ)を含めたイベントデータもVNCサーバ1とVNCサーバ3〜5へ送信する(矢印45〜48)。
VNCサーバ1は、イベント群開始データとイベント群終了データとの間にあるこれらのイベントデータを文書編集アプリケーション1へ渡す(矢印49)。文書編集アプリケーション1は、これらのイベントデータに対応した処理を行い(矢印50)、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行う。VNCサーバ1はイベント群開始データを受信してからイベント群終了データを受信する前までの間、更新された画面データ(共有画面データ)をクライアント3〜6へ送信しない。そして、VNCサーバ1はイベント群終了データを受信すると、その時の画面データをクライアント3へ送信する(矢印51)。
従って、クライアント3の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が同じになる。また、VNCサーバ1は、この更新された共有画面データをクライアント4〜6へ送信する(矢印52〜54)とともに、VNCクライアント1へ送信する(矢印55)。クライアント4〜6はこれらの共有画面データをLCD29に表示し、VNCクライアント1は大型ディスプレイ装置2に表示する。
VNCサーバ3はVNCサーバ2から受信したイベントデータを文書編集アプリケーション3へ渡す(矢印56)。文書編集アプリケーション3は、これらのイベントデータに対応した処理を行い、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行うが、処理を行ったページ(2ページ目)はクライアント4に表示されていないため、VNCサーバ3へは描画リクエストを出さない。この場合、VNCサーバ3はイベント群終了データを受信すると、画面データに変化が無いためその時の画面データをクライアント4へは送信しない。したがって、クライアント4の個別画面表示ウィンドウの表示内容は変化しない。
VNCサーバ4はVNCサーバ2から受信したイベントデータを文書編集アプリケーション4へ渡す(矢印59)。文書編集アプリケーション4は、これらのイベントデータに対応した処理を行い、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行い、VNCサーバ4へ座標間の線描画リクエストを出す(矢印60)。VNCサーバ4は、このリクエストに従った線描画を行う。そして、VNCサーバ4はイベント群終了データを受信すると、その時の画面データをクライアント5へ送信する(矢印61)。このようにして、クライアント5の個別画面表示ウィンドウの表示内容が更新され、クライアント3の個別画面表示ウィンドウに表示された文書の内容と同じ内容となる。
VNCサーバ5はVNCサーバ2から受信したイベントデータを文書編集アプリケーション5へ渡す(矢印62)。文書編集アプリケーション5は、これらのイベントデータに対応した処理を行い、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行うが、処理を行ったページ(2ページ目)はクライアント6に表示されていないため、VNCサーバ5へは描画リクエストを出さない。この場合、VNCサーバ5はイベント群終了データを受信すると、画面データに変化が無いためその時の画面データをクライアント6へは送信しない。したがって、クライアント6の個別画面表示ウィンドウの表示内容は変化しない。
(実施例4)
実施例4は、クライアントの個別画面表示ウィンドウ内で、ユーザが電子ペンを用いて手書き入力を行い、タッチパネル31上で所定のジェスチャー動作を行うことにより、それまで入力された手書き描画が共有画面にコピーされる場合の実施例である。
図11、図12は、実施例4に係るVNCサーバ2の動作フローチャートである。以下、実施例4を説明すると、文書編集アプリケーション2は自由線描画機能の開始時に、VNCサーバ2へ描画線の色や太さ等の設定情報を送信する。これは、XプロトコルにおけるXクライアントからXサーバへのリクエストである。
VNCサーバ2が描画線の設定情報を受信すると(ステップ301でYES)、手書き入力モードとして動作する(ステップ302)。VNCサーバ2が手書き入力モードになると、クライアント3から受信するポインタイベント毎に、現在の時刻をタイムスタンプとして得る(ステップ303、304)。VNCサーバ2は、座標データをタイムスタンプと共にメインメモリ23上に存在する座標配列に巡回的に追加し(ステップ305)、座標配列中のデータから、画面間のコピーコマンド用の所定のパターンと一致するか否かの判断を行う(ステップ306)。なお、この時点では描画データであるかコピーコマンドであるかの判断が行われていないので、実施例3と同様にして画面データをクライアント3へ送信し、個別画面表示ウィンドウに一旦表示する。
図13は、画面間コピーコマンド用のパターン例を示す。図13において、点Aがペンダウン位置、点Dがペンアップ位置であり、点Aから点B、点Bから点C、点Cから点Dへとペン先が移動するパターンである。このパターンと比較するパラメータは、線分AB、線分BC、線分CDのそれぞれの長さ、点Aから点Dまでの時間(ストローク時間)、ベクトルAB(A→B)、ベクトルBC(B→C)、ベクトルCD(C→D)のそれぞれの方向(表示画面のX軸、Y軸との成す角度)である。
図13では、ベクトルABとY軸との成す角度をα、ベクトルBCとY軸との成す角度をβ、ベクトルCDとX軸との成す角度をγとしている。ペン先の動きを画面間コピーコマンド用のパターンであると判断するために、参照用のパラメータの中でストローク時間以外の各パラメータ値は予め決められた所定の範囲が定義されている。ストローク時間とこれらのパラメータの上限値と下限値はROM24に予め記憶されている。そして、クライアント3から受信した座標列(座標配列に格納)からタイムスタンプに基づいてストロークの開始点(図13の点A)と終了点(図13の点D)を判断し、点Aから点Dまでの時間が所定の値以下の場合には、この1ストローク中の座標間のベクトルを求め、ベクトルの方向が大きく変わる点(図13の点Bまたは点C)を検出し、線分AB、線分BC、線分CDのそれぞれの長さを求め、また図13に示す3つの角度α、β、γをそれぞれ求め、これらのパラメータ値をROM24に予め記憶された所定の値の範囲内であるかチェックし、全ての条件を満足した場合、画面間コピーコマンドであると判断する(ステップ307でYES)。
画面間コピーコマンドを検出すると、キュー2に貯められたイベントデータの中で、最新から過去に遡った方向で上記の条件を満足した座標の個数分(つまり、コピーコマンドに相当する図13の座標データ)だけ、描画の消去指示情報と共に文書編集アプリケーション2へ渡し、この渡したイベントデータをキュー2から削除する(ステップ308)。
文書編集アプリケーション2は指示された描画線を消すために、描画線の背景部分の再描画(描画線に対して上書き)のリクエストをVNCサーバ2に送り、VNCサーバ2がそのリクエストを受信すると(ステップ309)、指定された線描画部分を背景データで上書きして線を消去し、更新された画面データをクライアント3へ送信する(ステップ310)。
上記したように、クライアント3の個別画面表示ウィンドウには、一旦、ジェスチャー用のペン先の動きを描画するが、VNCサーバ2がジェスチャー動作と認識するとこの描画をキャンセルする。そして、VNCサーバ2はキュー2に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、VNCサーバ1とVNCサーバ3〜5へ送信する(ステップ311)。これ以降の動作は前述した実施例3と同様である。また、ステップ307で条件を満足していないとき、実施例3と同様に動作する(ステップ312〜ステップ315)。
(実施例5)
実施例5は、クライアントの個別画面表示ウィンドウに表示された文書に対して、ユーザが電子ペンやUSBキーボードを用いた編集操作を行い、LCD29に表示された所定のボタンが選択されることにより、それまでの編集処理が共有画面に表示された文書に対しても実行される場合の実施例である。
図14は、実施例5に係るVNCサーバ2の動作フローチャートである。以下、実施例5を説明すると、LCD29の表示画面上で、共有画面表示ウィンドウと個別画面表示ウィンドウ以外の領域に、ボタン(編集同期ボタン)を表示する。
編集同期ボタンは、個別画面表示ウィンドウに表示された文書に対して実行されたのと同じ編集処理を、共有画面表示ウィンドウに表示された文書に対して実行させるためのボタンである。
クライアント3の個別画面表示ウィンドウに表示された文書に対して文字(テキスト)入力、手書き入力、文章の削除、文章のコピー等の各種編集操作が行われると、クライアント3のVNCクライアント3−Bはキーコード(文字・記号コードや改行コード等)やポイント位置データ(座標データ)をサーバ1のVNCサーバ2へ送信する。VNCサーバ2は受信したこれらのイベントデータ(キーコード、座標データ)を文書編集アプリケーション2へ渡すとともに(ステップ401、402)、キュー2に入れる(ステップ403)。このキューはプログラム中に定義された配列である。
編集同期ボタンが選択されていなければ(ステップ404でNO)、文書編集アプリケーション2は受信したイベントデータに従った処理を行い、画面の表示データに変更が必要な場合には、VNCサーバ2へ描画リクエストを出す。VNCサーバ2は描画リクエストを受信し(ステップ405でYES)、指示された描画を行い、更新された画面データをクライアント3へ送信する(ステップ406)。
ユーザにより編集同期ボタンが選択されると、アプリケーション2はVNCサーバ2へ編集同期を指示するリクエストを出し、VNCサーバ2が編集同期を指示するリクエストを受信すると(ステップ404でYES)、キュー2に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、VNCサーバ1とVNCサーバ3〜5へ送信する(ステップ407)。なお、キュー2に入っているイベントデータを送信する前後に、これらのイベントデータ群の開始を示すデータ(イベント群開始データ)と終了であることを示すデータ(イベント群終了データ)を含めたイベントデータもVNCサーバ1とVNCサーバ3〜5へ送信する。
VNCサーバ1はイベント群開始データとイベント群終了データとの間にあるこれらのイベントデータを文書編集アプリケーション1へ渡し、文書編集アプリケーション1は、これらのイベントデータに対応した処理を行い、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行う。VNCサーバ1はイベント群開始データを受信してからイベント群終了データを受信する前までの間は更新された画面データ(共有画面データ)をクライアント3〜6へ送信しない。そして、VNCサーバ1はイベント群終了データを受信すると、その時の画面データをクライアント3〜6およびVNCクライアント1へ送信する。そして、クライアント3の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が同じとなる。VNCサーバ3〜5もサーバ2からイベントデータを受信すると、前述の実施例と同様な処理を実行し、また文書編集アプリケーション3〜5も先に実行された文書編集アプリケーション2と同じ処理を行い、クライアント3〜6の共有画面表示ウィンドウに表示された文書(大型ディスプレイ装置2に表示された文書も同じ)と個別画面表示ウィンドウに表示された文書の内容が同じ内容となる。
(実施例6)
実施例6は、共有画面ミラーリングモードに係る実施例である。共有画面ミラーリングモードは、共有画面の表示データとクライアント3〜6の個別画面の表示データとを常に同じ内容にする動作モードである。このモードは、会議開始前に大型ディスプレイ装置2に表示された共有画面ミラーリングモード設定ボタン(図示は省略)がタッチされることにより設定され、あるいは会議中に共有画面を操作できる任意の端末(例えばクライアント3)から、共有画面に表示された共有画面ミラーリングモード設定ボタンを選択することにより設定される。
共有画面ミラーリングモードでは、共有画面の表示データとクライアント3〜6の個別画面の表示データを常に同じ内容にするために、共有画面での操作をクライアント3〜6の個別画面に対しても同様に行うように動作させる。
図15を参照して共有画面ミラーリングモードの動作を説明する。サーバ1に存在するVNCサーバ1は、VNCクライアント1およびクライアント3〜6に存在するVNCクライアント3−A〜6−Aから受信するキーイベントやポインタイベントのイベントデータを、サーバ1に存在するVNCサーバ2〜5に対しても送信する。
クライアント3の共有画面で文字入力が行われると、VNCクライアント3−Aは文字コードをサーバ1のVNCサーバ1へ送信する(矢印71)。VNCサーバ1はこの文字コードをキーイベントとして受信し、この文字コードを文書編集アプリケーション1へ渡し(矢印72)、文書編集アプリケーション1はこの文字コードを受信すると、この文字コードを文書データに追加するとともに、VNCサーバ1へ描画リクエストを出す(矢印73)。
VNCサーバ1は、文字コードに対応した文字フォントをカーソル位置に表示させるとともに更新された画面データをクライアント3、VNCクライアント1、クライアント4〜6へ順次送信する(矢印74〜78)。そして、VNCサーバ1は先に受信したキーイベントデータをVNCサーバ2〜5へ送信する(矢印79〜82)。
VNCサーバ2がイベントデータを受信すると、文字コードを文書編集アプリケーション2へ渡し(矢印83)、文書編集アプリケーション2は文字コードを受信すると、文字コードを文書データに追加するとともに、VNCサーバ2へ描画リクエストを出す(矢印84)。VNCサーバ2は、その文字コードに対応した文字フォントをカーソル位置に表示させるとともに更新された画面データをクライアント3のVNCクライアント3−Bへ送信する(矢印85)。VNCサーバ3〜5もVNCサーバ2と同様な動作を行い、クライアント4〜6の個別画面の表示が更新され(矢印86〜94)、クライアント3〜6の共有画面表示ウィンドウの表示データと個別画面表示ウィンドウの表示データが全て同じ内容となる。
クライアント3の共有画面で、カーソル移動やメニュー選択のために電子ペン7でポイントされた場合も、上記した動作で文字コードをポイント位置データ(座標データ)に置き換え、またキーイベントをポインタイベントに置き換えて、上記したのと同様な動作が実行される。共有画面でのあらゆる操作が、全てのクライアントの個別画面に対しても自動的になされるため、共有画面での文書の表示位置と全てのクライアントの個別画面での文書の表示位置とが常に一致する。
上記したように共有画面ミラーリングモードに設定されたクライアント3〜6の個別画面に表示された文書に対する操作の一例を説明する。ここでは、その動作例として、前述した実施例1を用いる。すなわち、クライアント3の個別画面表示ウィンドウに表示された文書に対してテキスト入力を行い、文章終端記号の入力毎にクライアント3〜6の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が全て同じになる動作を説明する。
以下、図6を参照して説明する。なお、VNCサーバ2の動作は、図8、9のフローチャートに示すように、実施例1と同様である。
クライアント3の個別画面表示ウィンドウに表示された文書に対して、文字(テキスト)入力する位置にカーソルを移動するために、電子ペン7でポイントされると、クライアント3のVNCクライアント3−Bはこのポイント位置データ(座標データ)をサーバ1のVNCサーバ2へ送信する(矢印41)。VNCサーバ2は座標データをポインタイベントとして受信し、座標データを文書編集アプリケーション2へ渡す(矢印42)とともに、このイベントデータをキュー(キュー2)に入れる。このキューはプログラム中に定義された配列である。そして、文書編集アプリケーション2は受信した座標データの位置にカーソルを移動し、VNCサーバ2へ描画リクエストを出す(矢印43)。
VNCサーバ2はカーソルの表示位置を変えるとともに、更新された画面データをクライアント3へ送信する(矢印44)。続いて、クライアント3の個別画面表示ウィンドウ内で文字(テキスト)が入力されると、VNCクライアント3−Bはこの文字コードをVNCサーバ2へ送信する(矢印41)。VNCサーバ2はこれらの文字コードをキーイベントとして受信し、これらの文字コードを文書編集アプリケーション2へ渡す(矢印42)とともに、イベントデータをキュー2に入れる。文書編集アプリケーション2はこれらの文字コードを受信すると、これらの文字コードを文書データに追加するとともに、VNCサーバ2へ描画リクエストを出す(矢印43)。VNCサーバ2は、各文字コードに対応した文字フォントをカーソル位置に表示させるとともに、更新された画面データをクライアント3へ送信する(矢印44)。
このようにして、ユーザにより文字列が入力され、文章終端記号が入力されると、VNCサーバ2はキュー2に入っている、文章終端記号を含むイベントデータをファーストイン・ファーストアウトの順番で順次、VNCサーバ1とVNCサーバ3〜5へ送信する。なお、キュー2に入っているイベントデータを送信する前後に、これらのイベントデータ群の開始を示すデータ(イベント群開始データ)と終了であることを示すデータ(イベント群終了データ)を含めたイベントデータもVNCサーバ1とVNCサーバ3〜5へ送信する(矢印45〜48)。
VNCサーバ1はイベント群開始データとイベント群終了データとの間にあるこれらのイベントデータを文書編集アプリケーション1へ渡す(矢印49)。文書編集アプリケーション1は、これらのイベントデータに対応した処理を行い(矢印50)、すなわち、先に実行された文書編集アプリケーション2と同じ処理を行う。VNCサーバ1はイベント群開始データを受信してからイベント群終了データを受信する前までの間、更新された画面データ(共有画面データ)をクライアント3〜6へ送信しない。
VNCサーバ1はイベント群終了データを受信すると、その時の画面データをクライアント3へ送信する(矢印51)。そして、クライアント3の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が同じになる。また、VNCサーバ1は、この更新された共有画面データをクライアント4〜6へ送信する(矢印52〜54)とともに、VNCクライアント1へ送信する(矢印55)。クライアント4〜6はこれらの共有画面データをLCD29に表示し、VNCクライアント1は大型ディスプレイ装置2に表示する。
VNCサーバ3〜5もVNCサーバ1と同様な処理を行い、クライアント4〜6の個別画面表示ウィンドウの表示画面が更新され(矢印56〜64)、クライアント3〜6の共有画面表示ウィンドウに表示された文書と個別画面表示ウィンドウに表示された文書の内容が全て同じ内容となる。
なお、所定のタイミングとして、文章終端記号を用いた例を説明したが、本発明はこれに限定されず、前述した実施例2〜実施例5で示した、例えば、テキストが1行あるいは所定の複数行入力された場合、手書きのストローク終端(ペンアップ)から所定の時間が経過した場合、画面間コピーコマンド用のジェスチャー動作と判断した場合、所定のボタンが選択された場合なども適用可能である。
(実施例7)
実施例7は、追加したデータの識別性を向上させた実施例である。すなわち、実施例1〜実施例6で示した所定のタイミング毎に、1つのクライアントの個別画面表示ウィンドウ内で追加されたテキストや手書き描画データ等を、共有画面表示ウィンドウに表示された文書に追加する際に、それらのテキストや手書き描画データの表示色等の属性を異ならせることにより、各クライアント毎に区別して表示し、識別する。
以下、図6、図16(VNCサーバ1の動作フローチャート)を参照して実施例7の動作を説明する。
共有画面表示ウィンドウに表示された文書に、テキストや手書き描画データ等のデータを追加するのは、文書編集アプリケーション1である。そこで、VNCサーバ1は、VNCサーバ2〜5から受信するイベントデータを、各VNCサーバを識別する番号とともに文書編集アプリケーション1へ渡す(ステップ501、502)。VNCサーバを識別する番号としては、例えば、VNCサーバ2〜5に対してそれぞれ番号1〜4を付ける。
文書編集アプリケーション1はイベントデータとして受け取った文字コードや手書きデータを文書データに追加するとともに、それらの追加したデータをVNCサーバ識別番号に対応した色で描画するための描画リクエストを、VNCサーバ1へ出す。例えば、VNCサーバ識別番号1〜4に対して、それぞれ赤、青、緑、黄の各色を対応づける。
描画リクエストを受信したVNCサーバ1は、各文字コードに対応した文字フォントや手書きの描画線を指定された色で表示させるとともに、更新された画面データをクライアント3〜6およびVNCクライアント1へ送信する(ステップ503、504、505)。すなわち、クライアント3の個別画面表示ウィンドウ内で追加されたテキストや手書き描画データは共有画面に赤で表示され、クライアント4の個別画面表示ウィンドウ内で追加されたテキストや手書き描画データは共有画面に青で表示される。
なお、上記した各実施例では、クライアント3で編集操作される場合について説明したが、クライアント4〜6で編集操作される場合も同様である。
また、上記した各実施例では、サーバ1とクライアント3〜6との間の通信手段として無線LANを使用した例について説明したが、Bluetoothや有線LAN(イーサネット)等の他の通信手段を使用してもよい。また、クライアント3〜6が携帯型表示パッドである例を用いて説明したが、本発明はこれに限定されず、VNCクライアントソフトウェアを実装し、サーバ1と通信できる端末、例えばノートPCやPDA等の端末を使用してもよい。
(端末間データ通信型の電子会議システム)
以下の実施例は、端末同士がデータ通信システムを構成する場合の電子会議システムである。すなわち、本発明の電子会議システムでは、ディスプレイを持つ複数の端末がネットワークに接続され、全ての端末で共有化された文書と各端末毎に個別に所有する文書を閲覧、編集しながら会議を行う。
図17は、複数の端末からなるネットワーク構成例を示す。本ネットワークは各会議参加者が使用する端末1000、1010、1020、1030、1040から構成されていて、これらの端末は無線LANで接続されている。端末1000〜1040はハードディスクを内蔵した携帯型表示パッドであり、電子ペン1050〜1090が付属されている。
図18は、端末1000〜1040である、携帯型表示パッド20aのハードウェア構成を示す。図18において、CPU21、クロック22、メインメモリ23、ROM24、RTC25、無線LANコントローラ26、アンテナ27、LCD表示コントローラ28、LCD29、タッチパネルコントローラ30、タッチパネル31、USBコントローラ32、USB I/F33、システムバス34、バッテリ35、DC−DCコンバータ36、充電回路37、ACアダプタ38は、図3で説明したものと同一の構成要素である。本実施例の携帯型表示パッド20aでは、さらにHD(Hard Disc)コントローラ39、ハードディスク40が設けられている。また、携帯型表示パッド20aにはOSとしてLinux、ウィンドウシステムとしてXウィンドウが実装されている。
次に、端末1000〜1040の間で、データの送受信を行いながら電子会議を実行する方法について説明する。この電子会議を実行するための通信プロトコルとして、例えばITU−T勧告T.120シリーズを使用する。このプロトコル構成を図19に示す。
会議アプリケーション1200は、アプリケーション共有機能、ホワイトボード機能、ファイル転送機能等を実行するための各アプリケーションの集合である。ASCE(Application Sharing Conference Entity)1210は会議に参加した全ての端末でアプリケーションを共有するためのエンティティであり、ITU−T勧告T.128に準拠した動作を実行する。SICE(Still Image Conferencing Entity)1220はビットマップデータや手書きの描画データ等を送受信するためのエンティティであり、ITU−T勧告T.126に準拠した動作を実行する。なお、SICE1220は主にホワイトボード機能で使用される。
BFTE(Binary File Transfer Entity)1230はファイル転送を行うためのエンティティであり、ITU−T勧告T.127に準拠した動作を実行する。ノードコントローラ1240とGCC(Generic Conference Control)1250はネットワークに接続した端末が議長の制御に従って会議を実行したり、各端末の能力や属性等の端末情報のリストを管理したりする会議制御アプリケーションであり、ITU−T勧告T.124に準拠した動作を実行する。
MCS(Multipoint Communication Service)1260は複数端末間のセッションレイヤプロトコルを実行し、ITU−T勧告T.125に準拠した動作を実行する。TCP(Transmission Control Protocol)1270は再送制御やフロー制御等のトランスポートレイヤプロトコルを実行する。IP(Internet Protocol)1280はデータパケットの送受信を制御するネットワークレイヤプロトコルを実行する。無線LANドライバ1290はIP1280と無線LANコントローラ26との間のインターフェイスとして動作する。
MCS1260、GCC1250、ノードコントローラ1240の通信動作について説明する。
MCS1260はMCSプロバイダと呼ばれ、また、端末1000〜1040から成る無線ネットワークをMCSプロバイダ間のネットワークとして見たものはMCSドメインと呼ばれる。図17のネットワーク構成において、端末1000を議長端末とした場合、MCSドメインは、図20に示すような階層構造を持つ。議長である端末1000のMCSプロバイダはトップMCSプロバイダであり、他の端末のMCSプロバイダよりも上位に位置する。各端末はMCSコネクションの確立後、MCSドメインにアタッチする。このアタッチにより、各端末はMCSドメイン内での端末識別子であるMCSユーザIDを取得する。
次いで、各端末はMCSチャネルに加入する。MCSチャネルはMCSドメイン内のアドレスであり、同一チャネルに加入した全ての端末が、そのチャネルに送られるデータを受信する。ここで、端末1010が全ての端末が加入しているチャネルに対してデータを送信すると、このデータはトップMCSプロバイダである端末1000へ転送される。そして、端末1000はこのデータを端末1020〜端末1040へ転送する。このように、全ての端末が同一チャネルに加入することにより、データを全ての端末へ送信することができる。なお、MCSドメイン内での端末識別子であるMCSユーザIDはMCSチャネル番号としても使用され、個別宛先へデータを送信する場合にMCSチャネル番号として使用する。
GCC1250はGCCプロバイダと呼ばれ、また、トップMCSプロバイダである端末のGCCプロバイダはトップGCCプロバイダと呼ばれる。各GCCプロバイダは会議に参加すると、アプリケーション共有機能、ホワイトボード機能、ファイル転送機能等の会議用アプリケーションのリストやMCSドメイン内での端末識別子であるMCSユーザID等の端末情報(会議ノードリスト)を他の全てのGCCプロバイダへ送信する。なお、この同報送信は全ての端末が加入しているMCSチャネルに対してデータを送信することで実現される。
これらの端末情報は各端末で受信され、ノードコントローラ1240で管理される。また、GCCは議長権の割り当て等の制御も行い、会議開始時にはトップGCCプロバイダが議長権を持っている。ノードコントローラ1240はユーザからの要求に従ってGCC1250へ各種のプリミティブを発行したり、自端末および他の全ての端末のアプリケーションリストや会議ノードリスト等を管理する。
次に、1つの端末が持っている文書を無線ネットワークに接続された全ての端末で共有化する方法について説明する。この文書の共有は、ITU−T勧告T.128に従ったアプリケーション共有機能を使用して実現する。今、議長端末である端末1000が共有文書を持っており、端末1010〜端末1040がこの文書を共有する場合について説明する。
端末1000が共有文書を表示させている共有ウィンドウ(ホストウィンドウ)の表示データはASCE1210間のプロトコルにより他の全ての端末(端末1010〜端末1040)へ送信し、端末1010〜端末1040はこのデータを自端末の共有ウィンドウ(シャドーウィンドウ)に表示させる。
端末1000は共有ウィンドウ(ホストウィンドウ)の表示データに変更があった場合に、その変更部分の表示データを他の全ての端末へ送信する。端末1010〜端末1040は共有ウィンドウ(シャドーウィンドウ)に対してテキスト入力や手書き入力が行われると、キーイベントやポインタイベントを端末1000へ送信し、端末1000はこれらのイベントを共有ウィンドウ(ホストウィンドウ)に対するイベントとして処理する。すなわち、端末1010〜端末1040の共有ウィンドウ(シャドーウィンドウ)に対してテキスト入力や手書き入力が行われると、それらの入力データは端末1000へ送信され、端末1000はこれらのデータを共有化された文書へ追加する。そして、端末1000はこれらの文字や手書き描画線を共有ウィンドウ(ホストウィンドウ)に表示するとともに、この更新された表示データを端末1010〜端末1040へ送信する。端末1010〜端末1040はこの更新された表示データを共有ウィンドウ(シャドーウィンドウ)に表示する。
このように、端末1010〜端末1040の共有ウィンドウ(シャドーウィンドウ)に対して入力されるキーデータ(キーボード入力データ)とポインタデータ(ペン入力座標データ)は全て端末1000へ送信されるため、共有文書を持たない端末においても共有文書を編集することが可能となる。ここまでは、従来技術を使用した動作である。
次に、各端末において共有ウィンドウと個別ウィンドウをそれぞれ管理するアプリケーションについて説明する。共有ウィンドウを管理するアプリケーション(以下、共有Winアプリ)と個別ウィンドウを管理するアプリケーション(以下、個別Winアプリ)はXクライアントであり、これらは画面表示やキー入力、ポインタ入力を行うXサーバとXプロトコルによりデータの受け渡しを行う。共有Winアプリはアプリケーション共有機能を実行するアプリケーションである。すなわち、共有WinアプリはASCE1210ともインターフェイスを持つ。個別Winアプリは共有WinアプリとBFTE1230ともインターフェイスを持ち、これらとイベントデータの授受を行う。個別Winアプリ、共有Winアプリ、Xサーバ、ASCE1210、BFTE1230の関係を図21に示す。
(実施例8)
議長端末である端末1000は全ての端末間で共有される共有文書とこの文書をコピーして生成されたローカルな文書(データ内容は共有文書と同じ)を持っており、端末1010〜端末1040は端末1000が所有の共有文書をファイル転送等により取得している。そして、端末1000の共有ウィンドウには共有文書が表示され、個別ウィンドウには共有文書のコピーファイルが表示されており、端末1010〜端末1040の共有ウィンドウには端末1000が所有の共有文書が表示され、個別ウィンドウにはファイル転送等により取得した共有文書と同じファイルが表示されている。
今、全ての端末の各ウィンドウに表示するファイルがそれぞれオープンされ、端末1000〜端末1040の共有ウィンドウと個別ウィンドウには共有文書およびそれと同じデータ内容のファイルの1ページ目の先頭から表示されているとする。ここで、端末1010の個別ウィンドウに入力されたテキストが共有文書に追加され、このテキストの追加表示が端末1000〜端末1040の共有ウィンドウに対して行われる場合について説明する。
図22は、端末1000と端末1010の個別Winアプリ、共有Winアプリ、Xサーバ、ASCE1210、BFTE1230の各プロセス間のデータの流れを示す。また、図23は、端末1010の個別Winアプリの動作フローチャートである。
以下、図22、23を参照して実施例8を説明する。端末1010の個別ウィンドウに表示された文書に対して、文字(テキスト)入力する位置にカーソルを移動するために、電子ペン1060でポイントされると、端末1010のXサーバはこのポイント位置データ(座標データ)を端末1010の個別Winアプリへ渡す(矢印a)。個別Winアプリはこの座標データをポインタイベントとして受信し(ステップ601)、この座標データの位置にカーソルを移動し、端末1010のXサーバへ描画リクエストを出すとともに(矢印b、ステップ602)、この受信したイベントデータをキュー(キュー101)に入れる(ステップ603)。このキューはプログラム中に定義された配列である。
端末1010のXサーバは、受信した描画リクエストに従って個別ウィンドウ内の描画を行い、カーソルが端末1010のLCD29上のポイントされた位置に表示される。続いて、端末1010の個別ウィンドウ内で文字(テキスト)が入力されると、端末1010のXサーバはこの文字コードを端末1010の個別Winアプリへ渡す(矢印a)。個別Winアプリはこれらの文字コードをキーイベントとして受信し(ステップ604でYES)、これらの文字コードを文書データに追加して、端末1010のXサーバへ描画リクエストを出すとともに(矢印b、ステップ605)、この受信したイベントデータをキュー(キュー101)に入れる(ステップ606)。端末1010のXサーバは、受信した描画リクエストに従って個別ウィンドウ内の描画を行い、入力された文字が端末1010のLCD29に表示される。
ここで、ユーザにより文章終端記号が入力されると、端末1010のXサーバはこの記号コードを端末1010の個別Winアプリへ渡す(矢印a)。個別Winアプリはこの記号コードをキーイベントとして受信し、この記号コードを文書データに追加して、端末1010のXサーバへ描画リクエストを出す(矢印b)とともに、この受信したイベントデータをキュー(キュー101)に入れる(ステップ607、608)。そして、この記号コードが文章終端記号であると判断すると、個別Winアプリはキュー101に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、共有Winアプリへ渡す(矢印c)とともに、これらのイベントデータをBFTE1230を介して端末1000及び端末1020〜端末1040へ送信する(矢印d、e、ステップ609)。
端末1010の共有Winアプリは、これらのイベントデータをASCE1210へ渡し(矢印f)、ASCE1210はこれらのイベントデータを端末1000のASCE1210へ送信する(矢印g)。これらのイベントデータはASCE1210間でInputPDU(Input Protocol Data Unit)に含めて送信する。なお、このInputPDUは、MCSレイヤにおいて、端末1000の端末識別子であるMCSユーザIDをMCSチャネル番号にセットしたSDrq MCSPDU(MCS Protocol Data Unit)に含めて送信する。
端末1000のASCE1210は受信したイベントデータを共有Winアプリへ渡し(矢印h)、共有Winアプリはこれらのイベントデータに従った処理を実行し、端末1000のXサーバへ描画リクエストを出す(矢印i)とともに、ASCE1210へ端末1010〜端末1040の共有ウィンドウに対する描画の更新要求を出す(矢印j)。端末1000のXサーバは描画リクエストで指示された描画処理を実行し、この時点で端末1010の個別ウィンドウに表示された文書データと端末1000の共有ウィンドウに表示された文書データとが同じ内容となる。また、端末1000のASCE1210は共有Winアプリから端末1010〜端末1040の共有ウィンドウに対する描画の更新要求を受けると、更新領域のビットマップデータを含んだUpdatePDU(Update Protocol Data Unit)を端末1010〜端末1040へ送信する(矢印k)。なお、このUpdatePDUは、MCSレイヤにおいて、各宛先端末の端末識別子であるMCSユーザIDをMCSチャネル番号にセットしたSDrq MCSPDUに含めて送信する。端末1010のASCE1210は受信したビットマップデータを共有Winアプリへ渡し(矢印m)、共有Winアプリは端末1010のXサーバへこのビットマップデータの描画リクエストを出す(矢印n)。そして、端末1010のXサーバは共有ウィンドウの表示データを更新する。端末1020〜端末1040のASCE1210も同様に、受信したビットマップデータを共有Winアプリへ渡し、共有Winアプリは各端末のXサーバへこのビットマップデータの描画リクエストを出し、各端末のXサーバは共有ウィンドウの表示データを更新する。
端末1000及び端末1020〜端末1040のBFTE1230は端末1010のBFTE1230からイベントデータを受信すると、これらのイベントデータを個別Winアプリへ渡し(矢印p)、個別Winアプリはイベントデータに従った処理を実行し、各端末のXサーバへ描画リクエストを出す(矢印q)。端末1000及び端末1020〜端末1040のXサーバは個別ウィンドウの表示データを更新する。
従って、端末1000〜端末1040の共有ウィンドウと個別ウィンドウに表示された文書データが全て同じ内容となる。
このように、実施例8では、端末1010の個別ウィンドウにテキストが入力され、文章終端記号が入力されると、文章終端記号を含めてそれまで入力されたテキストが端末1000〜端末1040の共有ウィンドウ、端末1000の個別ウィンドウ、端末1020〜端末1040の個別ウィンドウにも表示される。
(実施例9)
上記した実施例8では、端末1010の個別WinアプリがXサーバから文章終端記号を受信したときに、それまで受信していたイベントデータ(文章終端記号も含む)を共有Winアプリを介して端末1000の共有Winアプリへ送信するとともに、BFTE1230を介して端末1000と端末1020〜端末1040の個別Winアプリへ送信し、端末1000〜端末1040の共有ウィンドウと個別ウィンドウに表示された文書データが全て同じ内容となる場合について説明したが、本実施例では、個別WinアプリがXサーバから改行コードを受信したときに、実施例8と同様な動作を実行する。実施例9は、図22、23で説明した実施例8の文章終端記号を改行コードに置き換えたものとなる。
すなわち、端末1010の個別Winアプリがキュー101に貯めたイベントデータを端末1000と端末1020〜端末1040へ送信するタイミングがXサーバから文章終端記号を受信したときではなく、改行コードを受信したときである。従って、ユーザが1行分の文字(テキスト)を入力して改行がなされるまでは共有ウィンドウと個別ウィンドウに表示された文書の内容が異なるが、改行がなされた時に、これらのウィンドウに表示される文書の内容が同じとなる。
なお、ユーザが複数行分の文字(テキスト)を入力した場合、すなわち端末1010の個別Winアプリが複数個の改行コードを受信した場合についても、上記した実施例8と同様にして動作を実行できる。
(実施例10)
実施例10は、各端末のユーザがテキスト入力ではなく、手書き入力する場合の実施例である。本実施例では、ユーザが筆記動作を行っているか否かを、電子ペンがアップされている状態の持続時間から判断する。図24は、手書き入力モードにおける端末1010の個別Winアプリの動作フローチャートを示す。
図22、24を参照して、手書き入力する場合の実施例10を説明する。端末1010のタッチパネルコントローラ30が、電子ペンがタッチパネル31に接触したことを検出すると、Xサーバは座標検出用の所定の時間間隔毎に、この接触座標を個別Winアプリへ渡す(矢印a)。個別Winアプリはこの座標データをポインタイベントとして受信し、この座標データをカーソルの位置データとして使用したり、自由線描画の描画位置データとして使用したりする(ステップ701でYES)。
今、個別Winアプリは受信した座標データを自由線描画の描画位置データとして使用するモード(手書き入力モード)にあり、1つのストローク(ペンダウンからペンアップまで)中は受信した座標間を線で描画する自由線描画機能を実行している。個別Winアプリはこの手書き入力モードになると、Xサーバから受信するポインタイベント間の時間を計測する(ステップ702)。この計測時間が所定の時間以内である場合は、個別Winアプリは今受信した座標と先に受信した座標との間を線で描画するリクエストをXサーバへ出す(矢印b)とともに(ステップ703)、そのポインタイベントデータをキュー101に入れる(ステップ704)。このキューはプログラム中に定義された配列である。
そして、ポインタイベント間の計測時間が所定の時間を超えた場合、すなわちポインタイベント受信時に開始したタイマーがタイムアウトした場合には(ステップ705でYES)、端末1010の個別Winアプリはキュー101に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、共有Winアプリへ渡す(矢印c)とともに、これらのイベントデータをBFTE1230を介して端末1000及び端末1020〜端末1040へ送信する(矢印d、e、ステップ706)。
端末1010の共有Winアプリは、これらのイベントデータをASCE1210へ渡し(矢印f)、ASCE1210はこれらのイベントデータを端末1000のASCE1210へ送信する(矢印g)。これらのイベントデータはASCE1210間でInputPDUに含めて送信する。なお、このInputPDUは、MCSレイヤにおいて、端末1000の端末識別子であるMCSユーザIDをMCSチャネル番号にセットしたSDrq MCSPDUに含めて送信する。
端末1000のASCE1210は受信したイベントデータを共有Winアプリへ渡し(矢印h)、共有Winアプリはこれらのイベントデータ(座標データ)から座標間を線で描画するリクエストを端末1000のXサーバへ出す(矢印i)とともに、ASCE1210へ端末1010〜端末1040の共有ウィンドウに対する描画の更新要求を出す(矢印j)。
端末1000のXサーバは描画リクエストで指示された線描画を実行し、この時点で端末1010の個別ウィンドウに表示された文書データと端末1000の共有ウィンドウに表示された文書データとが同じ内容となる。
また、端末1000のASCE1210は共有Winアプリから端末1010〜端末1040の共有ウィンドウに対する描画の更新要求を受けると、更新領域のビットマップデータを含んだUpdatePDUを端末1010〜端末1040へ送信する(矢印k)。なお、このUpdatePDUは、MCSレイヤにおいて、各宛先端末の端末識別子であるMCSユーザIDをMCSチャネル番号にセットしたSDrq MCSPDUに含めて送信する。
端末1010のASCE1210は受信したビットマップデータを共有Winアプリへ渡し(矢印m)、共有Winアプリは端末1010のXサーバへこのビットマップデータの描画リクエストを出す(矢印n)。そして、端末1010のXサーバは共有ウィンドウの表示データを更新する。端末1020〜端末1040のASCE1210も同様に、受信したビットマップデータを共有Winアプリへ渡し、共有Winアプリは各端末のXサーバへこのビットマップデータの描画リクエストを出し、各端末のXサーバは共有ウィンドウの表示データを更新する。
端末1000及び端末1020〜端末1040のBFTE1230は端末1010のBFTE1230からイベントデータを受信すると、これらのイベントデータを個別Winアプリへ渡し(矢印p)、個別Winアプリはこれらのイベントデータ(座標データ)から座標間を線で描画するリクエストをXサーバへ出す(矢印q)。端末1000及び端末1020〜端末1040のXサーバは個別ウィンドウの表示データを更新する。
上記したようにして、端末1000〜端末1040の共有ウィンドウと個別ウィンドウに表示された文書データが全て同じ内容となる。
このように、端末1010の個別ウィンドウにて手書き入力されている時に、ストローク終了(ペンアップ)から次のストロークが開始されずに(ペンダウンされない)所定の時間が経過すると、それまで入力された描画線が端末1000〜端末1040の共有ウィンドウ、端末1000の個別ウィンドウ、端末1020〜端末1040の個別ウィンドウにも表示される。
(実施例11)
実施例11は、各端末の個別ウィンドウ内で、ユーザが電子ペンを用いて手書き入力を行い、タッチパネル31上で所定のジェスチャー動作を行うことにより、それまで入力された手書き描画が共有ウィンドウにコピーされる場合の実施例である。
図25は、実施例11に係る端末1010の個別Winアプリの動作フローチャートである。端末1010の個別Winアプリが手書き入力モードとして動作しているとき、Xサーバから受信するポインタイベント毎に、現在の時刻をタイムスタンプとして得る。そして、座標データをタイムスタンプと共にメインメモリ23上に存在する座標配列に巡回的に追加する(ステップ801〜803)。そして、この座標配列中のデータから、ウィンドウ間のコピーコマンド用の所定のパターンと一致するか否かの判断を行う(ステップ804)。この判断方法は、前述した実施例4の方法と同様である。
この座標配列中のデータから、ウィンドウ間のコピーコマンドを検出すると(ステップ805でYES)、キュー101に貯められたイベントデータの中で、最新から過去に遡った方向で上記の条件を満足した座標の個数分だけ削除する(ステップ806)。そして、個別Winアプリは、削除したイベントデータに対応した描画線を消すために、描画線の背景部分の再描画(描画線に対して上書き)のリクエストをXサーバに送る(ステップ807)。そして、個別Winアプリが手書き入力データとして管理している座標データから、削除したイベントデータに対応したものを削除する(ステップ808)。
Xサーバは、指定された線描画部分を背景データで上書きするため、その上書き部分の描画線が消去される。(一旦はジェスチャー用のペン先の動きを描画するが、ジェスチャー動作と認識するとこの描画をキャンセルする。)そして、端末1010の個別Winアプリはキュー101に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、共有Winアプリへ渡すとともに、これらのイベントデータをBFTE1230を介して端末1000及び端末1020〜端末1040へ送信する(ステップ809)。これ以降の動作は実施例10と同様であるので、その説明を省略する。
(実施例12)
実施例12は、各端末の個別ウィンドウに表示された文書に対して、ユーザが電子ペンやUSBキーボードを用いた編集操作を行い、LCD29に表示された所定のボタンが選択されることにより、それまでの編集処理が共有ウィンドウに表示された文書に対しても実行される場合の実施例である。
図26は、実施例12に係る端末1010の個別Winアプリの動作フローチャートである。以下、実施例12を説明すると、LCD29の表示画面で、共有ウィンドウや個別ウィンドウなどのウィンドウ以外の領域に、編集同期ボタンを表示する。
編集同期ボタンは、個別ウィンドウに表示された文書に対して実行されたのと同じ編集処理を、共有ウィンドウに表示された文書に対して実行させるためのボタンである。
端末1010の個別ウィンドウに表示された文書に対して文字(テキスト)入力、手書き入力、文章の削除、文章のコピー等の各種編集操作が行われると、端末1010のXサーバはキーコード(文字・記号コードや改行コード等)やポイント位置データ(座標データ)を個別Winアプリへ渡す。座標データを受信した個別Winアプリはこれらのイベントデータをキュー101に入れるとともに(ステップ901、902)、イベントデータに従った処理を行い(ステップ903)、画面の表示データに変更が必要な場合には(ステップ904でYES)、Xサーバへ描画リクエストを出す(ステップ905)。Xサーバは指示された描画を行う。
ここで、ユーザにより編集同期ボタンが選択されると、ウィンドウ以外の画面領域を管理するデスクトップアプリ(図示は省略)は個別Winアプリへ編集同期を指示するリクエストを出す。個別Winアプリはこのリクエストを受信すると(ステップ906でYES)、キュー101に入っているイベントデータをファーストイン・ファーストアウトの順番で順次、共有Winアプリへ渡すとともに、これらのイベントデータをBFTE1230を介して端末1000及び端末1020〜端末1040へ送信する(ステップ907)。これ以降の動作は実施例10と同様である。
上記した実施例8から実施例12では、端末1010で編集操作される場合について説明したが、端末1020〜端末1040で編集操作される場合も同様である。また、端末1000で編集操作される場合も、共有Winアプリが他の端末からイベントデータを受信する代わりに、自端末の個別Winアプリからイベントデータを受信することを除いて、上記した動作と同様である。
なお、上記した実施例8から実施例12では、端末1000〜端末1040との間の通信手段として無線LANを使用した例について説明したが、Bluetoothや有線LAN(イーサネット)等の他の通信手段を使用してもよい。また、端末1000〜端末1040が携帯型表示パッドである例を用いて説明したが、本発明はこれに限定されず、上記した動作を実行できる端末、例えばノートPCなどを使用してもよい。