(57)【要約】【課題】  複数のアプリケーションによるデバイスへの同時アクセスなどで動作が不安定になるという問題などが起こることがあった。【解決手段】  電子機器にアクセスする情報処理装置の制御方法であって、第１のアプリケーションに基づいて電子機器との通信が終了したことを認識する認識工程と、認識工程で第１のアプリケーションに基づく通信の終了を認識したことに応じて、第１のアプリケーションとは異なる第２のアプリケーションに基づいて、電子機器と通信を開始する通信工程とを有する【選択図】  図８
2005216101.tif 000002
【特許請求の範囲】
【請求項１】
電子機器にアクセスする情報処理装置の制御方法であって、
第１のアプリケーションに基づいて前記電子機器との通信が終了したことを認識する認識工程と、
前記認識工程で前記第１のアプリケーションに基づく通信の終了を認識したことに応じて、前記第１のアプリケーションとは異なる第２のアプリケーションに基づいて、前記電子機器と通信を開始する通信工程とを有することを特徴とする情報処理装置の制御方法。
【請求項２】
前記電子機器を前記情報処理装置に有線もしくは無線で接続した場合には、前記第１のアプリケーションに基づく通信を開始する工程を有することを特徴とする請求項１に記載の情報処理装置の制御方法。
【請求項３】
前記電子機器と前記第１のアプリケーションに基づく通信が確立していて、前記第２のアプリケーションによる接続があった場合には、前記第１のアプリケーションに基づく通信を切断することを特徴とする請求項１ないし２のいずれか１項に記載の情報処理装置の制御方法。
【請求項４】
前記第１のアプリケーションは、前記電子機器の有する操作部への操作に基づいて動作し、前記第２のアプリケーションは、情報処理装置の有する操作部への操作に基づいて動作することを特徴とする請求項１ないし３のいずれか１項に記載の情報処理装置の制御方法。
【請求項５】
電子機器にアクセスする情報処理装置であって、
第１のアプリケーションに基づいて前記電子機器との通信が終了したことを認識する認識手段と、
前記認識手段で前記第１のアプリケーションに基づく通信の終了を認識したことに応じて、前記第１のアプリケーションとは異なる第２のアプリケーションに基づいて、前記電子機器と通信を開始する通信手段とを有することを特徴とする情報処理装置。
【請求項６】
前記電子機器を前記情報処理装置に有線もしくは無線で接続した場合に、前記第１のアプリケーションに基づく通信を開始する通信開始手段を有することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記電子機器と前記第１のアプリケーションに基づく通信が確立していて、前記第２のアプリケーションによる接続があった場合には、前記第１のアプリケーションに基づく通信を切断することを特徴とする請求項５ないし６のいずれか１項に記載の情報処理装置。
【請求項８】
前記第１のアプリケーションは、前記電子機器の有する操作部への操作に基づいて動作し、前記第２のアプリケーションは、情報処理装置の有する操作部への操作に基づいて動作することを特徴とする請求項５ないし７のいずれか１項に記載の情報処理装置の制御方法。
【請求項９】
請求項１ないし４のいずれか１項に記載の制御方法を実行するためのプログラムであって、コンピュータにより読み取り可能なプログラムを記憶する記憶媒体。
【請求項１０】
電子機器にアクセスするサーバーオブジェクトとサーバーオブジェクトにアクセスするクライアントオブジェクトを制御するプログラムであり、クライアントオブジェクトが複数存在する場合に、クライアントオブジェクトを複数のグループに分類し、グループ毎にアクセスするサーバーオブジェクトが決められていることを特徴とするプログラム。
【請求項１１】
請求項１０において、サーバーオブジェクトには、接続しようとするクライアントの出現、および接続していたクライアントの消滅をクライアントに通知するモジュールを備えており、前記モジュールを利用してグループ内で電子機器に接続するアプリケーションが存在しないときにのみ電子機器との接続を行うクライアントを構成することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器にアクセスする情報処理装置およびその制御方法に関する。
【背景技術】
【０００２】
コンピュータに接続されている外部機器（外部デバイス）にアクセスするソフトウェアにおいては、従来から、クライアント／サーバー形式を採用したものがある。ここでいうサーバーとは、外部デバイスに対して、直接、コマンドを発行してデータのやり取りを行うもので、デバイスに対する通信を一元管理するモジュールなどが相当する。クライアントとは、サーバーにアクセスしることにより、間接的にデバイスにアクセスし、デバイスにあるデータを取得して表示したり、デバイスを操作するためのインターフェースを使用者に提供したりするアプリケーションソフトウェアなどが相当する。
【特許文献１】特開２０００−１１５４２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このようなクライアント／サーバー形式の場合、一つのサーバーでデバイスに対するアクセスを一元管理するため、ある一つのクライアントの障害によりサーバーの機能に障害が発生し、その結果、他のクライアントにも障害が波及するという不具合が起きることあった。これを避けるための方法として、クライアント／サーバー形式をとらずに、デバイスのアクセスをそれぞれのアプリケーションが行うという手段をとることがあった、しかし、そうした場合、デバイスに対するアクセスが一元管理できず、複数のアプリケーションによるデバイスへの同時アクセスなどで動作が不安定になるという問題などが起こることがあった。また、デバイスへのアクセスを制限したい場合には、デバイスにアクセスするクライアントそれぞれに処理を加える必要があるという問題があった。
【０００４】
また、対象とするデバイスがデジタルカメラなど、内部にデータを保持するものの場合、バックグラウンドで動作し、自動的にデータをコンピュータに取得するようなアプリケーションソフトウェアが存在するが、そのようなアプリケーションソフトウェアが動作していると、デバイスにアクセスするその他のソフトウェアの処理が遅くなってしまうという問題があった。
【課題を解決するための手段】
【０００５】
上記問題を解決するため、電子機器にアクセスする情報処理装置の制御方法であって、第１のアプリケーションに基づいて電子機器との通信が終了したことを認識する認識工程と、認識工程で第１のアプリケーションに基づく通信の終了を認識したことに応じて、第１のアプリケーションとは異なる第２のアプリケーションに基づいて、電子機器と通信を開始する通信工程とを有することを特徴とする。
【０００６】
また、本発明では、クライアントをグループ分けし、グループの数分のサーバーを構築する。クライアントが所属するグループによりアクセスするサーバーを決める、つまり、各サーバーには同じグループのクライアントのみがアクセスすることにする。また、サーバー間でデバイスへのアクセスを制御する手段を設ける。
【０００７】
また、サーバーを通してデバイスにアクセスするクライアントの出現、消滅を監視する手段をサーバーにもうける。
【発明の効果】
【０００８】
以上詳述したように、本発明によれば、デバイスにアクセスするアプリケーションソフトウェアをグループに分類することにより、他のグループに属するアプリケーソンの障害の影響を受けないようにすることが可能となる。また、同じグループに含まれる他のアプリケーションの動作を阻害しないアプリケーションが容易に構築可能となる。
【０００９】
また、例えばデジタルカメラをＰＣに接続した場合、手元に持っているであろうデジタルカメラから操作可能にシステムを構成しておくことが出来るとともに、ＰＣからの操作をしようとする場合には、ＰＣ側の操作によって制御可能なクライアントアプリケーションに切り替えることで、上述したような不具合の発生を防ぐことが出来る。
【発明を実施するための最良の形態】
【００１０】
通信手段を有し、クライアントおよびサーバーソフトウェアを動作させることが出来るコンピュータと、コンピュータに接続される外部電子デバイスからなる。
【実施例】
【００１１】
以下、図面を参照して、本実施例を詳細に説明する。
【００１２】
図１は、本発明の実施例の概略構成図を示す。図１において、１０はコンピュータ本体、１２はコンピュータ本体１０の出力を画像として表示するモニタ、１４はマウス、１６はマウスボタン、１８はキーボード、２０はデジタルカメラである。
【００１３】
図２は、本実施例におけるコンピュータ１０の機能ブロック図を示す。コンピュータ本体１０では、周知の通り、ハードウエア内にオペレーティングシステム（ＯＳ）があり、その上にアプリケーションソフトウェア５０が位置する。実施例の構成を理解する上で、直接、必要とされない要素、例えば、ＣＰＵ、及びオペレーティングシステムのメモリ管理システムなどは、省略してある。
【００１４】
３０は補助記憶装置としてのハードディスクドライブ（ＨＤＤ）、３２はオペレーティングシステムを構成するファイルシステムであり、アプリケーションソフトウェアがハードウエアを直接制御すること無しにファイルの入出力を可能にする機能を具備する。このようなファイルシステムは周知である。３４は、ファイルシステム３２がハードディスク３０にデータを読み書きするためのディスク入出力インターフェースである。
【００１５】
３６は、オペレーティングシステムに含まれる描画管理システムであり、アプリケーションソフトウェアがハードウエアを直接制御することなく画像を生成する機能を具備する。３８は、描画管理システム３６で生成される画像データをモニタ１２に適合するビデオ信号に変換するビデオインターフェースである。
【００１６】
４２はキーボード１８が接続するキーボードインターフェース、４４はマウス１４が接続するマウスインターフェース、４６はユニバーサルシリアルバス（ＵＳＢ）インターフェースである。デジタルカメラ２０は、ＵＳＢケーブル２２を介してＵＳＢインターフェース４６に接続され、デジタルカメラデバイスドライバー３７を介して、デジタルカメラ２０にアクセスするアプリケーションソフトウェアとの間で制御コマンド、状態信号及び画像データ等をやり取りする。
【００１７】
なお、実施例の構成を理解する上で直接、必要とされない要素は省略してある。
【００１８】
図３に本発明実施例におけるデジタルカメラ用アプリケーション動作時のオブジェクト概念図を示す。
【００１９】
図３で、５１０，５１１，５１２，５１３は本発明実施例でのクライアントに相当するアプリケーションソフトウェアをあらわすクライアントオブジェクト、５２０，５２１，５２２は、デジタルカメラ用デバイスドライバー３７にアクセスし、デジタルカメラ２０にアクセスするデジタルカメラ用サーバーソフトウェアのサーバーオブジェクトである。
【００２０】
図３に示すように、クライアントオブジェクト５１０，５１１，５１２，５１３は、サーバーオブジェクト５２０，５２１，５２２を経由して、デジタルカメラにアクセスする。
【００２１】
本発明実施例では、クライアントにあたるアプリケーションソフトウェアは複数のグループに分けられ、グループ毎にサーバーオブジェクトが構築される。
【００２２】
図３の例では、クライアントオブジェクト５１０から５１３が３つのグループに分けられている。グループ１にはクライアントオブジェクト５１０と５１１が含まれ、グループ１に属するアプリケーションソフトウェアがアクセスするためのサーバーオブジェクト５２０にアクセスし、カメラとの通信を行う。同様にグループ２にはクライアントオブジェクト５１２、グループ３には、クライアントオブジェクト５１３が属し、それぞれ、各グループがアクセスするサーバーオブジェクト５２１と５２２にアクセスし、カメラとの通信を行う。
【００２３】
また、各サーバーオブジェクト間では、デジタルカメラアクセス用フラグ５３０を共有している。これは、各サーバーからのコマンドを排他制御するためのものである。サーバーがデジタルカメラにコマンドを送る場合の例を図１１に示すフローチャートを用いて説明する。なお、アクセス用フラグ５３０には、「アクセス可」と「アクセス不可」の２つの状態が存在する。また、複数のサーバーからのアクセス用フラグ５３０への同時参照を防ぐための手段も備えているが、本発明とは直接関係ないため、説明は省略する。
【００２４】
図１１のステップＳ１０に示すように、各サーバーはデジタルカメラ用デバイスドライバーにコマンドを送る前に、必ず、アクセス用フラグ５３０を参照する。「アクセス不可」の場合には、再びステップＳ１０を実行し、「アクセス可」になるまで待つ。ステップＳ１０で「アクセス可」の状態のときには、ステップＳ２０に処理を移し、アクセス用フラグ５３０を「アクセス不可」に設定する。これは、他のサーバーからのコマンドがデバイスに送られないようにするためである。その後、ステップＳ３０で、デジタルカメラへのコマンドを送り、ステップＳ４０で、コマンドが終了するのを待つ。コマンドが終了した後、ステップＳ５０にて、アクセス用フラグ５３０を「アクセス可」にセットする。これは、他のサーバーからのコマンドを実行できるようにするためである。
【００２５】
以上により、複数のサーバーから、デジタルカメラへのコマンド単位での同時アクセスが発生しないよう制御が可能となる。
【００２６】
次に、本発明を実施するクライアント／サーバーオブジェクトにおける、クライアントオブジェクトがアクセスするサーバーオブジェクトを決定する処理の実施例について説明する。
【００２７】
まず、サーバーオブジェクト決定する処理の第一の実施例について説明する。
【００２８】
本実施例では、クライアントオブジェクトを２つのグループに分類するものである。
【００２９】
グループ１のクライアントオブジェクトは、クライアントオブジェクトの実態となるアプリケーションソフトウェアの実行ファイルが格納されているフォルダ内に、サーバーオブジェクトの実態となるサーバーソフトウェアの実行ファイルが格納されているものである。
【００３０】
一方、グループ２のクライアントオブジェクトは、クライアントオブジェクトの実態となるアプリケーションソフトウェアの実行ファイルとサーバーソフトウェアの実行ファイルが同じフォルダ内に格納されていないものである。
【００３１】
図４は、第一の実施例における、クライアントオブジェクトが、アクセスすべきサーバーオブジェクトを決定する際の動作フローである。
【００３２】
まず、ステップ１０でクライアントオブジェクトを起動したアプリケーションソフトウェアの実行ファイルが格納されているフォルダ（ローカルフォルダ）にサーバーオブジェクトを生成するためのサーバーソフトウェアの実行ファイルが格納されているかを検索する。格納されている場合には、ステップＳ２０に移り、サーバーソフトウェアの実行ファイルを起動し、サーバーオブジェクトを生成する。これは、グループ１のアプリケーションでの処理になる。一方、ローカルフォルダにサーバーの実行ファイルが存在していない場合には、ステップＳ３０に処理を移す。ステップＳ３０では、あらかじめ決められているフォルダにインストールされているサーバー実行ファイルを起動する。これは、グループ２のクライアントオブジェクトの動作となる。なお、グループ２のクライアントは、サーバーオブジェクトを複数のアプリケーションで共有するため、サーバーオブジェクトの実行ファイルを所定の共有フォルダにコピー（インストール）してあるものとする。ステップＳ４０では、ステップＳ２０またはステップＳ３０で起動したサーバーオブジェクトに接続し、デジタルカメラ２０との通信を開始する。
【００３３】
次に、第一の実施例でのサーバーオブジェクト起動時の動作を図５に示すフローチャートを用いて説明する。
【００３４】
まず、ステップＳ１０で、同じサーバーソフトウェアの実行ファイルから生成されたサーバーオブジェクトが、既にシステム中に存在しているかを調べる。
【００３５】
存在していない場合には、ステップＳ５０に処理を移し、生成されたサーバーオブジェクトへのハンドルをサーバーオブジェクトを起動したクライアントへ通知し、通常の処理を続ける。一方、同じ実行ファイルから生成されたサーバーオブジェクトが既に存在してた場合には、ステップＳ２０に処理を移す。
【００３６】
ステップＳ２０では、起動済みにサーバーオブジェクトに対してクライアントの追加を通知する。その後、ステップＳ３０で、既に起動済みにサーバーオブジェクトを特定するためのハンドルをクライアントへ通知する。その後、ステップＳ４０において、サーバーオブジェクトの処理を終了し、オブジェクトをシステムから消去する。
【００３７】
これらの処理により、サーバーオブジェクトを共有する場合に、複数のクライアントから同じ実行ファイルを起動しようとした場合にでも、存在するサーバーオブジェクトとしてはシステムでひとつになり、アプリケーション間でサーバーを共有することが可能となる。
【００３８】
以上、述べたように、第一の実施例では、クライアントの実行ファイルとサーバーの実行ファイルとの格納場所によりアプリケーションをグループ分けし、それに応じて、各アプリケーションが使用するサーバーオブジェクトを決定するようにしている。
【００３９】
次に、サーバーオブジェクト決定する処理の第二の実施例について説明する。
【００４０】
第二の実施例では、サーバーを管理するサーバー管理システムが存在し、各クライアントアプリケーションオブジェクトはサーバー管理システムに対してアクセスすべきサーバーオブジェクトを問い合わせるものである。
【００４１】
図６に第二の実施例でのクライアントオブジェクトがアクセスすべきサーバーオブジェクトを決定するときの動作を示すフローチャートを示す。
【００４２】
まず、ステップＳ１０において、サーバー管理システムに対して、接続すべきサーバーオブジェクトへのハンドルを要求する。サーバーオブジェクトへの問い合わせには、グループ番号をパラメータとして渡すものとする。
【００４３】
ステップＳ２０で、ステップＳ１０の処理が成功したかを判別し、成功した場合には、ステップＳ３０に処理を移し、サーバー管理システムから返されたサーバーに接続処理を行う。一方、ステップＳ２０で失敗と判定されたときには、ステップＳ４０に処理を移し、エラー終了とする。
【００４４】
この第二の実施例におけるサーバー管理システムでのサーバー決定時の動作フローを図７を用いて説明する。
【００４５】
図７は、図６のステップ１０でクライアントがサーバー管理システムに接続サーバーを要求したときのサーバー管理システムでの処理に相当するものである。
【００４６】
なお、サーバー管理システムとは、実行中のサーバーオブジェクトをそれが対象とするグループ番号と共にリスト管理しているものである。このリストをサーバーリストと呼ぶことにする。
【００４７】
まず、ステップＳ１０で、パラメータとして渡されてきたグループ番号を持つクライアントオブジェクトがアクセスすべきサーバーオブジェクトが、サーバーリストに含まれているか、つまり、起動済みかを調べる。既に起動されている場合には、ステップＳ３０に処理を移し、そのサーバーにアクセスするためのハンドルをクライアントに返す。
【００４８】
一方、サーバーリストにアクセスすべきサーバーが存在しない場合、ステップＳ２０に処理を移す。
【００４９】
ステップＳ２０では、クライアントからパラメータで渡されてきたクライアントオブジェクトグループ用のサーバーオブジェクトを新規に起動し、サーバーリストに加える。その後、ステップＳ４０に処理を移し、ステップＳ２０で起動したサーバーへのハンドルを返す。
【００５０】
次に、本発明による、クライアント、サーバー構成を利用した、複数クライアントアプリケーション間での同時起動制限を行う仕組みについて実施例を用いて説明する。
【００５１】
これは、グループ内でデジタルカメラを使用するアプリケーションに優先順位をつける場合などに有効となる。
【００５２】
より具体的には、グループ内の他のアプリケーションがデジタルカメラにアクセスしている場合には、そのアプリケーションのアクセスが終了するまで、アクセスを待ち、逆に、デジタルカメラにアクセスしている途中に、他のアプリケーションがアクセスを開始した場合には、自らのアクセスを終了するようなアプリケーションを実現する場合などである。
【００５３】
たとえば、バックグラウンドで、自動的に画像をダウンロードするようなアプリケーションで、ただし、他のアプリケーションが実行されている場合には、そのアプリケーションのパフォーマンスを低下させないように、自らのアクセスは終了するようなものが考えられる。
【００５４】
図８は、この仕組みを説明するための、各オブジェクトのシーケンス図である。
【００５５】
８０はサーバーの動作シーケンス、８１はクライアントを構成する複数のスレッドのうち、サーバーオブジェクトと通信を行い、他のクライアントアプリケーションの情報を取得するスレッドのシーケンス、８２はクライアントアプリケーションのメインのスレッドの動作シーケンスを表す。なお、本実施例には直接関係のないスレッドのシーケンス図は省略する。
【００５６】
なお、以下の説明において、クライアントにおける接続処理から切断処理までの間を接続セッションと呼ぶことにする。サーバーオブジェクトは、接続セッション中のクライアントのリスト（接続セッションクライアントリスト）を保持している。接続セッションクライアントリストついては、本発明とは直接関係ないので、説明は省略する。
【００５７】
ここで、デジタルカメラ等の電子機器をパーソナルコンピュータ（ＰＣ）に接続した場合を考える。このとき、接続された電子機器を制御するためのクライアントアプリケーションとして、電子機器側の操作部を用いるクライアントアプリケーション（第１のアプリケーション）と、パーソナルコンピュータ側の操作部を用いるクライアントアプリケーション（第２のアプリケーション）が、ＰＣに接続されている記憶ユニットに格納されている。
【００５８】
そして、デジタルカメラ等の電子機器を（有線接続、無線接続を問わない）接続した時には、自動的に、電子機器側の操作部を用いるクライアントアプリケーション（第２のアプリケーション）がＰＣ側で起動されることとする。
【００５９】
次に、クライアントオブジェクトの他クライアント監視スレッド８１は、電子機器側の操作部を用いるクライアントアプリケーション（第１のアプリケーション）がＰＣ側で起動されたことに応じて、サーバーオブジェクトの関数ＷａｉｔＦｏｒＮｏＡｃｃｅｓｓ（  ）を実行する（８０１）。これは、接続セッション中のクライアントが存在するかを調べ、存在する場合には、全てのクライアントの接続セッションが終了するのを待つ関数である。詳細は後述する。
【００６０】
接続セッション中のクライアントが存在しなくなると、関数ＷａｉｔＦｏｒＮｏＡｃｃｅｓｓ（  ）は処理をクライアントに戻す（８０２）。待機していたクライアント監視スレッド８１は、ＷａｉｔＦｏｒＮｏＡｃｃｅｓｓ（  ）の処理が終了すると、クライアントメインスレッドに対して、接続可能メッセージ８０３を発行する。
【００６１】
クライアントメインスレッド８２では、接続可能メッセージ８０３を受信すると、電子機器側の操作部を用いるクライアントアプリケーション（第１のアプリケーション））に基づいて、デジタルカメラ２０との接続処理８３を行い、終了後に接続完了メッセージ８０４をクライアント監視スレッド８１に発行する。
【００６２】
クライアント監視スレッド８１では、接続完了メッセージ８０４を受信すると、サーバーオブジェクトの関数ＷａｉｔＦｏｒＡｃｃｅｓｓ（  ）を実行する（８０５）。これは、接続セッションを開始しようとする他のクライアント（例えば前述の第２のクライアントアプリケーションに相当する）、つまり、接続処理を要求する他のクライアントが現れるまで制御を戻さない関数である。詳細は後述する。
【００６３】
接続セッションを開始しようとするクライアントが現れると、サーバーはＷａｉｔＦｏｒＡｃｃｅｓｓ（  ）を終了し、制御をクライアント監視スレッドに戻す（８０６）。クライアント監視スレッド８１は、ＷａｉｔＦｏｒＡｃｃｅｓｓ（  ）の処理が戻ると、クライアントメインスレッド８２に対して切断要求メッセージ８０７を発行する。
【００６４】
クライアントメインスレッドは、切断要求メッセージ８０７を受信すると、デジタルカメラへのアクセスを切断する処理を行い（８５）、切断処理が終了すると切断処理終了メッセージをクライアント監視スレッドに対して発行する。
【００６５】
これによって、パーソナルコンピュータ側の操作部を用いるクライアントアプリケーション（第２のアプリケーション）が起動可能になり、複数のアプリケーションによるデバイスへの同時アクセスなどで動作が不安定になる不具合を軽減できる。
【００６６】
以上のように構成することで、例えばデジタルカメラをＰＣに接続した場合、手元に持っているであろうデジタルカメラから操作可能にシステムを構成しておくことが出来るとともに、ＰＣからの操作をしようとする場合には、ＰＣ側の操作によって制御可能なクライアントアプリケーションに切り替えることで、上述したような不具合の発生を防ぐことが出来る。
【００６７】
特に複数のアプリケーションが同時に起動しているタイミングを減らすことが出来、複数の操作部からの操作を受けて不具合が発生したり、使用者がどの操作部をつかったらいいかがわかりにくくなったりする不都合を減少させることが出来る。
【００６８】
なお、説明するまでもないが、上述の第１のアプリケーションと第２のアプリケーションの接続順を入れ替えてもよいし、交互にアプリケーションを切り替えてもよい。
【００６９】
また、上述したようなクライアントアプリケーションの種類には限らず、種々のアプリケーションを適用してもよいが、特にユーザ操作を受け付ける操作部がアプリケーションによって変わる場合には、本願のようにアプリケーションを切り替えるのが混乱がなく有効である。
【００７０】
図９に、サーバーオブジェクトの関数ＷａｉｔＦｏｒＮｏＡｃｃｅｓｓ（  ）の動作を説明するフローチャートを示す。
【００７１】
まず、ステップＳ１０で、接続セッション中のクライアントが存在するかを調べる。具体的には、先に述べた接続セッションクライアントリストを調べればよい。
【００７２】
接続セッション中のクライアントが存在する場合には、再びステップＳ１０を実行し、監視を続ける。一方、接続セッション中のクライアントが存在しない場合には、ステップＳ２０に処理を移す。
【００７３】
ステップＳ２０では、この関数の呼び出しもとのクライアントに正常値を返し、処理を終了する。
【００７４】
これらの処理により、サーバーオブジェクトの関数ＷａｉｔＦｏｒＮｏＡｃｃｅｓｓ（  ）は、接続セッション中のクライアント、つまり、そのサーバーオブジェクトを使用してデジタルカメラにアクセスしているクライアントが存在しなくなるまで制御を返さないことになる。
【００７５】
図１０に、サーバーオブジェクトの関数ＷａｉｔＦｏｒＡｃｃｅｓｓ（  ）の動作を説明するフローチャートを示す。
【００７６】
まず、ステップＳ１０で、サーバーオブジェクトに対して、クライアントからの接続セッション開始要求が来ているかを調べる。接続セッション開始要求が来ていない場合には、再びステップＳ１０を実行し、監視を続ける。一方、接続セッション開始要求が来ている場合には、ステップＳ２０に処理を移す。
【００７７】
ステップＳ２０では、この関数の呼び出しもとのクライアントに正常値を返し、処理を終了する。
【００７８】
これらの処理により、サーバーオブジェクトの関数ＷａｉｔＦｏｒＡｃｃｅｓｓ（  ）は、そのサーバーオブジェクトを使用してデジタルカメラにアクセスしているクライアントが新規に現れるまで、制御を返さないことになる。
【００７９】
以上の処理により、他のクライアントからのアクセスがないときにのみ、デジタルカメラに対して接続するようなクライアントアプリケーションの作成が容易に可能となる。
【００８０】
以上、説明してきたように、本発明実施例では、デジタルカメラにアクセスするソフトウェアをクライアント／サーバー形式で構築することにし、クライアントをグループに分割し、各グループがアクセスする専用のサーバーを儲けている。また、サーバーにクライアントの出現、消滅を監視する機能を設けており、これを利用することにより、グループごとに、そのグループに含まれるクライアントアプリケーションの一つを特別なものとすることが容易に可能となる。たとえば、他のアプリケーションのデバイスへのアクセスを阻害せずに排他的に動作し、自動的にデータをダウンロードするようなアプリケーションの作成が容易になる。
【００８１】
［他の実施の形態］
本発明の目的は前述したように、実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００８２】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。
【００８３】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施例の機能が実現される場合も含む。
【図面の簡単な説明】
【００８４】
【図１】本発明実施例でのシステムの概略構成図である。
【図２】本発明実施例でのシステムの機能ブロック図を示す。
【図３】本発明実施例でのアプリケーションオブジェクトの構成図である。
【図４】クライアントが接続するサーバーを決定する動作の第一の実施例を示すフローチャートである。
【図５】サーバー起動時の動作の第一の実施例を示すフローチャートである。
【図６】クライアントが接続するサーバーを決定する動作の第二の実施例を示すフローチャートである。
【図７】サーバー管理システムの動作の実施例を示すフローチャートである。
【図８】本発明実施例でのクライアントオブジェクト、サーバーオブジェクトの動作を示すシーケンス図である。
【図９】本発明実施例でのサーバーオブジェクトでのクライアントの消滅を監視する動作を示すフローチャートである。
【図１０】本発明実施例でのサーバーオブジェクトでのクライアントの出現を監視する動作を示すフローチャートである。
【図１１】本発明実施例でのサーバー間のコマンド排他制御での動作を示すフローチャートである。
【図１】
2005216101.tif 000003
【図２】
2005216101.tif 000004
【図３】
2005216101.tif 000005
【図４】
2005216101.tif 000006
【図５】
2005216101.tif 000007
【図６】
2005216101.tif 000008
【図７】
2005216101.tif 000009
【図８】
2005216101.tif 000010
【図９】
2005216101.tif 000011
【図１０】
2005216101.tif 000012
【図１１】
2005216101.tif 000013