(57)【要約】【課題】プリンタがオンライン状態か否かによらずファームウェアを更新できるようにする。【解決手段】プリンタ２００の状態によらずコマンドを送信可能な第１の伝送路（ＵＳＢケーブル３００のコントロールパイプ）を介してファームウェア強制更新コマンドをプリンタ２００に送信し、プリンタ２００をオンライン状態に切り替えた後、第２の伝送路（ＵＳＢケーブル３００のバルクアウトパイプ）を介してファームウェアをプリンタ２００に送信して更新する。これにより、プリンタ２００がオフライン状態のときであっても、コントロールパイプを介して送信されるファームウェア強制更新コマンドによってプリンタ２００をオンライン状態に強制的に切り替えて、ファームウェアの更新が可能な状態とすることにより、プリンタ２００がオンライン状態か否かによらずファームウェアの更新を行うことができるようにする。【選択図】図１
2016018462.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータからプリンタにファームウェアを送信して、上記プリンタのファームウェアを更新するようになされたファームウェアの更新システムであって、
上記ホストコンピュータと上記プリンタとの間の伝送路として、上記プリンタの制御を行うためのコマンドを上記プリンタの状態によらず送信可能な第１の伝送路と、大容量のデータを高速に送信可能な第２の伝送路とを有し、
上記ホストコンピュータは、
上記ファームウェアの更新指示を取得したとき、上記第１の伝送路を介してファームウェア強制更新コマンドを上記プリンタに送信する更新コマンド送信部と、
上記更新コマンド送信部により上記ファームウェア強制更新コマンドを送信した後、上記第２の伝送路を介して上記ファームウェアを上記プリンタに送信するファームウェア送信部とを備え、
上記プリンタは、
上記第１の伝送路を介して上記ファームウェア強制更新コマンドを受信したとき、上記プリンタの状態を検出する状態検出部と、
上記状態検出部より上記プリンタがオフライン状態であることが検出された場合、上記オンライン状態に切り替える状態切替部と、
上記オンライン状態のときに上記第２の伝送路を介して送信されてくる上記ファームウェアを記憶媒体に更新して記憶させるファームウェア更新部とを備えたことを特徴とするファームウェアの更新システム。
【請求項２】
上記プリンタは、上記状態検出部により検出された上記プリンタの状態を表す状態情報を上記ホストコンピュータに返信する状態情報返信部をさらに備え、
上記ファームウェア送信部は、上記プリンタから送信されてくる上記状態情報に基づいて、上記プリンタが上記オンライン状態であることが確認された後、上記第２の伝送路を介して上記ファームウェアを上記プリンタに送信することを特徴とする請求項１に記載のファームウェアの更新システム。
【請求項３】
上記更新コマンド送信部は、上記プリンタから送信されてくる上記状態情報に基づいて、上記プリンタが上記ファームウェアの更新に失敗してリライト待機状態であることが確認された場合、上記第１の伝送路を介して上記ファームウェア強制更新コマンドを上記プリンタに再送することを特徴とする請求項２に記載のファームウェアの更新システム。
【請求項４】
上記プリンタは、上記ホストコンピュータから上記第２の伝送路を介して受信された印刷データを受け捨てる印刷データ受け捨て部をさらに備え、
上記ファームウェア更新部は、上記印刷データ受け捨て部による上記印刷データの受け捨て処理の後に、上記第２の伝送路を介して送信されてくる上記ファームウェアを上記記憶媒体に更新して記憶させることを特徴とする請求項１〜３の何れか１項に記載のファームウェアの更新システム。
【請求項５】
上記印刷データ受け捨て部は、上記プリンタが上記第１の伝送路を介して上記ファームウェア強制更新コマンドを受信したとき、上記第２の伝送路を介して上記印刷データを受信して印刷を実行中である場合、当該印刷データを受け捨てることを特徴とする請求項４に記載のファームウェアの更新システム。
【請求項６】
上記印刷データ受け捨て部は、上記プリンタが上記ホストコンピュータから上記第２の伝送路を介して上記印刷データを受信して印刷を実行中にエラー発生によって上記オフライン状態となった後、上記プリンタが上記第１の伝送路を介して上記ファームウェア強制更新コマンドを受信した場合、上記状態切替部により上記オンライン状態に切り替えられた後に上記ホストコンピュータから送信されてくる印刷データを受け捨てることを特徴とする請求項４に記載のファームウェアの更新システム。
【請求項７】
上記状態切替部は、上記状態検出部より上記オンライン状態であることが検出された場合で、かつ、上記ホストコンピュータからのデータ送信が中断中の状態であることが検出された場合、コマンドパーサのリセットを行った後、上記オンライン状態に切り替えることを特徴とする請求項１〜３の何れか１項に記載のファームウェアの更新システム。
【請求項８】
ホストコンピュータとプリンタとの間の伝送路として、上記プリンタの制御を行うためのコマンドを上記プリンタの状態によらず送信可能な第１の伝送路と、大容量のデータを高速に送信可能な第２の伝送路とを有するシステムにおいて、上記ホストコンピュータから上記プリンタにファームウェアを送信して上記プリンタのファームウェアを更新する際の制御を行う更新制御方法であって、
上記ホストコンピュータの更新コマンド送信部が、上記ファームウェアの更新指示を取得したとき、上記第１の伝送路を介してファームウェア強制更新コマンドを上記プリンタに送信する第１のステップと、
上記プリンタの状態検出部が、上記第１の伝送路を介して上記ファームウェア強制更新コマンドを受信したとき、上記プリンタの状態を検出する第２のステップと、
上記プリンタの状態切替部が、上記状態検出部より上記プリンタがオフライン状態であることが検出された場合、上記オンライン状態に切り替える第３のステップと、
上記ホストコンピュータのファームウェア送信部が、上記更新コマンド送信部により上記ファームウェア強制更新コマンドを送信した後、上記第２の伝送路を介して上記ファームウェアを上記プリンタに送信する第４のステップと、
上記プリンタのファームウェア更新部が、上記オンライン状態のときに上記第２の伝送路を介して送信されてくる上記ファームウェアを記憶媒体に更新して記憶させる第５のステップとを有することを特徴とするファームウェアの更新制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアの更新システムおよび更新制御方法に関し、特に、ホストコンピュータからプリンタにファームウェアを送信して、プリンタのファームウェアを更新するようになされたファームウェアの更新システムに用いて好適なものである。
【背景技術】
【０００２】
一般に、プリンタには、ハードウェアを直接制御するためのファームウェアがインストールされている。ファームウェアは、アプリケーションソフトウェアと異なり、ユーザが自由に書き換えたり入れ替えたりすることを想定していない。ただし、プリンタの不具合修正や機能強化などをファームウェアのバージョンアップによって行う場合がある。ファームウェアの更新は、例えば、ＵＳＢ（Universal Serial Bus）ケーブルで接続されたホストコンピュータからプリンタに対して新しいファームウェアをダウンロードすることによって行う。
【０００３】
しかしながら、従来のプリンタは、プリンタがオンライン状態になっているときしかファームウェアの更新ができなかった。そのため、プリンタに用紙がセットされていないときや、プリンタのカバーが開いているときなどは、プリンタがオフライン状態となっているため、ファームウェアの更新をすることができない。この場合は、ユーザが用紙をセットしたり、カバーを閉じたりする作業をした後でなければ、ファームウェアの更新を行うことができなかった。
【０００４】
また、従来のプリンタは、ホストコンピュータからＵＳＢケーブルを介して印刷データをプリンタに送信して印刷を実行している際にも、ファームウェアを更新することができなかった。そのため、印刷が完了した後でなければ、ファームウェアの更新を行うことができなかった。
【０００５】
最近は、ＬＡＮに接続されたホストコンピュータにプリンタを接続して使用するケースが増えている。この場合、ＬＡＮ上にある別の端末からファームウェア更新の操作をすることにより、その操作に基づき発生された命令に従ってホストコンピュータからプリンタにファームウェアをダウンロードして更新することが可能である。つまり、プリンタから離れた場所にある端末において、ファームウェア更新の操作をすることが可能である。
【０００６】
ただし、この場合でも、プリンタに用紙がセットされていないときや、プリンタのカバーが開いているときなどは、ユーザはプリンタの設置場所まで移動して用紙をセットしたり、カバーを閉じたりする作業をしなければならず、非常に面倒であるという問題があった。
【０００７】
また、ＬＡＮ上のホストコンピュータにプリンタを接続して使用する場合、そのプリンタは複数の端末で共用されることになる。この場合、ファームウェアの更新操作を行っている端末では、他の端末からの指示によりプリンタにおいて印刷を実行中か否かを確認することができない。そのため、ファームウェアの更新操作を行っているにもかかわらず、印刷の実行中でファームウェアを更新することができないことが生じるという問題もあった。
【０００８】
なお、ＬＡＮに接続されたネットワーク対応プリンタ（複合機）をネットワークユニットとデバイスユニットとにより構成して両ユニットをＵＳＢケーブルで接続し、ファームウェア保管サーバから送信されてきたファームウェアを、ネットワークユニットからＵＳＢケーブルを介してデバイスユニットに転送することによって、ファームウェアの更新を行うようになされたシステムが知られている（例えば、特許文献１参照）。この特許文献１には、ネットワークユニットからデバイスユニットに対して、ＵＳＢのcontrol IN/OUTパイプを介したデータ転送（コントロール転送）により、ファームウェアの転送を行うことが記載されている（段落[００８６]参照）。
【０００９】
また、コンピュータの電源がオフになっているときであっても、ホスト装置からネットワークを介してコンピュータにアクセス要求を送信することにより、当該コンピュータの電源をオンとして、ホスト装置がプログラムのアップデートを所定のシーケンスに従って行うようにした技術が提案されている（例えば、特許文献２参照）。
【００１０】
また、ホスト装置から送信された印刷データに基づいて印刷を行うプリンタにおいて、異常を検出したときに削除処理モードに移行し、ホスト装置から送信された印刷データを読み捨てるようにした技術も提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第４５５２８１５号公報
【特許文献２】特開２００２−５５８２５号公報
【特許文献３】特開２００５−７７６２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、上述した問題を解決するために成されたものであり、プリンタがオンライン状態か否かによらずファームウェアの更新を行うことができるようにすることを目的とする。また、本発明は、プリンタにおいて印刷実行中か否かによらずファームウェアの更新を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
上記した課題を解決するために、本発明では、ホストコンピュータがファームウェアの更新指示を取得したとき、プリンタの状態によらずコマンドを送信可能な第１の伝送路を介してファームウェア強制更新コマンドをプリンタに送信し、これを受けたプリンタがオフライン状態にあるときは、プリンタをオンライン状態に切り替える。その後、大容量のデータを高速に送信可能な第２の伝送路を介してファームウェアをプリンタに送信して更新するようにしている。
【００１４】
本発明の他の態様では、プリンタがファームウェア強制更新コマンドを受信したとき、プリンタが第２の伝送路を介して印刷データを受信して印刷を実行中である場合、当該印刷データを受け捨てるようにし、その受け捨て処理の後に、ファームウェアをプリンタに送信して更新するようにしている。
【発明の効果】
【００１５】
上記のように構成した本発明によれば、プリンタがオフライン状態のときであっても、ホストコンピュータから第１の伝送路を介してプリンタに送信されるファームウェア強制更新コマンドによって、プリンタがオンライン状態に強制的に切り替えられ、ファームウェアの更新が可能な状態とされる。その上で、ホストコンピュータから第２の伝送路を介してプリンタにファームウェアが送信され、ファームウェアの更新が行われる。これにより、プリンタがオンライン状態か否かによらずファームウェアの更新を行うことができる。
【００１６】
本発明の他の特徴によれば、プリンタがファームウェア強制更新コマンドを受信したとき、プリンタが第２の伝送路を介して印刷データを受信して印刷を実行中であっても、当該印刷データが受け捨てられて、ファームウェアの更新が可能な状態とされる。その上で、ホストコンピュータから第２の伝送路を介してプリンタにファームウェアが送信され、ファームウェアの更新が行われる。これにより、プリンタにおいて印刷実行中か否かによらずファームウェアの更新を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明によるファームウェアの更新システムを実装した一実施形態に係る印刷システムの構成例を示す図である。
【図２】本実施形態によるホストコンピュータの機能構成例を示すブロック図である。
【図３】本実施形態によるプリンタの機能構成例を示すブロック図である。
【図４】本実施形態によるファームウェアの更新システムの動作例を示すフローチャートである。
【図５】本実施形態によるプリンタの他の機能構成例を示すブロック図である。
【図６】本実施形態によるファームウェアの更新システムの他の動作例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態による印刷システムの構成例を示す図である。図１に示す印刷システムは、本発明によるファームウェアの更新システムを含んでいる。
【００１９】
図１に示すように、本実施形態の印刷システムは、ホストコンピュータ１００とプリンタ２００と端末４００とを備えて構成されている。ホストコンピュータ１００とプリンタ２００との間は、ＵＳＢケーブル３００により接続されている。また、ホストコンピュータ１００と端末４００は、ＬＡＮ５００により接続されている。なお、端末４００およびＬＡＮ５００は、必須の構成要素ではない。
【００２０】
ホストコンピュータ１００は、内蔵する記憶媒体（例えば、ハードディスク等）にアプリケーションプログラム１１、プリンタドライバ１２およびファームウェア更新用プログラム１３を記憶している。アプリケーションプログラム１１は、印刷機能を備えたプログラムであり、その種類は問わない。プリンタドライバ１２は、プリンタ２００を制御するデバイスドライバであり、アプリケーションプログラム１１から印刷データを受け取って、プリンタ２００に送信する。
【００２１】
ファームウェア更新用プログラム１３は、ホストコンピュータ１００からプリンタ２００にファームウェアを送信して、プリンタ２００のファームウェアを更新する処理を実行するためのプログラムである。このファームウェア更新用プログラム１３は、ホストコンピュータ１００にあらかじめ記憶しておいてもよいし、ファームウェアの更新を実行する際に、図示しないサーバ装置からインターネットを介してダウンロードするようにしてもよい。この場合、更新対象とする新しいファームウェアと共にファームウェア更新用プログラム１３をダウンロードすることが可能である。
【００２２】
図１に示す印刷システムにおいて、印刷の実行は、ホストコンピュータ１００のアプリケーションプログラム１１において生成した印刷データをプリンタ２００に送信して行うことも可能であるし、端末４００において生成した印刷データをホストコンピュータ１００経由でプリンタ２００に送信して行うことも可能である。後者の場合、端末４００にもアプリケーションプログラム１１およびプリンタドライバ１２がインストールされている。
【００２３】
また、ファームウェアの更新は、ホストコンピュータ１００から指示して行うことも可能であるし、端末４００からホストコンピュータ１００に指示を出力して行うことも可能である。後者の場合、端末４００にもファームウェア更新用プログラム１３がインストールされている。
【００２４】
ＵＳＢケーブル３００は、ホストコンピュータ１００とプリンタ２００との間でデータ通信を行うための伝送路である。ＵＳＢでは、ホストコンピュータ１００とプリンタ２００とを接続する１本のケーブルを使って、仮想的な伝送路（パイプ）を複数設定してデータを多重に伝送することが可能である。また、ＵＳＢでは、パイプを用いて、コントロール転送、バルク転送、インタラプト転送、アイソクロナス転送などの各種転送モードによるデータ通信が可能である。
【００２５】
本実施形態では、ホストコンピュータ１００とプリンタ２００との間の伝送路として、コントロール転送を行う際に用いるコントロールパイプ（第１の伝送路に相当）と、バルク転送を行う際に用いるバルクアウトパイプ（第２の伝送路に相当）とを用いる。コントロールパイプは、プリンタ２００の状態によらず、プリンタ２００の制御を行うためのコマンドを送信することが可能な伝送路である。バルクアウトパイプは、印刷データやファームウェアなど大容量のデータを高速に送信可能な伝送路である。
【００２６】
プリンタ２００は、内蔵する記憶媒体（例えば、フラッシュメモリやＲＯＭ等）にファームウェア２１およびファームウェア更新用プログラム２２を記憶している。ファームウェア２１は、プリンタ２００が備える印刷用のハードウェアを直接制御するためのプログラムである。ファームウェア更新用プログラム２２は、ホストコンピュータ１００のファームウェア更新用プログラム１３と協働して、フラッシュメモリ等に記憶されたファームウェア２１の更新を行う。
【００２７】
図２は、上述したアプリケーションプログラム１１、プリンタドライバ１２およびファームウェア更新用プログラム１３により実現されるホストコンピュータ１００の機能構成例を示すブロック図である。図２に示すように、ホストコンピュータ１００は、その機能構成として、指示取得部１０１、更新コマンド送信部１０２、状態取得コマンド送信部１０３、状態情報受信部１０４、状態判定部１０５、ファームウェア送信部１０６、印刷データ生成部１０７および印刷データ送信部１０８を備えている。また、ホストコンピュータ１００は、ファームウェア記憶部１１０を備えている。
【００２８】
指示取得部１０１は、例えばホストコンピュータ１００にインストールされたＯＳにより実現される。また、上記各機能ブロック１０２〜１０６は、ホストコンピュータ１００にインストールされたファームウェア更新用プログラム１３により実現される。さらに、印刷データ生成部１０７および印刷データ送信部１０８は、ホストコンピュータ１００にインストールされたアプリケーションプログラム１１およびプリンタドライバ１２によりそれぞれ実現される。
【００２９】
印刷データ生成部１０７は、アプリケーションプログラム１１に対するユーザの操作に応じて、印刷データを生成する。印刷データ送信部１０８は、アプリケーションプログラム１１に対するユーザの印刷指示の操作に応じて、アプリケーションプログラム１１からプリンタドライバ１２に印刷データを受け渡し、ＵＳＢケーブル３００のバルクアウトパイプ３０２を介して当該印刷データをプリンタ２００に送信する。ここで説明した処理は、ホストコンピュータ１００において印刷データを生成してプリンタ２００に送信する場合の処理である。
【００３０】
なお、端末４００において生成した印刷データに基づいてプリンタ２００にて印刷を実行する場合、印刷データ送信部１０８は、端末４００からＬＡＮ５００を介して印刷データを受信し、当該受信した印刷データをプリンタ２００に送信する。なお、印刷データ送信部１０８とは別に、端末４００からの印刷データをプリンタ２００に転送する印刷データ転送部を設けてもよい。
【００３１】
指示取得部１０１は、ファームウェアの更新指示を取得する。例えば、指示取得部１０１は、ホストコンピュータ１００においてファームウェアの更新操作が行われた場合は、その更新操作によって発生される更新指示の情報を取得する。また、端末４００においての更新操作が行われた場合、指示取得部１０１は、端末４００での更新操作によって発生される更新指示の情報を、ＬＡＮ５００を介して端末４００から取得する。
【００３２】
更新コマンド送信部１０２は、指示取得部１０１がファームウェアの更新指示を取得したとき、ＵＳＢケーブル３００のコントロールパイプ３０１を介して、ファームウェア強制更新コマンドをプリンタ２００に送信する。上述したように、コントロールパイプ３０１は、プリンタ２００の状態によらずコマンドを送信することが可能な伝送路である。したがって、例えばプリンタ２００がオフライン状態でファームウェアの更新ができない状態であっても、ファームウェア強制更新コマンドをプリンタ２００に送信することは可能である。
【００３３】
状態取得コマンド送信部１０３は、更新コマンド送信部１０２によってファームウェア強制更新コマンドをプリンタ２００に送信した後、プリンタ２００の状態を表す状態情報の取得を要求する状態取得コマンドを、コントロールパイプ３０１を介してプリンタ２００に送信する。さらに、状態取得コマンド送信部１０３は、後述するようにファームウェア送信部１０６によってファームウェアのプリンタ２００への送信を開始した後、ファームウェアの更新完了を確認するための更新完了確認コマンドを、コントロールパイプ３０１を介してプリンタ２００に送信する。
【００３４】
状態情報受信部１０４は、状態取得コマンド送信部１０３がプリンタ２００に対して状態取得コマンドを送信したことの応答として、プリンタ２００からコントロールパイプ３０１を介して返信されてくる状態情報を受信する。また、状態情報受信部１０４は、状態取得コマンド送信部１０３がプリンタ２００に対して更新確認コマンドを送信したことの応答として、プリンタ２００からコントロールパイプ３０１を介して返信されてくる状態情報も受信する。
【００３５】
状態判定部１０５は、状態情報受信部１０４により受信された状態情報に基づいて、プリンタ２００の状態を判定する。状態取得コマンドの送信時に判定するプリンタ２００の状態は、第１に、プリンタ２００がオンライン状態であるかオフライン状態であるかという点である。第２に、プリンタ２００が印刷データを受信して印刷を実行中の状態であるか否かという点である。一方、更新確認コマンドの送信時に判定するプリンタ２００の状態は、プリンタ２００にてファームウェアの更新処理が完了しているか、それともファームウェアの更新に失敗してリライト待機状態であるかという点である。
【００３６】
ファームウェア送信部１０６は、更新コマンド送信部１０２によりコントロールパイプ３０１を介してファームウェア強制更新コマンドをプリンタ２００に送信した後、バルクアウトパイプ３０２を介してファームウェアをプリンタ２００に送信する。このとき送信するファームウェアは、ファームウェア記憶部１１０にあらかじめ記憶されたものである。あるいは、上述したように、図示しないサーバ装置からファームウェア更新用プログラム１３と共にダウンロードしたものであってもよい。
【００３７】
ファームウェア送信部１０６は、具体的には、状態取得コマンド送信部１０３による状態取得コマンドの送信に対応してプリンタ２００から返信された状態情報に基づいて、状態判定部１０５による判定によってプリンタ２００がオンライン状態であることを確認した後に、バルクアウトパイプ３０２を介してファームウェアをプリンタ２００に送信する。
【００３８】
プリンタ２００がオンライン状態であることを示す状態情報が返信されてくるケースとしては、次の２つがある。１つは、更新コマンド送信部１０２がファームウェア強制更新コマンドをプリンタ２００に送信したときに、もともとプリンタ２００がオンライン状態であった場合である。もう１つは、更新コマンド送信部１０２がファームウェア強制更新コマンドをプリンタ２００に送信したとき、プリンタ２００はオフライン状態であったものの、後述するように強制的にオンライン状態に切り替えられた場合である。
【００３９】
ファームウェア送信部１０６は、状態判定部１０５による判定の結果、プリンタ２００がオンライン状態であって、かつ、印刷の実行中でもないことを確認した場合、ファームウェアを直ちにプリンタ２００に送信する。一方、プリンタ２００がオンライン状態であっても、プリンタ２００が印刷データを受信して印刷を実行中であることを確認した場合は、所定のタイムアウト（例えば、３秒）を待ってから、ファームウェアをプリンタ２００に送信する。後述するように、プリンタ２００において印刷データを受け捨てる時間を待つためである。
【００４０】
また、状態判定部１０５による判定の結果、プリンタ２００がファームウェアの更新に失敗してリライト待機状態であることを確認した場合、更新コマンド送信部１０２によりコントロールパイプ３０１を介してファームウェア強制更新コマンドをプリンタ２００に再送信する。このように、本実施形態では、一度はプリンタ２００がオンライン状態となってファームウェア送信部１０６がファームウェアを送信したにもかかわらず、何らかの問題によりファームウェアの更新に失敗した場合でも、プリンタ２００のハードウェアリセットをすることなく、ファームウェア強制更新コマンドの送信から再開することが可能である。
【００４１】
図３は、図１に示したファームウェア２１およびファームウェア更新用プログラム２２により実現されるプリンタ２００の機能構成例を示すブロック図である。図３に示すように、プリンタ２００は、その機能構成として、更新コマンド受信部２０１、状態取得コマンド受信部２０２、状態検出部２０３、状態情報返信部２０４、状態切替部２０５、ファームウェア更新部２０６、印刷データ受け捨て部２０７、印刷データ受信部２０８および印刷処理部２０９を備えている。また、プリンタ２００は、フラッシュメモリ２１０を備えている。
【００４２】
ここで、印刷データ受信部２０８および印刷処理部２０９は、フラッシュメモリ２１０に記憶されたファームウェア２１により実現される。また、上記各機能ブロック２０１〜２０７は、ファームウェア更新用プログラム２２により実現される。
【００４３】
印刷データ受信部２０８は、ホストコンピュータ１００の印刷データ送信部１０８によりバルクアウトパイプ３０２を介して送信された印刷データを受信する。印刷処理部２０９は、印刷データ受信部２０８により受信された印刷データに基づいて、印刷を実行する。
【００４４】
更新コマンド受信部２０１は、ホストコンピュータ１００の更新コマンド送信部１０２によりコントロールパイプ３０１を介して送信されたファームウェア強制更新コマンドを受信する。状態取得コマンド受信部２０２は、ホストコンピュータ１００の状態取得コマンド送信部１０３によりコントロールパイプ３０１を介して送信された状態取得コマンドおよび更新完了確認コマンドを受信する。
【００４５】
状態検出部２０３は、更新コマンド受信部２０１がファームウェア強制更新コマンドを受信したとき、プリンタ２００の状態を検出する。上述したように、ファームウェア強制更新コマンドの受信時に検出するプリンタ２００の状態は、第１に、プリンタ２００がオンライン状態であるかオフライン状態であるかという点である。第２は、プリンタ２００が印刷データを受信して印刷を実行中の状態であるか否かという点である。
【００４６】
また、状態検出部２０３は、状態取得コマンド受信部２０２が更新完了確認コマンドを受信したときも、プリンタ２００の状態を検出する。この更新完了確認コマンドの受信時に検出するプリンタ２００の状態は、ファームウェアの更新処理が完了しているか、それともファームウェアの更新に失敗してリライト待機状態であるかという点である。
【００４７】
ここで、プリンタ２００には、オンライン状態であるかオフライン状態であるかを示すフラグ情報が設定されている。状態検出部２０３は、このフラグ情報を参照することにより、オンライン状態であるかオフライン状態であるかを検出することが可能である。なお、プリンタ２００がオフライン状態となる場合とは、例えば、プリンタ２００に用紙がセットされていない場合、プリンタ２００のカバーが開いている場合などである。これらの状態が図示しないセンサによって検出されると、フラグはオフライン状態に設定される。
【００４８】
同様に、プリンタ２００がファームウェアの更新に失敗してリライト待機状態になると、そのことを示すフラグがファームウェア更新部２０６により設定される。状態検出部２０３は、このフラグ情報を参照することにより、プリンタ２００がリライト待機状態であるか否かを検出することが可能である。これに対して、プリンタ２００が印刷データを受信して印刷を実行中の状態であるか否かは、印刷データ受信部２０８の動作を監視することによって検出することが可能である。
【００４９】
状態情報返信部２０４は、状態取得コマンド受信部２０２がホストコンピュータ１００から状態取得コマンドを受信した場合、ファームウェア強制更新コマンドの受信に応じて状態検出部２０３により検出されたプリンタ２００の状態（オンライン状態か否か、印刷を実行中か否か）を表す状態情報を、コントロールパイプ３０１を介してホストコンピュータ１００に返信する。
【００５０】
また、状態情報返信部２０４は、状態取得コマンド受信部２０２がホストコンピュータ１００から更新完了確認コマンドを受信した場合、その受信に応じて状態検出部２０３により検出されたファームウェアの更新完了状態（更新処理が完了しているか、ファームウェアの更新に失敗してリライト待機状態であるか）を表す状態情報を、コントロールパイプ３０１を介してホストコンピュータ１００に返信する。
【００５１】
状態切替部２０５は、更新コマンド受信部２０１によりファームウェア強制更新コマンドが受信されたとき、状態検出部２０３より検出されたプリンタ２００の状態がオフライン状態であった場合、プリンタ２００をオンライン状態に強制的に切り替える。すなわち、プリンタ２００に用紙がセットされていない状態であっても、プリンタ２００のカバーが開いている状態であっても、上述したフラグをオンライン状態に強制的に切り替える。
【００５２】
ファームウェア更新部２０６は、プリンタ２００がオンライン状態のときにバルクアウトパイプ３０２を介して送信されてくるファームウェアを受信して、フラッシュメモリ２１０に更新して記憶させる。ここで、プリンタ２００がオンライン状態（もともとオンライン状態であることが状態検出部２０３により検出された場合、または、状態切替部２０５によってオンライン状態に強制的に切り替えられた場合の何れか）であって、かつ、印刷の実行中でないことが状態検出部２０３により検出された場合は、ホストコンピュータ１００からファームウェアが直ちに送られてくるので、これを受信してフラッシュメモリ２１０に更新して記憶させる。
【００５３】
印刷データ受け捨て部２０７は、更新コマンド受信部２０１がファームウェア強制更新コマンドを受信したとき、プリンタ２００がバルクアウトパイプ３０２を介して印刷データを受信して印刷を実行中であることが状態検出部２０３により検出された場合に、印刷処理部２０９にて実行中の印刷処理を強制的に終了させた上で、印刷データ受信部２０８にて受信中の印刷データを受け捨てる処理を行う。この受け捨て処理は、所定のタイムアウト（例えば、３秒）をもって終了する。
【００５４】
ファームウェア更新部２０６は、プリンタ２００がオンライン状態であって、かつ、印刷を実行中であることが状態検出部２０３により検出された場合は、印刷データ受け捨て部２０７による印刷データの受け捨て処理の後（つまり、タイムアウトの後）に、バルクアウトパイプ３０２を介して送信されてくるファームウェアを受信して、フラッシュメモリ２１０に更新して記憶させる。
【００５５】
図４は、上記のように構成した本実施形態によるファームウェアの更新システムの動作例を示すフローチャートである。図４に示すフローチャートは、指示取得部１０１がプリンタ２００のファームウェア２１を更新するための指示を取得したときに開始する。
【００５６】
まず、ホストコンピュータ１００の更新コマンド送信部１０２は、指示取得部１０１がファームウェア２１の更新指示を取得したとき、ＵＳＢケーブル３００のコントロールパイプ３０１を介して、ファームウェア強制更新コマンドをプリンタ２００に送信する（ステップＳ１１）。プリンタ２００では、更新コマンド受信部２０１にてファームウェア強制更新コマンドを受信すると、状態検出部２０３がプリンタ２００の状態を検出する（ステップＳ２１）。
【００５７】
次に、状態切替部２０５は、状態検出部２０３より検出されたプリンタ２００の状態がオフライン状態であるか否かを判定し（ステップＳ２２）、オフライン状態であった場合、プリンタ２００をオンライン状態に強制的に切り替える（ステップＳ２３）。なお、状態検出部２０３より検出されたプリンタ２００の状態がオンライン状態であった場合は、状態の切り替えは行わない。
【００５８】
一方、ホストコンピュータ１００では、更新コマンド送信部１０２によりファームウェア強制更新コマンドを送信した後、状態取得コマンド送信部１０３が状態取得コマンドをＵＳＢケーブル３００のコントロールパイプ３０１を介してプリンタ２００に送信する（ステップＳ１２）。
【００５９】
プリンタ２００では、状態取得コマンド受信部２０２にて状態取得コマンドを受信すると、状態情報返信部２０４が、状態検出部２０３により検出されたプリンタ２００の状態を表す状態情報を、コントロールパイプ３０１を介してホストコンピュータ１００に返信する（ステップＳ２４）。ここで返信する状態情報は、プリンタ２００がオンライン状態であるか否か、プリンタ２００が印刷を実行中であるか否かを示すものである。
【００６０】
ホストコンピュータ１００では、状態情報受信部１０４にて状態情報を受信すると、状態判定部１０５が、その受信した状態情報に基づいて、プリンタ２００がオンライン状態であるか否かを判定する（ステップＳ１３）。ここで、オンライン状態ではない、すなわち、プリンタ２００がオフライン状態であると判定された場合、処理はステップＳ１２に戻る。一方、プリンタ２００がオンライン状態であると判定された場合、状態判定部１０５は、上記状態情報に基づいて、プリンタ２００が印刷を実行中か否かをさらに判定する（ステップＳ１４）。
【００６１】
ここで、プリンタ２００が印刷を実行中であると状態判定部１０５にて判定された場合、ファームウェア送信部１０６は、所定のタイムアウト（例えば、３秒）を待ってから（ステップＳ１５）、バルクアウトパイプ３０２を介してファームウェアをプリンタ２００に送信する（ステップＳ１６）。一方、プリンタ２００が印刷を実行中でないと状態判定部１０５にて判定された場合、ファームウェア送信部１０６は、所定のタイムアウトを待つことなく、ファームウェアをプリンタ２００に直ちに送信する（ステップＳ１６）。
【００６２】
プリンタ２００では、ステップＳ２４にて状態情報返信部２０４がホストコンピュータ１００に状態情報を返信した後、印刷データ受け捨て部２０７は、印刷データを受信して印刷を実行中であることが状態検出部２０３により検出されたか否かを判定する（ステップＳ２５）。ここで、印刷を実行中であることが状態検出部２０３により検出されたと判定した場合、印刷データ受け捨て部２０７は、印刷処理部２０９で実行中の印刷処理を強制的に終了させた上で（ステップＳ２６）、印刷データ受信部２０８にて受信中の印刷データを受け捨てる（ステップＳ２７）。この受け捨て処理は、開始から所定のタイムアウト（例えば、３秒）を経過した時点をもって終了する（ステップＳ２８）。
【００６３】
受け捨て処理のタイムアウトが経過すると、ホストコンピュータ１００からバルクアウトパイプ３０２を介してファームウェアが送信されてくる。ファームウェア更新部２０６は、ホストコンピュータ１００から送信されてくるファームウェアを受信して（ステップＳ２９）、フラッシュメモリ２１０に更新して記憶させる（ステップＳ３０）。
【００６４】
なお、上記ステップＳ２５において、印刷を実行中ではないことが状態検出部２０３により検出されたと判定した場合は、ホストコンピュータ１００からバルクアウトパイプ３０２を介してファームウェアが直ちに送信されてくる。この場合は、ステップＳ２６〜Ｓ２８の処理は行わない。そして、ファームウェア更新部２０６は、ホストコンピュータ１００から送信されてくるファームウェアを受信して（ステップＳ２９）、フラッシュメモリ２１０に更新して記憶させる（ステップＳ３０）。
【００６５】
ホストコンピュータ１００では、ステップＳ１６にてファームウェア送信部１０６によりファームウェアをプリンタ２００に送信した後、状態取得コマンド送信部１０３が、コントロールパイプ３０１を介して更新完了確認コマンドをプリンタ２００に送信する（ステップＳ１７）。
【００６６】
プリンタ２００では、状態取得コマンド受信部２０２にてこの更新完了確認コマンドを受信すると、状態検出部２０３が、ファームウェアの更新処理の状態を検出する（ステップＳ３１）。そして、状態情報返信部２０４は、状態検出部２０３による検出結果に基づいて、ファームウェアの更新処理が完了しているか、ファームウェアの更新に失敗してリライト待機状態であるかを表す状態情報を生成し、ホストコンピュータ１００に返信する（ステップＳ３２）。
【００６７】
ホストコンピュータ１００では、状態情報受信部１０４にて状態情報を受信すると、状態判定部１０５が、その受信した状態情報に基づいて、ファームウェアの更新処理が完了しているか否かを判定する（ステップＳ１８）。ここで、ファームウェアの更新処理が完了していない、すなわち、リライト待機状態であると判定された場合、処理はステップＳ１１に戻り、ファームウェア強制更新コマンドの送信を再開する。一方、ファームウェアの更新処理が完了していると判定された場合、図４に示すフローチャートの処理は終了する。
【００６８】
以上詳しく説明したように、本実施形態では、ホストコンピュータ１００においてファームウェアの更新指示を取得したとき、プリンタ２００の状態によらずコマンドを送信可能なコントロールパイプ３０１（第１の伝送路）を介してファームウェア強制更新コマンドをプリンタ２００に送信する。そして、このファームウェア強制更新コマンドを受けたプリンタ２００がオフライン状態にあるときは、プリンタ２００をオンライン状態に切り替える。その後、大容量のデータを高速に送信可能なバルクアウトパイプ３０２（第２の伝送路）を介してファームウェアをプリンタ２００に送信して更新するようにしている。
【００６９】
このように構成した本実施形態によれば、プリンタ２００がオフライン状態のときであっても、ホストコンピュータ１００からコントロールパイプ３０１を介してプリンタ２００に送信されるファームウェア強制更新コマンドによって、プリンタ２００がオンライン状態に強制的に切り替えられ、ファームウェアの更新が可能な状態とされる。その上で、ホストコンピュータ１００からバルクアウトパイプ３０２を介してプリンタ２００にファームウェアが送信され、ファームウェアの更新が行われる。これにより、プリンタ２００がオンライン状態か否かによらず、ファームウェアの更新を行うことができる。
【００７０】
例えば、ＬＡＮ５００上にある端末４００においてファームウェアの更新操作をすることにより、その操作に基づき発生された更新指示に従ってホストコンピュータ１００からプリンタ２００にファームウェアをダウンロードして更新する場合、プリンタ２００から離れた場所に端末４００があると、プリンタ２００に用紙がセットされているか否か、プリンタ２００のカバーが開いているか否かなどの状態を確認できないまま、端末４００にてファームウェアの更新操作を行うことになる。
【００７１】
この場合において、プリンタ２００に用紙がセットされていなかったり、プリンタ２００のカバーが開いていたりして、プリンタ２００がオフライン状態になっていたとしても、オンライン状態に強制的に切り替えてファームウェアの更新を行うことができる。これにより、ファームウェアを更新しようとするユーザは、プリンタ２００の設置場所まで移動して用紙をセットしたり、カバーを閉じたりする作業をする必要がなく、ファームウェアの更新作業性を向上させることができる。
【００７２】
また、本実施形態では、ファームウェア強制更新コマンドの送信はコントロールパイプ３０１で行いつつ、ファームウェアの送信はバルクアウトパイプ３０２を用いて行うようにしている。ファームウェアの送信についてもコントロールパイプ３０１を用いて行うことも可能であるが、送信に時間がかかる。本実施形態のようにバルクアウトパイプ３０２を用いてファームウェアの送信を行うことにより、ファームウェアの更新を短時間で終了させることができる。
【００７３】
また、本実施形態では、プリンタ２００がホストコンピュータ１００からファームウェア強制更新コマンドを受信したとき、バルクアウトパイプ３０２を介して印刷データを受信して印刷を実行中である場合、印刷処理を強制的に停止して印刷データを受け捨てるようにし、その受け捨て処理の後に、ファームウェアをプリンタ２００に送信して更新するようにしている。
【００７４】
このように構成した本実施形態によれば、プリンタ２００がファームウェア強制更新コマンドを受信したときに、プリンタ２００がバルクアウトパイプ３０２を介して印刷データを受信して印刷を実行中であっても、当該印刷データが受け捨てられて、ファームウェアの更新が可能な状態とされる。その上で、ホストコンピュータ１００からバルクアウトパイプ３０２を介してプリンタ２００にファームウェアが送信され、ファームウェアの更新が行われる。これにより、プリンタ２００において印刷を実行中か否かによらず、ファームウェアの更新を行うことができる。
【００７５】
例えば、図１では端末４００を１つのみ図示しているが、複数の端末４００がＬＡＮ５００に接続され、当該複数の端末４００で１つのプリンタ２００を共用する場合、ファームウェアの更新操作を行っている端末４００では、他の端末４００からの指示によりプリンタ２００において印刷を実行中か否かを確認することができない。本実施形態によれば、もし、他の端末４００からホストコンピュータ１００を介してプリンタ２００に印刷データが送信されて印刷を実行中の状態であっても、その印刷処理を停止してファームウェアの更新処理を優先して実行することができる。
【００７６】
なお、上記実施形態では、プリンタ２００が更新コマンド受信部２０１にてファームウェア強制更新コマンドを受信したときに、状態検出部２０３によりオンライン状態であることが検出された場合、状態切替部２０５において特に状態の切り替えを行うことがない例について説明したが、本発明はこれに限定されない。例えば、状態検出部２０３よりオンライン状態であると判定された場合で、かつ、ホストコンピュータ１００からのデータ送信が中断中の状態であると判定された場合、コマンドパーサのリセットを行った後、オンライン状態に切り替えるようにしてもよい。
【００７７】
図５は、この場合におけるプリンタ２００の機能構成例を示すブロック図である。この図５において、図３に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図５に示す例では、図３に示した状態切替部２０５に代えて、状態切替部２０５’を備えている。状態切替部２０５’は、プリンタ２００がオンライン状態で、かつ、ホストコンピュータ１００からのデータ送信が中断中の状態であることが状態検出部２０３により検出された場合に、コマンドパーサのリセットを行った後、プリンタ２００をオンライン状態に切り替える。
【００７８】
例えば、プリンタ２００がオンライン状態であっても、ホストコンピュータ１００に何らかの障害が発生してファームウェアが送信されてこない場合、ホストコンピュータ１００にハードウェアリセットをかけて、再度コマンドを送信する必要が生じる。ここで、プリンタ２００がホストコンピュータ１００からコマンドを受信している際にデータ送信が中断された可能性もある。この場合でも、コマンドパーサのリセットを行うことにより、再送されるコマンドをプリンタ２００が正しく理解して実行することができる。
【００７９】
また、上記実施形態では、プリンタ２００が印刷を実行中のときに、印刷処理を強制的に終了させた上で、ホストコンピュータ１００から受信中の印刷データを受け捨てる例について説明したが、印刷データの受け捨て処理を行うケースはこれに限定されない。例えば、ホストコンピュータ１００からプリンタ２００に印刷データを送信し、プリンタ２００において印刷処理を実行していたものの、エラー発生（用紙無しなど）により印刷が中断してプリンタ２００がオフライン状態となった場合において、このような状態下でファームウェアの更新を行う際にも、印刷データの受け捨て処理を実行する。
【００８０】
図６は、このようなケースにおけるファームウェアの更新システムの動作例を示すフローチャートである。なお、図６に示すフローチャートは、ホストコンピュータ１００からプリンタ２００に印刷データを送信してプリンタ２００で印刷処理を実行している際にエラーが発生し、プリンタ２００がオフライン状態となったことを示す状態情報（ビジー信号）をホストコンピュータ１００がプリンタ２００から受信したときに開始する。
【００８１】
まず、ホストコンピュータ１００の更新コマンド送信部１０２は、プリンタ２００がオフライン状態となったことを示す状態情報（ビジー信号）をプリンタ２００から受信したとき、ＵＳＢケーブル３００のコントロールパイプ３０１を介して、ファームウェア強制更新コマンドをプリンタ２００に送信する（ステップＳ４１）。プリンタ２００では、更新コマンド受信部２０１にてファームウェア強制更新コマンドを受信すると、状態切替部２０５がプリンタ２００をオンライン状態に強制的に切り替える（ステップＳ５１）。そして、印刷データ受け捨て部２０７により、印刷データ受け捨てモードを設定する（ステップＳ５２）。
【００８２】
一方、ホストコンピュータ１００では、更新コマンド送信部１０２によりファームウェア強制更新コマンドを送信した後、状態取得コマンド送信部１０３が状態取得コマンドをＵＳＢケーブル３００のコントロールパイプ３０１を介してプリンタ２００に送信する（ステップＳ４２）。
【００８３】
プリンタ２００では、状態取得コマンド受信部２０２にて状態取得コマンドを受信すると、状態情報返信部２０４が、状態検出部２０３により検出されたプリンタ２００の状態を表す状態情報を、コントロールパイプ３０１を介してホストコンピュータ１００に返信する（ステップＳ５３）。ここで返信する状態情報は、プリンタ２００がオンライン状態であるか否かを示すものである。
【００８４】
ホストコンピュータ１００では、状態情報受信部１０４にて状態情報を受信すると、状態判定部１０５が、その受信した状態情報に基づいて、プリンタ２００がオンライン状態であるか否かを判定する（ステップＳ４３）。ここで、オンライン状態ではない、すなわち、プリンタ２００がオフライン状態であると判定された場合、処理はステップＳ４２に戻る。一方、プリンタ２００がオンライン状態であると判定された場合、印刷データ送信部１０８は、プリンタ２００におけるエラーの発生により中断していた印刷データの送信を再開する（ステップＳ４４）。
【００８５】
プリンタ２００では、ステップＳ５３にて状態情報返信部２０４がホストコンピュータ１００に状態情報を返信した後、印刷データ受け捨て部２０７は、ホストコンピュータ１００から送信され印刷データ受信部２０８にて受信された印刷データを受け捨てる（ステップＳ５４）。この受け捨て処理は、開始から所定のタイムアウト（例えば、３秒）を経過した時点をもって終了する（ステップＳ５５）。
【００８６】
ホストコンピュータ１００では、ステップＳ４４にて印刷データ送信部１０８が印刷データの送信を再開した後、印刷データの送信が完了したか否かを判定する（ステップＳ４５）。印刷データの送信が完了したと印刷データ送信部１０８にて判定すると、状態取得コマンド送信部１０３は、状態取得コマンドをコントロールパイプ３０１を介してプリンタ２００に送信する（ステップＳ４６）。
【００８７】
プリンタ２００では、この状態取得コマンドを状態取得コマンド受信部２０２にて受信したとき、印刷データ受け捨て処理のタイムアウトがまだ経過していない場合、状態情報返信部２０４は、プリンタ２００がファームウェア更新の準備中であることを示す状態情報をホストコンピュータ１００に返信する（ステップＳ５６）。一方、印刷データ受け捨て処理のタイムアウトが経過している場合、状態情報返信部２０４は、ファームウェアの更新準備が完了したことを示す状態情報をホストコンピュータ１００に返信する（ステップＳ５７）。そして、印刷データ受け捨て部２０７により、印刷データ受け捨てモードの設定を解除する（ステップＳ５８）。
【００８８】
ホストコンピュータ１００では、状態情報受信部１０４にて状態情報を受信すると、状態判定部１０５が、その受信した状態情報に基づいて、プリンタ２００にてファームウェア更新の準備が完了しているか否かを判定する（ステップＳ４７）。ここで、プリンタ２００にてファームウェア更新の準備が完了していないと判定された場合、処理はステップＳ４６に戻る。一方、プリンタ２００にてファームウェア更新の準備が完了していると判定された場合、ファームウェア送信部１０６は、バルクアウトパイプ３０２を介してファームウェアをプリンタ２００に送信する（ステップＳ４８）。
【００８９】
プリンタ２００では、ステップＳ５８にて印刷データ受け捨て部２０７が印刷データ受け捨てモードの設定を解除すると、ホストコンピュータ１００からバルクアウトパイプ３０２を介してファームウェアが送信されてくる。ファームウェア更新部２０６は、ホストコンピュータ１００から送信されてくるファームウェアを受信して（ステップＳ５９）、フラッシュメモリ２１０に更新して記憶させる（ステップＳ６０）。
【００９０】
ホストコンピュータ１００では、ステップＳ４８にてファームウェア送信部１０６によりファームウェアをプリンタ２００に送信した後、状態取得コマンド送信部１０３が、コントロールパイプ３０１を介して更新完了確認コマンドをプリンタ２００に送信する（ステップＳ４９）。
【００９１】
プリンタ２００では、状態取得コマンド受信部２０２にてこの更新完了確認コマンドを受信すると、状態検出部２０３が、ファームウェアの更新処理の状態を検出する（ステップＳ６１）。そして、状態情報返信部２０４は、状態検出部２０３による検出結果に基づいて、ファームウェアの更新処理が完了しているか、ファームウェアの更新に失敗してリライト待機状態であるかを表す状態情報を生成し、ホストコンピュータ１００に返信する（ステップＳ６２）。
【００９２】
ホストコンピュータ１００では、状態情報受信部１０４にて状態情報を受信すると、状態判定部１０５が、その受信した状態情報に基づいて、ファームウェアの更新処理が完了しているか否かを判定する（ステップＳ５０）。ここで、ファームウェアの更新処理が完了していない、すなわち、リライト待機状態であると判定された場合、処理はステップＳ４１に戻り、ファームウェア強制更新コマンドの送信を再開する。一方、ファームウェアの更新処理が完了していると判定された場合、図６に示すフローチャートの処理は終了する。
【００９３】
また、上記実施形態では、ホストコンピュータ１００とプリンタ２００との間をＵＳＢケーブル３００で接続し、第１の伝送路としてコントロールパイプ３０１を、第２の伝送路としてバルクアウトパイプ３０２を使用する例について説明したが、本発明はこれに限定されない。例えば、ホストコンピュータ１００とプリンタ２００との間を有線または無線のＬＡＮにより接続してもよいし、ブルートゥースにより接続してもよい。ＬＡＮにより接続する場合、２つのポートを用いて２つの伝送路を設定し、一方を第１の伝送路、他方を第２の伝送路として使用することが可能である。また、ブルートゥースにより接続する場合、ブルートゥースの拡張仕様であるＢＬＥ（Bluetooth Low Energy）を第１の伝送路、通常仕様のブルートゥースを第２の伝送路として使用することが可能である。
【００９４】
また、上記実施形態では、指示取得部１０１がファームウェアの更新指示を取得したときに、ホストコンピュータ１００からプリンタ２００に対してファームウェア強制更新コマンドを送信するとともに、状態取得コマンドを送信してプリンタ２００の状態を確認しているが、この状態の確認に加えて、プリンタ２００の機種、モデル、バージョンなどを問い合わせ、その問い合わせに対する回答の結果に応じてファームウェアの更新を制御するようにしてもよい。
【００９５】
例えば、更新対象として指定したファームウェアが、プリンタ２００の機種やモデルに対応するものである場合に限り、ファームウェアの更新を許可するように制御することが可能である。また、更新対象として指定したファームウェアのバージョンが、プリンタ２００にインストールされているファームウェアのバージョンよりも新しい場合に限り、ファームウェアの更新を許可するように制御することが可能である。
【００９６】
また、上記実施形態において、プリンタ２００をオフライン状態からオンライン状態に強制的に切り替えた場合、ファームウェアの更新が完了した後に、プリンタ２００をオンライン状態からオフライン状態に戻すようにしてもよい。もともとプリンタ２００がオフライン状態であったということは、用紙がセットされていないとか、カバーが開いているといった理由で印刷ができない状態になっている可能性が高い。そこで、ファームウェアの更新が完了した後は、プリンタ２００をオフライン状態に戻すのが好ましい。
【００９７】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９８】
１００  ホストコンピュータ
１０１  指示取得部
１０２  更新コマンド送信部
１０３  状態取得コマンド送信部
１０４  状態情報受信部
１０５  状態判定部
１０６  ファームウェア送信部
２００  プリンタ
２０１  更新コマンド受信部
２０２  状態取得コマンド受信部
２０３  状態検出部
２０４  状態情報返信部
２０５，２０５’  状態切替部
２０６  ファームウェア更新部
２０７  印刷データ受け捨て部
３００  ＵＳＢケーブル
３０１  コントロールパイプ（第１の伝送路）
３０２  バルクアウトパイプ（第２の伝送路）
【図１】
2016018462.tif 000003
【図２】
2016018462.tif 000004
【図３】
2016018462.tif 000005
【図４】
2016018462.tif 000006
【図５】
2016018462.tif 000007
【図６】
2016018462.tif 000008