(57)【要約】【課題】  エニュメレーション中の発生するエラーを解消する。【解決手段】  ホストコンピュータと接続するデバイスに備えられ、プラグアンドプレイ機能を有するインタフェース装置であって、デバイスのディスクリプタ情報を記憶するディスクリプタ記憶手段と、エラー発生タイミングを識別するエラータイミング番号と、エラー発生を解消する対策の候補となるディスクリプタ情報とが関連つけられて予め定義された対策データ記憶手段と、ホストコンピュータとの間で実行するエニュメレーション中のエラー発生のタイミングを検出して、エラータイミング番号を特定するエラー検出手段と、エラー検出手段により特定したエラータイミング番号に関連つけられたディスクリプタ情報を対策データ記憶手段から読み出して、読み出したディスクリプタ情報を用いてディスクリプタ記憶手段の記憶内容を変更する変更手段と、自らリセットを実行するリセット手段とを備える。【選択図】    図１
2006185012.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータと接続するデバイスに備えられ、プラグアンドプレイ機能を有するインタフェース装置であって、
前記デバイスのディスクリプタ情報を記憶するディスクリプタ記憶手段と、
エラー発生タイミングを識別するエラータイミング番号と、エラー発生を解消する対策の候補となるディスクリプタ情報とが関連つけられて予め定義された対策データ記憶手段と、
前記ホストコンピュータとの間で実行するエニュメレーション中のエラー発生のタイミングを検出して、エラータイミング番号を特定するエラー検出手段と、
前記エラー検出手段により特定したエラータイミング番号に関連つけられたディスクリプタ情報を前記対策データ記憶手段から読み出して、読み出したディスクリプタ情報を用いて前記ディスクリプタ記憶手段の記憶内容を変更する変更手段と、
自らリセットを実行するリセット手段と
を備えたことを特徴とするインタフェース装置。
【請求項２】
ホストコンピュータとデバイスを接続するために、前記デバイスのディスクリプタ情報を記憶するディスクリプタ記憶手段と、エラー発生タイミングを識別するエラータイミング番号と、エラー発生を解消する対策の候補となるディスクリプタ情報とが関連つけられて予め定義された対策データ記憶手段とを備え、プラグアンドプレイ機能を有するインタフェース装置上で動作するインタフェースプログラムであって、
前記ホストコンピュータとの間で実行するエニュメレーション中のエラー発生のタイミングを検出して、エラータイミング番号を特定するエラー検出処理と、
前記エラー検出処理により特定したエラータイミング番号に関連つけられたディスクリプタ情報を前記対策データ記憶手段から読み出して、読み出したディスクリプタ情報を用いて前記ディスクリプタ記憶手段の記憶内容を変更する変更処理と、
自らリセットを実行するリセット処理と
をコンピュータに行わせることを特徴とするインタフェースプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エニュメレーション中に発生するエラーを解消することができるインタフェース装置及びインタフェースプログラムに関する。
【背景技術】
【０００２】
近年、プリンタやスキャナ等の周辺機器とパソコンとを接続するインタフェースとして、ＵＳＢ（Universal Serial Bus）規格が使用されることが多くなっている。ＵＳＢは、周辺機器の接続を自動的に認識するプラグアンドプレイ機能や、パソコンや機器の電源を入れたままコネクタの抜き差しができるホットプラグ機能を備え、ホストであるパソコンから周辺機器への電源供給も可能であるという特徴を有している。プラグアンドプレイ機能を使用して、周辺機器等のデバイスを接続する場合、ホストであるパソコンとデバイスとの間でエニュメレーションシーケンスが実行される。このエニュメレーションシーケンスは、デバイスの検索、初期化及びコンフィグレーション等の処理を行うものである。このエニュメレーションシーケンスを実行する場合、デバイス内に予め定義されているデバイスの属性（これをディスクリプタという）情報を参照しながらシーケンスが実行されるため、デバイス内に適切なディスクリプタ情報が定義されていなければならない。このため、機器とパソコンをＵＳＢ接続した際に、ディスクリプタ情報を送信することにより適切なディスクリプタ情報を定義して、適切なデバイスドライバをロードできるようにした技術が知られている（例えば、特許文献１参照）。
【特許文献１】特開２０００−３０５８９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、従来のＵＳＢ接続機器においては、エニュメレーションシーケンス実行時に接続機器からホスト装置に送られるデバイスディスクリプタ情報は内部で一意に決定されており変更不可能であるため、接続されるホスト装置のＯＳの種類やＯＳのバージョンによっては、このデバイスディスクリプタ情報の記述内容のみが原因でデバイスドライバのインストールが実行できなかったり、デバイスドライバを再インストールしなければならないという問題がある。
【０００４】
本発明は、このような事情に鑑みてなされたもので、エニュメレーションシーケンス実行中に発生するエラーを自動的に解消することができるインタフェース装置及びインタフェースプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、ホストコンピュータと接続するデバイスに備えられ、プラグアンドプレイ機能を有するインタフェース装置であって、前記デバイスのディスクリプタ情報を記憶するディスクリプタ記憶手段と、エラー発生タイミングを識別するエラータイミング番号と、エラー発生を解消する対策の候補となるディスクリプタ情報とが関連つけられて予め定義された対策データ記憶手段と、前記ホストコンピュータとの間で実行するエニュメレーション中のエラー発生のタイミングを検出して、エラータイミング番号を特定するエラー検出手段と、前記エラー検出手段により特定したエラータイミング番号に関連つけられたディスクリプタ情報を前記対策データ記憶手段から読み出して、読み出したディスクリプタ情報を用いて前記ディスクリプタ記憶手段の記憶内容を変更する変更手段と、自らリセットを実行するリセット手段とを備えたことを特徴とする。
【０００６】
本発明は、ホストコンピュータとデバイスを接続するために、前記デバイスのディスクリプタ情報を記憶するディスクリプタ記憶手段と、エラー発生タイミングを識別するエラータイミング番号と、エラー発生を解消する対策の候補となるディスクリプタ情報とが関連つけられて予め定義された対策データ記憶手段とを備え、プラグアンドプレイ機能を有するインタフェース装置上で動作するインタフェースプログラムであって、前記ホストコンピュータとの間で実行するエニュメレーション中のエラー発生のタイミングを検出して、エラータイミング番号を特定するエラー検出処理と、前記エラー検出処理により特定したエラータイミング番号に関連つけられたディスクリプタ情報を前記対策データ記憶手段から読み出して、読み出したディスクリプタ情報を用いて前記ディスクリプタ記憶手段の記憶内容を変更する変更処理と、自らリセットを実行するリセット処理とをコンピュータに行わせることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、記憶されているディスクリプタ情報を、エラー発生タイミング毎に予め記憶してある対策データを使用して、自動的に変更するようにし、さらに自己の処理によってソフトリセットを行うようにしたため、ユーザが操作を行うことなく簡単にエラー解消を行うことができるという効果が得られる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の一実施形態によるインタフェース装置を図面を参照して説明する。図１は同実施形態の構成を示すブロック図である。この図において、符号１は、インタフェース装置が備えられる画像形成装置（デバイス）であり、印刷機能や画像読み取り機能を備えている。符号２は、文書作成アプリケーション等を使用して作成した文書データを印刷するためのパソコンである。符号１１は、ＵＳＢ（Universal Serial Bus）のインタフェース回路である。符号１２は、ＵＳＢ回路１１を駆動して、パソコン２との接続処理を行うデバイスドライバである。符号１３は、印刷、画像読み取り処理を行う画像形成部である。符号１４は、ＵＳＢデバイスの属性情報（ディスクリプタ情報）が記憶されるディスクリプタ記憶部である。符号１５は、パソコン２との間で実行されるエニュメレーション中のエラー発生のタイミングを検出するエラー検出部である。符号１６は、エラー発生タイミングを識別するエラータイミング番号と、エラー発生を解消する対策の候補となるディスクリプタ情報とが関連つけられて予め定義された対策データ記憶部である。符号１７は、エラー検出を受けてディスクリプタ記憶部１４に記憶されているディスクリプタ情報を、対策データ記憶部１６に記憶されているディスクリプタ情報を使用して変更する変更部である。符号１８は、ＵＳＢ回路１１のリセットを実行するリセット実行部である。符号２１は、パソコン側に備えられるＵＳＢ回路である。符号２２は、ＵＳＢ回路２１を駆動するデバイスドライバである。画像形成装置１側のＵＳＢ回路１１とパソコン２側のＵＳＢ回路２１との間は、ＵＳＢケーブルＣによって接続される。
【０００９】
ＵＳＢインタフェースは、機器の接続を自動的に認識するプラグアンドプレイ機能及びパソコンや機器の電源を入れたままコネクタの抜き差しができるホットプラグ機能を備えている。図１に示すリセット実行部１８は、パソコン２及び画像形成装置１の電源を入れたままコネクタを抜いて、差し込んだ状態を再現するものであり、ユーザがＵＳＢケーブルＣのコネクタを１度抜いて、再び差し込む動作を行ったのと同じ状態を再現することができるものである。したがって、リセット実行部１８がリセットを実行すると、パソコン２側のプラグアンドプレイ機能により、画像形成装置１の接続を自動的に認識する処理が起動されることになる。ＵＳＢ回路１１は、リセット実行部１８からリセット信号が入力されると、ＵＳＢケーブルＣのコネクタを抜いたのと同様に、所定時間だけＵＳＢケーブルＣとＵＳＢ回路１１との間を電気的に絶縁する処理を行う。これにより、ユーザがＵＳＢケーブルＣのコネクタを抜き差しすることなしにリセットすることが可能となる。
【００１０】
次に、図３を参照して、図１に示す対策データ記憶部１６のテーブル構造を説明する。対策データ記憶部１６は、「エラータイミング番号」、「対策番号」、「検索文字列」、「置換文字列」、「実施フラグ」の記憶フィールドを有している。エラータイミング番号は、エニュメレーションシーケンス中のエラー発生のタイミングを特定する番号であり、デバイスドライバ１２が応答した回数の値の数字の頭に「Ｅ」を付与した番号である。対策番号は、対策データ記憶部１６内に記憶されている対策データを一意に特定する番号であり、「Ｔ」に順番号を付与した番号である。検索文字列及び置換文字列が対策データであり、検索文字列は、ディスクリプタ記憶部１４に記憶されているディスクリプタ情報中から完全一致する文字列を検索するための文字列である。また、置換文字列は、検索文字列をこの置換文字列に置き換えるための文字列である。
【００１１】
図３に示す「対策番号Ｔ１」の例において、「ｆａ」、「ｆｂ」、「ｆｃ」、「ｔａ」、「ｔｂ」、「ｔｃ」は任意の文字数の任意の文字列が予め定義されていることを示している。ディスクリプタ記憶部１４に記憶されている文字列の中から、「ｆａ」の文字列に完全一致する文字列を検索し、これを「ｔａ」の文字列に置き換えることを意味する。同様に、「ｆｂ」は「ｔｂ」に、「ｆｃ」は「ｔｃ」に置き換えることを意味している。実施フラグは、変更部１７がこの対策データを使用してディスクリプタ記憶部１６の変更を既に行った場合に「１」、未だ使用していない対策データは「０」となる。図３に示す例では、「Ｅ１」の検索文字列及び置換文字列が３種類ずつ示されているが、３種類である必要はなく、エラーを解消するために必要な種類が定義されていればよい。また、「Ｅ２」には対策データが３個（Ｔ２、Ｔ３、Ｔ４）、「Ｅ３」には対策データが２個、「Ｅ４」には対策データが４個定義されているが、これらの個数は、必要に応じて予め定義されるものである。
【００１２】
次に、図２を参照して、図１に示す画像形成装置１とパソコン２とを接続する動作を説明する。図２は、画像形成装置１とパソコン２とを接続する際のエニュメレーションシーケンスを示すシーケンス図である。まずユーザがパソコン２及び画像形成装置１の電源を投入し、ＵＳＢケーブルＣのコネクタを接続すると、デバイスドライバ２２は、コネクタの接続を検出する（ステップＳ１）。そして、デバイスドライバ２２は、接続処理を開始する前に、リセット信号を送出する（ステップＳ２）。このリセット信号は、デバイスドライバ１２が検出し、接続処理のリセットを行う。
【００１３】
次に、デバイスドライバ２２は、ディスクリプタ要求を送出する（ステップＳ４）。これを受けて、デバイスドライバ１２は、ディスクリプタ記憶部１４から要求されたディスクリプタ情報を読み出して、このディスクリプタ情報を要求元へ応答として返す（ステップＳ５）。デバイスドライバ１２は、パソコン２へ応答した時点で、応答したことを示す応答信号をエラー検出部１５へ出力し、エラー検出部１５は、この応答信号を受信した回数をカウントし内部に保持する。
【００１４】
次に、デバイスドライバ２２は、応答されたディスクリプタ情報の内容をチェックし、エラーがなければ次のディスクリプタ要求を送出する（ステップＳ６）。また、画像形成装置１から返されたディスクリプタ情報の内容をチェックし、エラーであれば、処理を強制的に終了する。
【００１５】
エラー検出部１５は、ディスクリプタ情報の応答をした後、所定時間内に次のディスクリプタ要求がパソコン２側から送出されたか否かをＵＳＢ回路１１の状態を監視することによりエラーが発生したか否かを判定する（ステップＳ７）。所定時間内に次のディスクリプタ要求がパソコン２側から送出された場合、デバイスドライバ１２は、ディスクリプタ記憶部１４から要求されたディスクリプタ情報を読み出して、このディスクリプタ情報を要求元へ応答として返す（ステップＳ８）。デバイスドライバ１２は、パソコン２へ応答した時点で、応答したことを示す応答信号をエラー検出部１５へ出力し、エラー検出部１５は、この応答信号を受信した回数をカウントし内部に保持する。パソコン２と画像形成装置１の間において、同様の処理（ステップＳ９〜Ｓ１１）を繰り返し行うことにより、接続時のエニュメレーションシーケンスが実行され、エラーが発生しなければエニュメレーションが正常に終了することになる。
【００１６】
一方、エラー検出部１５は、ディスクリプタ情報の応答をした後、所定時間内に次のディスクリプタ要求がパソコン２側から送出されたか否かをＵＳＢ回路１１の状態を監視することによりエラーが発生したか否かを判定した（ステップＳ７）結果、所定時間経過しても次のディスクリプタ要求がパソコン２側から送出されない場合（ステップＳ７、Ｓ１０において「Ｙｅｓ」の場合）、エラー検出部１５は、エラー発生通知を変更部１７へ出力する。このエラー発生通知には、デバイスドライバ１２から出力された応答信号の回数が含まれる。この応答信号の回数がエラー発生タイミングを示す情報となる。
【００１７】
エラー検出部１５からエラー発生通知を受けた変更部１７は、エラー発生通知に含まれる応答信号の回数（エラータイミング）に基づいて、対策データ記憶部１６から対策データを読み出す。例えば、応答信号の回数が「１」であった場合、エラータイミング番号が「Ｅ１」である対策データを読み出す。そして、変更部１７は、読み出した検索文字列を使用して、ディスクリプタ記憶部１４中の置換対象文字列を検索し、検索の結果見つかった文字列を置換文字列に置き換えることによりディスクリプタ記憶部１４の記憶内容を変更する（ステップＳ２１）。変更部１７は、ディスクリプタ記憶部１４の記憶内容の変更が終了した時点で、対策データ記憶部１６の実施フラグ（ここでは対策番号Ｔ１の実施フラグ）を「１」にするとともに、リセット実行部１８に対して、リセット実行指示を出力する。
【００１８】
これを受けて、リセット実行部１８は、ＵＳＢ回路１１に対してリセット信号を出力する。これにより、ＵＳＢ回路１１のソフトリセットが実行される（ステップＳ２２）。ソフトリセット（コネクタ抜き差しの再現）が行われると、パソコン２は、接続検出（ステップＳ１）を行い、再びエニュメレーションシーケンスが実行されることになる。そして、再びステップＳ７において、エラー発生検出が行われ、このタイミングで再びエラー発生が検出された場合、変更部１７は、対策データ記憶部１６の実施フラグを参照して、実施していない他の対策データがあるかを判定する。他の対策データが対策データ記憶部１６に記憶されていなければ、エラーを解消することは不可能と判断し、予め決められたエラー処理を実行する。このエラー処理とは、画像形成装置１が備えている表示装置等に対策不可能であること示すメッセージを表示する。このメッセージには、実施された全ての対策（実施フラグが「１」である対策）の対策番号が含まれる。
【００１９】
一方、ステップＳ７のエラー検出においては、エラーが発生せずに、ステップＳ１０のエラー検出においてエラーが発生した場合、変更部１７は、対策番号Ｔ２の対策データを使用して、ディスクリプタ記憶部１４の記憶内容を変更して、ソフトリセットを実行すると、パソコン２が再び接続検出を行い、再びエニュメレーションシーケンスが実行されることになる。そして、再び同じタイミングでエラーが発生した場合、変更部１７は、他の対策番号（この例ではＴ３）を読み出して、同様の処理を繰り返し実行する。また、他のタイミングでエラーが発生した場合は、エラー発生タイミングに対応する対策データが順に読み出され、この読み出された対策データに基づいて、ディスクリプタ記憶部１４の記憶内容が変更されることになる。この動作により、エニュメレーションシーケンス中に発生するディスクリプタ情報が原因であるエラーを自動的に解消することができる。また、コネクタ抜き差しに相当するソフトリセットを自動的に行うようにしたため、ユーザがその都度コネクタの抜き差しを行うことなくエラーを解消することができる。
【００２０】
このように、ディスクリプタ記憶部１４に記憶されているディスクリプタ情報を、エラー発生タイミング毎に予め記憶してある対策データを使用して、自動的に変更するようにし、さらに自己の処理によってソフトリセットを行うようにしたため、ユーザが操作を行うことなく簡単にエラー解消を行うことが可能となる。また、対策データを使用してもエラー解消できなかった場合に、実施した対策の対策番号を表示するようにしたため、人手によるエラー解析作業を効率良く行うことができるようになる。
【００２１】
なお、図１における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりエラー解消処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００２２】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施形態の構成を示すブロック図である。
【図２】図１に示す画像形成装置１とパソコン２とを接続する動作を示すシーケンス図である。
【図３】図１に示す対策データ記憶部１７のテーブル構造を示す説明図である。
【符号の説明】
【００２４】
１・・・画像形成装置、１１・・・ＵＳＢ回路、１２・・・デバイスドライバ、１３・・・画像形成部、１４・・・ディスクリプタ記憶部、１５・・・エラー検出部、１６・・・対策データ記憶部、１７・・・変更部、１８・・・リセット実行部、２・・・パソコン、２１・・・ＵＳＢ回路、２２・・・デバイスドライバ
【図１】
2006185012.tif 000003
【図２】
2006185012.tif 000004
【図３】
2006185012.tif 000005