(57)【要約】【課題】複数のインターフェースを並列的に制御可能な一の制御手段の初期化処理を、情報処理装置と一のインターフェースを介して接続される一の外部装置との間でなされる処理に影響を与えることなく実行可能な情報処理装置及びプログラムを提供すること。【解決手段】外部装置と接続可能な同一種のＵＳＢ端子３８を複数備えた複合機１０であって、ＵＳＢホストドライバと、ＵＳＢ端子３８の制御指令を出力する上位アプリケーションと、ＵＳＢ端子３８に対する制御を検出する実行検出手段と、ＵＳＢ端子３８に対する制御終了を検出する終了検出手段と、通信状態の異常を検出する異常検出手段と、ＵＳＢホストドライバの初期化をする初期化手段と、ＵＳＢホストドライバの初期化指令を入力する操作パネル３５と、終了の検出と、初期化指令の入力と、異常の検出と、を条件として、初期化手段による初期化を実行する初期化制御手段と、を備える。【選択図】図２
2008085554.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と接続可能な同一種のインターフェースを複数備えた情報処理装置であって、
複数の前記インターフェースを並列的に制御可能な第１制御手段と、
前記第１制御手段に対して、前記インターフェースの制御に係る指令を出力する第２制御手段と、
前記第１制御手段による一のインターフェースに対する制御を検出する実行検出手段と、
前記実行検出手段による前記第１制御手段の制御が検出されたことを条件として、前記第２制御手段の制御に係る指令により実行される前記第１制御手段の前記一のインターフェースに対する制御の終了を検出する終了検出手段と、
前記第１制御手段による他のインターフェースに対する制御に係る異常を検出する異常検出手段と、
前記第１制御手段の初期化を実行する初期化手段と、
前記第１制御手段の初期化指令が入力される入力手段と、
前記終了検出手段による終了の検出と、前記入力手段による初期化指令の入力と、前記異常検出手段による前記異常の検出と、を条件として、前記初期化手段による初期化を実行する初期化制御手段と、を備えたことを特徴とする情報処理装置。
【請求項２】
前記異常検出手段による前記異常の検出を条件として、前記第２制御手段による前記第１制御手段に対する指令を禁止する禁止手段を備えていることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
外部装置と接続可能な同一種のインターフェースを複数備えた情報処理装置を制御するコンピュータが読み取り可能なプログラムであって、
前記コンピュータを、
複数の前記インターフェースを並列的に制御可能な第１制御手段と、
前記第１制御手段に対して、前記インターフェースの制御に係る指令を出力する第２制御手段と、
前記第１制御手段による一のインターフェースに対する制御を検出する実行検出手段と、
前記実行検出手段による前記第１制御手段の制御が検出されたことを条件として、前記第２制御手段の制御に係る指令により実行される前記第１制御手段の前記一のインターフェースに対する制御の終了を検出する終了検出手段と、
前記第１制御手段による他のインターフェースに対する制御に係る異常を検出する異常検出手段と、
前記第１制御手段の初期化を実行する初期化手段と、
前記第１制御手段の初期化指令が入力される入力手段と、
前記終了検出手段による終了の検出と、前記入力手段による初期化指令の入力と、前記異常検出手段による前記異常の検出と、を条件として、前記初期化手段による初期化を実行する初期化制御手段と、して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部装置と接続可能な同一種のインターフェースを複数備えた情報処理装置に係るものである。
【背景技術】
【０００２】
情報処理装置が備えていない機能を実行すべく、所定のプログラムによって制御され、外部装置との接続を可能とするインターフェースを備えた、情報処理装置が各種提案されている。例えば、ＵＳＢ端子を備えた画像処理装置が提案されている（例えば、特許文献１参照）。
なお、このような情報処理装置において、同一種のインターフェースが、複数個備えられているものも存在する。
【特許文献１】特開２００５−１１００８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ここで、情報処理装置に、同一種のインターフェースが複数備えられている場合、情報処理装置の利用者は、情報処理装置に複数の外部装置を、これらインターフェースを介して接続し、利用することとなる。かかる場合、一の外部装置を利用している際、他の外部装置の利用によって、このインターフェースを制御する所定のプログラム（制御手段）に、異常が生じた等の理由により、このプログラムの初期化が必要になることある。
【０００４】
本発明は、複数のインターフェースを並列的に制御可能な一の制御手段の初期化処理を、情報処理装置と一のインターフェースを介して接続される一の外部装置との間でなされる処理に影響を与えることなく実行可能な情報処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
前記目的を達成するために、本発明による情報処理装置、及びプログラムは以下のような特徴を有する。
（１）外部装置と接続可能な同一種のインターフェースを複数備えた情報処理装置であって、複数の前記インターフェースを並列的に制御可能な第１制御手段と、前記第１制御手段に対して、前記インターフェースの制御に係る指令を出力する第２制御手段と、前記第１制御手段による一のインターフェースに対する制御を検出する実行検出手段と、前記実行検出手段による前記第１制御手段の制御が検出されたことを条件として、前記第２制御手段の制御に係る指令により実行される前記第１制御手段の前記一のインターフェースに対する制御の終了を検出する終了検出手段と、前記第１制御手段による他のインターフェースに対する制御に係る異常を検出する異常検出手段と、前記第１制御手段の初期化を実行する初期化手段と、前記第１制御手段の初期化指令が入力される入力手段と、前記終了検出手段による終了の検出と、前記入力手段による初期化指令の入力と、前記異常検出手段による前記異常の検出と、を条件として、前記初期化手段による初期化を実行する初期化制御手段と、を備えたことを特徴とする。
【０００６】
（２）前記異常検出手段による前記異常の検出を条件として、前記第２制御手段による前記第１制御手段に対する指令を禁止する禁止手段を備えていることを特徴とする（１）に記載の情報処理装置。
【０００７】
（３）外部装置と接続可能な同一種のインターフェースを複数備えた情報処理装置を制御するコンピュータが読み取り可能なプログラムであって、前記コンピュータを、複数の前記インターフェースを並列的に制御可能な第１制御手段と、前記第１制御手段に対して、前記インターフェースの制御に係る指令を出力する第２制御手段と、前記第１制御手段による一のインターフェースに対する制御を検出する実行検出手段と、前記実行検出手段による前記第１制御手段の制御が検出されたことを条件として、前記第２制御手段の制御に係る指令により実行される前記第１制御手段の前記一のインターフェースに対する制御の終了を検出する終了検出手段と、前記第１制御手段による他のインターフェースに対する制御に係る異常を検出する異常検出手段と、前記第１制御手段の初期化を実行する初期化手段と、前記第１制御手段の初期化指令が入力される入力手段と、前記終了検出手段による終了の検出と、前記入力手段による初期化指令の入力と、前記異常検出手段による前記異常の検出と、を条件として、前記初期化手段による初期化を実行する初期化制御手段と、して機能させるためのプログラム。
【発明の効果】
【０００８】
このような特徴を有する本発明による情報処理装置、及びプログラムにより、以下のような作用、効果が得られる。
本願の（１）に係る発明によれば、複数のインターフェースを並列的に制御可能な第１制御手段の初期化処理を、情報処理装置と一のインターフェースを介して接続される一の外部装置との間でなされる処理に影響を与えることなく実行可能な情報処理装置を得ることができる。
なお、第１制御手段の異常状態を未然に防止可能であるため、情報処理装置が実行する処理の効率を高めることができる。
【０００９】
本願の（２）に係る発明によれば、第１制御手段を異常状態から早急に回復可能であるとともに、これにより、第１制御手段による制御の再開が必要な場合、正常状態での制御を早期に実行することができる。
【００１０】
本願の（３）に係る発明によれば、（１）に係る情報処理装置を実現可能なプログラムを得ることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施例について図面を用いて説明する。
まず、複合機１０の構成から説明を行う。
図１には、本実施例の複合機の構成図を示す。
情報処理装置にあたる複合機１０の構成は、図１に示すようにＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ＥＥＰＲＯＭ２４がバス２５に接続されており、また、プリンタ３１、スキャナ３２、ＮＣＵ３３、モデム３４、操作パネル３５、ＬＣＤ３６、シリアルＩ／Ｆ３７、ＵＳＢ端子３８等もバス２５に接続されている。
ＣＰＵ２１は中央演算処理装置（ＣＰＵ：Central Processing Unit）であり、様々な計算処理を行うことが出来る。複合機１０で使用するプログラムもＣＰＵ２１で動作することになる。
ＲＯＭ２２、ＲＡＭ２３、ＥＥＰＲＯＭ２４は、記憶手段でありプログラムやデータを記憶する場所である。基本的なプログラムなどが格納され、上書きできず読み出しだけのもの、書き込み可能なもの等がそれぞれの用途によって使い分けられる。
【００１２】
プリンタ３１はデータを印字する手段であり、インクを用いて印刷媒体に印刷することが可能である。なお、プリンタ３１はトナーを用いて印刷するレーザープリンタであっても良い。
スキャナ３２は画像を読みとる手段であり、印刷媒体に印刷された文字や画像を読みとることが可能である。
ＮＣＵ３３及びモデム３４は外部と通信するための手段であり、電話回線等に接続されてＦＡＸデータなどを受け取ることが出来る。
操作パネル３５は使用者が様々な指示を複合機１０に与えることが出来る操作手段であり、複数のボタンからなる。本実施例は、この操作パネル３５の中にリフレッシュボタンＲを備えているものとする。
ＬＣＤ３６は、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）であり情報を表示する手段である。なお、ＬＣＤ３６はタッチパネル方式を採用し、操作手段の一部を兼ねても良い。
【００１３】
シリアルＩ／Ｆ３７は、シリアルインターフェース（Serial Interface）でありデータを１ビット単位で転送する接続手段である。ＲＳ―２３２Ｃ、ＵＳＢ、ＩＥＥＥ１３９４等がシリアルインターフェースとしては代表的であるが、本実施例のシリアルＩ／Ｆ３７には説明の都合上、ＵＳＢ端子は含んでいないものとする。
ＵＳＢ端子３８は、ＵＳＢ（Universal Serial Bus）の規格に沿った接続手段であり、外部装置であるＵＳＢデバイスを接続可能なインターフェースである。複合機１０には複数のＵＳＢ端子３８が備えられており、便宜上、第１ＵＳＢ端子３８ａと第２ＵＳＢ端子３８ｂの２つを備えているものとする。
複合機１０の備えるＵＳＢ端子３８に接続されているデバイスは、図１に示すように、カメラ４１と無線ＬＡＮモジュール４２の２つのデバイスである。
カメラ４１はデジタルスチルカメラである。本実施例ではカメラ４１はＣＩＰＡ規格ＤＣ−００１（以下ピクトブリッジという）に準拠しており、複合機１０と接続してピクトブリッジの規格での印刷が可能であるものとする。
無線ＬＡＮモジュール４２は有線ケーブル以外の伝達経路を利用し、ＩＥＥＥ８０２．１１ｂ等の規格に基づく通信方式を採用して無線通信を行うことの出来るＬＡＮのモジュールである。
【００１４】
複合機１０に備える第１ＵＳＢ端子３８ａに、外部装置であるカメラ４１を接続して、カメラ４１に格納される画像データ等を印刷することが可能である。また、第２ＵＳＢ端子３８ｂに無線ＬＡＮモジュール４２を接続することで、複合機１０に対してパーソナルコンピュータであるＰＣ５０側に接続した別のＰＣ側無線ＬＡＮモジュール５１と通信が可能で、例えばＰＣ５０側から印刷処理が指示された場合に、複合機１０の備えるプリンタ３１によってＰＣ５０のデータが印刷可能である。
なお、本実施例では複合機１０はＵＳＢ端子３８を複数備えることにしているが、ＵＳＢ端子３８は１つしか備えない場合でも、ホストとなるＵＳＢ端子３８にノードとなるハブデバイスを接続して、複数の外部装置を接続することは可能である。また、ＵＳＢ端子３８に接続されるカメラ４１及び無線ＬＡＮモジュール４２はバスパワー駆動のものも、セルフパワー駆動のものも、どちらでも使えるものとする。
また本実施例では、第１ＵＳＢ端子３８ａに無線ＬＡＮモジュール４２を接続し、第２ＵＳＢ端子３８ｂにカメラ４１を接続しても同じ効果を奏するが、説明の便宜上、第１ＵＳＢ端子３８ａにカメラ４１が接続され、第２ＵＳＢ端子３８ｂに無線ＬＡＮモジュール４２が接続されるものとする。
【００１５】
複合機１０の備えるＲＯＭ２２には、ＵＳＢ端子３８を制御する第１制御手段にあたるＵＳＢホストドライバが用意され、ＣＰＵ２１で動作するプログラムによって利用される。このＵＳＢホストドライバは、ＵＳＢ端子３８に接続されるカメラ４１及び無線ＬＡＮモジュール４２との接続状態を、図示しないホストコントローラを用いて制御することができる。
ＵＳＢホストドライバに制御されることで、ＵＳＢ端子３８にＵＳＢ接続されるカメラ４１及び無線ＬＡＮモジュール４２は、複合機１０で同時に使用することが可能である。一般的にはＵＳＢホストドライバは１つしか用意されないため、瞬間的には１個のデータの送受信しか制御できないが、タイムシェアをすることで、見かけ上は幾つかの通信線で繋がって並列的に処理が出来るように制御されている。
ただし複合機１０とカメラ４１と接続してその機能を使用するためにはカメラ４１用のアプリケーションが必要であり、無線ＬＡＮモジュール４２と接続してその機能を使用するためには、無線ＬＡＮモジュール４２用のアプリケーションが必要となる。ここではカメラ４１用のアプリケーションを第１上位アプリＡ１とし、無線ＬＡＮモジュール４２用のアプリケーションを第２上位アプリＡ２とする。第２制御手段にあたるこれらのアプリケーションは、ＲＯＭ２２に記憶されているものとする。
【００１６】
本実施例は上記のような構成となっているので、以下に説明する作用を示す。
図２には、本実施例の複合機１０がＵＳＢ端子３８にデバイスを接続して使用する場合のメインルーチンのフローを示す。
複合機１０の電源が入ると、フローがスタートする。
Ｓ１では、ＵＳＢホストドライバの初期化処理を行う。そしてＳ２へ移行する。
Ｓ２では、Ｓ１で初期化処理が行われたので、ＵＳＢホストドライバが使用可能となる。そしてＳ３に移行する。
Ｓ３では、ＵＳＢ端子３８に外部装置が接続されたかを監視する。
ＵＳＢ端子３８に接続される外部装置は、本実施例ではカメラ４１と無線ＬＡＮモジュール４２の２つであり、これらのデバイスは複合機１０の電源投入前から接続されていても構わないし、電源投入後接続しても構わない。複合機１０にカメラ４１と無線ＬＡＮモジュール４２が電源投入前からＵＳＢ端子３８に接続されていれば、Ｓ２でＵＳＢホストドライバが作動状態になった後に、個々に接続を行う。一方、電源投入後接続された場合は、ＵＳＢ端子３８にカメラ４１又は無線ＬＡＮモジュール４２が接続された段階で、ＵＳＢホストドライバが接続処理を行う。
Ｓ３では、電源投入後にＵＳＢ端子３８にカメラ４１又は無線ＬＡＮモジュール４２が新たに接続されたかを確認する。そして、新たに接続された状態となっていれば（Ｓ３：Ｙｅｓ）、Ｓ４に移行する。一方、ＵＳＢ端子３８にデバイスが接続されなければ（Ｓ３：Ｎｏ）、Ｓ５に移行する。なお、ＵＳＢホストドライバは、ＵＳＢ端子３８にカメラ４１又は無線ＬＡＮモジュール４２が接続されたことで、エンドポイントの設定とパイプの接続が行われ、コントロール転送を使ってコンフィギュレーションを実行する。
【００１７】
Ｓ４では、上位アプリとの接続処理を行うために、「上位アプリ接続処理」のサブルーチンに移行して、実行する。そして、Ｓ６に移行する。
Ｓ５では、ＵＳＢホストドライバに接続された外部装置があるかどうかの確認を行う。外部装置であるデバイスがＵＳＢ端子３８に接続されていなければ（Ｓ５：Ｎｏ）、Ｓ２に移行し、ＵＳＢ端子３８に接続された外部装置が既にあれば、Ｓ６に移行する。なお、電源投入前からカメラ４１等がＵＳＢ端子３８に接続されている場合（Ｓ５：Ｙｅｓ）、事前にＳ４と同一の処理が実行されている。
Ｓ６では、上位アプリからの要求を処理する。第１ＵＳＢ端子３８ａに接続されているカメラ４１からは、ピクトブリッジの仕様に従ってカメラ４１内に記憶されているデータの印刷を第１上位アプリＡ１から指示され、複合機１０はカメラ４１内に保持されたデータの印刷を行う。又、第２ＵＳＢ端子３８ｂに接続されている無線ＬＡＮモジュール４２からは、ＰＣ５０からＰＣ側無線ＬＡＮモジュール５１を介して印刷を指示され、無線ＬＡＮモジュール４２が受け取ったデータを第２上位アプリＡ２の働きで印刷する。このように、ＵＳＢ端子３８に接続されたデバイスの実行を行う。そしてＳ７に移行する。
これら第１上位アプリＡ１及び第２上位アプリＡ２のアプリケーションは、直接ＵＳＢの接続を制御せず、ＵＳＢホストドライバに指令を出して外部機器であるカメラ４１及び無線ＬＡＮモジュール４２を使用する。
【００１８】
Ｓ７では、ＵＳＢホストドライバで異常が検知されたかをチェックする。ここで検知される異常とは、ＵＳＢ端子３８に接続されるカメラ４１又は無線ＬＡＮモジュール４２との接続状態の異常を想定しており、例えばカメラ４１との通信が成り立たなくなってしまった状況であったり、無線ＬＡＮモジュール４２と複合機１０との通信にエラーが発生して出来なくなってしまうような状況であったりした場合等があげられる。ただし、カメラ４１及び無線ＬＡＮモジュール４２について物理的障害が起こった場合は想定していない。あくまでも複合機１０の電源を落として再起動した結果、機能が復旧するような異常を対象としている。
このような異常が検知されれば（Ｓ７：Ｙｅｓ）、Ｓ１１に移行し、異常が検知されなければ（Ｓ７：Ｎｏ）、Ｓ８に移行する。なおＳ７では、異常検知した旨を使用者に警告するためにＬＣＤ３６でメッセージを出すなどの警告手段を実行しても良い。
Ｓ８では、外部装置であるカメラ４１又は無線ＬＡＮモジュール４２とＵＳＢ端子３８との接続状態が解除されたかどうかの判断を行う。Ｓ８では物理的切断を監視しており、ＵＳＢ端子３８で接続されるカメラ４１及び無線ＬＡＮモジュール４２はプラグアンドプレイでの接続が可能であるため、複合機１０の電源が落とされる前にＵＳＢ端子３８から外されてしまう場合が考えられ、Ｓ８ではこれを監視する。
この場合の物理的切断とは、ＵＳＢ端子３８からカメラ４１又は無線ＬＡＮモジュール４２に接続されるコネクタを抜き、切り離される状態である。ＵＳＢの規格では、ケーブルが電源線も兼ねているため、常に物理的切断を監視が可能であり、物理的切断がされればすぐにその状態が検出されることになる。
外部装置が切断されれば（Ｓ８：Ｙｅｓ）、Ｓ９に移行し、切断されなければ（Ｓ８：Ｎｏ）、Ｓ２に移行する。
【００１９】
Ｓ９では、上位アプリとの切断処理を行うために、「上位アプリとの切断処理」のサブルーチンを実行する。そしてＳ１０に移行する。
Ｓ１０では、複合機１０の電源がＯＦＦされたかどうかを確認する。電源がＯＦＦされれば（Ｓ１０：Ｙｅｓ）、フローは終了する。一方、電源がＯＦＦされなければ（Ｓ１０：Ｎｏ）、Ｓ２に移行して再び同じルーチンを再開する。
Ｓ１１では、ＵＳＢホストドライバリフレッシュ機能が選択されたかどうかについてチェックを行う。ＵＳＢホストドライバリフレッシュ機能は、ＵＳＢホストドライバを初期化する機能であり、本実施例では操作パネル３５に備えるリフレッシュボタンＲがこの機能を備えている。リフレッシュボタンＲが押され、リフレッシュ機能が選択されれば（Ｓ１１：Ｙｅｓ）、Ｓ１２に移行し、選択されなければ（Ｓ１１：Ｎｏ）、Ｓ２に移行する。リフレッシュボタンＲが操作パネル３５に用意されない場合は、ＬＣＤ３６に警告画面を出し、操作パネル３５に備える他のキーで選択するかしないかを促しても良い。また、選択するかしないかをユーザーが指定しない場合には、タイムアウト処理を行い、一定時間経過後に自動的にリフレッシュ機能を実行させても良い。
Ｓ１２では、ＵＳＢホストドライバをリフレッシュするための「ＵＳＢホストリフレッシュ処理」のサブルーチンを実行し、Ｓ２に移行する。
このように、複合機１０の電源が投入されてから電源が切られるまでのＵＳＢホストドライバに関するルーチンは実施される。
【００２０】
つぎに、「上位アプリ接続処理」のサブルーチンを説明する。
図３は、本実施例の「上位アプリ接続処理」のサブルーチンのフローを示している。
「上位アプリ接続処理」では、ＵＳＢホストドライバが検出したＵＳＢ端子３８への外部機器の接続をもとに、実際に接続した外部機器であるカメラ４１又は無線ＬＡＮモジュール４２が複合機１０で使用可能とするために、対応するアプリケーションとの接続認証を行っている。このサブルーチンで、第１上位アプリＡ１又は第２上位アプリＡ２は、対応する外部機器がＵＳＢ端子３８に接続されたことを、ＵＳＢホストドライバに知らされることになる。
Ｓ１５では、外部装置であるデバイスに対応するのが第１上位アプリＡ１かどうかをチェックする。前述したように、繋がれるデバイスによって必要とされるアプリケーションは異なる。本実施例では、カメラ４１に必要なアプリケーションを第１上位アプリＡ１、無線ＬＡＮモジュール４２に必要なアプリケーションを第２上位アプリＡ２としており、ＵＳＢ端子３８に外部機器が接続されると、外部機器が備えるデバイスクラスから上位アプリが選択される。ここで、第１上位アプリＡ１に対応するカメラ４１が接続されれば（Ｓ１５：Ｙｅｓ）、Ｓ１６に移行する。一方、接続された外部装置に対応するアプリケーションが第１上位アプリＡ１でなければ（Ｓ１５：Ｎｏ）、Ｓ１８に移行する。
Ｓ１６では、カメラ４１が第１ＵＳＢ端子３８ａに接続されたことをＵＳＢホストドライバが検出し、第１上位アプリＡ１に通知する。そしてＳ１７に移行する。
【００２１】
Ｓ１７では、第１上位アプリＡ１が、第１ＵＳＢ端子３８ａにカメラ４１が接続された場合に必要な接続処理を行う。例えば、カメラ４１にピクトブリッジ印刷の準備が出来た旨の通知をし、印刷が行える準備をするように指示する等の作業を行う。そしてＳ１８に移行する。
Ｓ１８では、外部装置であるデバイスに対応するのが第２上位アプリＡ２かどうかをチェックする。接続された外部装置が無線ＬＡＮモジュール４２であれば、ここで第２上位アプリＡ２に対応すると判断されるので（Ｓ１８：Ｙｅｓ）、Ｓ１９に移行する。一方、接続された外部装置に対応するアプリケーションが第２上位アプリＡ２でなければ、このサブルーチンを終了する。
Ｓ１９では、無線ＬＡＮモジュール４２が第２ＵＳＢ端子３８ｂに接続されたことＵＳＢホストドライバが検出し、を第２上位アプリＡ２に通知する。そしてＳ２０に移行する。
Ｓ２０では、第２上位アプリＡ２によって、無線ＬＡＮモジュール４２が接続された場合に必要な接続処理を行う。そして、無線ＬＡＮモジュール４２に接続通知を行う。そして、このサブルーチンを終了する。
【００２２】
このように、「上位アプリ接続処理」のサブルーチンでは、接続された外部装置によって、対応するアプリケーションが選択され、それぞれに必要な接続処理を実行する。なお、本実施例ではカメラ４１と無線ＬＡＮモジュール４２の接続を説明するため、第１上位アプリＡ１と第２上位アプリＡ２だけしか例示していないが、接続可能なデバイスのデバイスクラスはこの他にも多数あるため、それぞれ接続される外部装置のデバイスクラス毎にアプリケーションを選択して接続処理を行う必要がある。
【００２３】
つぎに、「上位アプリ切断処理」のサブルーチンを説明する。
図４は、本実施例の「上位アプリ切断処理」のサブルーチンのフローを示している。
この「上位アプリ切断処理」のサブルーチンでは、図２のＳ８でＵＳＢホストドライバがＵＳＢ端子３８から外部装置であるカメラ４１又は無線ＬＡＮモジュール４２が物理的に抜かれたことを検出したので、対応するアプリケーションにそれぞれ切断されたことを通知する。第１上位アプリＡ１及び第２上位アプリＡ２は、この切断の通知を受けて接続状態から抜け出し接続待機状態に戻る。
Ｓ２５では、外部装置であるデバイスに対応するのが第１上位アプリＡ１かどうかをチェックする。第１上位アプリＡ１に対応するカメラ４１の接続が切断されたと判断された場合（Ｓ２５：Ｙｅｓ）、Ｓ２６に移行する。一方、切断された外部装置に対応するアプリケーションが第１上位アプリＡ１でなければ（Ｓ２５：Ｎｏ）、Ｓ２８に移行する。
Ｓ２６では、カメラ４１が第１ＵＳＢ端子３８ａから外されたことをＵＳＢホストドライバが第１上位アプリＡ１に通知する。そしてＳ２７に移行する。
【００２４】
Ｓ２７では、第１上位アプリＡ１がカメラ４１との接続が切断された旨の通知を受けて、接続待機状態に移行する。
Ｓ２８では、外部装置であるデバイスに対応するのが第２上位アプリＡ２かどうかをチェックする。切断された外部装置が無線ＬＡＮモジュール４２であれば、ここで第２上位アプリＡ２に対応すると判断されるので（Ｓ２８：Ｙｅｓ）、Ｓ２９に移行する。一方、接続された外部装置に対応するアプリケーションが第２上位アプリＡ２でなければ、このサブルーチンを終了する。
Ｓ２９では、無線ＬＡＮモジュール４２が第２ＵＳＢ端子３８ｂから外されたことをＵＳＢホストドライバから第２上位アプリＡ２に通知し、アプリケーションの実行を行う。そしてＳ３０に移行する。
Ｓ３０では、第２上位アプリＡ２が無線ＬＡＮモジュール４２との接続が切断された旨の通知を受けて、接続待機状態に移行する。そして、このサブルーチンを終了する。
【００２５】
このように、「上位アプリ切断処理」のサブルーチンでは、図３に示した「上位アプリ接続処理」と同様に、接続が切断されたデバイスのデバイスクラス毎に対応するアプリケーションが異なるために、異なる処理を行う。また、本実施例では例示しないが、第１上位アプリＡ１及び第２上位アプリＡ２以外の上位アプリケーションが使用されていれば、別の処理を行うようなフローにすればよい。
【００２６】
つぎに、「ＵＳＢホストリフレッシュ処理」のサブルーチンを説明する。
図５は、本実施例の「ＵＳＢホストリフレッシュ処理」のサブルーチンのフローを示している。
「ＵＳＢホストリフレッシュ処理」のサブルーチンでは、アプリケーションに対応した処理をするために、異常検出したアプリケーションを判断する。図２に示したＳ７で異常検出し、Ｓ８でリフレッシュ機能が選択された場合、第１上位アプリＡ１及び第２上位アプリＡ２にそれぞれ別の処理を必要とするので、ここでカメラ４１か無線ＬＡＮモジュール４２のどちら側との接続に問題が出たかを判断する必要がある。
Ｓ３５では、第１上位アプリＡ１で異常検出をしたかについてチェックを行っている。第１上位アプリＡ１で異常検出すれば（Ｓ３５：Ｙｅｓ）、Ｓ３６に移行し、異常検出したのが第１上位アプリＡ１でなければ（Ｓ３５：Ｎｏ）、Ｓ３７に移行する。
検出される異常として、例えば第１上位アプリＡ１がカメラ４１にデータを送信するように要求したにもかかわらず、カメラ４１からの返答が無くタイムアウトするなどの、通信が確立しなくなってしまうなどの通信障害が考えられる。通信制御を実際に行うのはＵＳＢホストドライバであるので、ＵＳＢホストドライバから第１上位アプリＡ１に通知され、第１上位アプリＡ１はカメラ４１との接続状態を把握している。
Ｓ３６では、「第１リフレッシュ処理」のサブルーチンを実行する。その後サブルーチンを終了する。
Ｓ３７では、「第２リフレッシュ処理」のサブルーチンを実行する。その後サブルーチンを終了する。
本実施例では上位アプリケーションは第１上位アプリＡ１と第２上位アプリＡ２の２種類しか用いていないので、第１上位アプリＡ１で異常検出した場合にはＳ３６で「第１リフレッシュ処理」を実行し、第２上位アプリＡ２で異常検出した場合にはＳ３７で「第２リフレッシュ処理」を実行する。
このように第１上位アプリＡ１と第２上位アプリＡ２で、異なるＵＳＢホストリフレッシュ処理を行う理由は、複合機１０と接続されているカメラ４１と無線ＬＡＮモジュール４２では、必要な終了処理が異なるためである。この点については以下に説明をする。
なお、本実施例では示していないが、第１上位アプリＡ１又は第２上位アプリＡ２以外の上位アプリケーションが動作している場合には、その上位アプリケーションに対応した処理をするようにすればよい。
【００２７】
つぎに、「第１リフレッシュ処理」のサブルーチンを説明する。
図６は、本実施例の「第１リフレッシュ処理」のサブルーチンのフローを示している。
「第１リフレッシュ処理」のサブルーチンでは、第１上位アプリＡ１と対応するカメラ４１との通信に障害が発生している状態であり、第２上位アプリＡ２と対応する無線ＬＡＮモジュール４２は正常に動作している。この状態で、ＵＳＢホストドライバを初期化するための処理を行う。
Ｓ４５では、第２上位アプリＡ２は動作しているかどうかをチェックする。第２上位アプリＡ２が動作していれば（Ｓ４５：Ｙｅｓ）、Ｓ４９に移行し、第２上位アプリＡ２が動作していなければ（Ｓ４５：Ｎｏ）、Ｓ４６に移行する。
ここで第２上位アプリＡ２が作動しているかどうかというのは、第２上位アプリＡ２が、第２ＵＳＢ端子３８ｂに無線ＬＡＮモジュール４２が接続されていることを認識し、接続状態にあるかどうかを示している。無線ＬＡＮモジュール４２が第２ＵＳＢ端子３８ｂに物理的に接続されていなければ、第２上位アプリＡ２は接続待機状態である。
【００２８】
Ｓ４６では、第１上位アプリＡ１に切断通知を行う。Ｓ２６ではＵＳＢホストドライバが、カメラ４１が第１ＵＳＢ端子３８ａから物理的に外されたことを第１上位アプリＡ１に通知しているが、ここではＵＳＢホストドライバを初期化するために、カメラ４１が第１ＵＳＢ端子３８ａに物理的に接続された状態で、第１上位アプリＡ１に切断通知を行う。そして、Ｓ４７に移行する。
Ｓ４７では、第１上位アプリＡ１によって、カメラ４１との接続が切断された場合に必要な切断処理を行う。そしてＳ４８に移行する。
Ｓ４８では、ＵＳＢホストドライバの初期化処理を行う。ＵＳＢホストドライバの初期化を行うことで、Ｓ７で検出された異常を解決することができる。すなわち、ＵＳＢ端子３８に接続されたカメラ４１及び無線ＬＡＮモジュール４２との接続を再取得するために、Ｓ１と同じ処理を行うのである。そしてＳ５２に移行する。
Ｓ４９では、第２上位アプリＡ２の機能が動作中であるかをチェックする。ここではＳ４５とは異なり、第２上位アプリＡ２の個々のコマンドが働いているかどうかをチェックする。例えば、ＰＣ５０の使用者がデータを複合機１０で印刷させようとしている場合には、ＰＣ側無線ＬＡＮモジュール５１から無線ＬＡＮモジュール４２に対して印刷指示を出すとともに、印刷データを送信する。無線ＬＡＮモジュール４２は、この印刷データを受信して第２上位アプリＡ２に印刷を行わせる。このように第２上位アプリＡ２のコマンドが動作中であれば（Ｓ４９：Ｙｅｓ）、コマンドが終了するまで待つ。一方、第２上位アプリＡ２が動作中でなければ（Ｓ４９：Ｎｏ）、Ｓ５０に移行する。
【００２９】
Ｓ５０では、第２上位アプリＡ２からの要求停止を行う。そしてＳ５１に移行する。
ＵＳＢドライバを初期化するためには、前述したように外部装置との接続状態を遮断する必要がある。したがって、本来ならば第２上位アプリＡ２に第２ＵＳＢ端子３８ｂと無線ＬＡＮモジュール４２との接続を遮断したという情報を与える必要があるが、切断通知を与えずに要求停止するように指示を出す。第２上位アプリＡ２に対してＵＳＢホストドライバに対する指令を行うことを禁止するのである。したがって、第２上位アプリＡ２は接続状態のままであり、無線ＬＡＮモジュール４２に対して切断処理を行わない。
Ｓ５１では、ＵＳＢホストドライバに残要求があるかをチェックする。ＵＳＢホストドライバは、第２上位アプリＡ２に対してＵＳＢホストドライバを介して無線ＬＡＮモジュール４２への要求を一時的に停止するように要求するが、この要求が満たされるまでここで待つことになる（Ｓ５１：Ｙｅｓ）。この要求が実行されて残要求が無くなれば（Ｓ５１：Ｎｏ）、Ｓ４６に移行する。
【００３０】
Ｓ５２では、第２上位アプリＡ２が動作しているかどうかの確認を行う。第２上位アプリＡ２はＳ４５からＳ４６に直接移行していれば動作していない状態であり、Ｓ４５からＳ４９に移行していれば動作中で、かつ要求を停止している一時停止の状態である。したがって、ここでチェックを行い、第２上位アプリＡ２が動作中であれば（Ｓ５２：Ｙｅｓ）、Ｓ５３に移行し、動作していなければ（Ｓ５２：Ｎｏ）、Ｓ５４に移行する。
Ｓ５３では、第２上位アプリＡ２からの要求を再開する。Ｓ５０で第２上位アプリＡ２の要求を一時的に停止しているので、障害になっていたカメラ４１との接続を切断し、ＵＳＢホストドライバを初期化処理した後に、第２上位アプリＡ２から無線ＬＡＮモジュール４２への要求を再開する。これにより、Ｓ５０で一時停止されていた第２上位アプリＡ２の処理はＳ５３で再開できることとなる。そしてＳ５４に移行する。
Ｓ５４では、第１上位アプリＡ１に接続通知を行う。カメラ４１を制御している第１上位アプリＡ１は、Ｓ４７でＵＳＢホストドライバを初期化するためにカメラ４１と第１ＵＳＢ端子３８ａとの接続を切断しているが、Ｓ４８でＵＳＢホストドライバの初期化が終わったので再接続を行う。そして、Ｓ５５に移行する。
Ｓ５５では、第１上位アプリＡ１に接続処理を指示する。
【００３１】
つぎに、「第２リフレッシュ処理」のサブルーチンを説明する。
図７は、本実施例の「第２リフレッシュ処理」のサブルーチンのフローを示している。
Ｓ６０では、第１上位アプリＡ１が動作しているかどうかのチェックを行う。第１上位アプリＡ１が作動していれば（Ｓ６０：Ｙｅｓ）、Ｓ６３に移行し、第１上位アプリＡ１が作動していなければ（Ｓ６０：Ｎｏ）、Ｓ６１に移行する。
ここで第１上位アプリＡ１が動作しているかどうかというのは、Ｓ４５での第２上位アプリＡ２の作動状況の確認と同様に、第１上位アプリＡ１が動作していれば、カメラ４１が第１ＵＳＢ端子３８ａに接続され、第１上位アプリＡ１は接続状態になっていることを意味し、第１上位アプリＡ１が動作していないことは、接続待機状態であることを意味する。
【００３２】
Ｓ６１では、第１上位アプリＡ１の機能が動作中かどうかのチェックを行う。ここではＳ６０と異なり、第１上位アプリＡ１が動作してカメラ４１からの指示でピクトブリッジ印刷しているかどうかをチェックする。動作中であれば（Ｓ６１：Ｙｅｓ）、終了するまで待機し、動作中でなければ（Ｓ６１：Ｎｏ）、Ｓ６２に移行する。
Ｓ６２では、ＵＳＢホストドライバに残要求があるかどうかのチェックを行う。ＵＳＢホストドライバは、第１上位アプリＡ１に対してカメラ４１への要求を一時的に停止するように要求するが、この要求が満たされるまでここで待つことになる（Ｓ６２：Ｙｅｓ）。この要求が実行されて残要求が無くなれば（Ｓ６２：Ｎｏ）、Ｓ６３に移行する。
Ｓ６３では、「上位アプリ切断処理」のサブルーチンを実行する。そしてＳ６４に移行する。
Ｓ６４では、ＵＳＢホストドライバの初期化処理を行う。そしてＳ６５に移行する。
Ｓ６５では、「上位アプリ接続処理」のサブルーチンを実行する。そして、サブルーチンを終了する。
【００３３】
本実施例は上述した作用を示すので、以下に説明するような効果を奏する。
複合機１０に備えるＵＳＢ端子３８には、外部装置であるカメラ４１又は無線ＬＡＮモジュール４２が接続されており、外部装置のいずれかとの接続状態に異常が発生した場合には、ＵＳＢホストドライバを初期化する必要がある。
ところで、無線ＬＡＮモジュール４２とＰＣ側無線ＬＡＮモジュール５１の接続は、ＰＣ５０側から行われる必要があるので、一端切断されてしまうと再接続するためにはＰＣ５０で再設定する必要がある。このため、接続状態が回復するまで無線ＬＡＮモジュール４２を使用することが出来ず、しばらくの間はＰＣ５０から複合機１０を使っての印刷は出来なくなってしまう。
しかし、無線ＬＡＮモジュール４２との接続は正常で、カメラ４１との接続に異常が発生した場合、本実施例の図６に示す「第１リフレッシュ処理」のサブルーチンを実行すれば、無線ＬＡＮモジュール４２は通信を維持したまま一時停止状態となり、接続状態を回復する必要がないので、ＰＣ５０からの印刷もリフレッシュ作業後すぐに再開できる。
【００３４】
ＵＳＢホストドライバの初期化自体はそれ程時間のかかる作業ではないが、無線ＬＡＮモジュール４２を初期化すると、ＰＣ５０と接続されるＰＣ側無線ＬＡＮモジュール５１との通信状態を初期化して回復するのには時間がかかる。
カメラ４１のように第１ＵＳＢ端子３８ａに接続されて、第１上位アプリＡ１からの指示で一方的に複合機１０側にデータを送る関係であれば、ＵＳＢホストドライバを初期化する際に、カメラ４１との接続状態を一旦解除してしまっても復帰するのに時間はかからないが、無線ＬＡＮモジュール４２のように通信状態を維持するためにＰＣ側無線ＬＡＮモジュール５１と相互に通信が行われているものである場合には、若干時間を要することになる。
このような正常に使用できている側の機能を停止して発生する待ち時間は、使用者によってストレスとなるので、待ち時間を必要とせずに複合機１０の使用ができれば、使用者は複合機１０を快適に使用することが可能となる。
すなわち、第１上位アプリＡ１が対応するカメラ４１との通信に障害が発生した場合は「第１リフレッシュ処理」を、第２上位アプリＡ２側が対応する無線ＬＡＮモジュール４２との通信に障害が発生した場合は「第２リフレッシュ処理」を、と上位アプリケーションによって異なる処理を行うことで、最適なＵＳＢホストドライバの初期化を行うことが可能となり、早急に異常状態から回復可能である。
【００３５】
また、ＵＳＢホストドライバを初期化するためには、ＵＳＢ端子３８とカメラ４１及び無線ＬＡＮモジュール４２との接続状態を解除し、第１上位アプリＡ１及び第２上位アプリＡ２を接続待機状態にする必要があるが、図６のＳ４９又は図７のＳ６１でアプリケーションが実行しているコマンドの終了を待つので、コマンドを中断してしまうようなことがない。例えば、ＰＣ５０側からデータの印刷を複合機１０側に指示していた場合、コマンドを中断すると、印刷媒体に途中まで印刷した印刷データが無駄になってしまうが、コマンドが終了するまで待つので、このような無駄が発生することがない。
また、無線ＬＡＮモジュール４２とＰＣ側無線ＬＡＮモジュール５１はパケット通信でデータの転送を行っているが、複合機１０の備えるリフレッシュボタンＲが押され、ＵＳＢホストドライバの初期化が指示された場合、コマンドが中断されることがあっては、無線ＬＡＮモジュール４２は正常にデータを受信したにもかかわらず、パケットデータを取りこぼすことも考えられるが、そのような事態も回避することが可能である。
すなわち、第１上位アプリＡ１が対応するカメラ４１との通信に異常が発生した場合に、ＵＳＢホストドライバの初期化が必要であっても、第２上位アプリＡ２が対応する無線ＬＡＮモジュール４２の処理に影響を与えることがない。
【００３６】
本実施例の構成、作用、効果は、以下に説明するような特徴を有する。
（１）カメラ４１又は無線ＬＡＮモジュール４２と接続可能な同一種のＵＳＢ端子３８を複数備えた複合機１０であって、複数のＵＳＢ端子３８を並列的に制御可能なＲＯＭ２２に記憶されるＵＳＢホストドライバと、ＵＳＢホストドライバに対して、ＵＳＢ端子３８の制御に係る指令を出力する第１上位アプリＡ１又は第２上位アプリＡ２と、ＵＳＢホストドライバによる第１ＵＳＢ端子３８ａに対する制御を検出する実行検出手段（ＣＰＵ２１で実現されるＳ３）と、実行検出手段によるＵＳＢホストドライバの制御が検出されたことを条件として、第１上位アプリＡ１の制御に係る指令により実行されるＵＳＢホストドライバの第１ＵＳＢ端子３８ａに対する制御の終了を検出する終了検出手段（ＣＰＵ２１で実現されるＳ４９〜Ｓ５１）と、ＵＳＢホストドライバによる第２ＵＳＢ端子３８ｂに対する制御に係る異常を検出する異常検出手段（ＣＰＵ２１で実現されるＳ７）と、ＵＳＢホストドライバの初期化を実行する初期化手段（ＣＰＵ２１で実現されるＳ１、Ｓ４８、Ｓ６４）と、ＵＳＢホストドライバの初期化指令が入力される操作パネル３５に備えられるリフレッシュボタンＲと、終了検出手段による終了の検出と、リフレッシュボタンＲによる初期化指令の入力と、異常検出手段による異常の検出と、を条件として、初期化手段による初期化を実行する初期化制御手段（ＣＰＵ２１で実現するＳ３５〜３７）と、を備えるので、複数のＵＳＢ端子３８を並列的に制御可能なＵＳＢホストドライバの初期化処理を、複合機１０と第２ＵＳＢ端子３８ｂを介して接続される無線ＬＡＮモジュール４２との間でなされる処理に影響を与えることなく実行可能な複合機１０を得ることができる。
なお、ＵＳＢホストドライバの異常状態を未然に防止可能であるため、複合機１０が実行する処理の効率を高めることができる。
【００３７】
（２）異常検出手段による異常の検出を条件として、第２上位アプリＡ２によるＵＳＢホストドライバに対する指令を禁止する禁止手段（ＣＰＵ２１で実現されるＳ５０）を備えていることを特徴とする（１）に記載の情報処理装置であるので、ＵＳＢホストドライバを異常状態から早急に回復可能であるとともに、これにより、ＵＳＢホストドライバによる制御の再開が必要な場合、正常状態での制御を早期に実行することができる。
【００３８】
（３）カメラ４１又は無線ＬＡＮモジュール４２と接続可能な同一種のＵＳＢ端子３８を複数備えた複合機１０を制御するＣＰＵ２１が読み取り可能なプログラムであって、ＣＰＵ２１を、複数のＵＳＢ端子３８を並列的に制御可能なＵＳＢホストドライバと、ＵＳＢホストドライバに対して、ＵＳＢ端子３８の制御に係る指令を出力する第２制御手段と、ＵＳＢホストドライバによる第１ＵＳＢ端子３８ａに対する制御を検出する実行検出手段（ＣＰＵ２１で実現されるＳ３）と、実行検出手段によるＵＳＢホストドライバの制御が検出されたことを条件として、第１上位アプリＡ１の制御に係る指令により実行されるＵＳＢホストドライバの第１ＵＳＢ端子３８ａに対する制御の終了を検出する終了検出手段（ＣＰＵ２１で実現されるＳ４９〜Ｓ５１）と、ＵＳＢホストドライバによる第２ＵＳＢ端子３８ｂに対する制御に係る異常を検出する異常検出手段（ＣＰＵ２１で実現されるＳ７）と、ＵＳＢホストドライバの初期化を実行する初期化手段（ＣＰＵ２１で実現されるＳ１、Ｓ４８、Ｓ６４）と、ＵＳＢホストドライバの初期化指令が入力される操作パネル３５に備えられるリフレッシュボタンＲと、終了検出手段による終了の検出と、リフレッシュボタンＲによる初期化指令の入力と、異常検出手段による異常の検出と、を条件として、初期化手段による初期化を実行する初期化制御手段（ＣＰＵ２１で実現するＳ３５〜３７）と、して機能させるためのプログラムであるので、（１）に係る複合機１０を実現可能なプログラムを得ることができる。
【００３９】
なお、本発明は前記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲で様々な変更が可能である。
例えば、図２乃至図７に示すフローはその処理の一例であって、プログラムの仕様によって手順を追加したり順序を変えたりすることを妨げない。
また、本実施例ではＵＳＢ端子３８は複合機１０に２つ備えられるものとして記載しているが、複合機１０に備えられるホストとなるＵＳＢ端子３８は１つで、ノードとなるデバイスハブで複数に分岐したり、ＵＳＢ端子３８を２以上備えたりすることを妨げない。
また、本実施例では情報処理装置の一例として複合機１０を示しているが、外部装置と接続可能な同一種のインターフェースを複数備えたパーソナルコンピュータであったり、その他の情報処理装置であったりすることを妨げない。また、複合機１０にはプリンタ３１の他にスキャナ３２や、ＮＣＵ３３及びモデム３４が備えられてＦＡＸ機能を実現しているが、このような機能も必要に応じて増減することを妨げない。
【図面の簡単な説明】
【００４０】
【図１】本実施例の、複合機の構成図を示している。
【図２】本実施例の、複合機が備えるＵＳＢ端子にデバイスを接続して使用する場合に実施するメインルーチンのフローを示している。
【図３】本実施例の、複合機が実施する「上位アプリ接続処理」のサブルーチンのフローを示している。
【図４】本実施例の、複合機が実施する「上位アプリ切断処理」のサブルーチンのフローを示している。
【図５】本実施例の、複合機が実施する「ＵＳＢホストリフレッシュ処理」のサブルーチンのフローを示している。
【図６】本実施例の、複合機が実施する「第１リフレッシュ処理」のサブルーチンのフローを示している。
【図７】本実施例の、複合機が実施する「第２リフレッシュ処理」のサブルーチンのフローを示している。
【符号の説明】
【００４１】
１０      複合機
２１      ＣＰＵ
２２      ＲＯＭ
２３      ＲＡＭ
２４      ＥＥＰＲＯＭ
２５      バス
３１      プリンタ
３２      スキャナ
３３      ＮＣＵ
３４      モデム
３５      操作パネル
３６      ＬＣＤ
３７      シリアルＩ／Ｆ
３８      ＵＳＢ端子
４１      カメラ
４２      無線ＬＡＮモジュール
【図１】
2008085554.tif 000003
【図２】
2008085554.tif 000004
【図３】
2008085554.tif 000005
【図４】
2008085554.tif 000006
【図５】
2008085554.tif 000007
【図６】
2008085554.tif 000008
【図７】
2008085554.tif 000009