以下、添付の図面を参照して、本発明の一実施形態に係る印刷装置の制御方法、プログラム更新システムおよび印刷装置について説明する。実施形態では、本発明を適用した印刷システムを例示する。この印刷システムは、印刷媒体に対し印刷処理を行って、印刷物を作成するものである。また、本印刷システムは、装置制御プログラムを搭載した印刷装置であり、且つ搭載するモジュールが異なる複数のモデルが存在する印刷装置に対し、装置制御プログラムの更新処理を行うプログラム更新システムとしても機能する。
図1に示すように、印刷システムSYは、ホスト装置1(管理装置)と、ホスト装置1に接続された印刷装置2と、を有する。ホスト装置1と印刷装置2とは、有線通信によって接続される構成でも良いし、無線通信によって接続される構成でも良い。また、ホスト装置1と印刷装置2とは、直接接続される構成でも良いし、ネットワーク(インターネットやローカルエリアネットワーク)を介して接続される構成でも良い。
ホスト装置1は、各種コマンドを生成し、生成した各種コマンドを印刷装置2に送信するものであり、印刷装置2とのデータ通信を行う通信インターフェース6と、通信インターフェース6を制御する制御部7と、を備える。また、ホスト装置1は、各種情報を表示するディスプレイ8を備える。
通信インターフェース6は、印刷装置2とのデータ通信を行うものである。すなわち、通信インターフェース6は、上記した各種コマンドを含む各種データを印刷装置2に送信すると共に、印刷装置2から各種データを受信する。
制御部7は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13およびハードディスクドライブ14等を有し、ホスト装置1を統括制御する。ハードディスクドライブ14は、プリンタードライバー16と、更新管理ツール17と、を記憶する。ホスト装置1は、制御部7により、更新管理ツール17を実行することで、印刷装置2による上記更新処理を管理する「管理装置」として機能する。
一方、印刷装置2は、ホスト装置1からの各種コマンドを受信し、当該各種コマンドに基づいて、各種処理を行う。例えば、印刷コマンドに基づいて、印刷媒体に対し印刷処理を行う。この印刷装置2は、Bluetooth(登録商標)モジュール搭載モデルや、ネットワークモジュール搭載モデル等、搭載するモジュールが異なる複数のモデルが存在する。すなわち、本印刷装置2は、複数のモジュールの中から1以上のモジュールを選択的に搭載したものである。
印刷装置2は、ホスト装置1とのデータ通信を行う通信インターフェース21(通信部)と、印刷媒体に対し印刷処理を行うプリンターエンジン22と、通信インターフェース21およびプリンターエンジン22を制御するプリンターコントローラー23と、を備える。印刷装置2は、プリンターコントローラー23の制御の下、通信インターフェース21により、各種コマンドを受信する。そして、受信したコマンドが印刷コマンドである場合には、プリンターエンジン22により、当該印刷コマンドに基づいて印刷媒体に対し印刷処理を行う。これによって、印刷物を作成する。
通信インターフェース21は、ホスト装置1との通信を行うものである。すなわち、通信インターフェース21は、ホスト装置1から、上記各種コマンドを含む各種データを受信すると共に、ホスト装置1に各種データを送信する。
プリンターコントローラー23は、印刷装置2を統括制御する制御部31と、各種データを記憶する記憶部32と、を備える。記憶部32は、フラッシュROMで構成されており、印刷装置2を制御するための装置制御プログラム36と、装置制御プログラム36を更新するためのブートプログラム37と、を記憶する。装置制御プログラム36には、印刷装置2に搭載した各モジュールのファームウェアおよび設定情報が含まれる。
制御部31は、CPU41、RAM42、ROM43等を有し、印刷装置2を統括制御する。RAM42は、送受信バッファ46を有する。送受信バッファ46は、通信インターフェース21によってホスト装置1から受信したデータと、通信インターフェース21によってホスト装置1に送信するデータと、を一時記憶するものである。なお、送受信バッファ46は、FIFO(First In First Out)バッファである。
本実施形態では、印刷装置2は、制御部31により装置制御プログラム36を実行することで、印刷処理を含む通常の処理を行い、制御部31によりブートプログラム37を実行することで、装置制御プログラム36の更新処理を行う。すなわち、印刷装置2は、制御部31により装置制御プログラム36を実行する通常制御モードと、制御部31によりブートプログラム37を実行するブート制御モードと、を有し、装置制御プログラム36の更新処理を行う場合には、通常制御モードからブート制御モードに切り替えて、当該更新処理を行う構成である。なお、通常制御モードでは、通常コマンドとリアルタイムコマンドとを実行可能であり、ブート制御モードでは、リアルタイムコマンドのみを実行可能である。通常コマンドは、印刷装置2が送受信バッファ46に記憶した順に処理するコマンドであり、リアルタイムコマンドは、印刷装置2が通常コマンドに対し優先して処理するコマンドであり、印刷装置2が他の処理に対し優先して実行するコマンドである。
ここで図2を参照して、ホスト装置1および印刷装置2の機能構成について説明する。まず、印刷装置2の機能構成について説明する。図2に示すように、印刷装置2は、第1データ受信部50と、第1コマンド解析部51と、印刷制御部52と、第1モード切替部53と、バッファ消去部54と、第2データ受信部60と、第2コマンド解析部55と、応答送信部56と、装置情報送信部57と、第2モード切替部58と、プログラム更新部59と、を備える。第1データ受信部50、第1コマンド解析部51、印刷制御部52および第1モード切替部53は、装置制御プログラム36を実行する制御部31により構成される。一方、バッファ消去部54、第2データ受信部60、第2コマンド解析部55、応答送信部56、装置情報送信部57、第2モード切替部58およびプログラム更新部59は、ブートプログラム37を実行する制御部31により構成される。
第1データ受信部50は、通常制御モードにおいて、ホスト装置1からの各種データを、通信インターフェース21で受信する。具体的には、第1データ受信部50は、印刷コマンドやモード切替コマンド(後述する)を、通信インターフェース21で受信する。
第1コマンド解析部51は、通常制御モードにおいて、受信したデータに対し、コマンド解析を行う。具体的には、第1コマンド解析部51は、受信したデータが、どのコマンドであるかを判定する。また、第1コマンド解析部51は、受信したデータが、通常コマンドであるか、リアルタイムコマンドであるか否かを判定する。
印刷制御部52は、第1コマンド解析部51によるコマンド解析の結果、受信したデータが、印刷コマンドであると判定された場合、印刷コマンドに基づく印刷処理を行う。すなわち、印刷制御部52は、プリンターエンジン22を制御し、印刷コマンドに基づいて、印刷媒体に対し印刷処理を行う。
第1モード切替部53は、通常制御モードにおいて、ホスト装置1からのモード切替要求に基づき、印刷装置2のモードを、通常制御モードからブート制御モードに切り替える。厳密には、第1モード切替部53は、ホスト装置1から送信されたモード切替コマンドを受けて、印刷装置2のモードを、ブート制御モードに切り替える。また、ブート制御モードには、ホスト装置1からの要求を受けて各種情報を応答する情報応答モードと、ホスト装置1からのデータにより上記更新処理(書き換え処理)を行う強制書き換えモードと、が有り、第1モード切替部53は、ホスト装置1からのモード切替コマンドに従って、情報応答モードおよび強制書き換えモードのいずれか一方のモードに切り替える。なお、本実施形態においては、ホスト装置1は、情報応答モードに切り替える旨のモード切替コマンドを送信する構成であるため、第1モード切替部53は、当該モード切替コマンドに従って、印刷装置2のモードを、通常制御モードから情報応答モードに切り替える。
バッファ消去部54は、ホスト装置1から、情報応答モードに切り替える旨のモード切替コマンド(モード切替要求)を受信したとき、送受信バッファ46内のデータを消去する。すなわち、本実施形態では、印刷装置2のモードを情報応答モードに切り替えた後、バッファ消去部54により、送受信バッファ46内のデータを消去する構成となる。
第2データ受信部60は、ブート制御モードにおいて、ホスト装置1からの各種データを、通信インターフェース21で受信する。具体的には、第2データ受信部60は、応答要求コマンド、情報要求コマンド、モード切替コマンドや送信用データ(いずれも後述する)を通信インターフェース21で受信する。なお、詳細は後述するが、第2データ受信部60は、ホスト装置1から、モジュール構成情報に基づき複数のモジュールから選別された1以上のモジュールの更新データを通信インターフェース21で受信する。
第2コマンド解析部55は、情報応答モードにおいて、受信したデータに対しコマンド解析を行い、受信したデータが、どのリアルタイムコマンドであるかを判定する。すなわち、本実施形態では、ホスト装置1は、印刷装置2がブート制御モードとなった状態において、印刷装置2へのコマンド送信をリアルタイムコマンドで行う構成であるため、受信したデータが、どのリアルタイムコマンドであるかを判定することで、受信したデータに対するコマンド解析を行うことができる。
応答送信部56は、情報応答モードにおいて、ホスト装置1からの応答要求コマンドを受けて、ホスト装置1に対し、応答を通信インターフェース21で送信する。
装置情報送信部57は、情報応答モードにおいて、ホスト装置1から、装置情報を要求する情報要求コマンド(情報要求)を受信したとき、ホスト装置1に対し、印刷装置2の装置情報を通信インターフェース21で送信する。すなわち、装置情報送信部57は、ホスト装置1から、情報要求コマンドを受信すると、装置情報をホスト装置1に送信する。装置情報送信部57は、装置情報として、印刷装置2のプリンターIDと、印刷装置2のモジュール構成情報(印刷装置2のモジュール構成を示す情報)と、搭載した各モジュールにおける各ファームウェアのバージョン情報と、をホスト装置1に送信する。
第2モード切替部58は、ブート制御モードにおいて、ホスト装置1からのモード切替要求に基づき、印刷装置2のモードを、情報応答モードと強制書き換えモードとの間で切り替える。厳密には、第2モード切替部58は、ホスト装置1から送信されたモード切替コマンドを受けて、印刷装置2のモードを切り替える。すなわち、第2モード切替部58は、情報応答モードにおいて、強制書き換えモードに切り替える旨のモード切替コマンドを受け、印刷装置2のモードを、情報応答モードから強制書き換えモードに切り替える。また、第2モード切替部58は、強制書き換えモードにおいて、情報応答モードに切り替える旨のモード切替コマンドを受け、印刷装置2のモードを、強制書き換えモードから情報応答モードに切り替える。
プログラム更新部59は、強制書き換えモードにおいて、ホスト装置1からの送信用データ(後述する)に含まれる更新データに基づいて、装置制御プログラム36の更新処理を行う。具体的には、記憶部32に記憶した装置制御プログラム36における各モジュールのファームウェアおよび設定情報を、送信用データに含まれたものに書き換える。これによって、装置制御プログラム36を更新する。
次に、ホスト装置1の機能構成について説明する。ホスト装置1は、ファイル取得部61と、ファイル解析部62と、モード切替要求部63と、応答確認部64と、装置情報取得部65(モジュール構成取得部)と、ID確認部66と、データ選別部67と、送信用データ生成部68と、更新時間算出部69と、通信種類取得部70と、データ送信部71と、接続確認部72と、更新成否判定部73と、リカバリー手順表示部74と、を備える。これら各部は、更新管理ツール17を実行する制御部7により構成される。
ファイル取得部61は、印刷装置2の上記更新処理を行うための更新データファイルを取得する。更新データファイルは、メーカーによって、印刷装置2の機種毎に1種類用意されるものであり、1機種における各モデルを包括する内容である。ファイル取得部61は、インターネット等のネットワークを介して、メーカーが用意したサーバーからダウンロードし、または、当該更新データファイルを記憶した記憶媒体から読み出すことで、当該更新データファイルを取得する。
更新データファイルには、上記機種を示すプリンターID(プロテクトID)と、当該機種に搭載可能な各モジュールの更新データと、が記憶される。上記したように、1機種における各モデルを包括すべく、更新データファイルには、各モデルで印刷装置2に選択的に搭載される複数のモジュールの全てについて、当該各モジュールの更新データが記憶される。
各モジュールの更新データは、モジュール毎に分けて記憶されるだけでなく、より細かくユニットという単位に分けて記憶される。図3は、更新データファイルにおけるユニット構成(各ユニットの内容)を示した図である。図3に示すように、更新データファイルは、ユニットとして、「IPL」、「Boot date(BTS)」、「Firmware data(Main/Wboot)」、「CG data」、「PCダウンイメージ」、「音声ガイドデータ」、「FPGA data(FPGA Configuration Data領域)」、「マイコン(Sub−CPU)」、「MICR(Magnetic ink character recognition)」、「Bluetoothモジュール」、「Network Firmware(NW Kernel/Root領域)」、「Network Firmware(NW User領域)」、「Network Firmware(NW Userfs2領域)」、「writable−region(Linux(登録商標)設定値)」、「bootstrap(登録商標)」、「u−boot」、「u−boot(u−boot設定値)」、「Cert type(証明書Type)」、「Cert Data(証明書実データ)」および「PKCS12 PASSWARD(証明書パスワード)」を有する。
「IPL」、「Boot date(BTS)」、「Firmware data(Main/Wboot)」、「CG data」、「PCダウンイメージ」、「FPGA data(FPGA Configuration Data領域)」は、メインモジュールの更新データである。そして、「IPL」、「Boot date(BTS)」および「Firmware data(Main/Wboot)」は、メインモジュールのファームウェアであり、「CG data」、「PCダウンイメージ」、「FPGA data(FPGA Configuration Data領域)」は、メインモジュールの設定情報である。なお、「PCダウンイメージ」は、印刷が失敗した場合に、失敗した印刷物に対して「失敗した印刷物」だと分かるように印刷物に上書きする印刷データである。
「音声ガイドデータ」は、スピーカーモジュールの更新データである。「マイコン(Sub−CPU)」は、サブCPUモジュールの更新データであり、サブCPUのファームウェアである。「MICR」は、MICRモジュールの更新データであり、MICRモジュールのファームウェアである。「Bluetoothモジュール」は、Bluetoothモジュールの更新データであり、Bluetoothモジュールのファームウェアである。
「Network Firmware(NW Kernel/Root領域)」、「Network Firmware(NW User領域)」、「Network Firmware(NW Userfs2領域)」、「writable−region(Linux設定値)」、「bootstrap」、「u−boot」、「u−boot(u−boot設定値)」、「Cert type(証明書Type)」、「Cert Data(証明書実データ)」および「PKCS12 PASSWARD(証明書パスワード)」は、ネットワークモジュールの更新データである。そして、「Network Firmware(NW Kernel/Root領域)」、「Network Firmware(NW User領域)」、「Network Firmware(NW Userfs2領域)」、「bootstrap」および「u−boot」は、ネットワークモジュールのファームウェアであり、「writable−region(Linux設定値)」、「u−boot(u−boot設定値)」、「Cert type(証明書Type)」、「Cert Data(証明書実データ)」および「PKCS12 PASSWARD(証明書パスワード)」は、ネットワークモジュールの設定情報である。
また、更新データファイルには、上記プリンターIDおよび各モジュールの更新データに加え、当該ユニット構成(ユニットの数および種類)と、各ユニットの更新時間(書き換え時間)と、各ファームウェアのバージョン情報と、が記憶される。
図2に戻り、ファイル解析部62は、取得した更新データファイルを解析し、当該更新データファイルから、プリンターID、ユニット構成(ユニットの数および種類)、各ユニットの更新時間および各ファームウェアのバージョン情報を抽出する。これによって、これらの情報を取得する。ファイル解析部62は、各ユニットの更新時間を取得することで、各モジュールの更新データの各更新時間を取得する。
モード切替要求部63は、印刷装置2に対し、リアルタイムコマンドでモード切替要求を行う。すなわち、モード切替要求部63は、リアルタイムコマンドで構成されたモード切替コマンド(モード切替要求)を印刷装置2に送信して、印刷装置2に、モードを切り替えさせる。詳細は後述するが、装置制御プログラム36の更新動作では、まず、印刷装置2を情報応答モードに切り替えさせて、印刷装置2の装置情報を取得した後、印刷装置2を強制書き換えモードに切り替えさせて、装置制御プログラム36の更新処理を行わせる。その後、再度、情報応答モードに切り替えさせて、更新処理が正常に行われたか否かを判定する。なお、ホスト装置1は、印刷装置2がブート制御モードに切り替わった状態における、印刷装置2へのコマンド送信を、リアルタイムコマンドで行う。
応答確認部64は、印刷装置2に対し、リアルタイムコマンドで応答確認を行う。すなわち、応答確認部64は、リアルタイムコマンドで構成された応答要求コマンドを送信し、これに対する返信である印刷装置2(の応答送信部56)からの応答を受信する。
装置情報取得部65は、リアルタイムコマンドで、印刷装置2から、当該印刷装置2の装置情報を取得する。すなわち、装置情報取得部65は、リアルタイムコマンドで構成された情報要求コマンド(情報要求)を送信し、これに対する返信である印刷装置2(の装置情報送信部57)からの装置情報を受信する。すなわち、装置情報取得部65は、印刷装置2から、プリンターID、モジュール構成情報および各モジュールにおける各ファームウェアのバージョン情報を取得する。
ID確認部66は、装置情報取得部65により取得したプリンターIDと、ファイル解析部62により取得したプリンターIDと、を比較して、両プリンターIDが一致するか否かを判定する。すなわち、更新する更新データファイルのプリンターIDが、更新対象となる印刷装置2のプリンターIDと一致するか否かを判定する。
データ選別部67は、更新データファイルに記憶された更新データから、印刷装置2に必要な更新データ(ユニット)を選別する。具体的には、データ選別部67は、装置情報取得部65により取得したモジュール構成情報に基づいて、更新データファイルに記憶された全てのモジュールの更新データから、印刷装置2に搭載された1以上のモジュールの更新データを選別する。例えば、図4に示すように、印刷装置2が、Bluetoothモジュールを搭載しないモデルである場合には、Bluetoothモジュールの更新データを除外する。また、印刷装置2が、ネットワークモジュールを搭載しないモデルである場合には、ネットワークモジュールの更新データを除外する。
送信用データ生成部68は、選別した更新データ(ユニット)により、印刷装置2に送信する送信用データを生成する。すなわち、送信用データ生成部68は、更新データファイルから、選別した更新データを抽出すると共に、抽出した更新データを含む送信用データを生成する。
更新時間算出部69は、ファイル解析部62により取得した各ユニットの更新時間に基づき、選別した更新データにおける更新時間(合計更新時間)を算出する。すなわち、更新時間算出部69は、選別した各更新データにおける各ユニットの各更新時間を集計して、選別した更新データにおける合計更新時間を算出する。なお、この合計更新時間は、送信用データを送信した後に行う接続確認の際に用いるものである。そのため、当該合計更新時間は、送信用データに付加しておくことが好ましい。
通信種類取得部70は、送信用データを印刷装置2に送信する通信について、通信の種類を取得する。具体的には、通信種類取得部70は、通信の種類が、USB通信であるか、イーサネット(登録商標)通信であるか、Bluetooth通信であるか、の情報を取得する。なお、「USB」は、「Universal Serial Bus」の略である。
データ送信部71は、送信用データ生成部68により生成した送信用データを、印刷装置2に送信する。このとき、データ送信部71は、1回当たりの送信データ量が、通信種類取得部70により取得した通信の種類に応じた所定のデータ量となるように、送信用データを分割して送信する。具体的には、通信の種類が、USB通信またはイーサネット通信である場合には、1回当たりの送信データ量が2メガバイトとなるように分割する。また、通信の種類が、Bluetooth通信である場合には、1回当たりの送信データ量が512キロバイトとなるように分割する。
本実施形態では、モード切替要求部63により、印刷装置2を強制書き換えモードに切り替えさせた状態で、データ送信部71により、送信用データを送信することで、印刷装置2に、送信用データに基づく装置制御プログラム36の更新処理を行わせる。なお、応答確認部64によって応答確認が確認されなかった場合には、印刷装置2からモジュール構成情報が取得できず、データ選別部67による選別処理および送信用データ生成部68による送信用データの生成処理を行うことができない。そのため、送信用データ生成部68により生成したデータ送信用データに代えて、更新データファイルから各モジュールの更新データ(各ユニット)の全てを抽出し、これを送信用データとして送信する。かかる場合、抽出した更新データをmot形式に変換すると共に、印刷装置2の記憶部32における、各更新データの書き込み先(書き換え先)のアドレス(セクター)を付加して印刷装置2に送信する。このmot形式は、フラッシュROMのセクター単位のデータ形式であり、そのまま記憶部32に記憶できる形式である。
接続確認部72は、データ送信部71により送信用データを送信した後に印刷装置2との接続確認を行って、印刷装置2による上記更新処理が正常に終了した否かを判定する。すなわち、印刷装置2は、更新処理を行っている間、ホスト装置1からの接続ができない状態となり、更新処理が終わると、ホスト装置1から接続可能な状態となる。そのため、印刷装置2との接続確認を行うことで、上記更新処理が正常に終了した否かを判定することができる。
具体的には、接続確認部72は、送信用データを送信してから、更新時間算出部69により算出した合計更新時間に達するまで、印刷装置2との接続確認をポーリングする。すなわち、送信用データを送信してから、更新時間算出部69により算出した合計更新時間に達するまでの間、一定時間毎(数秒毎)に、印刷装置2との接続確認を繰り返し行う。これにより、印刷装置2による上記更新処理が正常に終了した否かを判定する。
更新成否判定部73は、印刷装置2による上記更新処理が正常に行われたか否かを判定する。本実施形態では、更新処理後のバージョン情報と、更新データファイルのバージョン情報とを、各モジュールのファームウェアそれぞれにおいて比較し、両バージョン情報が、各モジュールのファームウェアそれぞれにおいて一致するか否かを判定する。これによって、印刷装置2による上記更新処理が正常に行われたか否かを判定する。なお、更新処理後のバージョン情報は、更新処理後に装置情報取得部65により取得したものを用い、更新データファイルのバージョン情報は、ファイル解析部62により取得したものを用いる。
リカバリー手順表示部74は、更新成否判定部73により、印刷装置2による上記更新処理が正常に行われなかったと判定された場合に、リカバリー手順をディスプレイ8に表示する。例えば、ディスプレイ8に、「装置制御プログラムの更新をリトライしてください」等のメッセージを表示して、更新動作のやり直しを促す。
ここで図5および図6を参照して、印刷システムSYによる装置制御プログラム36の更新動作について説明する。本更新動作は、印刷装置2が、記憶部32に、装置制御プログラム36およびブートプログラム37を記憶し、ホスト装置1が、ファイル取得部61により更新データファイルを取得した状態において、ユーザー操作によって、ホスト装置1上で当該更新データファイルが指定された時に実行されるものである。
図5および図6に示すように、ユーザー操作によって、更新データファイルが指定されると(S1:Yes)、ファイル解析部62により、指定された当該更新データファイルから、プリンターID、ユニット構成(ユニットの数および種類)、各ユニットの更新時間および各ファームウェアのバージョン情報を取得する(S2)。
これらの情報を取得したら、モード切替要求部63により、リアルタイムコマンドで、印刷装置2に対し、情報応答モードに切り替える旨のモード切替要求を行う。すなわち、モード切替要求部63により、リアルタイムコマンドで構成された、情報応答モードに切り替える旨のモード切替コマンドを、印刷装置2に送信する(S3)。これに対し、印刷装置2は、第1データ受信部50により、ホスト装置1からのモード切替コマンドを通信インターフェース21で受信し(S4)、第1コマンド解析部51により、受信したデータに対しコマンド解析を行い、受信したデータが、モード切替コマンドであり且つリアルタイムコマンドであると判定する(S5)。そして、第1モード切替部53により、当該モード切替コマンドに基づき、印刷装置2のモードを、通常制御モードから情報応答モードに切り替える(S6)。その後、バッファ消去部54により、送受信バッファ46内のデータを消去する(S7)。
その後、ホスト装置1は、応答確認部64により、リアルタイムコマンドで、印刷装置2に対し応答確認を行う。すなわち、応答確認部64により、リアルタイムコマンドで構成された応答要求コマンドを、印刷装置2に送信する(S8)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からの応答要求コマンド(応答要求)を通信インターフェース21で受信し(S9)、第2コマンド解析部55により、受信したデータに対しコマンド解析を行い、受信したデータが、応答要求コマンドであると判定する(S10)。そして、応答送信部56により、応答要求コマンドに対する応答をホスト装置1に通信インターフェース21で送信(返信)する(S11)。ホスト装置1は、これを受けて応答を確認する。
この応答確認部64による応答確認において、印刷装置2からの応答が確認されなかった場合(S12:No)には、更新データファイルから、更新データファイルに記憶された全てのモジュールの更新データ(全ユニット)を抽出し、抽出した更新データを、送信用データとして、印刷装置2に送信する(S13)。このとき、各更新データをmot形式に変換すると共に、各更新データに対し、各更新データの書き込み先のアドレスを付加して送信する。これに対し、印刷装置2は、強制書き換えモードであるため、第2データ受信部60により、ホスト装置1からの送信用データ(全てのモジュールの更新データ)を通信インターフェース21で受信し(S14)、プログラム更新部59により、受信した送信用データに基づいて、装置制御プログラム36の更新処理を行う(S15)。すなわち、上記書き込み先のアドレスに従って、各モジュールのファームウェアおよび設定情報を書き換える。これにより、本更新処理を終了する。
一方、応答確認部64による応答確認において、印刷装置2からの応答が確認された場合(S12:Yes)には、装置情報取得部65により、リアルタイムコマンドで、印刷装置2から、印刷装置2の装置情報を取得する。すなわち、装置情報取得部65により、リアルタイムコマンドで構成された情報要求コマンドを、印刷装置2に送信する(S16)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からの情報要求コマンド(情報要求)を通信インターフェース21で受信し(S17)、第2コマンド解析部55により、受信したデータに対しコマンド解析を行い、受信したデータが、情報要求コマンドであると判定する(S18)。そして、装置情報送信部57により、印刷装置2の装置情報(プリンターID、モジュール構成情報および各ファームウェアのバージョン情報)をホスト装置1に通信インターフェース21で送信(返信)する(S19)(モジュール構成送信ステップ)。ホスト装置1は、これを受信して、印刷装置2の装置情報を取得する。
印刷装置2の装置情報を取得したら、ホスト装置1は、ID確認部66により、更新データファイルのプリンターIDが、印刷装置2のプリンターIDと一致するか否かを判定する(S20)。すなわち、ファイル解析部62によって取得したプリンターIDと、装置情報取得部65によって取得したプリンターIDと、を比較して、両プリンターIDが一致するか否かを判定する。両プリンターIDが一致しない場合(S20:No)には、エラーとし、本更新動作を終了する。
一方、両プリンターIDが一致した場合(S20:Yes)には、モード切替要求部63により、リアルタイムコマンドで、印刷装置2に対し、強制書き換えモードに切り替える旨のモード切替要求を行う。すなわち、モード切替要求部63により、リアルタイムコマンドで構成された、強制書き換えモードに切り替える旨のモード切替コマンドを、印刷装置2に送信する(S21)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からのモード切替コマンドを通信インターフェース21で受信し(S22)、第2コマンド解析部55により、受信したデータに対しコマンド解析を行い、受信したデータが、モード切替コマンドであると判定する(S23)。そして、第2モード切替部58により、当該モード切替コマンドに従って、印刷装置2のモードを、情報応答モードから強制書き換えモードに切り替える(S24)。
その後、データ選別部67により、装置情報取得部65によって取得したモジュール構成情報に基づいて、更新データファイルに記憶された全てのモジュールの更新データから、印刷装置2に搭載された1以上のモジュールの更新データを選別する(S25)。更新データを選別したら、更新時間算出部69により、選別した更新データにおける合計更新時間を算出する(S26)。その後、送信用データ生成部68により、選別した更新データによって送信用データを生成する(S27)。
送信用データを生成したら、通信種類取得部70により、送信用データを印刷装置2に送信する通信の種類を取得する(S28)。そして、データ送信部71により、1回当たりの送信データ量が、取得した通信の種類に応じた所定のデータ量となるように、送信用データを分割して送信する(S29)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からの送信用データを通信インターフェース21で受信し(S30)(更新データ受信ステップ)、プログラム更新部59により、受信した送信用データに基づいて、装置制御プログラム36の更新処理を行う(S31)(プログラム更新ステップ)。すなわち、記憶部32に記憶された装置制御プログラム36における各ファームウェアおよび各設定情報を、送信用データに記憶されたものにそれぞれ書き換える。
すなわち、更新データ受信ステップでは、ホスト装置1から、送信したモジュール構成情報に基づき複数のモジュールから選別された1以上のモジュールの更新データを受信する。ひいては、更新データ受信ステップでは、ホスト装置1との通信の種類に応じた所定のデータ量内に分割して送信された更新データを受信する。
送信用データを送信したら、ホスト装置1は、接続確認部72により、印刷装置2との接続確認をポーリングする(S32)。そして、更新時間算出部69により算出した合計更新時間に達しても、印刷装置2との接続が確認されなかった場合(S33:No)には、上記応答確認の工程で応答が確認されたかった場合と同様、更新データファイルから、更新データファイルに記憶された全てのモジュールの更新データ(全ユニット)を抽出し、抽出した更新データを、送信用データとして、印刷装置2に送信する(S34)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からの送信用データ(全てのモジュールの更新データ)を通信インターフェース21で受信し(S35)、プログラム更新部59により、受信した送信用データに基づいて、装置制御プログラム36の更新処理を行う(S36)。これにより、本更新処理を終了する。
一方、合計更新時間に達する前に印刷装置2との接続が確認された場合(S33:Yes)には、まず、モード切替要求部63により、リアルタイムコマンドで、印刷装置2に対し、情報応答モードに切り替える旨のモード切替要求を行う。すなわち、モード切替要求部63により、リアルタイムコマンドで構成された、情報応答モードに切り替える旨のモード切替コマンドを、印刷装置2に送信する(S37)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からのモード切替コマンドを通信インターフェース21で受信し(S38)、第2コマンド解析部55により、受信したデータに対しコマンド解析を行い、受信したデータが、モード切替コマンドであると判定する(S39)。そして、第2モード切替部58により、当該モード切替コマンドに基づき、印刷装置2のモードを、強制書き換えモードから情報応答モードに切り替える(S40)。その後、バッファ消去部54により、送受信バッファ46内のデータを消去する(S41)。
その後、ホスト装置1は、応答確認部64により、リアルタイムコマンドで、印刷装置2に対し、応答確認を行う。すなわち、応答確認部64により、リアルタイムコマンドで構成された応答要求コマンドを、印刷装置2に送信する(S42)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からの応答要求コマンドを通信インターフェース21で受信し(S43)、第2コマンド解析部55により、受信したデータに対しコマンド解析を行い、受信したデータが、応答要求コマンドであると判定する(S44)。そして、応答送信部56により、応答要求コマンドに対する応答をホスト装置1に通信インターフェース21で送信(返信)する(S45)。ホスト装置1は、これを受けて、応答の確認を行う。
印刷装置2からの応答が確認されたら、装置情報取得部65により、リアルタイムコマンドで、印刷装置2から、印刷装置2の装置情報を取得する。すなわち、装置情報取得部65により、リアルタイムコマンドで構成された情報要求コマンドを、印刷装置2に送信する(S46)。これに対し、印刷装置2は、第2データ受信部60により、ホスト装置1からの情報要求コマンドを通信インターフェース21で受信し(S47)、第2コマンド解析部55により、受信したデータに対しコマンド解析を行い、受信したデータが、情報要求コマンドであると判定する(S48)。そして、装置情報送信部57により、印刷装置2の装置情報(プリンターID、モジュール構成情報および各ファームウェアのバージョン情報)をホスト装置1に通信インターフェース21で送信(返信)する(S49)。ホスト装置1は、これを受信して、印刷装置2の装置情報を取得する。
装置情報を取得したら、更新後のバージョン情報と、更新データファイルのバージョン情報とを、各ファームウェアのそれぞれについて比較し、両バージョン情報が一致するか否かを、各ファームウェアのそれぞれについて判定する(S50)。いずれのファームウェアについても、両バージョン情報が一致すると判定された場合(S50:Yes)には、装置制御プログラム36の更新処理が正常に行われたと判断し、本更新動作を終了する。一方、いずれかのファームウェアについて、両バージョン情報が一致しないと判定された場合(S50:No)には、リカバリー手順表示部74により、ディスプレイ8にリカバリー手順を表示して(S51)、本更新動作を終了する。
以上のような構成によれば、印刷装置2において、モジュール構成情報をホスト装置1へ送信し、ホスト装置1において、印刷装置2のモジュール構成情報を取得し、取得したモジュール構成情報に基づき、印刷装置2が搭載したモジュールの更新データを選別して印刷装置2に送信し、印刷装置2は更新データにより装置制御プログラム36の更新処理を行う。このように、印刷装置2のモジュール構成に合わせて、必要な更新データを受信して更新処理する構成であるため、搭載するモジュールが異なる複数のモデルが存在する印刷装置2の更新処理に係り、ホスト装置1から印刷装置2が受信する更新データのデータ量を極力少なくすることができる。これによって、データ送信にかかる時間を低減させることができる。また、受信途中で、ノイズの影響やユーザーによる印刷装置2の電源をオフするなど誤った操作によりデータ受信が失敗するリスクを低減させることができる。
また、送信用データ(更新データ)を分割して受信すると共に、1回当たりの受信データ量が、通信の種類に応じて決定されるため、例えば、通信の種類が、通信速度の遅いものの場合に、1回当たりの受信データ量を少なくすることで、1回当たりの通信時間を一定または一定以下にすることができる。すなわち、通信の種類が、通信速度の遅いものであった場合にも、1回の通信時間を、データ受信が失敗するリスクが少ない所定の通信時間まで短くすることができる。そのため、データ受信が失敗するリスクをより低減させることができる。
さらに、接続確認のポーリングのタイムアウト時間を、選別した更新データにおける合計更新時間とすることで、接続確認のポーリングによる更新終了の成否判定を適切に行うことができる。これよって、更新処理が終わった否かを判定する判定処理に不要に時間がかかってしまうのを避けることができ、更新動作にかかる時間を少なくすることができる。
なお、上記実施形態において、ホスト装置1が更新時刻を付加して送信用データを送信し、印刷装置2による上記更新処理を所望の時刻に行わせる構成でも良い。すなわち、ホスト装置1が、更新時刻を付加して、送信用データを送信する。これに対し、印刷装置2が、送信用データに付加された更新時刻を受信し(更新データ受信ステップ)、これを記憶部32に記憶しておく。そして、記憶された当該更新時刻に、送信用データに基づく更新処理を行う(プログラム更新ステップ)。このように、印刷装置2が、更新データ受信ステップ(S30)では、更新データに付加された更新時刻を受信し、プログラム更新ステップ(S31)では、更新データに付加された更新時刻に、更新データに基づく更新処理を行う。かかる構成によれば、所望の時刻(例えば、業務終了時等)に、印刷装置2に更新処理を行わせることができる。ひいては、更新データのデータ送信と、更新データに基づく更新処理とを別々の時刻に行うことができるため、更新データのデータ送信が終わった時点で、一度、印刷装置2を印刷可能な状態に戻すことができる。よって、ユーザーが更新データのデータ送信を指示してから、印刷装置2が印刷可能な状態になるまでの時間を短くすることができ、ユーザーの待ち時間を少なくすることができる。
なお、各モジュールの更新データ毎に、更新時刻を付加(設定)して送信用データを送信し、印刷装置2による各更新データに基づく更新処理を、それぞれの更新時刻に行わせる構成でも良い。
また、上記実施形態において、データ送信部71により、1分割単位の送信の都度、送信の成否確認を行う構成でも良い。すなわち、ホスト装置1は、1分割単位の送信の都度、問い合わせコマンドを送信する。これに対し、印刷装置2は、受信したデータのデータ量を記憶しておき、問い合わせコマンドを受けて、1分割単位の受信の都度、記憶したデータ量(確認情報)を返信する。そして、ホスト装置1は、印刷装置2から返信されたデータ量に基づいて、送信の成否確認を行う。このように、印刷装置2が、更新データ受信ステップ(S30)において、1分割単位の受信の都度、受信の確認情報(記憶したデータ量)を送信する。かかる構成によれば、通信の種類に応じた所定のデータ量送る都度、受信の成否確認を行う構成であるため、例えば、一定または一定以下の通信時間のデータ受信の都度、受信の成否確認を行うことができる。これによって、データ受信が失敗したときにホスト装置1が再送信を行うことができ、さらに再送信の通信時間を少なくすることができ、再送信にかかる時間を最小限に抑えることができる。
さらに、上記実施形態において、選別した更新データについて、モジュール毎の更新データを、通信の種類に応じた上記所定のデータ量に合わせて、統合または分割して送信し、印刷装置2がこれを受信する構成でも良い。別の言い方をすれば、印刷装置2が、更新データ受信ステップ(S30)において、ホスト装置1との通信の種類に応じた所定のデータ量内となるように、モジュール単位で統合または分割して送信された更新データを受信する。かかる場合、モジュール毎の更新データが、上記所定のデータ量より大きい場合には、更新データを分割して送信し、モジュール毎の更新データが、上記所定のデータ量より小さい場合には、2以上の更新データを統合して送信する。
なお、上記実施形態においては、モジュール構成情報に基づき、印刷装置2に必要な更新データを選別する構成であったが、モジュール構成情報に加え、各モジュールにおける各ファームウェアのバージョン情報に基づいて、印刷装置2に必要な更新データを選別する構成でも良い。すなわち、モジュール構成情報に基づいて選別した更新データのうち、ファイル解析部62で取得した各ファームウェアのバージョン情報と、装置情報取得部65で取得した各ファームウェアのバージョン情報と、が一致しないものを選別し、両バージョン情報が一致するものを除外する構成でも良い。
また、上記実施形態においては、ホスト装置1側で、選別した更新データにおける合計更新時間を算出し、算出した合計更新時間を利用して印刷装置2との接続確認を行う構成であったが、印刷装置2側で、選別した更新データにおける合計更新時間を算出し、算出した合計更新時間を利用してホスト装置1との接続確認を行う構成でも良い。すなわち、印刷装置2が、受信した更新データ(送信用データ)における合計更新時間を算出する更新時間算出ステップと、更新データ受信ステップ(S30)により更新データ(送信用データ)を受信してから、算出した合計更新時間に達するまで、ホスト装置1との接続確認をポーリングする接続確認ステップと、を実行する。かかる構成によれば、ポーリングのタイムアウト時間を、選別した更新データにおける合計更新時間とすることで、接続確認のポーリングによる更新終了の成否判定を適切に行うことができる。
さらに、上記実施形態においては、印刷装置2のモジュール構成情報を取得し、これに基づいて、モジュール毎の更新データを選別する構成であったが、印刷装置2に、仕向け毎のモデルが存在する場合、印刷装置2の仕向けを示す仕向け情報を取得し、これに基づいて、仕向け毎の更新データを選別する構成でも良い。
すなわち、更新データファイルに、仕向け毎の更新データを記憶しておく。これに対し、ホスト装置1は、ファイル取得部61により、当該更新データファイルを取得して、仕向け毎の更新データを取得する。その後、ホスト装置1は、仕向け情報を要求する仕向け情報要求を印刷装置2に送信する。これに対し、印刷装置2は、ホスト装置1から当該仕向け情報要求を受信すると、仕向け情報をホスト装置1に送信する(仕向け情報送信ステップ)。ホスト装置1は、これを受けて印刷装置2の仕向け情報を取得する。その後、ホスト装置1は、データ選別部67により、取得した仕向け情報に基づいて、取得した仕向け毎の更新データから、印刷装置2に必要な更新データを選別する。そして、送信用データ生成部68により、ここで選別した更新データによって送信用データを生成し、データ送信部71により、生成した当該送信用データが送信する。これに対し、印刷装置2は、第2データ受信部60により、当該送信用データを受信し(更新データ受信ステップ)、プログラム更新部59により、当該送信用データに基づいて、装置制御プログラム36を更新する。
このように、印刷装置2が、ホスト装置1から、仕向け情報要求を受信すると、仕向け情報をホスト装置1に送信する仕向け情報送信ステップを、更に実行し、更新データ受信ステップ(S30)において、ホスト装置1から、送信した仕向け情報に基づき選別された1以上のモジュールの更新データを受信する。かかる構成によれば、仕向け毎のモデルが存在する印刷装置2についても、更新処理に係る印刷装置2が受信するデータのデータ量を極力少なくすることができる。
なお、上記実施形態においては、更新成否判定部73(更新成否判定ステップ(S40))において、バージョン情報を比較して、更新処理の成否判定を行う構成であったが、チェックサムを用いて、更新処理の成否判定を行う構成でも良い。すなわち、印刷装置2による更新処理の終了後、印刷装置2からチェックサム情報を取得し、これに基づいて、更新処理の成否判定を行う構成でも良い。
また、上記実施形態においては、装置情報取得部65(装置情報取得ステップ)において、プリンターID、印刷装置のモジュール構成情報および各モジュールにおける各ファームウェアのバージョン情報を取得する構成であったが、これに加え、印刷装置2における、インターフェースやフォントの種類、ヘッド解像度、紙幅等の仕様情報を取得する構成でも良い。