説明

データ更新装置及びデータ更新方法

【課題】ネットワークを介して通信可能に接続されたデバイスのファームウェアデータ書き換え処理において、APIがアプリケーションに対して更新ファイルの成否に応じた適切な応答を返すとともに、非同期による書き換え処理が終了したことをアプリケーションが認識できるようにする。
【解決手段】更新ライブラリは、デバイス(プリンタ)に対してデバイス情報の送信を要求し、受信(S21)したデバイス情報から、更新ファイル記憶部に格納された更新ファイル「File1」がプリンタに適合しているかを判断し、サービスは、更新ライブラリの判断結果に応じた応答をアプリケーションに返す(S13、S16)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して通信可能に接続されたデバイスに対して、デバイスのデータを更新するデータ更新装置及びデータ更新方法に関する。
【背景技術】
【0002】
ホストコンピュータと通信可能に接続されたプリンタやスキャナ等の各種デバイスには、デバイスが備える各種ハードウェアの制御を行うためのプログラムであるファームウェアが組み込まれており、ファームウェアを実行することによりデバイスの各種制御が行われる。例えば、プリンタの場合には印刷機構や紙送り機構等のハードウェアを制御するためのファームウェアが備えられている。このファームウェアは、プリンタ内部に設けられた不揮発性のメモリであるフラッシュROMに格納されている。
【0003】
ファームウェアは、各デバイスの不具合の修正や、機能向上のために適宜書き換え処理(アップデート処理)が必要となる場合がある。ファームウェアを書き換えるには、通信ケーブルを介して一対一に接続された、またはLANのネットワークを介して接続されたホストコンピュータからの指示に応じて、デバイスが書き換えプログラムを実行することによって行われる。例えば特許文献1には次のような書き換え方法が開示されている。
【0004】
特許文献1では、書き換え対象となるファームウェアが格納されたフラッシュROMに、通常の記録装置として起動するユーザモードと、ファームウェアの書き換えモードであるダウンロードモードを実現するプログラムを格納した記録装置が開示されている。この記録装置では、電源を投入したときにダウンロードモードを起動させて書き換えを実行し、書き換え終了後にその書き換えが正常に終了したか否かのチェックを行い、正常に書き換えが行われなかった場合には自動的にダウンロードモードで起動しなおす。また、ユーザモードで起動する場合にも、フラッシュROMのチェックを行い、異常を検出すれば自動的にダウンロードモードで起動しなおすように構成されている。さらに、記録装置と通信可能に接続されたホストコンピュータに記録装置のファームウェア書き換え状況を通知する機能を設け、ファームウェアの書き換え状況をホストコンピュータのディスプレイ上に表示させるように構成されている。
【0005】
また特許文献2には、直接ユーザが指示を与える端末機器、複数のファームウェアを含むファイルによって管理するファイルサーバ、ファイルサーバから目的とするファームウェアが含まれるファイルをダウンロードする機器管理サーバ及び機器管理サーバからダウンロードされたファイルをアップデートする画像形成装置がそれぞれ相互に通信可能に接続されたネットワークにおいて、ユーザが端末機器から画像形成装置内のファームウェアをアップデートする指示を与えた場合の処理が記載されている。機器管理サーバは、画像形成装置がファイルのアップデートを完了したか否かを判断するために逐次問い合わせをし、機器管理サーバと画像形成装置との間のログアウト処理が完了している場合にはファームウェアのアップデートが完了したものとして端末機器へアップデートの結果表示ページを表示させるように構成されている。
【0006】
【特許文献1】特開2005−63050号公報
【特許文献2】特開2005−115920号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
ところで、通常ファームウェアの書き換え処理は書き換え時の安全性を考慮して、書き換え処理が行われている最中に別の処理を行わない、つまり割り込み処理を許可しないように設定されていることが多い。具体的に述べると、特許文献2に記載のファームウェアアップデート処理では、機器管理サーバのWebアプリは、アップデート処理部に対してアップデート処理の要求やアップデート処理が完了したか否かを確認するために定期的に問い合わせを行っている。さらに、アップデート処理部からアップデート処理結果を取得したときはアップデート処理結果を表示させるWebページを生成し、端末のWebブラウザを介してWebページを表示させなければならない。つまりWebアプリはアップデート処理が完了するまで開放されることがないので、ファームウェアアップデート処理中は他の割り込み処理を行うことができなくなってしまう。
【0008】
ここで、POSプリンタの分野においては、Unified POS(UPOS)と呼ばれる統一規格が存在し、この規格内においてファームウェアのアップデートについても標準化が進められている。UPOSにおいては、ファームウェアのアップデート時、更新ファイルが適しているかどうかの確認までは同期処理が図られ、そして書き換え処理については非同期処理によって動作させる仕様となっている。したがって、UPOSに準拠させるためには、このように割り込みによる非同期処理を行わせることによって、アプリケーションが別の処理を実行可能となるように構成しなければならない。
【0009】
そこで、他の割り込み処理を可能とするため、ファームウェア更新機能をアプリケーション側に内包させず、それとは別にファームウェア更新機能を有する外部ライブラリを設け、上位のアプリケーションがAPI(Application Program Interface)を介してスレッド(別タスク)を実行させ、スレッドから更新ライブラリを呼び出し、更新ライブラリがデバイスの更新処理を行うように構成された更新方法が提案されている。このような構成においては、一つのアプリケーション内でも並行して複数の処理を行う非同期処理によるファームウェア更新処理を行うことが可能である。
【0010】
上記更新処理を示したフローを図7に示す。アプリケーション70が関数「UpdateFirmware1」によって更新ファイル「File1」によるデバイス74のファームウェア更新処理を指示すると(ステップS61)、指示を受けたAPI(サービス71)がファームウェア更新ライブラリ73を呼び出すためのファーム更新用スレッド72を呼び出すために、関数「StartThread」を実行し(ステップS62)、ファーム更新用スレッド72が関数「UpdateFirmware2」によって更新ライブラリ73を呼び出す(ステップS63)。ファームウェア更新機能を有するAPI(ファームウェア更新ライブラリ73)は、デバイス74に対して、モデル名やファームウェアのバージョン等のデバイス情報の送信を要求する(ステップS64)。
【0011】
そして、ファームウェア更新ライブラリ73は受信したデバイス情報から更新ファイル「File1」が更新対象であるデバイス74に対応しているかを判断し(ステップS65,ステップS66)、対応している場合には「File1」がデバイス74側にダウンロードされデバイス内で書き換え処理が開始される(ステップS67)。また、ファームウェア更新ライブラリ73はファームウェア更新処理の進捗率を所定のタイミングでサービス71に通知し、サービス71がアプリケーション70に進捗率を返すように構成されている。
【0012】
ここで、サービス71は、アプリケーション70からファームウェア更新処理の指示を受けてファーム更新用スレッド72を呼び出すと、アプリケーション70を開放するためにとりあえずの応答「Success」を返すようになっている(ステップS68)。しかしながら、この時点における応答「Success」は、ファームウェア更新ライブラリ73による更新ファイル「File1」が更新対象であるデバイス74に対応しているかを判断する前(ステップS66より前)になされた応答であるため、更新ファイルが不正である(例えば更新対象ではない別のデバイスのファームウェアである)にもかかわらず「Success」を返すことになってしまう。
【0013】
また、上述したようにファーム更新用スレッド72からファームウェア更新ライブラリ73にアクセスする構成とした場合には、ファーム更新用スレッド72による更新処理が終了(ステップS70)していないのに(関数「UpdateFirmware2」が終了していないのに)、サービス71がアプリケーション70に対して更新処理の進捗率100%を返してしまうため(ステップS69)、アプリケーション70は、ファームウェア更新処理を完全に終了したことを正しく認識することができない。
【0014】
そこで、本発明は、ネットワークを介して通信可能に接続されたデバイスに対して、デバイスが備えるファームウェア等のデータ更新指示を非同期によって行うデータ更新処理において、APIがアプリケーションに対して更新ファイルの成否に応じた適切な応答を返すとともに、非同期による更新処理が終了したことをアプリケーションが正しく認識することが可能なデータ更新装置及びデータ更新方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明は、以下の構成により達成される。
(1) ネットワークを介して通信可能に接続されたデバイスに対して、該デバイスのデータを更新するデータ更新装置であって、
前記デバイスに送信される更新データが格納された更新ファイル記憶部と、
前記デバイスへの前記更新データの送信を指示するアプリケーションと、
前記更新データを前記更新ファイル記憶部から読み出し、前記デバイスに送信する更新ライブラリと、
前記アプリケーションからの指示に応じて、前記更新ライブラリを起動し制御する更新ライブラリ制御部と、を備え、
前記更新ライブラリは、前記デバイスに対してデバイス情報の送信を要求し、前記デバイスから受信した前記デバイス情報に基づき、前記更新データが前記デバイスに適合しているかどうかを判断し、
前記更新ライブラリ制御部は、前記更新ライブラリの判断結果に応じた応答を前記アプリケーションに返すことを特徴とするデータ更新装置。
(2) 前記更新ライブラリ制御部は、前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする(1)に記載のデータ更新装置。
(3) 前記更新データが前記デバイスに適合しておりかつ前記デバイスへの前記更新データの送信が必要な場合に、前記更新ライブラリは前記更新データの更新処理の進捗状況を所定のタイミングで前記更新ライブラリ制御部に通知し、前記更新ライブラリ制御部は通知された前記進捗状況を前記アプリケーションに通知することを特徴とする(2)に記載のデータ更新装置。
(4) 前記更新ライブラリ制御部は、前記更新ライブラリからデータ更新処理終了通知を通知された後、前記アプリケーションにデータ更新処理完了を通知することを特徴とする(2)または(3)に記載のデータ更新装置。
(5) ネットワークを介して通信可能に接続されたデバイスに対して、アプリケーションからの指示に応じて該デバイスのデータを更新する更新処理を行うデータ更新方法であって、
前記デバイスに対してデバイス情報の送信を要求する送信要求ステップと、
前記デバイスから前記デバイス情報を受信する受信ステップと、
受信した前記デバイス情報に基づき、更新データが前記デバイスに適合しているかどうかを判断する判断ステップと、
前記判断ステップにおける判断結果を前記アプリケーションに通知する通知ステップと、を備えたことを特徴とするデータ更新方法。
(6) 前記判断ステップで前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記判断ステップで前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする(5)に記載のデータ更新方法。
(7) 前記判断ステップで前記更新データが前記デバイスに適合しており、かつ前記デバイスへの前記更新データの送信が必要と判断された場合、前記更新データを前記デバイスに送信するデータ送信ステップと、
前記更新データの更新処理の進捗状況を所定のタイミングで受信し、当該進捗状況を前記アプリケーションに通知する進捗状況通知ステップと、を有することを特徴とする(5)または(6)に記載のデータ更新方法。
(8) 前記更新処理が全て完了した後に前記アプリケーションにデータ更新処理完了を通知する更新処理完了ステップを備えたことを特徴とする(6)または(7)に記載のデータ更新装置。
【発明の効果】
【0016】
本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリは、デバイスから受信したデバイス情報に基づき、更新データが更新対象であるデバイスに送信する必要があるかを判断した後、更新ライブラリ制御部が、更新ライブラリの判断結果に応じた応答をアプリケーションに返すように構成されている。したがって更新データが、ネットワークに接続されている複数のデバイスのうち、更新対象であるデバイスのデータであると判断した場合と更新対象ではない別のデバイスのデータであると判断した場合とに応じて、意味のある応答を適切なタイミングでアプリケーションに返すことができる。そして、アプリケーションは応答をうけとることによって開放されるのでファームウェア更新処理を非同期に行うことが可能である。
【0017】
また、本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリの判断結果に応じてアプリケーションに成功あるいは失敗を返すように構成されているので、アプリケーションは更新ライブラリ制御部から失敗を受信した場合には、エラー表示を表示させる等の処理を実行することができる。したがって、オペレータに対して更新処理の失敗を知らせることができ、オペレータは再度、更新処理の指示を行う等の対応が可能となる。
【0018】
また、本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリ制御部は、所定のタイミングでアプリケーションに更新処理の進捗状況を通知するように構成されているので、アプリケーションはオペレータに対して、更新処理の進捗状況を知らせることができる。したがって、オペレータがデータ更新処理の途中で誤ってデバイスの電源をOFFにしてしまうといった行為を防止することが可能である。
【0019】
また、本発明によるデータ更新装置及びデータ更新方法によれば、更新ライブラリ制御部は、更新ライブラリからデータ更新処理終了通知を通知された後、アプリケーションにデータ更新処理完了を通知するように構成されているので、更新ライブラリによる非同期の更新処理が完全に終了したことをアプリケーションが正しく認識することが可能である。したがって、アプリケーションは非同期の更新処理の開始と終了を確実に把握することができる。よって、一つの更新処理が終了したことによって他のデバイスに対する新たな更新処理を指示することが可能となる。
【0020】
また、本発明におけるデータ更新装置及びデータ更新方法をWindows環境下におけるPOS(Point of Service)システム(OPOS)やJavaベースでのPOSシステム(JavaPOS)に適用した場合には、OPOSとJavaPOSで定義されたAPI仕様を統合した仕様であるUnified POS(UPOS)に準拠したデータ更新処理に適したデータ更新処理を提供することが可能となる。
【発明を実施するための最良の形態】
【0021】
以下、図面を参照しながら、本発明にかかるデータ更新装置及びデータ更新方法の一実施形態として、デバイスが備えるファームウェアの更新処理を行う場合について説明する。なお、本実施形態において、データ更新対象であるファームウェアを備えたデバイスの一例としてプリンタを挙げ、またデータ更新装置の一例としてプリンタとネットワークを介して通信可能に接続されたホストコンピュータを一例に挙げて詳細に説明する。
【0022】
(ホストコンピュータ1及びプリンタ10のハードウェア構成)
まず、本実施形態のホストコンピュータ1及びプリンタ10のハードウェア構成を説明する。
【0023】
本実施形態のホストコンピュータ1は、図示されていないが主としてCPUと、不揮発性メモリであるROMと、揮発性メモリであるRAMと、大規模記憶装置としてのHDDと、入力装置と、通信インタフェースとを備えている。これらは内部バスによって相互に接続されており、CPUがHDDに記憶されたオペレーティングシステム及びアプリケーションプログラムを実行しながら、通信インタフェースを介してプリンタ10に各種コマンドや印刷データを出力することにより、プリンタ10を制御している。
【0024】
また、本実施形態のプリンタ10の内部構成は、主として、CPUと、書き換え可能な不揮発性メモリであるフラッシュROMと、揮発性メモリであるRAMと、通信インタフェースと、実際に印刷媒体に印刷を行う印刷ヘッドと、を備えている。これらは内部バスによって相互に接続されており、CPUがフラッシュROMに記憶されたファームウェアを実行しながら、通信インタフェースを介してホストコンピュータ1と通信を行うことにより印刷データを受信する。そして、各種コマンドや印刷データに基づき、印刷ヘッドを駆動して印刷媒体への印刷を実行する。本実施形態では、ホストコンピュータ1から、プリンタ10のフラッシュROMに記憶されたファームウェアの更新処理を指示する場合について説明する。
【0025】
次に、本実施形態のホストコンピュータ1及びプリンタ10の内部機能について図1を参照しつつ説明する。図1は、ホストコンピュータ1及びプリンタ10の内部処理を示した機能ブロック図である。
【0026】
(ホストコンピュータ1における内部処理)
ホストコンピュータ1では、HDDに記憶されたオペレーティングシステム及びアプリケーションプログラムを実行することにより様々な処理が実現可能である。プリンタ10のファームウェア更新処理の観点では、図1に示すように、アプリケーション2と、更新ライブラリ制御部3と、更新ライブラリ4と、更新ファイル記憶部5とを備えている。
【0027】
アプリケーション2は、CPUがHDDに記憶されたオペレーティングシステム及びアプリケーションプログラムをRAMへ読み出して実行することにより様々な処理を実現する。本実施形態においては、オペレータによりホストコンピュータ1からプリンタ10のファームウェア更新処理が指示されると、アプリケーション2はファームウェア更新用アプリケーションプログラムを実行するように構成されている。
【0028】
更新ライブラリ制御部3は、アプリケーション2が非同期にファームウェア更新処理を実行するために、ファーム更新用スレッドを呼び出す。本実施形態では、アプリケーション2からの指示に応じて、プリンタ10以外のホストコンピュータ1と通信可能に接続された図示せぬデバイス毎に実行される複数のファーム更新用スレッドを呼び出し可能なサービス71からプリンタ10に対応するファーム更新用スレッド72を呼び出す(図4参照)。
【0029】
ここで、スレッドとはプログラムの実行単位である。更新ライブラリ制御部3は複数のスレッドから構成され、複数のスレッドを交互に実行させることによって非同期処理を実現させている。すなわち、ファームウェア更新用アプリケーション内で更新ライブラリ制御部3が複数のスレッドを交互に実行すれば、プリンタ10以外にホストコンピュータ1と通信可能に接続された図示せぬ他のデバイスに対してファームウェア更新処理を同時に行うことが可能である。このように構成することによって、UPOSに準拠した構成とすることができる。
【0030】
更新ライブラリ4は、実際にプリンタ10にファームウェアの更新処理の指示を与えるAPIである。具体的には、プリンタ10に対してデバイス情報を送信するように要求し、またファーム更新用スレッド72からの呼び出しに応じて次に説明する更新ファイル記憶部5から更新ファームウェアを読み出し、受信したデバイス情報から、更新ファームウェア「File1」が更新対象であるプリンタ10に対応しているかを判断する。また、プリンタ10内でのファームウェア書き換え後には再度デバイス情報の送信を要求し、プリンタ10内での書き換え処理が正常に行われたかを検査する(以下、ベリファイ処理という)。さらに、ファームウェア更新処理の進捗状態を示す進捗率を所定のタイミングでサービス71へ通知するように構成されている。
【0031】
更新ファイル記憶部5は、更新ファームウェアが格納された更新ファイルが記憶されたHDDの所定の記憶領域である。本実施形態では、更新ライブラリ4が、プリンタ10から受信したデバイス情報をもとに更新ファイル記憶部5から読み出された更新ファームウェア「File1」が、プリンタ10に対応しているかを判断している。
【0032】
(プリンタ10における内部処理)
次にプリンタ10の内部機能構成について説明する。図1に示すように、プリンタ10は、ホストコンピュータ1から送信される各種コマンドや印刷データを図示せぬ送受信部を介して受信し、受信した各種コマンドや印刷データに応じて各種処理を実行する。
【0033】
プリンタ10のファームウェア更新処理の観点では、ホストコンピュータ1の更新ライブラリ4からのデバイス情報の送信要求に応じて、プリンタ10のデバイス情報を生成するデバイス情報生成部11と、ホストコンピュータ1から送信された更新ファイルに基づいて、フラッシュROMに格納されたプリンタ10のファームウェアを更新ファームウェアに書き換えるファームウェア更新制御部13と、更新対象であるファームウェアが格納されたフラッシュROMの所定の領域であるファームウェア記憶部14を備えている。
【0034】
(プリンタ10のファームウェア更新処理)
次に、図2〜図6に示すフローチャートを参照しながら、ファームウェア更新処理について説明する。図2はファームウェア更新処理における更新ライブラリ制御部3の処理を説明するフローチャート、図3は、ファームウェア更新処理における更新ライブラリ4の処理を説明するフローチャート、図4はファームウェア更新処理に成功した場合の処理を説明するフローチャート、図5はファームウェア更新処理が必要なかった場合の処理を説明するフローチャート、図6はファームウェア更新処理に失敗した場合の処理を説明するフローチャートである。
【0035】
(ファームウェア更新処理に成功した場合の処理)
まず、図2〜図4を用いてファームウェア更新処理に成功した場合の処理について説明する。
【0036】
オペレータからホストコンピュータ1の図示せぬ入力装置を介してプリンタ10のファームウェアを更新ファームウェア「File1」によって更新する指示が与えられると、アプリケーション2がファームウェア更新用アプリケーションプログラムを実行し、関数「UpdateFirmware1」によってサービス71を呼び出す(ステップS41,ステップS10)。これによりプリンタ10のファームウェア更新処理が開始される。
【0037】
次に、アプリケーション2から呼び出されたサービス71は、更新ライブラリ4を呼び出すため、関数「StartThread」によってファーム更新用スレッド72を呼び出す(ステップS42)。さらに、ファーム更新用スレッドS72は関数「UpdateFirmware2」によってファームウェア更新機能を有する更新ライブラリ4を呼び出す(ステップS43,ステップS20)。
【0038】
更新ライブラリ4は、プリンタ10のモデル名及び更新前のファームウェアのバージョン等を含んだデバイス情報の送信をプリンタ10に要求する(ステップS21)。プリンタ10はデバイス情報の送信要求を受信すると、デバイス情報生成部11がプリンタ10のデバイス情報を生成し(ステップS44)、送受信部を介して更新ライブラリ4へ返信する。なお、更新ライブラリ4は、デバイス情報の送信要求を行った後、サービス71へ更新処理の進捗率3%を通知する(ステップS45)。
【0039】
更新ライブラリ4は、更新ファイル記憶部5から更新ファームウェア「File1」をRAMへ読み出し、受信したデバイス情報(モデル名等)に基づいて読み出された更新ファームウェア「File1」が更新対象であるプリンタ10に適合しているかを判断する。具体的には、「File1」がプリンタ10のモデル名等に対応したファイルか否かを判断し、対応していると判断した場合には(ステップS22:Yes)、更新ファームウェアをプリンタ10へ送信する必要があるか否かを判断する(ステップS23)。ステップS23では、プリンタ10のファームウェアのバージョンと更新ファームウェアのバージョンとが一致するか否かを判断し、バージョンが一致しない場合には、更新ファームウェアをプリンタ10へ送信する(ステップS24)。
【0040】
更新ライブラリ4は、更新ファームウェアの送信を開始すると、サービス71へ進捗率20%を通知する(ステップS25)。サービス71は20%通知を受けると(ステップS12:Yes)、アプリケーション2へ更新ファームウェア「File1」がプリンタ10に適合していることを意味する「Success」応答を返す(ステップS13)。
【0041】
プリンタ10は更新ファームウェアを受信すると、ファーム更新制御部13がファームウェア記憶部14に記憶された旧バージョンのファームウェアを更新ファームウェアによって書き換える(ステップS46)。
【0042】
更新ライブラリ4はプリンタ10への更新ファームウェアの送信を終了すると、ベリファイ処理を開始する(ステップS26)。すなわち、再度プリンタ10へデバイス情報の送信を要求し、受信したデバイス情報に基づき、古いバージョンのファームウェアが新しいバージョンの更新ファームウェアによって正常に書き換えられたかをチェックする。正常に書き換えられたと判断すると(ステップS26:Yes)、更新ライブラリ4はサービス71に更新処理の進捗率90%を通知し(ステップS47)、サービス71は通知された進捗率90%をアプリケーション2へ通知する(ステップS48)。
【0043】
その後、更新ライブラリ4は、更新処理の終了処理へ移行し、終了処理(ステップS27)を終えるとサービス71へ進捗率100%を通知し(ステップS28)、ファーム更新用スレッド72にファームウェア更新処理終了通知である「Success」応答を返すことによって、関数「UpdateFirmware2」を終了させる(ステップS29)。そして、ファーム更新用スレッド72は更新ライブラリ4からの「Success」応答をサービス71へ返した後(ステップS49)、進捗率100%を通知する(ステップS50)。
【0044】
一方、サービス71はステップS28で進捗率100%を受信した後、ステップS49で「Success」応答を受信するまで待機し(ステップS14:No,ステップS15:No)、「Success」応答を受信すると(ステップS15:Yes)アプリケーション2へファームウェア更新処理完了通知である進捗率100%を通知する(ステップS16)。
【0045】
なお、本実施形態における所定のタイミングで行う進捗率の通知は、更新ファームウェアのチェックが終了した時点(ステップS22,ステップS23)を10%、更新ファームウェアのチェック終了から更新ライブラリ4によるベリファイ処理終了までを11%から89%、更新処理の終了処理(ステップS27)を90%から100%となるように設定されている。
【0046】
具体的には、図4に示すように更新ライブラリ4は、少なくとも更新ファームウェア送信中(ステップS24)に30%、ベリファイ処理中(ステップS26)に80%、終了処理開始(ステップS27)時に90%をサービス71へ通知し、サービス71はその都度通知された進捗率をアプリケーション2に通知するように構成されている。図示されていないが30%から80%の間の進捗率も随時通知されている。このように、ファームウェア更新処理中において複数回にわたり進捗率をアプリケーション2に通知することによって、アプリケーション2はオペレータに対して、更新処理の進捗状況を知らせることができる。したがって、オペレータがファームウェア更新処理の途中で誤ってプリンタ10の電源をOFFにしてしまうといった行為を防止することが可能である。
【0047】
なお、進捗率は必ずしも複数回通知される必要はなく、更新処理中に少なくとも1回通知されるように設定することも可能である。
【0048】
(ファームウェア更新処理が必要なかった場合の処理)
次に、図2,図3及び図5を用いてファームウェア更新処理が必要なかった場合の処理について説明する。なお、上述した処理と同一の処理が行われるステップについては説明が重複するため、異なる処理についてのみ説明することとする。
【0049】
ステップS22で、更新ライブラリ4は、更新ファームウェアが更新対象であるプリンタ10に適合しているか否かのチェックを行い、更新ファームウェアがプリンタ10に適合しているが(ステップS22:Yes)、プリンタ10への更新処理前のファームウェアのバージョンと更新ファームウェアのバージョンが一致しているため、更新ファームウェアの送信が必要でないと判断した場合(ステップS23:No)には、プリンタ10へ更新ファームウェアを送信することなく、サービス71へ更新処理の進捗率90%を通知する(ステップS51)。なお、図5には示されていないが、更新ライブラリ4は、プリンタ10への更新ファームウェアの送信が必要でないと判断した場合(ステップS23:No)に、ベリファイ処理を行った後に、サービス71へ更新処理の進捗率90%を通知するように設定されていてもよい。
【0050】
ステップS51で更新ライブラリ4は進捗率90%を通知した後、更新処理の終了処理へ移行し(ステップS27)、終了処理を終えるとサービス71へ進捗率100%を通知し(ステップS28)、ファーム更新用スレッド72にファームウェア更新処理終了通知である「Success」応答を返すことによって、関数「UpdateFirmware2」を終了させる(ステップS29)。その後、ファーム更新用スレッド72は更新ライブラリ4からの「Success」応答をサービス71へ返し(ステップS55)、サービス71へ進捗率100%を通知する(ステップS56)。
【0051】
ステップS55でサービス71は、更新ライブラリ4からの「Success」応答を受信すると(ステップS17:Yes)、その「Success」応答をアプリケーション2に返す(ステップS18)。そして、ステップS56のファーム更新用スレッド7からの進捗率100%通知を待って(ステップS19)、ファームウェア更新処理完了通知である進捗率100%通知をアプリケーション2へ通知する(ステップS16)。
【0052】
上述したように、ファームウェア更新処理に成功した場合の処理とファームウェア更新処理が必要なかった場合の処理において、更新ライブラリ4が更新ファームウェアがプリンタ10に適合していると判断した場合に、サービス71が「Success」応答をアプリケーション2に返すことによって、意味のある「Success」応答を返すことができる。これにより、「Success」応答に応じてファームウェア更新用アプリケーションプログラムを適切なタイミングで開放させることが可能となる。したがって、アプリケーションを専有することがなくその後のプリンタ10内での書き換え処理を非同期に行うことができる。
【0053】
(ファームウェア更新処理に失敗した場合の処理)
次に、図2,図3及び図6を用いてファームウェア更新処理に成功した場合の処理にいて説明する。
【0054】
ステップS22で、更新ライブラリ4は、デバイス情報に基づき、受信したデバイス情報(モデル名等)に基づいて、更新ファームウェアが更新対象であるプリンタ10のモデル名等に対応していないと判断すると(ステップS22:No)、更新ファームウェアによる書き換え処理を行うことができないためプリンタ10へ更新ファームウェアを送信することなく、サービス71へ更新処理の進捗率90%を通知する(ステップS51)。
【0055】
ステップS51で更新ライブラリ4は進捗率90%を通知した後、更新処理の終了処理へ移行し(ステップS30)、終了処理を終えるとサービス71へ進捗率100%を通知し(ステップS31)、ファーム更新用スレッド72にファームウェア更新処理終了通知である「Error」応答を返すことによって、関数「UpdateFirmware2」を終了させる(ステップS32)。その後、ファーム更新用スレッド72は更新ライブラリ4からの「Error」応答をサービス71へ返し(ステップS58)、サービス71へ進捗率100%を通知する(ステップS56)。
【0056】
ステップS58でサービス71は、更新ライブラリ4からの「Error」応答を受信すると(ステップS17:Yes)、その「Error」応答をアプリケーション2に返す(ステップS59(ステップS18))。そして、ステップ56のファーム更新用スレッド72からの進捗率100%通知を待って(ステップS19)、ファームウェア更新処理完了通知である進捗率100%通知をアプリケーション2へ通知する(ステップS16)。
【0057】
このように本実施形態のホストコンピュータ1のサービス71は、更新ライブラリ4からの進捗率100%通知(ステップS28)を無視し、ファーム更新用スレッド72による処理が終了してから(関数「UpdateFirmware2」が終了してから)、すなわち更新ライブラリ4からファーム更新用スレッド72へファームウェア更新処理終了通知である「Success」あるいは「Error」の応答が通知され(ステップS29あるいはステップS32)、サービス71がファーム更新用スレッド72から進捗率100%を通知された後(ステップS50あるいはステップS56)に、ファームウェア更新処理完了通知である進捗率100%通知をアプリケーション2へ通知する(ステップS16)ように構成されている。
【0058】
したがって、スレッドによる非同期の書き換え処理を更新ライブラリ4が完全に終了したことをアプリケーション2が認識することが可能である。したがって、アプリケーション2はファーム更新用スレッド72の開始と終了を確実に把握することができるので、一つのスレッドが終了したことによって新たな他のスレッドを呼び出し、他のデバイスに対する更新処理を非同期処理によって行うことが可能となる。
【0059】
なお、本発明において、「データ更新装置」とは、プリンタ等のデバイスと通信を行いつつ制御可能なものであれば特に限定されず、複数のコンピュータ及びデバイスを制御するサーバ、一対一でデバイスを制御する汎用の端末装置やコンピュータ(いわゆるPC等)、レシートプリンタを制御するPOS端末であってもよい。
【0060】
また、本実施形態では、ファームウェア更新処理に必要とされるアプリケーション2、更新ライブラリ制御部3、更新ライブラリ4、更新ファイル記憶部5の全ての機能をホストコンピュータ1に持たせているが、プリンタ等の更新対象であるデバイスとネットワークを介して通信可能に接続されていればそれぞれの機能を分離させることも可能である。例えば、更新ファイル記憶部の機能を複数の更新ファイルを管理するファイルサーバとして分離させた構成とすることも可能である。
【0061】
すなわち、本発明におけるデータ更新装置とは、必ずしも1台のコンピュータによって構成される必要はない。アプリケーション、更新ライブラリ制御部、更新ライブラリ、更新ファイル記憶部が果たす各機能をネットワークを介して提供できる環境であればネットワークシステムを含む広い概念である。
【図面の簡単な説明】
【0062】
【図1】ホストコンピュータ及びプリンタの内部処理を示した機能ブロック図である。
【図2】本実施形態のファームウェア更新処理における更新ライブラリ制御部の処理を示したフローチャートである。
【図3】本実施形態のファームウェア更新処理における更新ライブラリの処理を説明するフローチャートである。
【図4】本実施形態においてファームウェア更新処理に成功した場合の処理を示したフローチャートである。
【図5】本実施形態においてファームウェア更新処理が必要なかった場合の処理を示したフローチャートである。
【図6】本実施形態においてファームウェア更新処理に失敗した場合の処理を示したフローチャートである。
【図7】従来のファームウェア更新処理を示したフローチャートである。
【符号の説明】
【0063】
1・・・ホストコンピュータ、2・・・アプリケーション、3・・・更新ライブラリ制御部、4・・・更新ライブラリ、5・・・更新ファイル記憶部、10・・・プリンタ、11・・・デバイス情報生成部、13・・・ファームウェア更新制御部、14・・・ファームウェア記憶部

