(57)【要約】【課題】ＵＳＢ接続の失敗を正確に把握し、それをユーザに意識させることなく再接続を行うことができる周辺装置の通信方法を提供する。【解決手段】ＵＳＢ接続のポートを備える周辺装置をホスト側のＵＳＢ接続のポートに接続する接続ステップと、バスリセットの発生から定期的に前記周辺装置のデバイスステートを確認し、ある一定の経過時間に対して、デバイスステートの遷移が進んでいない場合は、ＵＳＢ接続の失敗と判断して一旦未接続状態に戻し、最初から接続する再接続ステップとを有することを特徴とする。【選択図】  図３
2008204005.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ接続のポートを備える周辺装置をホスト側のＵＳＢ接続のポートに接続する接続ステップと、
バスリセットの発生から定期的に前記周辺装置のデバイスステートを確認し、ある一定の経過時間に対して、前記デバイスステートの遷移が進んでいない場合は、ＵＳＢ接続の失敗と判断して一旦未接続状態に戻し、最初から接続する再接続ステップとを有することを特徴とする周辺装置の通信方法。
【請求項２】
前記周辺装置は、フルスピード、及びハイスピードで動作可能であり、前記ホスト側の動作スピードに依存せずに前記周辺装置の動作スピードをフルスピードに固定できるモードを有し、
前記ホスト側のポートは、ハイスピード対応のポートであり、
前記再接続ステップは、最初の接続でハイスピードによる接続を試み、前記バスリセットの発生から、ある一定の経過時間に対して、前記デバイスステートの遷移が進んでいない場合は、ＵＳＢ接続の失敗と判断して一旦未接続状態に戻し、フルスピードにより最初から接続することを特徴とする請求項１に記載の周辺装置の通信方法。
【請求項３】
ＵＳＢ接続のポートを備える周辺装置をホスト側のＵＳＢ接続のポートに接続する接続ステップと、
バスリセットの発生から定期的に前記周辺装置のデバイスステートを確認し、ある一定の経過時間に対して、前記デバイスステートの遷移が進んでいない場合は、ＵＳＢ接続の失敗と判断して一旦未接続状態に戻し、最初から接続する再接続ステップとをコンピュータに実行させるためのコンピュータプログラム。
【請求項４】
ＵＳＢ接続のポートを備える周辺装置であって、
ホスト側のＵＳＢ接続のポートに接続する接続手段と、
バスリセットの発生から定期的に前記周辺装置のデバイスステートを確認し、ある一定の経過時間に対して、前記デバイスステートの遷移が進んでいない場合は、ＵＳＢ接続の失敗と判断して一旦未接続状態に戻し、最初から接続する再接続手段とを有することを特徴とする周辺装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ接続のポートを備える周辺装置の通信方法、コンピュータプログラム、及び周辺装置に関する。
【背景技術】
【０００２】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）を中心に普及し、ＰＣに接続される周辺装置（デバイス）にも普及している。近年では、ＰＣのほとんどが、ＵＳＢインターフェースを具備している。しかしながら、これほど普及していても、ＰＣの環境や、そのときの状態により接続率は１００パーセントには遠く及ばないのが現状である。
【０００３】
また、ＵＳＢ規格のＵＳＢ２．０は、転送速度４８０Ｍｐｂｓのハイスピードモードがサポートされていることから、接続失敗の可能性は大きくなってしまう。しかしながら、接続失敗の可能性が大きいにもかかわらず、失敗したときの対策はホスト側又は、デバイス側においてほとんど講じられていない。
ただし、この接続失敗に対して、ＵＳＢのデバイス側でエラーを検知することができ、エラーの発生回数や、エラーのレートにより接続するスピードを変えるというものがある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、エラーが発生したとしても、ハイスピードからフルスピードに変えるほどスピードが落ちていない場合があり、このような場合であっても、ユーザの意思とは別にＵＳＢの動作スピードが変更されてしまう。また、デバイス側のＵＳＢのブロックがエラーを検知可能な状況であることを前提とするものであるが、ＵＳＢ接続の失敗の際には、エラーが発生してデバイス側が無応答になってしまうことが少なくない。
【０００５】
つまり、この場合、ホスト側が、デバイス側の無応答を理由にリクエストを出すのを止めると、エラーは発生しなくなる。また、デバイス側のＵＳＢのブロックが無応答になってしまった状態でエラーを検知できない場合も予想される。このように、ＵＳＢの接続に失敗した場合に、エラーの発生、エラーのレートで再接続を試みること、及び動作スピードを変更して再接続を試みることは、必ずしも有効な手段とはいえない。
【０００６】
本発明は上述したような問題点に鑑みてなされたものであり、ＵＳＢ接続の失敗を正確に把握し、それをユーザに意識させることなく再接続を行う。また、最初の失敗した接続がハイスピードによる接続である場合は、規格自体が安定しているフルスピードによる接続を試みて、ユーザの手間をできるだけ取らせないでホストとの接続を確立することを目的とするものである。
【課題を解決するための手段】
【０００７】
本発明の周辺装置の通信方法は、ＵＳＢ接続のポートを備える周辺装置をホスト側のＵＳＢ接続のポートに接続する接続ステップと、バスリセットの発生から定期的に前記周辺装置のデバイスステートを確認し、ある一定の経過時間に対して、前記デバイスステートの遷移が進んでいない場合は、ＵＳＢ接続の失敗と判断して一旦未接続状態に戻し、最初から接続する再接続ステップとを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ＵＳＢ接続のポートを備える周辺装置がホストとの接続失敗時に、接続失敗を判断し、ハイスピードで接続失敗した時はフルスピード固定モードで接続を再度試みる。したがって、デバイスとホストが正常に接続できる可能性は格段に向上する。また、接続失敗時のリトライ処理をユーザが意識することなく行うのでユーザの時間も、手間も取らせることはなくなる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明はＵＳＢ２．０ハイスピード対応のアップストリームポートを備える周辺装置として、プリンタへの適用した場合について、図面を参照に説明する。なお、以下説明するプリンタには、フルスピード、及びハイスピードで動作可能であり、ホスト側の動作スピードに依存せずに、フルスピードに固定できるモードを有する。
【００１０】
図１は本実施形態に係るプリンタ全体の構成図である。
１００は、プリンタ本体である。１０１は、データ送受信部であり、物理インターフェースよりデータを送受信する。本実施形態では、データ送受信部１０１に対応する物理インターフェースとして、ＵＳＢ接続のポートであるＵＳＢ２．０ハイスピード対応のアップストリームポート１１１を１つ搭載している。なお、図示しないが、ＰＣ等のホスト側には、アップストリームポート１１１に対応したＵＳＢ接続のポートであるダウンストリームポートを有している。なお、ダウンストリームポートは、ハイスピード対応のポートである。
【００１１】
１０２はプリンタを動作させるためのプログラム、データ、テーブル等の入ったＲＯＭである。１０３はデータを印字するために各種モータ、キャリッジ、ＡＳＦ等を制御する制御部（ＣＰＵ）である。１０４はデータ受信時や、プログラム実行時など一時的にデータをロードするためのＲＡＭである。１２０はＲＡＭ１０４に静的にデバイスステート情報として確保された領域である。本実施形態では、デバイスステート情報１２０として“現在のデバイスの状態”、“前回遷移した時間”、及び“動作スピード”が確保されている。
【００１２】
“動作スピード”には、バスリセット後にＵＳＢの動作スピードが確定した時点、すなわち本実施形態ではＳｅｔＡｄｄｒｅｓｓリクエスト受信の割り込み処理の中で、ＵＳＢのレジスタブロックよりＵＳＢの動作スピードを取得して、格納される。ここで、動作スピードは、フルスピード、又はハイスピードのいずれかである。
【００１３】
１０５は各プリンタのデータである最終印字時間、エラー履歴等を格納するためのＥＥＰＲＯＭである。このＥＥＰＲＯＭ１０５上の１２１は、接続失敗時のリトライ情報である。このリトライ情報１２１には“リトライ回数”と“リトライと判断する時間”が格納されている。“リトライ回数”は接続失敗時に再接続を行う回数の最大値である。“リトライと判断する時間”は、ＵＳＢのデバイスが「Ｃｏｎｆｉｇｕｒｅｄ」状態でない場合に、どのくらいの時間経過でリトライ処理を実行するかを決定するものである。
【００１４】
リトライ情報１２１は、ＰＣと正常な接続が確立できている状態の時に、ＰＣ上のプリンタドライバのプロパティダイアログより設定できる。すなわち、プロパティダイアログより“リトライ回数”及び“リトライと判断する時間”を指定して送信ボタンを押すことで、プリンタに送信されＥＥＰＲＯＭ１０５に設定できるようになっている。なお、本実施形態では、デフォルト設定として“リトライ回数”を通常は２回、“リトライと判断する時間”を５秒に設定している。
【００１５】
１０６は制御部１０３より各種モータなどを制御して印字を実際に行う印字部である。１０７はタイマーである。このタイマー１０７により、本実施形態では、１０ｍＳｅｃ毎に割り込みを発生させている。このタイマー割り込みハンドラの処理として、時間の管理と経過時間に対するデバイスステートの遷移を監視し、失敗と判断したときは、リトライ処理を開始している。
【００１６】
図２はＵＳＢの規定されている状態遷移から、接続失敗を判断するために管理すべき状態遷移を抽出し、それをどのようにプリンタのプログラム上で管理しているかを表した状態遷移図である。
ＲＡＭ１０４上の１Ｂｙｔｅの静的変数で管理している情報（以下、デバイスステート変数という）は、この状態遷移図におけるそれぞれ以下、４つの状態である。すなわち、２０１の「Ｐｏｗｅｒｅｄ」状態、２０２の「Ｄｅｆａｕｌｔ」状態、２０３の「Ａｄｄｒｅｓｓｅｄ」状態、２０４の「Ｃｏｎｆｉｇｕｒｅｄ」状態である。
【００１７】
まず、プリンタ電源オン後、ＵＳＢのＤ＋端子をプルアップするまでの、ＵＳＢブロックの初期化時２１０に、“現在のデバイスの状態”に「Ｐｏｗｅｒｅｄ」状態を示す値を格納する。また、タイマー１０７のカウンターをリセットして、“前回遷移した時間”に０を格納する。
その後、プリンタは何らかのＵＳＢのホストに接続されているかどうかをＵＳＢのバスの状態から判断する。接続されていると判断した場合は、ＵＳＢのＤ＋端子をプルアップする。
【００１８】
それに伴い、ＵＳＢのバスリセットが発生する。２１１のバスリセット発生時には、バスリセット割込み処理の中で、デバイスステート変数を「Ｄｅｆａｕｌｔ」状態に設定する。また、その時の時間をタイマー１０７のカウンターから取得して“前回遷移した時間”を更新する。
【００１９】
次に「Ｄｅｆａｕｌｔ」状態で、２１２のホストよりＵＳＢの正常なＳｅｔＡｄｄｒｅｓｓリクエストを受信する。指定されたアドレスが０ではない場合には、ＳｅｔＡｄｄｒｅｓｓリクエスト受信割込み処理で、“現在のデバイスの状態”を「Ａｄｄｒｅｓｓｅｄ」状態に設定し、その時間をタイマー１０７のカウンターから取得して、“前回遷移した時間”を更新する。ここで、現在のＵＳＢの動作スピードをＵＳＢのレジスタブロックより取得してＲＡＭ１０４上に静的に確保されたデバイスステート情報１２０の“動作スピード”を設定する。
【００２０】
逆に「Ａｄｄｒｅｓｓｅｄ」状態で、２１４のホストよりＵＳＢの正常なＳｅｔＡｄｄｒｅｓｓリクエストを受信し、指定されたアドレスが０であるとする。この場合には、ＳｅｔＡｄｄｒｅｓｓリクエスト受信割込み処理で、“現在のデバイスの状態”を「Ｄｅｆａｕｌt」状態に設定し、その時の時間をタイマー１０７のカウンターから取得して“前回遷移した時間”を更新する。
【００２１】
次に「Ａｄｄｒｅｓｓｅｄ」状態で、２１３のホストよりＵＳＢの正常なＳｅｔＣｏｎｆｉｇｕｒａｔｉｏｎリクエストを受信する。このときＣｏｎｆｉｇｕｒａｔｉｏｎの値が“１”である場合には、ＳｅｔＣｏｎｆｉｇｕｒａｔｉｏｎリクエスト受信割込み処理で、“現在のデバイスの状態”を「Ｃｏｎｆｉｇｕｒｅｄ」状態に設定する。そして、その時の時間をタイマー１０７のカウンターから取得して、“前回遷移した時間”を更新する。
【００２２】
逆に「Ｃｏｎｆｉｇｕｒｅｄ」状態で、２１５のホストよりＵＳＢの正常なＳｅｔＣｏｎｆｉｇｕｒａｔｉｏｎリクエストを受信し、指定されたＣｏｎｆｉｇｕｒａｔｉｏｎの値が“０”であったとする。この場合には、ＳｅｔＣｏｎｆｉｇｕｒａｔｉｏｎリクエスト受信割込み処理で、“現在のデバイスの状態”を「Ａｄｄｒｅｓｓｅｄ」に設定する。そして、その時の時間をタイマー１０７のカウンターより取得して“前回遷移した時間”を更新する。
【００２３】
また、「Ｄｅｆａｕｌｔ」状態、「Ａｄｄｒｅｓｓｅｄ」状態、「Ｃｏｎｆｉｇｕｒｅｄ」状態のいずれかの状態にいる場合に、２１６のＵＳＢのバスリセットを検出した場合には、“現在のデバイスの状態”を「Ｄｅｆａｕｌｔ」状態に設定する。そして、その時の時間をタイマーのカウンターより取得して“前回遷移した時間を更新する。”
【００２４】
図３は、図１におけるタイマー１０７でカウントする時間に合わせて、ある一定周期で起動するタイマー割込みハンドラのシーケンス図である。なお、本実施形態では、タイマー割込みが発生する周期を１０ｍＳｅｃに設定している。また、以下のシーケンスは、制御部１０３が行っている。
【００２５】
タイマー割込みが発生して、タイマー割込みハンドラが呼び出されると、まずステップＳ３００でタイマー１０７のカウンターを１０ｍＳｅｃ分カウントアップする。
次に、ステップＳ３０１でＲＡＭ上に静的に確保しているデバイスステート情報の“現在のデバイスの状態”を確認する。そのとき、既に「Ｃｏｎｆｉｇｕｒｅｄ」状態になっている場合は、タイマー割込み処理を終了する。
【００２６】
ステップＳ３０１で「Ｃｏｎｆｉｇｕｒｅｄ」状態になっていない場合には、ステップＳ３０２で現在のタイマーのカウンター値と、ＲＡＭ上に静的に確保しているデバイスステート情報の“前回遷移した時間”を比較する。
【００２７】
ステップＳ３０２おいて、ＥＥＰＲＯＭ１０５上に格納されているリトライ情報の“リトライと判断する時間”に満たない場合、本実施形態では５秒未満の場合には、タイマー割込み処理を終了する。一方、“リトライと判断する時間”以上の場合には、ステップＳ３０３に進み、ＥＥＰＲＯＭ１０５上に格納されているリトライ情報の“リトライ回数”を確認する。リトライ情報に設定されている“リトライ回数”を超えている場合、本実施形態例では２回より大きい場合にはタイマー割込み処理を終了する。一方、ステップＳ３０３で設定された“リトライ回数”よりも小さい場合には、リトライした回数をカウントアップする。このように、定期的にデバイスステートを確認する。
【００２８】
次にステップＳ３０５でＤ＋端子を落とす。次にステップＳ３０６でＵＳＢブロックの再度初期化処理を行、一旦未接続状態に戻す。次にステップＳ３０７でＲＡＭ１０４上に静的に確保されたデバイスステート情報１２０の“動作スピード”より、今回接続失敗時のＵＳＢの動作スピードを確認する。この場合にフルスピードであった場合にはステップ３０９に進む。一方、ハイスピードであった場合にはＵＳＢの動作モードをＵＳＢのレジスタブロックよりフルスピード固定モードに設定する。次にステップＳ３０９でＤ＋端子をオンして再接続を行う。なお、本実施形態では最初の接続において、ハイスピードによるＵＳＢ接続を試みるものとする。
【００２９】
ＵＳＢ接続はその時のプリンタの内部状態や、ホストの内部状態に非常に依存する。
したがって、前回はあるホストに対してハイスピードによる接続を失敗してもＰＣを再起動、又はプリンタの電源を入れ直したら接続が可能になるケースは少なくない。
【００３０】
本実施形態では、その点に注目して、ＥＥＰＲＯＭ１０５上に“未接続時間”を格納する領域を確保している。この“未接続時間”は、チャタリングを除いてＵＳＢケーブルが抜かれた時間、ホスト側の電源が落ちている時間、プリンタのソフトパワーオフの時間によりデバイス側、ホスト側の内部状態が変化しているかどうかを、時間で判断するための閾値である。
【００３１】
つまりプリンタとＵＳＢ接続が切断されている時間が、“未接続時間”より短ければ、デバイス及びホストの状態は変わっていないものとし、かつ前回の接続でハイスピードによる接続を失敗している場合には、ＵＳＢの動作モードをフルスピードに固定して接続を行う。
【００３２】
また、プリンタとＵＳＢの接続されている時間が“未接続時間”より長いか、プリンタの電源がオフになった場合は、デバイス側及びホスト側の内部状態が変わったと判断する。そして、ＵＳＢの動作モードをフルスピードに固定することなく、ハイスピードによる動作も許可して接続を行うようにする。
【００３３】
上述した本発明の実施形態における周辺装置を構成する各手段、並びに周辺装置の通信方法の各ステップは、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００３４】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器からなるシステムに適用してもよい。
【００３５】
なお、本発明は、上述した実施形態の機能を実現するソフトウェアのプログラムを、システムまたは装置に直接、または遠隔から供給する。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００３６】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００３７】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００３８】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００３９】
【図１】本実施形態に係る周辺装置の構成を示す図である。
【図２】本実施形態に係るデバイスステート情報と状態遷移図である。
【図３】本実施形態に係るタイマー割込み処理を示すフローチャートである。
【符号の説明】
【００４０】
１００  プリンタ
１０１  データ送受信部
１０２  ＲＯＭ
１０３  制御部
１０４  ＲＡＭ
１０５  ＥＥＰＲＯＭ
１０６  データ印字部
１０７  タイマー
１２０  デバイスステート情報
１２１  リトライ情報
【図１】
2008204005.tif 000003
【図２】
2008204005.tif 000004
【図３】
2008204005.tif 000005