(57)【要約】      （修正有）【課題】ネットワークを介して通信可能に接続されたデバイスのファームウェアデータ書き換え処理において、ＡＰＩがアプリケーションに対して更新ファイルの成否に応じた適切な応答を返すとともに、非同期による書き換え処理が終了したことをアプリケーションが認識できるようにする。【解決手段】更新ライブラリは、デバイス（プリンタ）に対してデバイス情報の送信を要求し、受信（Ｓ２１）したデバイス情報から、更新ファイル記憶部に格納された更新ファイル「Ｆｉｌｅ１」がプリンタに適合しているかを判断し、サービスは、更新ライブラリの判断結果に応じた応答をアプリケーションに返す（Ｓ１３、Ｓ１６）。【選択図】図４
2007172186.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して通信可能に接続されたデバイスに対して、該デバイスのデータを更新するデータ更新装置であって、
前記デバイスに送信される更新データが格納された更新ファイル記憶部と、
前記デバイスへの前記更新データの送信を指示するアプリケーションと、
前記更新データを前記更新ファイル記憶部から読み出し、前記デバイスに送信する更新ライブラリと、
前記アプリケーションからの指示に応じて、前記更新ライブラリを起動し制御する更新ライブラリ制御部と、を備え、
前記更新ライブラリは、前記デバイスに対してデバイス情報の送信を要求し、前記デバイスから受信した前記デバイス情報に基づき、前記更新データが前記デバイスに適合しているかどうかを判断し、
前記更新ライブラリ制御部は、前記更新ライブラリの判断結果に応じた応答を前記アプリケーションに返すことを特徴とするデータ更新装置。
【請求項２】
前記更新ライブラリ制御部は、前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする請求項１に記載のデータ更新装置。
【請求項３】
前記更新データが前記デバイスに適合しておりかつ前記デバイスへの前記更新データの送信が必要な場合に、前記更新ライブラリは前記更新データの更新処理の進捗状況を所定のタイミングで前記更新ライブラリ制御部に通知し、前記更新ライブラリ制御部は通知された前記進捗状況を前記アプリケーションに通知することを特徴とする請求項２に記載のデータ更新装置。
【請求項４】
前記更新ライブラリ制御部は、前記更新ライブラリからデータ更新処理終了通知を通知された後、前記アプリケーションにデータ更新処理完了を通知することを特徴とする請求項２または３に記載のデータ更新装置。
【請求項５】
ネットワークを介して通信可能に接続されたデバイスに対して、アプリケーションからの指示に応じて該デバイスのデータを更新する更新処理を行うデータ更新方法であって、
前記デバイスに対してデバイス情報の送信を要求する送信要求ステップと、
前記デバイスから前記デバイス情報を受信する受信ステップと、
受信した前記デバイス情報に基づき、更新データが前記デバイスに適合しているかどうかを判断する判断ステップと、
前記判断ステップにおける判断結果を前記アプリケーションに通知する通知ステップと、を備えたことを特徴とするデータ更新方法。
【請求項６】
前記判断ステップで前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記判断ステップで前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする請求項５に記載のデータ更新方法。
【請求項７】
前記判断ステップで前記更新データが前記デバイスに適合しており、かつ前記デバイスへの前記更新データの送信が必要と判断された場合、前記更新データを前記デバイスに送信するデータ送信ステップと、
前記更新データの更新処理の進捗状況を所定のタイミングで受信し、当該進捗状況を前記アプリケーションに通知する進捗状況通知ステップと、を有することを特徴とする請求項５または６に記載のデータ更新方法。
【請求項８】
前記更新処理が全て完了した後に前記アプリケーションにデータ更新処理完了を通知する更新処理完了ステップを備えたことを特徴とする請求項６または７に記載のデータ更新装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して通信可能に接続されたデバイスに対して、デバイスのデータを更新するデータ更新装置及びデータ更新方法に関する。
【背景技術】
【０００２】
ホストコンピュータと通信可能に接続されたプリンタやスキャナ等の各種デバイスには、デバイスが備える各種ハードウェアの制御を行うためのプログラムであるファームウェアが組み込まれており、ファームウェアを実行することによりデバイスの各種制御が行われる。例えば、プリンタの場合には印刷機構や紙送り機構等のハードウェアを制御するためのファームウェアが備えられている。このファームウェアは、プリンタ内部に設けられた不揮発性のメモリであるフラッシュＲＯＭに格納されている。
【０００３】
ファームウェアは、各デバイスの不具合の修正や、機能向上のために適宜書き換え処理（アップデート処理）が必要となる場合がある。ファームウェアを書き換えるには、通信ケーブルを介して一対一に接続された、またはＬＡＮのネットワークを介して接続されたホストコンピュータからの指示に応じて、デバイスが書き換えプログラムを実行することによって行われる。例えば特許文献１には次のような書き換え方法が開示されている。
【０００４】
特許文献１では、書き換え対象となるファームウェアが格納されたフラッシュＲＯＭに、通常の記録装置として起動するユーザモードと、ファームウェアの書き換えモードであるダウンロードモードを実現するプログラムを格納した記録装置が開示されている。この記録装置では、電源を投入したときにダウンロードモードを起動させて書き換えを実行し、書き換え終了後にその書き換えが正常に終了したか否かのチェックを行い、正常に書き換えが行われなかった場合には自動的にダウンロードモードで起動しなおす。また、ユーザモードで起動する場合にも、フラッシュＲＯＭのチェックを行い、異常を検出すれば自動的にダウンロードモードで起動しなおすように構成されている。さらに、記録装置と通信可能に接続されたホストコンピュータに記録装置のファームウェア書き換え状況を通知する機能を設け、ファームウェアの書き換え状況をホストコンピュータのディスプレイ上に表示させるように構成されている。
【０００５】
また特許文献２には、直接ユーザが指示を与える端末機器、複数のファームウェアを含むファイルによって管理するファイルサーバ、ファイルサーバから目的とするファームウェアが含まれるファイルをダウンロードする機器管理サーバ及び機器管理サーバからダウンロードされたファイルをアップデートする画像形成装置がそれぞれ相互に通信可能に接続されたネットワークにおいて、ユーザが端末機器から画像形成装置内のファームウェアをアップデートする指示を与えた場合の処理が記載されている。機器管理サーバは、画像形成装置がファイルのアップデートを完了したか否かを判断するために逐次問い合わせをし、機器管理サーバと画像形成装置との間のログアウト処理が完了している場合にはファームウェアのアップデートが完了したものとして端末機器へアップデートの結果表示ページを表示させるように構成されている。
【０００６】
【特許文献１】特開２００５−６３０５０号公報
【特許文献２】特開２００５−１１５９２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、通常ファームウェアの書き換え処理は書き換え時の安全性を考慮して、書き換え処理が行われている最中に別の処理を行わない、つまり割り込み処理を許可しないように設定されていることが多い。具体的に述べると、特許文献２に記載のファームウェアアップデート処理では、機器管理サーバのＷｅｂアプリは、アップデート処理部に対してアップデート処理の要求やアップデート処理が完了したか否かを確認するために定期的に問い合わせを行っている。さらに、アップデート処理部からアップデート処理結果を取得したときはアップデート処理結果を表示させるＷｅｂページを生成し、端末のＷｅｂブラウザを介してＷｅｂページを表示させなければならない。つまりＷｅｂアプリはアップデート処理が完了するまで開放されることがないので、ファームウェアアップデート処理中は他の割り込み処理を行うことができなくなってしまう。
【０００８】
ここで、POSプリンタの分野においては、Unified POS（UPOS）と呼ばれる統一規格が存在し、この規格内においてファームウェアのアップデートについても標準化が進められている。UPOSにおいては、ファームウェアのアップデート時、更新ファイルが適しているかどうかの確認までは同期処理が図られ、そして書き換え処理については非同期処理によって動作させる仕様となっている。したがって、UPOSに準拠させるためには、このように割り込みによる非同期処理を行わせることによって、アプリケーションが別の処理を実行可能となるように構成しなければならない。
【０００９】
そこで、他の割り込み処理を可能とするため、ファームウェア更新機能をアプリケーション側に内包させず、それとは別にファームウェア更新機能を有する外部ライブラリを設け、上位のアプリケーションがＡＰＩ（Application Program Interface）を介してスレッド（別タスク）を実行させ、スレッドから更新ライブラリを呼び出し、更新ライブラリがデバイスの更新処理を行うように構成された更新方法が提案されている。このような構成においては、一つのアプリケーション内でも並行して複数の処理を行う非同期処理によるファームウェア更新処理を行うことが可能である。
【００１０】
上記更新処理を示したフローを図７に示す。アプリケーション７０が関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ１」によって更新ファイル「Ｆｉｌｅ１」によるデバイス７４のファームウェア更新処理を指示すると（ステップＳ６１）、指示を受けたＡＰＩ（サービス７１）がファームウェア更新ライブラリ７３を呼び出すためのファーム更新用スレッド７２を呼び出すために、関数「ＳｔａｒｔＴｈｒｅａｄ」を実行し（ステップＳ６２）、ファーム更新用スレッド７２が関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ２」によって更新ライブラリ７３を呼び出す（ステップＳ６３）。ファームウェア更新機能を有するＡＰＩ（ファームウェア更新ライブラリ７３）は、デバイス７４に対して、モデル名やファームウェアのバージョン等のデバイス情報の送信を要求する（ステップＳ６４）。
【００１１】
そして、ファームウェア更新ライブラリ７３は受信したデバイス情報から更新ファイル「Ｆｉｌｅ１」が更新対象であるデバイス７４に対応しているかを判断し（ステップＳ６５，ステップＳ６６）、対応している場合には「Ｆｉｌｅ１」がデバイス７４側にダウンロードされデバイス内で書き換え処理が開始される（ステップＳ６７）。また、ファームウェア更新ライブラリ７３はファームウェア更新処理の進捗率を所定のタイミングでサービス７１に通知し、サービス７１がアプリケーション７０に進捗率を返すように構成されている。
【００１２】
ここで、サービス７１は、アプリケーション７０からファームウェア更新処理の指示を受けてファーム更新用スレッド７２を呼び出すと、アプリケーション７０を開放するためにとりあえずの応答「Ｓｕｃｃｅｓｓ」を返すようになっている（ステップＳ６８）。しかしながら、この時点における応答「Ｓｕｃｃｅｓｓ」は、ファームウェア更新ライブラリ７３による更新ファイル「Ｆｉｌｅ１」が更新対象であるデバイス７４に対応しているかを判断する前（ステップＳ６６より前）になされた応答であるため、更新ファイルが不正である（例えば更新対象ではない別のデバイスのファームウェアである）にもかかわらず「Ｓｕｃｃｅｓｓ」を返すことになってしまう。
【００１３】
また、上述したようにファーム更新用スレッド７２からファームウェア更新ライブラリ７３にアクセスする構成とした場合には、ファーム更新用スレッド７２による更新処理が終了（ステップＳ７０）していないのに（関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ２」が終了していないのに）、サービス７１がアプリケーション７０に対して更新処理の進捗率１００％を返してしまうため（ステップＳ６９）、アプリケーション７０は、ファームウェア更新処理を完全に終了したことを正しく認識することができない。
【００１４】
そこで、本発明は、ネットワークを介して通信可能に接続されたデバイスに対して、デバイスが備えるファームウェア等のデータ更新指示を非同期によって行うデータ更新処理において、ＡＰＩがアプリケーションに対して更新ファイルの成否に応じた適切な応答を返すとともに、非同期による更新処理が終了したことをアプリケーションが正しく認識することが可能なデータ更新装置及びデータ更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、以下の構成により達成される。
（１）  ネットワークを介して通信可能に接続されたデバイスに対して、該デバイスのデータを更新するデータ更新装置であって、
前記デバイスに送信される更新データが格納された更新ファイル記憶部と、
前記デバイスへの前記更新データの送信を指示するアプリケーションと、
前記更新データを前記更新ファイル記憶部から読み出し、前記デバイスに送信する更新ライブラリと、
前記アプリケーションからの指示に応じて、前記更新ライブラリを起動し制御する更新ライブラリ制御部と、を備え、
前記更新ライブラリは、前記デバイスに対してデバイス情報の送信を要求し、前記デバイスから受信した前記デバイス情報に基づき、前記更新データが前記デバイスに適合しているかどうかを判断し、
前記更新ライブラリ制御部は、前記更新ライブラリの判断結果に応じた応答を前記アプリケーションに返すことを特徴とするデータ更新装置。
（２）  前記更新ライブラリ制御部は、前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする（１）に記載のデータ更新装置。
（３）  前記更新データが前記デバイスに適合しておりかつ前記デバイスへの前記更新データの送信が必要な場合に、前記更新ライブラリは前記更新データの更新処理の進捗状況を所定のタイミングで前記更新ライブラリ制御部に通知し、前記更新ライブラリ制御部は通知された前記進捗状況を前記アプリケーションに通知することを特徴とする（２）に記載のデータ更新装置。
（４）  前記更新ライブラリ制御部は、前記更新ライブラリからデータ更新処理終了通知を通知された後、前記アプリケーションにデータ更新処理完了を通知することを特徴とする（２）または（３）に記載のデータ更新装置。
（５）  ネットワークを介して通信可能に接続されたデバイスに対して、アプリケーションからの指示に応じて該デバイスのデータを更新する更新処理を行うデータ更新方法であって、
前記デバイスに対してデバイス情報の送信を要求する送信要求ステップと、
前記デバイスから前記デバイス情報を受信する受信ステップと、
受信した前記デバイス情報に基づき、更新データが前記デバイスに適合しているかどうかを判断する判断ステップと、
前記判断ステップにおける判断結果を前記アプリケーションに通知する通知ステップと、を備えたことを特徴とするデータ更新方法。
（６）  前記判断ステップで前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記判断ステップで前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする（５）に記載のデータ更新方法。
（７）  前記判断ステップで前記更新データが前記デバイスに適合しており、かつ前記デバイスへの前記更新データの送信が必要と判断された場合、前記更新データを前記デバイスに送信するデータ送信ステップと、
前記更新データの更新処理の進捗状況を所定のタイミングで受信し、当該進捗状況を前記アプリケーションに通知する進捗状況通知ステップと、を有することを特徴とする（５）または（６）に記載のデータ更新方法。
（８）  前記更新処理が全て完了した後に前記アプリケーションにデータ更新処理完了を通知する更新処理完了ステップを備えたことを特徴とする（６）または（７）に記載のデータ更新装置。
【発明の効果】
【００１６】
本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリは、デバイスから受信したデバイス情報に基づき、更新データが更新対象であるデバイスに送信する必要があるかを判断した後、更新ライブラリ制御部が、更新ライブラリの判断結果に応じた応答をアプリケーションに返すように構成されている。したがって更新データが、ネットワークに接続されている複数のデバイスのうち、更新対象であるデバイスのデータであると判断した場合と更新対象ではない別のデバイスのデータであると判断した場合とに応じて、意味のある応答を適切なタイミングでアプリケーションに返すことができる。そして、アプリケーションは応答をうけとることによって開放されるのでファームウェア更新処理を非同期に行うことが可能である。
【００１７】
また、本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリの判断結果に応じてアプリケーションに成功あるいは失敗を返すように構成されているので、アプリケーションは更新ライブラリ制御部から失敗を受信した場合には、エラー表示を表示させる等の処理を実行することができる。したがって、オペレータに対して更新処理の失敗を知らせることができ、オペレータは再度、更新処理の指示を行う等の対応が可能となる。
【００１８】
また、本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリ制御部は、所定のタイミングでアプリケーションに更新処理の進捗状況を通知するように構成されているので、アプリケーションはオペレータに対して、更新処理の進捗状況を知らせることができる。したがって、オペレータがデータ更新処理の途中で誤ってデバイスの電源をＯＦＦにしてしまうといった行為を防止することが可能である。
【００１９】
また、本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリ制御部は、更新ライブラリからデータ更新処理終了通知を通知された後、アプリケーションにデータ更新処理完了を通知するように構成されているので、更新ライブラリによる非同期の更新処理が完全に終了したことをアプリケーションが正しく認識することが可能である。したがって、アプリケーションは非同期の更新処理の開始と終了を確実に把握することができる。よって、一つの更新処理が終了したことによって他のデバイスに対する新たな更新処理を指示することが可能となる。
【００２０】
また、本発明におけるデータ更新装置及びデータ更新方法をWindows環境下におけるPOS（Point of Service）システム（OPOS）やJavaベースでのPOSシステム（JavaPOS）に適用した場合には、OPOSとJavaPOSで定義されたAPI仕様を統合した仕様であるUnified POS（UPOS）に準拠したデータ更新処理に適したデータ更新処理を提供することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しながら、本発明にかかるデータ更新装置及びデータ更新方法の一実施形態として、デバイスが備えるファームウェアの更新処理を行う場合について説明する。なお、本実施形態において、データ更新対象であるファームウェアを備えたデバイスの一例としてプリンタを挙げ、またデータ更新装置の一例としてプリンタとネットワークを介して通信可能に接続されたホストコンピュータを一例に挙げて詳細に説明する。
【００２２】
（ホストコンピュータ１及びプリンタ１０のハードウェア構成）
まず、本実施形態のホストコンピュータ１及びプリンタ１０のハードウェア構成を説明する。
【００２３】
本実施形態のホストコンピュータ１は、図示されていないが主としてＣＰＵと、不揮発性メモリであるＲＯＭと、揮発性メモリであるＲＡＭと、大規模記憶装置としてのＨＤＤと、入力装置と、通信インタフェースとを備えている。これらは内部バスによって相互に接続されており、ＣＰＵがＨＤＤに記憶されたオペレーティングシステム及びアプリケーションプログラムを実行しながら、通信インタフェースを介してプリンタ１０に各種コマンドや印刷データを出力することにより、プリンタ１０を制御している。
【００２４】
また、本実施形態のプリンタ１０の内部構成は、主として、ＣＰＵと、書き換え可能な不揮発性メモリであるフラッシュＲＯＭと、揮発性メモリであるＲＡＭと、通信インタフェースと、実際に印刷媒体に印刷を行う印刷ヘッドと、を備えている。これらは内部バスによって相互に接続されており、ＣＰＵがフラッシュＲＯＭに記憶されたファームウェアを実行しながら、通信インタフェースを介してホストコンピュータ１と通信を行うことにより印刷データを受信する。そして、各種コマンドや印刷データに基づき、印刷ヘッドを駆動して印刷媒体への印刷を実行する。本実施形態では、ホストコンピュータ１から、プリンタ１０のフラッシュＲＯＭに記憶されたファームウェアの更新処理を指示する場合について説明する。
【００２５】
次に、本実施形態のホストコンピュータ１及びプリンタ１０の内部機能について図１を参照しつつ説明する。図１は、ホストコンピュータ１及びプリンタ１０の内部処理を示した機能ブロック図である。
【００２６】
（ホストコンピュータ１における内部処理）
ホストコンピュータ１では、ＨＤＤに記憶されたオペレーティングシステム及びアプリケーションプログラムを実行することにより様々な処理が実現可能である。プリンタ１０のファームウェア更新処理の観点では、図１に示すように、アプリケーション２と、更新ライブラリ制御部３と、更新ライブラリ４と、更新ファイル記憶部５とを備えている。
【００２７】
アプリケーション２は、ＣＰＵがＨＤＤに記憶されたオペレーティングシステム及びアプリケーションプログラムをＲＡＭへ読み出して実行することにより様々な処理を実現する。本実施形態においては、オペレータによりホストコンピュータ１からプリンタ１０のファームウェア更新処理が指示されると、アプリケーション２はファームウェア更新用アプリケーションプログラムを実行するように構成されている。
【００２８】
更新ライブラリ制御部３は、アプリケーション２が非同期にファームウェア更新処理を実行するために、ファーム更新用スレッドを呼び出す。本実施形態では、アプリケーション２からの指示に応じて、プリンタ１０以外のホストコンピュータ１と通信可能に接続された図示せぬデバイス毎に実行される複数のファーム更新用スレッドを呼び出し可能なサービス７１からプリンタ１０に対応するファーム更新用スレッド７２を呼び出す（図４参照）。
【００２９】
ここで、スレッドとはプログラムの実行単位である。更新ライブラリ制御部３は複数のスレッドから構成され、複数のスレッドを交互に実行させることによって非同期処理を実現させている。すなわち、ファームウェア更新用アプリケーション内で更新ライブラリ制御部３が複数のスレッドを交互に実行すれば、プリンタ１０以外にホストコンピュータ１と通信可能に接続された図示せぬ他のデバイスに対してファームウェア更新処理を同時に行うことが可能である。このように構成することによって、UPOSに準拠した構成とすることができる。
【００３０】
更新ライブラリ４は、実際にプリンタ１０にファームウェアの更新処理の指示を与えるＡＰＩである。具体的には、プリンタ１０に対してデバイス情報を送信するように要求し、またファーム更新用スレッド７２からの呼び出しに応じて次に説明する更新ファイル記憶部５から更新ファームウェアを読み出し、受信したデバイス情報から、更新ファームウェア「Ｆｉｌｅ１」が更新対象であるプリンタ１０に対応しているかを判断する。また、プリンタ１０内でのファームウェア書き換え後には再度デバイス情報の送信を要求し、プリンタ１０内での書き換え処理が正常に行われたかを検査する（以下、ベリファイ処理という）。さらに、ファームウェア更新処理の進捗状態を示す進捗率を所定のタイミングでサービス７１へ通知するように構成されている。
【００３１】
更新ファイル記憶部５は、更新ファームウェアが格納された更新ファイルが記憶されたＨＤＤの所定の記憶領域である。本実施形態では、更新ライブラリ４が、プリンタ１０から受信したデバイス情報をもとに更新ファイル記憶部５から読み出された更新ファームウェア「Ｆｉｌｅ１」が、プリンタ１０に対応しているかを判断している。
【００３２】
（プリンタ１０における内部処理）
次にプリンタ１０の内部機能構成について説明する。図１に示すように、プリンタ１０は、ホストコンピュータ１から送信される各種コマンドや印刷データを図示せぬ送受信部を介して受信し、受信した各種コマンドや印刷データに応じて各種処理を実行する。
【００３３】
プリンタ１０のファームウェア更新処理の観点では、ホストコンピュータ１の更新ライブラリ４からのデバイス情報の送信要求に応じて、プリンタ１０のデバイス情報を生成するデバイス情報生成部１１と、ホストコンピュータ１から送信された更新ファイルに基づいて、フラッシュＲＯＭに格納されたプリンタ１０のファームウェアを更新ファームウェアに書き換えるファームウェア更新制御部１３と、更新対象であるファームウェアが格納されたフラッシュＲＯＭの所定の領域であるファームウェア記憶部１４を備えている。
【００３４】
（プリンタ１０のファームウェア更新処理）
次に、図２〜図６に示すフローチャートを参照しながら、ファームウェア更新処理について説明する。図２はファームウェア更新処理における更新ライブラリ制御部３の処理を説明するフローチャート、図３は、ファームウェア更新処理における更新ライブラリ４の処理を説明するフローチャート、図４はファームウェア更新処理に成功した場合の処理を説明するフローチャート、図５はファームウェア更新処理が必要なかった場合の処理を説明するフローチャート、図６はファームウェア更新処理に失敗した場合の処理を説明するフローチャートである。
【００３５】
（ファームウェア更新処理に成功した場合の処理）
まず、図２〜図４を用いてファームウェア更新処理に成功した場合の処理について説明する。
【００３６】
オペレータからホストコンピュータ１の図示せぬ入力装置を介してプリンタ１０のファームウェアを更新ファームウェア「Ｆｉｌｅ１」によって更新する指示が与えられると、アプリケーション２がファームウェア更新用アプリケーションプログラムを実行し、関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ１」によってサービス７１を呼び出す（ステップＳ４１，ステップS１０）。これによりプリンタ１０のファームウェア更新処理が開始される。
【００３７】
次に、アプリケーション２から呼び出されたサービス７１は、更新ライブラリ４を呼び出すため、関数「ＳｔａｒｔＴｈｒｅａｄ」によってファーム更新用スレッド７２を呼び出す（ステップＳ４２）。さらに、ファーム更新用スレッドS７２は関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ２」によってファームウェア更新機能を有する更新ライブラリ４を呼び出す（ステップＳ４３，ステップＳ２０）。
【００３８】
更新ライブラリ４は、プリンタ１０のモデル名及び更新前のファームウェアのバージョン等を含んだデバイス情報の送信をプリンタ１０に要求する（ステップＳ２１）。プリンタ１０はデバイス情報の送信要求を受信すると、デバイス情報生成部１１がプリンタ１０のデバイス情報を生成し（ステップＳ４４）、送受信部を介して更新ライブラリ４へ返信する。なお、更新ライブラリ４は、デバイス情報の送信要求を行った後、サービス７１へ更新処理の進捗率３%を通知する（ステップＳ４５）。
【００３９】
更新ライブラリ４は、更新ファイル記憶部５から更新ファームウェア「Ｆｉｌｅ１」をＲＡＭへ読み出し、受信したデバイス情報（モデル名等）に基づいて読み出された更新ファームウェア「Ｆｉｌｅ１」が更新対象であるプリンタ１０に適合しているかを判断する。具体的には、「Ｆｉｌｅ１」がプリンタ１０のモデル名等に対応したファイルか否かを判断し、対応していると判断した場合には（ステップＳ２２：Ｙｅｓ）、更新ファームウェアをプリンタ１０へ送信する必要があるか否かを判断する（ステップＳ２３）。ステップＳ２３では、プリンタ１０のファームウェアのバージョンと更新ファームウェアのバージョンとが一致するか否かを判断し、バージョンが一致しない場合には、更新ファームウェアをプリンタ１０へ送信する（ステップＳ２４）。
【００４０】
更新ライブラリ４は、更新ファームウェアの送信を開始すると、サービス７１へ進捗率２０%を通知する（ステップＳ２５）。サービス７１は２０%通知を受けると（ステップＳ１２：Ｙｅｓ）、アプリケーション２へ更新ファームウェア「Ｆｉｌｅ１」がプリンタ１０に適合していることを意味する「Ｓｕｃｃｅｓｓ」応答を返す（ステップＳ１３）。
【００４１】
プリンタ１０は更新ファームウェアを受信すると、ファーム更新制御部１３がファームウェア記憶部１４に記憶された旧バージョンのファームウェアを更新ファームウェアによって書き換える（ステップＳ４６）。
【００４２】
更新ライブラリ４はプリンタ１０への更新ファームウェアの送信を終了すると、ベリファイ処理を開始する（ステップＳ２６）。すなわち、再度プリンタ１０へデバイス情報の送信を要求し、受信したデバイス情報に基づき、古いバージョンのファームウェアが新しいバージョンの更新ファームウェアによって正常に書き換えられたかをチェックする。正常に書き換えられたと判断すると（ステップＳ２６：Ｙｅｓ）、更新ライブラリ４はサービス７１に更新処理の進捗率９０％を通知し（ステップＳ４７）、サービス７１は通知された進捗率９０％をアプリケーション２へ通知する（ステップＳ４８）。
【００４３】
その後、更新ライブラリ４は、更新処理の終了処理へ移行し、終了処理（ステップS２７）を終えるとサービス７１へ進捗率１００％を通知し（ステップＳ２８）、ファーム更新用スレッド７２にファームウェア更新処理終了通知である「Ｓｕｃｃｅｓｓ」応答を返すことによって、関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ２」を終了させる（ステップＳ２９）。そして、ファーム更新用スレッド７２は更新ライブラリ４からの「Ｓｕｃｃｅｓｓ」応答をサービス７１へ返した後（ステップＳ４９）、進捗率１００％を通知する（ステップＳ５０）。
【００４４】
一方、サービス７１はステップＳ２８で進捗率１００％を受信した後、ステップＳ４９で「Ｓｕｃｃｅｓｓ」応答を受信するまで待機し（ステップＳ１４：Ｎｏ，ステップＳ１５：Ｎｏ）、「Ｓｕｃｃｅｓｓ」応答を受信すると（ステップＳ１５：Ｙｅｓ）アプリケーション２へファームウェア更新処理完了通知である進捗率１００％を通知する（ステップＳ１６）。
【００４５】
なお、本実施形態における所定のタイミングで行う進捗率の通知は、更新ファームウェアのチェックが終了した時点（ステップＳ２２，ステップＳ２３）を１０％、更新ファームウェアのチェック終了から更新ライブラリ４によるベリファイ処理終了までを１１％から８９％、更新処理の終了処理（ステップＳ２７）を９０％から１００％となるように設定されている。
【００４６】
具体的には、図４に示すように更新ライブラリ４は、少なくとも更新ファームウェア送信中（ステップＳ２４）に３０％、ベリファイ処理中（ステップＳ２６）に８０%、終了処理開始（ステップＳ２７）時に９０%をサービス７１へ通知し、サービス７１はその都度通知された進捗率をアプリケーション２に通知するように構成されている。図示されていないが３０%から８０%の間の進捗率も随時通知されている。このように、ファームウェア更新処理中において複数回にわたり進捗率をアプリケーション２に通知することによって、アプリケーション２はオペレータに対して、更新処理の進捗状況を知らせることができる。したがって、オペレータがファームウェア更新処理の途中で誤ってプリンタ１０の電源をＯＦＦにしてしまうといった行為を防止することが可能である。
【００４７】
なお、進捗率は必ずしも複数回通知される必要はなく、更新処理中に少なくとも１回通知されるように設定することも可能である。
【００４８】
（ファームウェア更新処理が必要なかった場合の処理）
次に、図２，図３及び図５を用いてファームウェア更新処理が必要なかった場合の処理について説明する。なお、上述した処理と同一の処理が行われるステップについては説明が重複するため、異なる処理についてのみ説明することとする。
【００４９】
ステップＳ２２で、更新ライブラリ４は、更新ファームウェアが更新対象であるプリンタ１０に適合しているか否かのチェックを行い、更新ファームウェアがプリンタ１０に適合しているが（ステップＳ２２：Ｙｅｓ）、プリンタ１０への更新処理前のファームウェアのバージョンと更新ファームウェアのバージョンが一致しているため、更新ファームウェアの送信が必要でないと判断した場合（ステップＳ２３：Ｎｏ）には、プリンタ１０へ更新ファームウェアを送信することなく、サービス７１へ更新処理の進捗率９０％を通知する（ステップＳ５１）。なお、図５には示されていないが、更新ライブラリ４は、プリンタ１０への更新ファームウェアの送信が必要でないと判断した場合（ステップＳ２３：Ｎｏ）に、ベリファイ処理を行った後に、サービス７１へ更新処理の進捗率９０％を通知するように設定されていてもよい。
【００５０】
ステップＳ５１で更新ライブラリ４は進捗率９０％を通知した後、更新処理の終了処理へ移行し（ステップＳ２７）、終了処理を終えるとサービス７１へ進捗率１００％を通知し（ステップＳ２８）、ファーム更新用スレッド７２にファームウェア更新処理終了通知である「Ｓｕｃｃｅｓｓ」応答を返すことによって、関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ２」を終了させる（ステップＳ２９）。その後、ファーム更新用スレッド７２は更新ライブラリ４からの「Ｓｕｃｃｅｓｓ」応答をサービス７１へ返し（ステップＳ５５）、サービス７１へ進捗率１００％を通知する（ステップＳ５６）。
【００５１】
ステップＳ５５でサービス７１は、更新ライブラリ４からの「Ｓｕｃｃｅｓｓ」応答を受信すると（ステップＳ１７：Ｙｅｓ）、その「Ｓｕｃｃｅｓｓ」応答をアプリケーション２に返す（ステップＳ１８）。そして、ステップＳ５６のファーム更新用スレッド７からの進捗率１００％通知を待って（ステップＳ１９）、ファームウェア更新処理完了通知である進捗率１００％通知をアプリケーション２へ通知する（ステップＳ１６）。
【００５２】
上述したように、ファームウェア更新処理に成功した場合の処理とファームウェア更新処理が必要なかった場合の処理において、更新ライブラリ４が更新ファームウェアがプリンタ１０に適合していると判断した場合に、サービス７１が「Ｓｕｃｃｅｓｓ」応答をアプリケーション２に返すことによって、意味のある「Ｓｕｃｃｅｓｓ」応答を返すことができる。これにより、「Ｓｕｃｃｅｓｓ」応答に応じてファームウェア更新用アプリケーションプログラムを適切なタイミングで開放させることが可能となる。したがって、アプリケーションを専有することがなくその後のプリンタ１０内での書き換え処理を非同期に行うことができる。
【００５３】
（ファームウェア更新処理に失敗した場合の処理）
次に、図２，図３及び図６を用いてファームウェア更新処理に成功した場合の処理にいて説明する。
【００５４】
ステップＳ２２で、更新ライブラリ４は、デバイス情報に基づき、受信したデバイス情報（モデル名等）に基づいて、更新ファームウェアが更新対象であるプリンタ１０のモデル名等に対応していないと判断すると（ステップＳ２２：Ｎｏ）、更新ファームウェアによる書き換え処理を行うことができないためプリンタ１０へ更新ファームウェアを送信することなく、サービス７１へ更新処理の進捗率９０％を通知する（ステップＳ５１）。
【００５５】
ステップＳ５１で更新ライブラリ４は進捗率９０％を通知した後、更新処理の終了処理へ移行し（ステップＳ３０）、終了処理を終えるとサービス７１へ進捗率１００％を通知し（ステップＳ３１）、ファーム更新用スレッド７２にファームウェア更新処理終了通知である「Ｅｒｒｏｒ」応答を返すことによって、関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ２」を終了させる（ステップＳ３２）。その後、ファーム更新用スレッド７２は更新ライブラリ４からの「Ｅｒｒｏｒ」応答をサービス７１へ返し（ステップＳ５８）、サービス７１へ進捗率１００％を通知する（ステップＳ５６）。
【００５６】
ステップＳ５８でサービス７１は、更新ライブラリ４からの「Ｅｒｒｏｒ」応答を受信すると（ステップＳ１７：Ｙｅｓ）、その「Ｅｒｒｏｒ」応答をアプリケーション２に返す（ステップＳ５９（ステップＳ１８））。そして、ステップ５６のファーム更新用スレッド７２からの進捗率１００％通知を待って（ステップＳ１９）、ファームウェア更新処理完了通知である進捗率１００％通知をアプリケーション２へ通知する（ステップＳ１６）。
【００５７】
このように本実施形態のホストコンピュータ１のサービス７１は、更新ライブラリ４からの進捗率１００％通知（ステップＳ２８）を無視し、ファーム更新用スレッド７２による処理が終了してから（関数「ＵｐｄａｔｅＦｉｒｍｗａｒｅ２」が終了してから）、すなわち更新ライブラリ４からファーム更新用スレッド７２へファームウェア更新処理終了通知である「Ｓｕｃｃｅｓｓ」あるいは「Ｅｒｒｏｒ」の応答が通知され（ステップＳ２９あるいはステップＳ３２）、サービス７１がファーム更新用スレッド７２から進捗率１００％を通知された後（ステップＳ５０あるいはステップＳ５６）に、ファームウェア更新処理完了通知である進捗率１００％通知をアプリケーション２へ通知する（ステップＳ１６）ように構成されている。
【００５８】
したがって、スレッドによる非同期の書き換え処理を更新ライブラリ４が完全に終了したことをアプリケーション２が認識することが可能である。したがって、アプリケーション２はファーム更新用スレッド７２の開始と終了を確実に把握することができるので、一つのスレッドが終了したことによって新たな他のスレッドを呼び出し、他のデバイスに対する更新処理を非同期処理によって行うことが可能となる。
【００５９】
なお、本発明において、「データ更新装置」とは、プリンタ等のデバイスと通信を行いつつ制御可能なものであれば特に限定されず、複数のコンピュータ及びデバイスを制御するサーバ、一対一でデバイスを制御する汎用の端末装置やコンピュータ（いわゆるＰＣ等）、レシートプリンタを制御するＰＯＳ端末であってもよい。
【００６０】
また、本実施形態では、ファームウェア更新処理に必要とされるアプリケーション２、更新ライブラリ制御部３、更新ライブラリ４、更新ファイル記憶部５の全ての機能をホストコンピュータ１に持たせているが、プリンタ等の更新対象であるデバイスとネットワークを介して通信可能に接続されていればそれぞれの機能を分離させることも可能である。例えば、更新ファイル記憶部の機能を複数の更新ファイルを管理するファイルサーバとして分離させた構成とすることも可能である。
【００６１】
すなわち、本発明におけるデータ更新装置とは、必ずしも１台のコンピュータによって構成される必要はない。アプリケーション、更新ライブラリ制御部、更新ライブラリ、更新ファイル記憶部が果たす各機能をネットワークを介して提供できる環境であればネットワークシステムを含む広い概念である。
【図面の簡単な説明】
【００６２】
【図１】ホストコンピュータ及びプリンタの内部処理を示した機能ブロック図である。
【図２】本実施形態のファームウェア更新処理における更新ライブラリ制御部の処理を示したフローチャートである。
【図３】本実施形態のファームウェア更新処理における更新ライブラリの処理を説明するフローチャートである。
【図４】本実施形態においてファームウェア更新処理に成功した場合の処理を示したフローチャートである。
【図５】本実施形態においてファームウェア更新処理が必要なかった場合の処理を示したフローチャートである。
【図６】本実施形態においてファームウェア更新処理に失敗した場合の処理を示したフローチャートである。
【図７】従来のファームウェア更新処理を示したフローチャートである。
【符号の説明】
【００６３】
１・・・ホストコンピュータ、２・・・アプリケーション、３・・・更新ライブラリ制御部、４・・・更新ライブラリ、５・・・更新ファイル記憶部、１０・・・プリンタ、１１・・・デバイス情報生成部、１３・・・ファームウェア更新制御部、１４・・・ファームウェア記憶部
【図１】
2007172186.tif 000003
【図２】
2007172186.tif 000004
【図３】
2007172186.tif 000005
【図４】
2007172186.tif 000006
【図５】
2007172186.tif 000007
【図６】
2007172186.tif 000008
【図７】
2007172186.tif 000009