【特許請求の範囲】
【請求項1】
ネットワークを介して通信可能に接続されたデバイスに対して、該デバイスのデータを更新するデータ更新装置であって、
前記デバイスに送信される更新データが格納された更新ファイル記憶部と、
前記デバイスへの前記更新データの送信を指示するアプリケーションと、
前記更新データを前記更新ファイル記憶部から読み出し、前記デバイスに送信する更新ライブラリと、
前記アプリケーションからの指示に応じて、前記更新ライブラリを起動し制御する更新ライブラリ制御部と、を備え、
前記更新ライブラリは、前記デバイスに対してデバイス情報の送信を要求し、前記デバイスから受信した前記デバイス情報に基づき、前記更新データが前記デバイスに適合しているかどうかを判断し、
前記更新ライブラリ制御部は、前記更新ライブラリの判断結果に応じた応答を前記アプリケーションに返すことを特徴とするデータ更新装置。
【請求項2】
前記更新ライブラリ制御部は、前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする請求項1に記載のデータ更新装置。
【請求項3】
前記更新データが前記デバイスに適合しておりかつ前記デバイスへの前記更新データの送信が必要な場合に、前記更新ライブラリは前記更新データの更新処理の進捗状況を所定のタイミングで前記更新ライブラリ制御部に通知し、前記更新ライブラリ制御部は通知された前記進捗状況を前記アプリケーションに通知することを特徴とする請求項2に記載のデータ更新装置。
【請求項4】
前記更新ライブラリ制御部は、前記更新ライブラリからデータ更新処理終了通知を通知された後、前記アプリケーションにデータ更新処理完了を通知することを特徴とする請求項2または3に記載のデータ更新装置。
【請求項5】
ネットワークを介して通信可能に接続されたデバイスに対して、アプリケーションからの指示に応じて該デバイスのデータを更新する更新処理を行うデータ更新方法であって、
前記デバイスに対してデバイス情報の送信を要求する送信要求ステップと、
前記デバイスから前記デバイス情報を受信する受信ステップと、
受信した前記デバイス情報に基づき、更新データが前記デバイスに適合しているかどうかを判断する判断ステップと、
前記判断ステップにおける判断結果を前記アプリケーションに通知する通知ステップと、を備えたことを特徴とするデータ更新方法。
【請求項6】
前記判断ステップで前記更新データが前記デバイスに適合している場合には、前記アプリケーションに成功を通知し、前記判断ステップで前記更新データが前記デバイスに不適合な場合には、前記アプリケーションに失敗を通知することを特徴とする請求項5に記載のデータ更新方法。
【請求項7】
前記判断ステップで前記更新データが前記デバイスに適合しており、かつ前記デバイスへの前記更新データの送信が必要と判断された場合、前記更新データを前記デバイスに送信するデータ送信ステップと、
前記更新データの更新処理の進捗状況を所定のタイミングで受信し、当該進捗状況を前記アプリケーションに通知する進捗状況通知ステップと、を有することを特徴とする請求項5または6に記載のデータ更新方法。
【請求項8】
前記更新処理が全て完了した後に前記アプリケーションにデータ更新処理完了を通知する更新処理完了ステップを備えたことを特徴とする請求項6または7に記載のデータ更新装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−172186(P2007−172186A)
【公開日】平成19年7月5日(2007.7.5)
【国際特許分類】
【出願番号】特願2005−367255(P2005−367255)
【出願日】平成17年12月20日(2005.12.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
2.JAVA
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】