(57)【要約】【課題】デバイス側からＵＳＢ通信の通信エラー状態を解消させることが可能な電子機器、通信制御方法及びプログラムを提供すること。【解決手段】電子機器１０は、ＵＳＢの通信バスＢＳを介してＵＳＢ通信を行う通信部３０と、通信部３０の通信制御を行う処理部２０と、を含む。処理部２０は、ＵＳＢ通信にエラーが検出されたときに、通信バスＢＳに接続されるホスト機器９０にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行う。【選択図】      図３
2019061402.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢの通信バスを介してＵＳＢ通信を行う通信部と、
前記通信部の通信制御を行う処理部と、
を含み、
前記処理部は、
前記ＵＳＢ通信にエラーが検出されたときに、前記通信バスに接続されるホスト機器にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行うことを特徴とする電子機器。
【請求項２】
請求項１において、
前記処理部は、
前記通信バスを介した前記通信部と前記ホスト機器との接続を電気的に切断する制御を行うことで、前記ホスト機器に前記バスリセットを実行させる第１の復旧処理を行うことを特徴とする電子機器。
【請求項３】
請求項２において、
前記通信部は、
前記処理部により前記接続を電気的に切断する制御が行われたとき、前記通信バスの終端抵抗をディセーブルにする、又は前記通信バスのＤＰ信号線のプルアップ抵抗をディセーブルにすることを特徴とする電子機器。
【請求項４】
請求項２又は３において、
前記処理部は、
前記ホスト機器から前記通信部に送信されたパケットにＣＲＣエラーが検出されたときに、前記第１の復旧処理を行うことを特徴とする電子機器。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記処理部は、
前記ホスト機器に対するアクノリッジを返さない制御を行うことで前記ホスト機器に前記バスリセットを実行させる第２の復旧処理を行うことを特徴とする電子機器。
【請求項６】
請求項５において、
前記処理部は、
前記ホスト機器から前記通信部に送信されたパケットにＰＩＤエラー又はトグルビットエラーが検出されたときに、前記第２の復旧処理を行うことを特徴とする電子機器。
【請求項７】
請求項６において、
前記処理部は、
一連のデータである第１〜第ｋ（ｋは２以上の整数）のデータパケットの受信において、第ｉ（ｉは１以上ｋ以下の整数）のデータパケットの受信において前記ＰＩＤエラー又は前記トグルビットエラーが検出されたときに、前記第２の復旧処理を行い、前記ホスト機器により前記バスリセットが実行された後、前記第ｉのデータパケットの受信から再開することを特徴とする電子機器。
【請求項８】
請求項７において、
前記一連のデータは、印刷データであることを特徴とする電子機器。
【請求項９】
ＵＳＢの通信バスを介して通信を行う通信部でのＵＳＢ通信にエラーが検出されたか否かを判断し、
前記ＵＳＢ通信にエラーが検出されたと判断したときに、前記通信バスに接続されるホスト機器にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行うことを特徴とする通信制御方法。
【請求項１０】
ＵＳＢの通信バスを介して通信を行う通信部でのＵＳＢ通信にエラーが検出されたか否かを判断し、
前記ＵＳＢ通信にエラーが検出されたと判断したときに、前記通信バスに接続されるホスト機器にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行うステップを、コンピューターに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器、通信制御方法及びプログラム等に関する。
【背景技術】
【０００２】
ホスト機器とペリフェラルデバイスとの間でシリアルの通信バスを介して高速に通信を行うための規格としてＵＳＢ（Universal Serial Bus）が知られている。ホスト機器又はペリフェラルデバイスでは、ＵＳＢ通信において正しいデータを送受信できるように、種々のＵＳＢ通信エラーの検出を行っている。例えば、ＣＲＣ（Cyclic Redundancy Check）エラーやＰＩＤ（Packet IDentifier）エラー、トグルビットエラー等をＵＳＢ通信エラーとして検出する。ホスト機器がＵＳＢ通信エラーを検出した場合、ホスト機器は例えばＵＳＢバスのバスリセットを行って通信エラー状態から復旧しようと試みる。
【０００３】
ホスト機器が通信エラー状態を解消する従来技術は、例えば特許文献１に開示されている。特許文献１では、プリンターにＵＳＢ接続可能なデジタルスチールカメラが、ホスト機能とデバイス（ターゲット）機能を切り替え可能に構成されている。そして、デジタルスチールカメラがホストとして機能しているときに、ＵＳＢ通信エラー（バスエラー）が発生した場合、ホストであるデジタルスチールカメラがバスリセットを行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１１６９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＵＳＢ通信では、ホスト機器が通信エラーを検出できない場合、ホスト機器が通信エラー状態から復旧しようと試みることができない。例えば、デバイス側で通信エラーを検出した場合、ＵＳＢ通信がエラー状態のまま停止するため、ユーザーがＵＳＢケーブルをホスト機器又はペリフェラルデバイスに抜き差しする必要がある。ＵＳＢケーブルをホスト機器又はペリフェラルデバイスに抜き差しすることで、ホスト機器がＵＳＢバスの物理的な切断を検出し、バスリセット等により復旧を試みる。しかしながら、ユーザーに対してＵＳＢケーブルの抜き差しが要求されるので、ユーザー利便性の点からＵＳＢケーブルの抜き差しが不要であることが望ましい。
【０００６】
本発明の幾つかの態様によれば、デバイス側からＵＳＢ通信の通信エラー状態を解消させることが可能な電子機器、通信制御方法及びプログラム等を提供できる。
【課題を解決するための手段】
【０００７】
本発明の一態様は、ＵＳＢの通信バスを介してＵＳＢ通信を行う通信部と、前記通信部の通信制御を行う処理部と、を含み、前記処理部は、前記ＵＳＢ通信にエラーが検出されたときに、前記通信バスに接続されるホスト機器にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行う電子機器に関係する。
【０００８】
本発明の一態様によれば、デバイス側の電子機器が通信エラーを検出したとき、ホスト機器にバスリセットを実行させる制御を行うことで、ホスト機器にバスリセットを実行させることが可能になる。これにより、ユーザーがＵＳＢケーブルを抜き差ししなくても、デバイス側から通信エラー状態の復旧処理を行うことが可能になる。
【０００９】
また本発明の一態様では、前記処理部は、前記通信バスを介した前記通信部と前記ホスト機器との接続を電気的に切断する制御を行うことで、前記ホスト機器に前記バスリセットを実行させる第１の復旧処理を行ってもよい。
【００１０】
このようにすれば、ＵＳＢ通信にエラーが検出されたときに、通信バスを介した通信部とホスト機器との接続を電気的に切断する制御を行うことで、ホスト機器にバスリセットを実行させることができる。これにより、通信エラー状態の復旧処理を行うことができる。
【００１１】
また本発明の一態様では、前記通信部は、前記処理部により前記接続を電気的に切断する制御が行われたとき、前記通信バスの終端抵抗をディセーブルにする、又は前記通信バスのＤＰ信号線のプルアップ抵抗をディセーブルにしてもよい。
【００１２】
このようにすれば、通信バスの終端抵抗をディセーブルにすることで、ＨＳモードのＵＳＢ通信においてホスト機器に通信バスの切断を検出させることができる。これにより、ホスト機器にバスリセットを実行させることができる。また、ＤＰ信号線のプルアップ抵抗をディセーブルにすることで、ＦＳモードのＵＳＢ通信においてホスト機器に通信バスの切断を検出させることができる。これにより、ホスト機器にバスリセットを実行させることができる。
【００１３】
また本発明の一態様では、前記処理部は、前記ホスト機器から前記通信部に送信されたパケットにＣＲＣエラーが検出されたときに、前記第１の復旧処理を行ってもよい。
【００１４】
ＣＲＣエラーが検出された場合、データパケットのボディー部（データ）が壊れている可能性が高い。即ち、ＣＲＣエラーが検出される前に電子機器が受信したデータパケットについても信頼性が低い可能性がある。本発明の一態様によれば、ＣＲＣエラーが検出されたときに通信バスを電気的に切断することで、ホスト機器にデータを最初から送信させることができる。これにより、ＵＳＢ通信の信頼性を向上できる。
【００１５】
また本発明の一態様では、前記処理部は、前記ホスト機器に対するアクノリッジを返さない制御を行うことで前記ホスト機器に前記バスリセットを実行させる第２の復旧処理を行ってもよい。
【００１６】
このようにすれば、ＵＳＢ通信にエラーが検出されたときに、ホスト機器に対するアクノリッジを返さない制御を行うことで、ホスト機器にバスリセットを実行させることができる。これにより、通信エラー状態の復旧処理を行うことができる。
【００１７】
また本発明の一態様では、前記処理部は、前記ホスト機器から前記通信部に送信されたパケットにＰＩＤエラー又はトグルビットエラーが検出されたときに、前記第２の復旧処理を行ってもよい。
【００１８】
ＰＩＤエラー又はトグルビットエラーが検出された場合、データパケットのボディー部（データ）が壊れている可能性は低い。即ち、ＰＩＤエラー又はトグルビットエラーが検出される前に電子機器が受信したデータパケットは、信頼性が高いと考えられる。本発明の一態様によれば、ＰＩＤエラー又はトグルビットエラーが検出されたときにホスト機器に対するアクノリッジを返さない制御を行うことで、ホスト機器にエラー発生時のデータパケットから再送信させることができる。これにより、効率的に電子機器がデータを受信できるようになる。
【００１９】
また本発明の一態様では、前記処理部は、一連のデータである第１〜第ｋ（ｋは２以上の整数）のデータパケットの受信において、第ｉ（ｉは１以上ｋ以下の整数）のデータパケットの受信において前記ＰＩＤエラー又は前記トグルビットエラーが検出されたときに、前記第２の復旧処理を行い、前記ホスト機器により前記バスリセットが実行された後、前記第ｉのデータパケットの受信から再開してもよい。
【００２０】
このようにすれば、信頼性が高いと考えられるエラー発生前のデータパケットを電子機器が再受信することなく、電子機器がエラー発生時以降のデータをホスト機器から受信できるようになる。これにより、データ通信を効率化できる。
【００２１】
また本発明の一態様では、前記一連のデータは、印刷データであってもよい。
【００２２】
例えばプリンター等の印刷機能を有する電子機器では、ユーザーがホスト機器と電子機器とをＵＳＢケーブルで接続して用いるタイプの機器がある。本発明の一態様によれば、電子機器がＵＳＢの通信エラーを検出したとき、ホスト機器にバスリセットを実行させる制御を行うことで、ホスト機器にバスリセットを実行させることが可能になる。これにより、ユーザーがＵＳＢケーブルを抜き差ししなくても、電子機器が通信エラー状態からの復旧処理を行うことが可能になる。
【００２３】
また本発明の他の態様は、ＵＳＢの通信バスを介して通信を行う通信部でのＵＳＢ通信にエラーが検出されたか否かを判断し、前記ＵＳＢ通信にエラーが検出されたと判断したときに、前記通信バスに接続されるホスト機器にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行う通信制御方法に関係する。
【００２４】
また本発明の更に他の態様は、ＵＳＢの通信バスを介して通信を行う通信部でのＵＳＢ通信にエラーが検出されたか否かを判断し、前記ＵＳＢ通信にエラーが検出されたと判断したときに、前記通信バスに接続されるホスト機器にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行うステップを、コンピューターに実行させることを特徴とするプログラム。
【図面の簡単な説明】
【００２５】
【図１】本実施形態の電子機器の構成例。
【図２】ＰＣ（ホスト機器）とプリンター（電子機器）のＵＳＢ接続の説明図。
【図３】本実施形態におけるＵＳＢ通信処理を説明する図。
【図４】本実施形態の第１の手法におけるＵＳＢ通信処理のフロー。
【図５】電子機器の物理層回路の詳細な構成例。
【図６】ＨＳモードにおける終端抵抗の変形構成例。
【図７】ホスト機器による切断検出を説明する図。
【図８】ケーブルアタッチ又は通信バスＢＳの電気的な接続後のＵＳＢの動作シーケンスを示す信号波形図。
【図９】本実施形態の第２の手法におけるＵＳＢ通信処理のフロー。
【発明を実施するための形態】
【００２６】
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００２７】
１．電子機器
図１に本実施形態の電子機器１０の構成例を示す。電子機器１０は、処理部２０、通信部３０を含む。また電子機器１０は、記憶部５０、操作部６０、表示部７０、印刷部８０を更に含むことができる。これらの処理部２０、通信部３０、記憶部５０、操作部６０、表示部７０、印刷部８０は、電子機器１０の内部バス等の信号配線を介して電気的に接続されている。
【００２８】
なお電子機器１０は図１の構成に限定されず、これらの一部の構成要素（例えば操作部、表示部又は印刷部等）を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。また電子機器１０は、例えばプリンター（印刷装置）である。或いは電子機器１０は、スキャナー、ファクシミリ装置又はコピー機であってもよい。電子機器１０は、複数の機能を有する複合機（ＭＦＰ：Multifunction Peripheral）であってもよく、印刷機能を有する複合機もプリンターの一例である。或いは電子機器１０は、プロジェクター、頭部装着型表示装置、ウェアラブル機器（リスト型ウェアラブル機器等）、生体情報測定機器（脈拍計、歩数計又は活動量計等）、ロボット、映像機器（カメラ等）、携帯情報端末（スマートフォン、携帯ゲーム機等）又は物理量計測機器等であってもよい。
【００２９】
処理部２０（プロセッサー、コントローラー）は、電子機器１０の各部（通信部、記憶部、印刷部等）の制御を行ったり、本実施形態の各種の処理を行う。例えば処理部２０は、メインＣＰＵ２１、サブＣＰＵ２２などの複数のＣＰＵ（ＭＰＵ、マイコン）を含むことができる。メインＣＰＵ２１（メイン制御基板）は、電子機器１０の各部の制御や全体的な制御を行う。サブＣＰＵ２２は、例えば電子機器１０がプリンターである場合には、印刷についての各種の処理を行う。或いは通信処理のためのＣＰＵを更に設けてもよい。
【００３０】
処理部２０が行う本実施形態の各処理（各機能）は、プロセッサー（ハードウェアを含むプロセッサー）により実現できる。例えば本実施形態の各処理は、プログラム等の情報に基づき動作するプロセッサーと、プログラム等の情報を記憶するメモリー（記憶装置）により実現できる。ここでのプロセッサーは、例えば各部の機能が個別のハードウェアで実現されてもよいし、或いは各部の機能が一体のハードウェアで実現されてもよい。例えば、プロセッサーはハードウェアを含み、そのハードウェアは、デジタル信号を処理する回路及びアナログ信号を処理する回路の少なくとも一方を含むことができる。例えば、プロセッサーは、回路基板に実装された１又は複数の回路装置（例えばＩＣ等）や、１又は複数の回路素子（例えば抵抗、キャパシター等）で構成することができる。プロセッサーは、例えばＣＰＵであってもよい。ただし、プロセッサーはＣＰＵに限定されるものではなく、ＧＰＵ（Graphics Processing Unit）、或いはＤＳＰ（Digital Signal Processor）等、各種のプロセッサーを用いることが可能である。またプロセッサーはＡＳＩＣによるハードウェア回路でもよい。
【００３１】
通信部３０（通信インターフェース）は、少なくとも１つの通信デバイス（通信ＩＣ、インターフェースＩＣ）により実現できる。通信部３０はＵＳＢの通信処理を行う。例えば通信部３０は、ＵＳＢの通信バスＢＳを介してホスト機器（外部機器）との間で高速シリアル通信のインターフェース処理を行う。この場合には通信部３０は、ＵＳＢのデバイスコントローラーのＩＣ等により実現される。
【００３２】
記憶部５０（記憶装置、メモリー）は、データやプログラムなどの各種の情報を記憶する。処理部２０や通信部３０は例えば記憶部５０をワーク領域として動作する。記憶部５０は、ＳＲＡＭ、ＤＲＡＭなどの半導体メモリーであってもよいし、レジスターであってもよいし、ハードディスク装置（ＨＤＤ）などの磁気記憶装置であってもよいし、光学ディスク装置等の光学式記憶装置であってもよい。例えば、記憶部５０はコンピューターにより読み取り可能な命令を格納しており、当該命令が処理部２０（プロセッサー）により実行されることで、電子機器１０の各部（通信部、処理部）の機能が実現されることになる。ここでの命令は、プログラムを構成する命令セットの命令でもよいし、処理部２０（プロセッサー）のハードウェア回路に対して動作を指示する命令であってもよい。
【００３３】
操作部６０（操作パネル）は、ユーザーが入力操作を行うためのものであり、操作ボタン、キー又はタッチセンサーなどにより実現できる。表示部７０（ディスプレイ）は、各種の情報を表示するものであり、液晶や有機ＥＬなどのディスプレイにより実現できる。なお操作部６０及び表示部７０は、例えばタッチパネルにより一体的に構成してもよい。
【００３４】
印刷部８０は印刷エンジンにより実現される。印刷エンジンとは、印刷媒体への画像の印刷を実行する機械的構成である。印刷エンジンは、例えば搬送機構やインクジェット方式の吐出ヘッド、当該吐出ヘッドを含むキャリッジの駆動機構等を含む。印刷エンジンは、搬送機構により搬送される印刷媒体（紙や布）に対して、吐出ヘッドからインクを吐出することで、印刷媒体に画像を印刷する。なお、印刷エンジンの具体的構成はここで例示したものに限られず、レーザー方式でトナーにより印刷するものでもよい。また印刷部８０は、印刷エンジンの稼働状態に関わる各種の物理量を検出するセンサーや、検出結果をカウントするカウンター等を含んでもよい。センサーやカウンターを用いることで、例えば搬送機構の駆動量（モーターの回転量）や、吐出ヘッドの往復回数、インクの消費量等の情報を取得できる。
【００３５】
例えば図１の処理部２０、通信部３０は、プログラムに基づいて本実施形態の各処理を行うことができる。このプログラムは、例えばコンピューターにより読み取り可能な媒体である情報記憶媒体に格納できる。情報記憶媒体は、例えば光ディスク、メモリーカード、ＨＤＤ、或いは半導体メモリー（ＲＯＭ）などにより実現できる。処理部２０、通信部３０は、情報記憶媒体に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体には、本実施形態の各部としてコンピューター（入力装置、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピューターに実行させるためのプログラム）が記憶される。
【００３６】
図２では、電子機器１０の一例であるプリンター２１０と、ホスト機器９０の一例であるＰＣ２２０（パーソナルコンピューター）とが、ＵＳＢの通信バスＢＳを有するＵＳＢケーブル２３０により接続されている。そしてプリンター２１０は、ＰＣ２２０からＵＳＢケーブル２３０（通信バスＢＳ）を介して印刷データを受信する。またプリンター２１０の各種のステータス情報はプリンター２１０からＵＳＢケーブル２３０を介してＰＣ２２０に送信される。またプリンター２１０が例えばスキャナーの機能も有する複合機である場合には、プリンター２１０のスキャナーにより読み取ったデータが、プリンター２１０からＵＳＢケーブル２３０を介してＰＣ２２０に送信される。
【００３７】
図３は、本実施形態におけるＵＳＢ通信処理を説明する図である。なお、以下ではＨＳ（High Speed）モードのＵＳＢ通信を主に例にとり説明するが、本発明の適用対象はこれに限定されない。
【００３８】
図３に示すように、ＵＳＢの通信バスＢＳを有するＵＳＢケーブル２３０の一端側のコネクターは、電子機器１０のＵＳＢコネクター２３２（ダウンストリームポート）に接続される。また、ＵＳＢケーブル２３０の他端側のコネクターは、ホスト機器９０のＵＳＢコネクター２３４（アップストリームポート）に接続される。
【００３９】
電子機器１０の通信部３０は、例えばＵＳＢデバイスコントローラー（ＩＣ）により実現され、レジスター部３１（レジスター）と制御部３２（制御回路）と物理層回路３５を有する。物理層回路３５は、ＨＳモード、ＦＳ（Full Speed）モード、ＬＳモード（Low Speed）モードの物理層の処理を行う。制御部３２は、ＨＳモード、ＦＳモード、ＬＳモードモードのリンク層やプロトコル層の処理を行う。また制御部３２は、ＵＳＢ通信におけるエラーを検出するエラー検出部３３を含む。レジスター部３１は、通信部３０の動作を設定するレジスター値を記憶する。またレジスター部３１は、通信部３０のステータス情報（例えば、エラー検出部３３により検出されたエラーの情報等）を記憶する。
【００４０】
電子機器１０の処理部２０は、例えば１又は複数のＣＰＵにより実現され、エラー判定部２３と復旧処理部２４を含む。エラー判定部２３は、通信部３０のレジスター部３１からエラー情報を読み出し、そのエラー情報に基づいてエラーの有無や、エラーの種類等を判定する。復旧処理部２４は、エラー判定の結果に基づいて、ホスト機器９０にＵＳＢ通信のバスリセットを実行させる処理を、復旧処理として行う。復旧処理は、ＵＳＢ通信のエラー状態から復旧（エラー状態の解消、エラー状態から正常状態への移行）を試みる処理である。
【００４１】
具体的には、復旧処理部２４は、通信部３０のレジスター部３１へのレジスター書き込みにより、通信部３０の動作状態（通信バスＢＳの状態或いはＵＳＢ通信の内容等）を第１の状態に変更する。第１の動作状態は、ホスト機器９０側から見て、ＵＳＢケーブルがＵＳＢコネクター２３２又は２３４から物理的に切断された（抜かれた）状態と等価な状態である。その後、復旧処理部２４は、通信部３０のレジスター部３１へのレジスター書き込みにより、通信部３０の動作状態を第２の状態に変更する。第２の動作状態は、ホスト機器９０側から見て、ＵＳＢケーブルがＵＳＢコネクター２３２又は２３４に物理的に接続された（挿入された）状態と等価な状態である。ホスト機器９０は、この切断及び接続によって、バスリセットを行い、ＵＳＢ通信の再確立を試みる。
【００４２】
ホスト機器９０の通信部９２は、例えばＵＳＢホストコントローラー（ＩＣ）により実現され、制御部９１（制御回路）と物理層回路９３とを含む。物理層回路９３は、ＨＳモード、ＦＳ（Full Speed）モード、ＬＳモード（Low Speed）モードの物理層の処理を行う。制御部９１は、ＨＳモード、ＦＳモード、ＬＳモードモードのリンク層やプロトコル層の処理を行う。物理層回路９３は、通信バスＢＳの切断を検出する切断検出回路９５を含む。切断検出回路９５は、通信バスＢＳの状態（電気的な状態）に基づいて通信バスＢＳの切断を検出する。通常、通信バスＢＳの切断は、ＵＳＢケーブルの物理的な切断によって発生するが、本実施形態では処理部２０が通信部３０を制御することで、電気的に切断状態を作り出す。制御部９１は、切断検出回路９５により切断が検出された場合、バスリセットを行い、ＵＳＢ通信の再確立を試みる。なお、後述する本実施形態の第２の手法のように、制御部９１が通信バスＢＳの切断を検出してもよい。例えば、デバイス側の電子機器１０から規定の応答がない場合に、通信バスＢＳが切断されていると判断する。
【００４３】
以上の実施形態によれば、通信部３０はＵＳＢの通信バスＢＳを介して通信を行う。処理部２０は、通信部３０の通信制御を行う。そして、処理部２０は、ＵＳＢ通信にエラーが検出されたときに、通信バスＢＳに接続されるホスト機器９０にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行う。
【００４４】
具体的には、デバイス側の電子機器１０の通信部３０がＵＳＢ通信のエラーを検出したとき、通信エラー状態となる。ホスト機器９０の通信部９２はエラーを検出していないので、通信エラー状態が解消されなくなる。このため、従来はユーザーがＵＳＢケーブルを抜き差しすることでホスト機器９０に通信エラーを検出（切断検出）させる必要があった。例えば、電子機器１０とホスト機器９０を接続しているＵＳＢケーブルが劣化していたり、低品質であったり、コネクターの接続が不完全であったり、ノイズ等によって一次的に通信が不安定になったりした場合に、このような通信エラー状態が解消されない状況となる可能性がある。本実施形態によれば、デバイス側の電子機器１０が通信エラーを検出したとき、ホスト機器９０にバスリセットを実行させる制御を行うことで、ホスト機器９０にバスリセットを実行させることが可能になる。これにより、ユーザー利便性を向上できる。即ち、ユーザーがＵＳＢケーブルを抜き差ししなくても、デバイス側が能動的に通信エラー状態から復旧させることが可能になる。
【００４５】
なお、以上の実施形態は、以下のような通信制御方法として実施してもよい。この方法では、ＵＳＢの通信バスＢＳを介して通信を行う通信部３０でのＵＳＢ通信にエラーが検出されたか否かを判断する。そして、ＵＳＢ通信にエラーが検出されたと判断したときに、通信バスＢＳに接続されるホスト機器９０にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行う。
【００４６】
また、以上の実施形態は、以下のようなプログラムにより実現してもよい。このプログラムは、ＵＳＢの通信バスＢＳを介して通信を行う通信部３０でのＵＳＢ通信にエラーが検出されたか否かを判断するステップをコンピューターに実行させる。そして、ＵＳＢ通信にエラーが検出されたと判断したときに、通信バスＢＳに接続されるホスト機器９０にバスリセットを実行させる処理を行うことで、通信エラー状態の復旧処理を行うステップをコンピューターに実行させる。
【００４７】
また、以上の実施形態は、上記のようなプログラムを記憶した非一時的な情報記憶媒体により実現してもよい。即ち、この情報記憶媒体からコンピューターがプログラムを読み出してメモリーに記憶し、そのプログラムをコンピューターが実行することにより、プログラムに記述された動作が実現される。
【００４８】
２．本実施形態の第１の手法
図４に、本実施形態の第１の手法におけるＵＳＢ通信処理のフローを示す。なお、以下ではホスト機器９０がＰＣであり、電子機器１０（ターゲット機器）がプリンターである場合を例に説明するが、本手法の適用対象はこれに限定されない。
【００４９】
図４に示すように、ユーザーがＵＳＢケーブルをホスト機器９０（ＰＣ）のＵＳＢコネクター及び電子機器１０（プリンター）のＵＳＢコネクターに接続する。ＵＳＢケーブルが接続されると、ホスト機器９０と電子機器１０との間でＵＳＢ通信が確立される。例えば、ホスト機器９０と電子機器１０が信号のやりとりを行うことで、ホスト機器９０及び電子機器１０が対応するＵＳＢ規格（ＵＳＢ１．０、ＵＳＢ２．０、ＵＳＢ３．０等）に応じて、どのＵＳＢ規格に基づくＵＳＢ通信を行うかが設定される。例えば、通信速度（ＨＳモード、ＦＳモード、ＬＳモード等）が設定される。
【００５０】
ＵＳＢ通信が確立されると、ホスト機器９０は電子機器１０の情報を取得し、電子機器１０を認識する。これにより、ユーザーがホスト機器９０を操作することで電子機器１０に印刷させることが可能な状態となる。
【００５１】
ユーザーが印刷開始の操作をホスト機器９０にすると、ホスト機器９０は印刷データの送信を開始する。印刷データは、第１〜第ｋ（ｋは２以上の整数）のデータパケットに分割されて送信される。
【００５２】
ホスト機器９０の通信部９２は、最初のデータパケットＤＴ１（第１のデータパケット）を電子機器１０の通信部３０に送信する。具体的には、通信部９２が、バルク転送における第１のＯＵＴトランザクションを発行する。まず通信部９２がＯＵＴトークン（バルクＯＵＴ転送であることを示すＰＩＤを含むトークン）を通信部３０に送信し、次にデータパケットＤＴ１を通信部３０に送信する。データパケットは、データのトグル（０又は１）を示すＰＩＤと、データと、ＣＲＣ値とを含む。電子機器１０の通信部３０は、データパケットＤＴ１を正常に受信した場合、ホスト機器９０の通信部９２にアクノリッジＡＣＫ（肯定応答）を送信する。具体的には、アクノリッジＡＣＫを表すＰＩＤを含むパケットを通信部９２に送信する。
【００５３】
次に、ホスト機器９０の通信部９２はデータパケットＤＴ２（第２のデータパケット）を電子機器１０の通信部３０に送信する。具体的には、通信部９２が第２のＯＵＴトランザクションを発行する。まず通信部９２がＯＵＴトークンを通信部３０に送信し、次にデータパケットＤＴ２を通信部３０に送信する。電子機器１０の通信部３０が、データパケットＤＴ２からＣＲＣエラーを検出した場合、処理部２０は通信バスＢＳを電気的に切断する。即ち、ＵＳＢケーブルのコネクターを物理的に抜くのではなく、通信バスＢＳの状態を電気的に変化させることで、通信バスＢＳを切断する。この電気的な切断の具体例については後述する。
【００５４】
具体的には、電子機器１０のエラー検出部３３（通信部３０）は、データパケットのエラー検出の１つとしてＣＲＣエラーの検出を行っている。ＣＲＣエラーの検出では、データパケットに含まれるＣＲＣ値と、受信されたデータパケットからエラー検出部３３が演算したＣＲＣ値とを比較し、一致するか否かを判定する。一致しない場合にはＣＲＣエラーと判定する。エラー検出部３３は、ＣＲＣエラーの検出結果をレジスター部３１に書き込む。エラー検出部３３がデータパケットＤＴ２のＣＲＣエラーを検出し、その情報をレジスター部３１に書き込むと、処理部２０が、その情報をレジスター部３１から読み出し、エラー判定部２３が、検出されたエラーがＣＲＣエラーであると判定（認識）する。復旧処理部２４は、通信バスＢＳを電気的に切断する設定情報を通信部３０のレジスター部３１に書き込み、通信部３０の制御部３２が、その設定情報に基づいて物理層回路３５を制御し、通信バスＢＳを電気的に切断する。
【００５５】
次に、電子機器１０により通信バスＢＳが電気的に切断されたことにより、ホスト機器９０により通信バスＢＳの切断が検出される。これにより、ＵＳＢ通信が切断状態となる。即ち、通信バスＢＳが再び接続されるのを待機する状態（接続検出を行っている状態）となる。
【００５６】
次に、電子機器１０の復旧処理部２４（処理部２０）は、処理部２０は通信バスＢＳを電気的に接続（再接続）する。具体的には、通信バスＢＳを電気的に接続する設定情報を通信部３０のレジスター部３１に書き込み、通信部３０の制御部３２が、その設定情報に基づいて物理層回路３５を制御し、通信バスＢＳを電気的に接続する。
【００５７】
次に、電子機器１０により通信バスＢＳが電気的に接続されたことにより、ホスト機器９０によりＵＳＢ通信のバスリセットが行われる。これにより、ＵＳＢ通信が確立（再確立）する。なお、図４では、バスリセットを明示するためにＵＳＢ通信確立とは別に記載しているが、バスリセットはＵＳＢ通信確立の手順に含まれてもよい。
【００５８】
ＵＳＢ通信が確立すると、ホスト機器９０は印刷データの送信を再開する。このとき、第１〜第ｋのデータパケットに分割された印刷データを、第１のデータパケットから再送信する。ホスト機器９０から電子機器１０に第１〜第ｋのデータパケットが正常に送信できた場合、印刷データの送信が終了する。電子機器１０は、受信した印刷データに基づく印刷処理を行う。
【００５９】
以下、通信バスＢＳの電気的な切断及び接続の具体例を説明する。
【００６０】
図５は、電子機器１０の物理層回路３５の詳細な構成例である。物理層回路３５は、プルアップ抵抗Ｒｐｕ、スイッチ素子ＳＷ＿Ｒｐｕ、プルダウン抵抗Ｒｐｄ１、Ｒｐｄ２を含む。スイッチ素子ＳＷ＿Ｒｐｕは制御信号Ｒｐｕ＿Ｅｎａｂｌｅに基づいてオン又はオフにされる。これによりプルダウン動作が実現される。また物理層回路３５は、ＨＳモード用の送信回路ＨＳＤ（カレントドライバー）、ＬＳ／ＦＳモード用の送信回路ＬＳＤ（ドライバー）、抵抗Ｒｓ１、Ｒｓ２を含む。また物理層回路３５は、ＨＳモード用の差動の受信回路ＨＳＲ（データレシーバー）、スケルチの検出回路ＳＱＬ（トランスミッションエンベロープディテクター）、ＬＳ／ＦＳモード用の差動の受信回路ＬＳＲ（データレシーバー）、切断の検出回路ＤＩＳ（ディスコネクションエンベロープディテクター）、シングルエンドの受信回路ＤＰ＿ＳＥＲ、ＤＭ＿ＳＥＲ（レシーバー）を含む。
【００６１】
ＨＳモードでは、通信バスＢＳの終端抵抗をディセーブルにする（無効化する）ことが、通信バスＢＳを電気的に切断することに相当する。ＨＳモードにおいて、通常はＬＳ／ＦＳモード用の送信回路ＬＳＤがローレベル（例えばグランド電圧）を出力する。そして、送信回路ＬＳＤの出力と差動信号線（信号ＤＰ、ＤＭの信号線）との間に接続された抵抗Ｒｓ１、Ｒｓ２が、通信バスＢＳの終端抵抗となる。電子機器１０の復旧処理部２４は、ＬＳ／ＦＳモード用の送信回路ＬＳＤの出力をハイインピーダンス状態に設定することで、終端抵抗をディセーブルにする。これにより、通信バスＢＳが電気的に切断される。後述するように、電子機器１０側の終端抵抗をディセーブルにすると、ホスト機器９０が送信するＳＯＦ（Start Of Frame）のＥＯＰ（End Of Packet）の振幅が変化し、ホスト機器９０が通信バスＢＳの切断を検出できる。
【００６２】
通信バスＢＳを再接続する際には、復旧処理部２４は、送信回路ＬＳＤの出力をローレベルに設定する（ハイインピーダンス状態を解除する）ことで、終端抵抗をイネーブルにする。これにより、通信バスＢＳが電気的に接続される。ホスト機器９０は、バスリセットを行ってＵＳＢ通信を再確立する。
【００６３】
ＦＳモードでは、信号ＤＰの信号線のプルアップを無効にすることが、通信バスＢＳを電気的に切断することに相当する。ＦＳモードにおいて、通常は制御信号Ｒｐｕ＿Ｅｎａｂｌｅがアクティブであり、スイッチ素子ＳＷ＿Ｒｐｕがオンであり、信号ＤＰの信号線がプルアップ抵抗Ｒｐｕによりプルアップされる。電子機器１０の復旧処理部２４は、制御信号Ｒｐｕ＿Ｅｎａｂｌｅを非アクティブにし、スイッチ素子ＳＷ＿Ｒｐｕをオフにする（プロトコルによる制御を受け付けずにオフに固定する）ことで、プルアップを無効にする。これにより、通信バスＢＳが電気的に切断される。ＦＳモードにおいて通常は信号ＤＰの信号線がプルアップされているので、プルアップが無効になったことでホスト機器９０が通信バスＢＳの切断を検出できる。
【００６４】
通信バスＢＳを再接続する際には、復旧処理部２４は、プロトコルによる制御に基づいてスイッチ素子ＳＷ＿Ｒｐｕがオン又はオフに制御される状態に設定することで、プルアップを有効にする。これにより、通信バスＢＳが電気的に接続される。後述するように、ホスト機器９０がＶＢＵＳを立ち上げた後に電子機器１０が信号ＤＰの信号線をプルアップすることで、ホスト機器９０がバスリセットを開始し、ＵＳＢ通信を再確立する。
【００６５】
図６は、ＨＳモードにおける終端抵抗の変形構成例である。なお、物理層回路３５の送信回路ＨＳＤ等の構成要素は、適宜図示を省略している。図６では、信号ＤＰの信号線と低電位側電源（グランド）との間にスイッチ素子ＳＷ＿Ｒｔ１と抵抗Ｒｔ１が直列に設けられ、信号ＤＭの信号線と低電位側電源（グランド）との間にスイッチ素子ＳＷ＿Ｒｔ２と抵抗Ｒｔ２が直列に設けられる。スイッチ素子ＳＷ＿Ｒｔ１、ＳＷ＿Ｒｔ２は制御信号Ｒｔ＿Ｅｎａｂｅｌに基づいてオン又はオフに制御される。
【００６６】
電子機器１０の復旧処理部２４は、制御信号Ｒｔ＿Ｅｎａｂｅｌを非アクティブにし、スイッチ素子ＳＷ＿Ｒｔ１、ＳＷ＿Ｒｔ２をオフにすることで、終端抵抗をディセーブルにする。これにより、通信バスＢＳが電気的に切断される。通信バスＢＳを再接続する際には、復旧処理部２４は、制御信号Ｒｔ＿Ｅｎａｂｅｌをアクティブにし、スイッチ素子ＳＷ＿Ｒｔ１、ＳＷ＿Ｒｔ２をオンにすることで、終端抵抗をイネーブルにする。
【００６７】
図７は、ホスト機器９０による切断検出を説明する図である。ＨＳアイドル状態では、ホスト機器９０がＳＯＦを所与の時間間隔で通信バスＢＳに送信する。ＨＳモードでは通信バスＢＳが電流駆動されるので、終端抵抗による電流電圧変換によってＤＰ／ＤＭの振幅が決まる。ホスト機器９０側の終端抵抗と電子機器１０側の終端抵抗が通信バスＢＳに接続されている場合、２つの終端抵抗の並列接続となり、ＤＰ／ＤＭの振幅は４００ｍＶとなる。一方、電子機器１０側の終端抵抗がディセーブルになった場合、ホスト機器９０側の終端抵抗のみが通信バスＢＳに接続されることになるので、電流電圧変換における抵抗値が倍になり、ＤＰ／ＤＭの振幅が８００ｍＶとなる。ホスト機器９０の切断検出回路９５は、ＳＯＦに含まれるＥＯＰの振幅を検出することで、通信バスＢＳの切断を検出する。本実施形態では、電子機器１０側の終端抵抗が電気的に切断されるので、ＵＳＢケーブルを物理的に抜かなくてもホスト機器９０が通信バスＢＳの切断を検出できる。
【００６８】
図８はケーブルアタッチ又は通信バスＢＳの電気的な接続後のＵＳＢの動作シーケンスを示す信号波形図である。図８は、差動の信号ＤＰ、ＤＭの各種状態を示している。ここでは、通信バスＢＳが電気的に接続され、バスリセットが行われる動作シーケンスを説明する。
【００６９】
ケーブルアタッチ又は通信バスＢＳの電気的な接続（タイミングｔ１）の後、ＢＣ１．２のプロトコルが実行される。ＢＣ１．２のプロトコルが実行されるＢ１に示す期間が充電調停期間である。
【００７０】
次に、デバイス側（ペリフェラルデバイス）の電子機器１０がプルアップ抵抗をオンにすることで、信号ＤＰの電圧がプルアップされて、ＦＳモードに移行する（ｔ２）。即ち、ＦＳアイドルに移行し、一定時間、何もなければ、サスペンド状態に移行する。
【００７１】
次に、ホスト側（メインコントローラー）のホスト機器９０がリセットを開始すると（ｔ３）、プルアップされていた信号ＤＰの電圧がＬレベルになる。これをデバイス側が検知し、デバイス側がデバイスチャープＫを送出する（ｔ４）。その後、一定時間経過が経過すると、デバイス側はデバイスチャープＫを停止する（ｔ５）。すると、ホスト側がホストチャープＫ／Ｊを実行する（ｔ６）。デバイス側は、ホストチャープＫ／Ｊを検出することで、ホスト側がＨＳモードに対応していることを認識して、ＨＳターミネーション（終端抵抗）をオンにする（ｔ７）。これにより信号ＤＰ、ＤＭの振幅が例えば４００ｍＶに低下して、ＨＳモードに移行する。そしてホスト側がリセットを終了すると（ｔ８）、ＨＳアイドルに移行し、ホスト側はＳＯＦの送出を開始する（ｔ９）。
【００７２】
このように、プロトコルに従って電子機器１０がプルアップ抵抗をオンにすることで、ホスト機器９０がバスリセットを開始する。また、バスリセットにおいて電子機器１０がホストチャープＫ／Ｊを検出することで、ＨＳターミネーション（終端抵抗）をオンにする。本実施形態では、電子機器１０の復旧処理部２４が、信号ＤＰのプルアップ抵抗及びＨＳターミネーションをイネーブル（プロトコルに従ってオン又はオフに制御される状態）に設定することで、上記のようにホスト機器９０がバスリセットを行うことが可能となる。このようにして、通信バスＢＳの電気的な接続が実現される。
【００７３】
以上の実施形態によれば、処理部２０は、通信バスＢＳを介した通信部３０とホスト機器９０（通信部９２）との接続を電気的に切断する制御を行うことで、ホスト機器９０にバスリセットを実行させる第１の復旧処理を行う。
【００７４】
通信バスＢＳを介した接続の電気的な切断は、上述したように、ホスト機器９０の通信部９２から見て通信バスＢＳが物理的に切断されたように認識される（物理的に切断されたのと等価な）状態にすることである。
【００７５】
このようにすれば、ＵＳＢ通信にエラーが検出されたときに、通信バスＢＳを介した通信部３０とホスト機器９０との接続を電気的に切断する制御を行うことで、ホスト機器にバスリセットを実行させることができる。これにより、通信エラー状態の復旧処理を行うことができる。ホスト機器は、通信バスＢＳの切断を検出した場合、その検出前に送信データ（例えば印刷データ）の一部を送信していたとしても、送信データを最初から再送信する。即ち、通信バスＢＳの接続を電気的に切断することで、ホスト機器９０に送信データを最初から再送信させ、電子機器１０が確実にデータを受信できるようになる。
【００７６】
また本実施形態では、通信部３０は、処理部２０により上記の接続を電気的にオフにする制御が行われたとき、通信バスＢＳの終端抵抗をディセーブルにする、又は通信バスＢＳのＤＰ信号線のプルアップ抵抗をディセーブルにする。
【００７７】
例えば、図５においてＬＳモード／ＦＳモードの送信回路ＬＳＤの出力をハイインピーダンス状態に設定する、或いは図６においてスイッチ素子ＳＷ＿Ｒｔ１、ＳＷ＿Ｒｔ２をオフにすることが、終端抵抗をディセーブルにすることに相当する。また、例えば図５においてスイッチ素子ＳＷ＿Ｒｐｕをディセーブルにすることが、ＤＰ信号線のプルアップ抵抗をディセーブルにすることに相当する。ここでの「ディセーブル」は、プロトコルによる制御を受け付けずにディセーブルに固定する（無効化する）ことである。
【００７８】
このようにすれば、通信バスＢＳの終端抵抗をディセーブルにすることで、ＨＳモードのＵＳＢ通信においてホスト機器９０に通信バスＢＳの切断を検出させることができる。これにより、ホスト機器９０にバスリセットを実行させることができる。また、ＤＰ信号線のプルアップ抵抗をディセーブルにすることで、ＦＳモードのＵＳＢ通信においてホスト機器９０に通信バスＢＳの切断を検出させることができる。これにより、ホスト機器９０にバスリセットを実行させることができる。
【００７９】
また本実施形態では、処理部２０は、ホスト機器９０から通信部３０に送信されたパケットにＣＲＣエラーが検出されたときに、第１の復旧処理を行う。
【００８０】
ＣＲＣエラーが検出された場合、データパケットのボディー部（印刷データ）が壊れている可能性が高い。即ち、ＣＲＣエラーが検出される前に電子機器１０が受信したデータパケットについても信頼性が低い可能性がある。本実施形態によれば、ＣＲＣエラーが検出されたときに通信バスＢＳを電気的に切断することで、ホスト機器９０に印刷データを最初から送信させることができる。これにより、ＵＳＢ通信の信頼性を向上できる。即ち、電子機器１０が、ホスト機器９０からの印刷データを確実に受信できるようになる。
【００８１】
３．本実施形態の第２の手法
図９に、本実施形態の第２の手法におけるＵＳＢ通信処理のフローを示す。ホスト機器９０及び電子機器１０の構成は図３と同様である。第２の手法は、上述した第１の手法と組み合わせて用いてもよいし、第１の手法と組み合わせずに用いてもよい。なお、以下ではホスト機器９０がＰＣであり、電子機器１０（ターゲット機器）がプリンターである場合を例に説明するが、本手法の適用対象はこれに限定されない。
【００８２】
図９に示すように、ユーザーがＵＳＢケーブルをホスト機器９０（ＰＣ）のＵＳＢコネクター及び電子機器１０（プリンター）のＵＳＢコネクターに接続する。ＵＳＢケーブルが接続されると、ホスト機器９０と電子機器１０との間でＵＳＢ通信が確立される。
【００８３】
ＵＳＢ通信が確立されると、ホスト機器９０は電子機器１０の情報を取得し、電子機器１０を認識する。これにより、ユーザーがホスト機器９０を操作することで電子機器１０に印刷させることが可能な状態となる。
【００８４】
ユーザーが印刷開始の操作をホスト機器９０にすると、ホスト機器９０は印刷データの送信を開始する。印刷データは、第１〜第ｋ（ｋは２以上の整数）のデータパケットに分割されて送信される。
【００８５】
ホスト機器９０の通信部９２は、最初のデータパケットＤＴ１（第１のデータパケット）を電子機器１０の通信部３０に送信する。具体的には、通信部９２が、バルク転送における第１のＯＵＴトランザクションを発行する。まず通信部９２がＯＵＴトークン（バルクＯＵＴ転送であることを示すＰＩＤを含むトークン）を通信部３０に送信し、次にデータパケットＤＴ１を通信部３０に送信する。データパケットは、データのトグル（０又は１）を示すＰＩＤと、データと、ＣＲＣ値とを含む。電子機器１０の通信部３０は、データパケットＤＴ１を正常に受信した場合、ホスト機器９０の通信部９２にアクノリッジＡＣＫ（肯定応答）を送信する。具体的には、アクノリッジＡＣＫを表すＰＩＤを含むパケットを通信部９２に送信する。
【００８６】
次に、ホスト機器９０の通信部９２はデータパケットＤＴ２（第２のデータパケット）を電子機器１０の通信部３０に送信する。具体的には、通信部９２が第２のＯＵＴトランザクションを発行する。まず通信部９２がＯＵＴトークンを通信部３０に送信し、次にデータパケットＤＴ２を通信部３０に送信する。電子機器１０の通信部３０が、データパケットＤＴ２からＰＩＤエラー又はトグルビットエラーを検出した場合、処理部２０はアクノリッジＡＣＫを送信しないように通信部３０を制御する。
【００８７】
具体的には、電子機器１０のエラー検出部３３（通信部３０）が、データパケットのエラー検出としてＰＩＤエラーや、トグルビットエラー。パケットのＰＩＤは８ビットであり、４ビットの情報を２つ重複して含んでいる。２つの４ビットの情報のうち一方の４ビットを論理反転したものが他方の４ビットになっている。エラー検出部３３は、この２つの４ビットの内容を比較し、異なっていた場合にＰＩＤエラーと判断する。また、第１〜第ｋのデータパケットとして、トグル「０」（反転論理）のデータパケットと、トグル「１」（非反転論理）のデータパケットが交互に送信される。このトグル情報はＰＩＤとして送信される。エラー検出部３３は、ＰＩＤに基づいてトグルが「０」「１」交互になっているか否かを判定し、トグルが「０」「１」交互になっていない場合にトグルビットエラーと判定する。エラー検出部３３は、ＰＩＤエラーとトグルビットエラーの検出結果をレジスター部３１に書き込む。エラー検出部３３がデータパケットＤＴ２のＰＩＤエラー又はトグルビットエラーを検出し、その情報をレジスター部３１に書き込むと、処理部２０が、その情報をレジスター部３１から読み出し、エラー判定部２３が、検出されたエラーがＰＩＤエラー又はトグルビットエラーであると判定（認識）する。復旧処理部２４は、アクノリッジＡＣＫを非送信にする設定情報を通信部３０のレジスター部３１に書き込み、通信部３０の制御部３２が、その設定情報に基づいてアクノリッジＡＣＫを非送信にする。
【００８８】
次に、電子機器１０からアクノリッジＡＣＫが送信されないことにより、ホスト機器９０が通信エラーと判断する。ホスト機器９０はＵＳＢ通信のバスリセットを行い、ＵＳＢ通信を確立（再確立）する。なお、図９では、バスリセットを明示するためにＵＳＢ通信確立とは別に記載しているが、バスリセットはＵＳＢ通信確立の手順に含まれてもよい。
【００８９】
ＵＳＢ通信が確立すると、ホスト機器９０は印刷データの送信を再開する。このとき、電子機器１０からアクノリッジＡＣＫが返信されなかった第２のデータパケットから再送信する。ホスト機器９０から電子機器１０に第１〜第ｋのデータパケットが正常に送信できた場合、印刷データの送信が終了する。電子機器１０は、受信した印刷データに基づく印刷処理を行う。
【００９０】
以上の実施形態によれば、処理部２０は、ホスト機器９０に対するアクノリッジを返さない制御を行うことでホスト機器９０にバスリセットを実行させる第２の復旧処理を行う。
【００９１】
例えば、バルクＯＵＴ転送において１つのトランザクションにはＯＵＴトークンと、データパケットと、応答パケットとが含まれる。処理部２０は、アクノリッジを示すＰＩＤの応答パケットを通信部３０に送信させることで、ホスト機器９０に対するアクノリッジを返さない制御を行う。
【００９２】
このようにすれば、ＵＳＢ通信にエラーが検出されたときに、ホスト機器９０に対するアクノリッジを返さない制御を行うことで、ホスト機器９０にバスリセットを実行させることができる。これにより、通信エラー状態の復旧処理を行うことができる。ホスト機器は、電子機器１０からのアクノリッジを検出できない場合、通信エラーと判定し、バスリセットを行ってＵＳＢ通信を再確立する。そして、アクノリッジを検出できなかったデータパケットから送信を再開する。即ち、ホスト機器９０に対するアクノリッジを返さないことで、ホスト機器９０にエラー発生時のデータパケットから再送信させ、エラー発生時において効率的に電子機器１０がデータを受信できるようになる。
【００９３】
また本実施形態では、処理部２０は、ホスト機器９０から通信部３０に送信されたパケットにＰＩＤエラー又はトグルビットエラーが検出されたときに、第２の復旧処理を行う。
【００９４】
ＰＩＤエラー又はトグルビットエラーが検出された場合、データパケットのボディー部（印刷データ）が壊れている可能性は低い。即ち、ＰＩＤエラー又はトグルビットエラーが検出される前に電子機器１０が受信したデータパケット（図９のＤＴ１）は、信頼性が高いと考えられる。本実施形態によれば、ＰＩＤエラー又はトグルビットエラーが検出されたときにホスト機器９０に対するアクノリッジを返さない制御を行うことで、ホスト機器９０にエラー発生時のデータパケットから再送信させることができる。これにより、信頼性が高いと考えられるエラー発生前のデータパケットを電子機器１０が再受信することなく、効率的に電子機器１０が印刷データを受信できるようになる。
【００９５】
また本実施形態では、処理部２０は、一連のデータである第１〜第ｋ（ｋは２以上の整数）のデータパケットの受信において、第ｉ（ｉは１以上ｋ以下の整数）のデータパケットの受信においてＰＩＤエラー又はトグルビットエラーが検出されたときに、第２の復旧処理を行う。そして、処理部２０は、ホスト機器９０によりバスリセットが実行された後、第ｉのデータパケットの受信から再開する。図９の例では、データパケットＤＴ２が第ｉのデータパケットに相当する。
【００９６】
このようにすれば、信頼性が高いと考えられるエラー発生前のデータパケットを電子機器１０が再受信することなく、電子機器１０がエラー発生時以降のデータをホスト機器９０から受信できるようになる。これにより、データ通信を効率化できる。
【００９７】
また本実施形態では、一連のデータ（第１〜第ｋのデータパケット）は、印刷データである。即ち、電子機器１０は印刷機能を有する機器（例えばプリンター等）である。
【００９８】
例えばコンシューマー向けのプリンター等では、ユーザーがＰＣ（ホスト機器）とプリンター（電子機器）とをＵＳＢケーブルで接続する。本実施形態によれば、プリンターが通信エラーを検出したとき、ＰＣにバスリセットを実行させる制御を行うことで、ＰＣにバスリセットを実行させることが可能になる。これにより、ユーザーがＵＳＢケーブルを抜き差ししなくても、プリンターが能動的に通信エラー状態から復旧させることが可能になる。
【００９９】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また本実施形態及び変形例の全ての組み合わせも、本発明の範囲に含まれる。また通信部、処理部、電子機器、ホスト機器等の構成及び動作等も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【０１００】
１０…電子機器、２０…処理部、２１…メインＣＰＵ、２２…サブＣＰＵ、
２３…エラー判定部、２４…復旧処理部、３０…通信部、３１…レジスター部、
３２…制御部、３３…エラー検出部、３５…物理層回路、５０…記憶部、６０…操作部、
７０…表示部、８０…印刷部、９０…ホスト機器、９１…制御部、９２…通信部、
９３…物理層回路、９５…切断検出回路、２１０…プリンター、
２３０…ＵＳＢケーブル、２３２，２３４…ＵＳＢコネクター、
ＡＣＫ…アクノリッジ、ＢＳ…通信バス、ＤＭ，ＤＰ…信号、
ＤＴ１，ＤＴ２…データパケット、Ｒｐｕ…プルアップ抵抗、
Ｒｓ１，Ｒｓ２，Ｒｔ１，Ｒｔ２…抵抗（終端抵抗）
【図１】
2019061402.tif 000003
【図２】
2019061402.tif 000004
【図３】
2019061402.tif 000005
【図４】
2019061402.tif 000006
【図５】
2019061402.tif 000007
【図６】
2019061402.tif 000008
【図７】
2019061402.tif 000009
【図８】
2019061402.tif 000010
【図９】
2019061402.tif 000011