(57)【要約】【課題】１トランザクションの途中で印刷動作を終了させることなく、受信誤りを生じた印刷データの使用を防止して、より信頼性の高い印刷を行う。【解決手段】印刷部と、外部装置との間でデータの送受信を行う送受信部と、外部装置から１トランザクション分の印刷データを含むデータを受信したことに応じて、受信したデータから、印刷データと、外部装置が印刷データから算出した第１誤り検出符号と、を抽出し、抽出した印刷データから第２誤り検出符号を算出し、第１誤り検出符号と第２誤り検出符号とが一致するか否かを判断し、判断の結果を示す判断結果データを外部装置へ送信すると共に、第１誤り検出符号と第２誤り検出符号とが一致する場合に、抽出した１トランザクション分の印刷データに基づく印刷部による印刷を実行し、第１誤り検出符号と第２誤り検出符号とが一致しない場合に、受信したデータを破棄する制御部と、を備える。【選択図】図１
2019098531.tif 000002
【特許請求の範囲】
【請求項１】
印刷部と、
外部装置との間でデータの送受信を行う送受信部と、
前記外部装置から１トランザクション分の印刷データを含むデータを受信したことに応じて、受信した前記データから、前記印刷データと、前記外部装置が前記印刷データから算出した第１誤り検出符号と、を抽出し、抽出した前記印刷データから第２誤り検出符号を算出し、前記第１誤り検出符号と前記第２誤り検出符号とが一致するか否かを判断する検証処理を実行し、前記判断の結果を示す判断結果データを前記外部装置へ送信すると共に、前記第１誤り検出符号と前記第２誤り検出符号とが一致する場合に、抽出した前記１トランザクション分の印刷データに基づく前記印刷部による印刷を実行し、前記第１誤り検出符号と前記第２誤り検出符号とが一致しない場合に、受信した前記データを破棄する制御部と、を備える印刷装置。
【請求項２】
前記外部装置から受信した受信データを保存する第１バッファーと、
前記受信データから抽出される前記印刷データを保存する第２バッファーと、
を更に備え、
前記制御部は、前記第１バッファーに保存された前記受信データから前記印刷データと前記第１誤り検出符号とを抽出して前記検証処理を実行し、前記第１誤り検出符号と前記第２誤り検出符号とが一致するときは、前記印刷データを前記第２バッファーに転送して前記印刷部による印刷を実行する、請求項１に記載の印刷装置。
【請求項３】
前記判断結果データは、前記判断の結果を表すデータを所定数以上連続させたデータ列として構成される、請求項１又は２に記載の印刷装置。
【請求項４】
前記制御部は、前記外部装置から前記判断結果データの再送信要求を受信したことに応じて、その直前に前記外部装置から受信したデータに基づく前記判断結果データを、前記外部装置へ送信する、請求項１ないし３のいずれか一項に記載の印刷装置。
【請求項５】
前記制御部は、前記外部装置から前記検証処理を無効にすることを指示する無効化指示を受信したときは、その後に前記外部装置から受信されるデータについては前記検証処理を行うことなく、前記受信されるデータの全体を印刷データとして用いて、前記印刷部による印刷を実行する、請求項１ないし４のいずれか一項に記載の印刷装置。
【請求項６】
前記制御部は、前記外部装置から前記検証処理を行う機能を有するか否かについての問い合わせを受信したときは、前記検証処理を行う機能を有する旨を示す返信を前記外部装置へ送信する、請求項１ないし５のいずれか一項に記載の印刷装置。
【請求項７】
外部装置から１トランザクション分の印刷データを含むデータを受信し、
受信した前記データから、前記印刷データと、前記外部装置が前記印刷データから算出した第１誤り検出符号と、を抽出し、
抽出した前記印刷データから第２誤り検出符号を算出して、前記第１誤り検出符号と前記第２誤り検出符号とが一致するか否かを判断し、
前記判断の結果を示す判断結果データを前記外部装置へ送信し、
前記第１誤り検出符号と前記第２誤り検出符号とが一致する場合に、抽出した前記１トランザクション分の印刷データに基づく印刷を行い、
前記第１誤り検出符号と前記第２誤り検出符号とが一致しない場合に、受信した前記データを破棄する、印刷装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置、及び印刷装置の制御方法に関する。
【背景技術】
【０００２】
従来、プリンターは、データ受信のあと即座に受信データの解析及び印刷処理を実施する。このため、例えば、１トランザクションの途中で印刷データが途切れてしまった場合、その時点までに受信したデータは既に印刷されており、トランザクションの途中で印刷が中止されることとなる。ここで、１トランザクションとは、１頁分、１文書分等の印刷のまとまりをいう。
【０００３】
また、従来のプリンターは、受信した印刷データの途中のデータに誤りがあっても、これを検出することができないため、誤りのある印刷データを破棄することができず、誤った印刷データを用いたまま印刷が続行されてしまう。
【０００４】
印刷データの受信誤りを防止する技術として、特許文献１には、パソコンから送信されるプリントデータの受信状態を表示するデータ通信表示装置を備えた印刷装置が開示されている（特許文献１参照）。このデータ通信表示装置は、複数のパケットに分割されたプリントデータを１パケットずつ受信し、受信したパケットのチェックサムによりそのパケットが正しく受信されたか否かを判断する。そして、パケットが正しく受信されていれば、その１パケット分のプリントデータがプリンターへ出力される。
【０００５】
しかしながら、上記従来の印刷装置では、複数パケットに分割されたプリントデータが１パケット毎にプリンターに出力され印刷される。このため、パケット毎の印刷データの受信誤りは回避されるものの、ラストブロックの受信までに通信障害が発生すれば、プリントデータ全体の印刷（すなわち、１トランザクション分の印刷）が完了しないまま、途中で印刷が中止されることとなる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−３００７７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、印刷装置において、１トランザクションの途中で印刷動作を終了させることなく、受信誤りを生じた印刷データの使用を防止して、より信頼性の高い印刷を行うことである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の印刷装置は、印刷部と、外部装置との間でデータの送受信を行う送受信部と、前記外部装置から１トランザクション分の印刷データを含むデータを受信したことに応じて、受信した前記データから、前記印刷データと、前記外部装置が前記印刷データから算出した第１誤り検出符号と、を抽出し、抽出した前記印刷データから第２誤り検出符号を算出し、前記第１誤り検出符号と前記第２誤り検出符号とが一致するか否かを判断する検証処理を実行し、前記判断の結果を示す判断結果データを前記外部装置へ送信すると共に、前記第１誤り検出符号と前記第２誤り検出符号とが一致する場合に、抽出した前記１トランザクション分の印刷データに基づく前記印刷部による印刷を実行し、前記第１誤り検出符号と前記第２誤り検出符号とが一致しない場合に、受信した前記データを破棄する制御部と、を備える。
この構成によれば、１トランザクション分の印刷データが正常に受信されたか否かが、その印刷データと共に受信した第１誤り検出符号と、受信した印刷データから算出した第２誤り検出符号と、に基づいて検証される。このため、１トランザクションの途中で印刷動作を終了させることなく、受信誤りを生じた印刷データの使用を防止して、より信頼性の高い印刷を行うことができる。
【０００９】
また、本発明は、前記外部装置から受信した受信データを保存する第１バッファーと、前記受信データから抽出される前記印刷データを保存する第２バッファーと、を更に備え、前記制御部は、前記第１バッファーに保存された前記受信データから前記印刷データと前記第１誤り検出符号とを抽出して前記検証処理を実行し、前記第１誤り検出符号と前記第２誤り検出符号とが一致するときは、前記印刷データを前記第２バッファーに転送して前記印刷部による印刷を実行する。
この構成によれば、第２バッファーに転送された印刷データにより印刷を実行しつつ、新たに受信される印刷データを第１バッファーに格納して検証処理を実行できるので、印刷処理のスループットを向上することができる。
【００１０】
また、本発明は、前記判断結果データは、前記判断の結果を表すデータを所定数以上連続させたデータ列として構成される。
本構成によれば、外部装置は、受信した判断結果データの一部に誤りが生じている場合でも、その判断結果データに含まれる最も多いシンボルから、印刷装置の検証処理における判断の結果を正しく把握することができる。
【００１１】
また、本発明は、前記制御部は、前記外部装置から前記判断結果データの再送信要求を受信したことに応じて、その直前に前記外部装置から受信したデータに基づく前記判断結果データを、前記外部装置へ送信する。
この構成によれば、外部装置は、印刷装置から送信された判断結果データを、自装置がビジー状態であったこと等により受信できなかった場合でも、その判断結果を印刷装置に再送信させることができる。これにより、外部装置は、印刷漏れを生じさせることなく、信頼性の高い印刷ジョブを継続的に行うことができる。
【００１２】
また、本発明は、前記制御部は、前記外部装置から前記検証処理を無効にすることを指示する無効化指示を受信したときは、その後に前記外部装置から受信されるデータについては前記検証処理を行うことなく、前記受信されるデータの全体を印刷データとして用いて、前記印刷部による印刷を実行する。
この構成によれば、検証処理を行わない従来の印刷装置と同様の印刷処理も行うことができる。
【００１３】
また、本発明は、前記制御部は、前記外部装置から前記検証処理を行う機能を有するか否かについての問い合わせを受信したときは、前記検証処理を行う機能を有する旨を示す返信を前記外部装置へ送信する。
この構成によれば、外部装置は、印刷データの送信に先立って、送信先の印刷装置が検証処理の機能を有するか否か、又は印刷装置の検証処理の機能が有効になっているか否かを判断することができる。このため、外部装置は、検証機能を有さない従来の印刷装置に対して、又は検証機能が無効になっている印刷装置１００に対して、第１誤り検出符号を付した印刷データを送信してしまう、という誤りを回避することができる。その結果、外部装置は、印刷ジョブをスムーズに遂行することができる。
【００１４】
また、上記課題を解決するため、本発明は、外部装置から１トランザクション分の印刷データを含むデータを受信し、受信した前記データから、前記印刷データと、前記外部装置が前記印刷データから算出した第１誤り検出符号と、を抽出し、抽出した前記印刷データから第２誤り検出符号を算出して、前記第１誤り検出符号と前記第２誤り検出符号とが一致するか否かを判断し、前記判断の結果を示す判断結果データを前記外部装置へ送信し、前記第１誤り検出符号と前記第２誤り検出符号とが一致する場合に、抽出した前記１トランザクション分の印刷データに基づく印刷を行い、前記第１誤り検出符号と前記第２誤り検出符号とが一致しない場合に、受信した前記データを破棄する、印刷装置の制御方法である。
この構成によれば、１トランザクション分の印刷データが正常に受信されたか否かが、その印刷データと共に受信した第１誤り検出符号と、受信した印刷データから算出した第２誤り検出符号と、に基づいて検証される。このため、１トランザクションの途中で印刷動作を終了させることなく、受信誤りを生じた印刷データの使用を防止して、より信頼性の高い印刷を行うことができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係る印刷装置の構成を示す図。
【図２】外部装置から受信する印刷実行データの構成の一例を示す図。
【図３】外部装置へ送信する判断結果データの構成の一例を示す図。
【図４】受信データ検証機能が有効である場合の、印刷処理のフローチャート。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施形態について説明する。
本実施形態に係る印刷装置は、外部装置から受信される１トランザクション分の印刷データについて、その印刷データが正しく受信されたか否かを判断する受信データ検証機能を有する。また、本印刷装置は、外部装置から送信されるコマンドにより、受信データ検証機能の有効／無効を切り替える。ここで、１トランザクションとは、上述したように、１頁分、１文書分等の印刷のまとまりをいう。例えば、特定用途向けのプリンターであるレシートプリンターにおいては１レシート分、また、チケットプリンターにおいては１チケット分の印刷データが、１トランザクション分の印刷データに相当する。
【００１７】
図１は、本実施形態に係る印刷装置１００の構成を示す図である。本印刷装置１００は、外部装置１８０との間でデータの送受信を行う送受信部１０２と、受信データが格納される第１バッファー１０４及び第２バッファー１０６と、を有する。また、印刷装置１００は、外部装置１８０から受信した印刷データに基づいて用紙への印刷を行う印刷部１０８と、印刷装置１００の動作に必要なデータを格納する記憶部１１０と、印刷装置１００の動作を制御する制御部１２０と、を有する。
【００１８】
送受信部１０２は、外部装置１８０との間でデータの送受信を行う通信インターフェースであり、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介した通信を行うＵＳＢコントローラーを用いて構成される。また、第１バッファー１０４、第２バッファー１０６、及び記憶部１１０は、それぞれ、例えば半導体メモリーで構成される。
【００１９】
印刷部１０８は、印刷方式がインクジェット方式である場合、例えば用紙にインクを吐出する印刷ヘッド、用紙上で印刷ヘッドを移動する走査機構、及び用紙を搬送する搬送機構等で構成され、印刷方式が感熱方式（ダイレクトサーマル方式）である場合、例えば感熱紙に熱を加えるラインサーマルヘッド、感熱紙を搬送する搬送機構等で構成される。
【００２０】
制御部１２０は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等のプロセッサーを備えるコンピューターである。制御部１２０は、プログラムが書き込まれたＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、データの一時記憶のためのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を有する構成であってもよい。そして、制御部１２０は、機能要素（又は機能ユニット）として、検証機能設定部１２２と、データ受信部１２４と、抽出部１２６と、検証処理部１２８と、印刷実行部１３０と、動作管理部１３２と、を有する。
【００２１】
制御部１２０が備えるこれらの機能要素は、例えば、コンピューターである制御部１２０がプログラムを実行することにより実現される。なお、上記コンピューター・プログラムは、コンピューター読み取り可能な任意の記憶媒体に記憶させておくことができる。
【００２２】
上記に代えて、制御部１２０が備える上記機能要素の全部又は一部を、それぞれ一つ以上の電子回路部品を含むハードウェアにより構成することもできる。
【００２３】
検証機能設定部１２２は、印刷装置１００の電源オン時に、受信データ検証機能の有効／無効を示す検証機能フラグを１（有効）に初期化する。ここで、検証機能フラグは、例えば記憶部１１０に保存される。また、検証機能設定部１２２は、外部装置１８０から検証機能無効化指示コマンド及び検証機能有効化指示コマンドを受信したことに応じて、それぞれ、検証機能フラグを０（無効）及び１（有効）に設定する。
【００２４】
データ受信部１２４は、送受信部１０２が外部装置１８０から受信した受信データを、送受信部１０２から第１バッファー１０４に転送して保存する。このとき、データ受信部１２４は、外部装置１８０から送信された一塊の連続データの、最初のデータを送受信部１０２が受信したときに、制御部１２０が備えるタイマー（不図示）により、その最初のデータを受信してからの経過時間の計測を開始する。そして、データ受信部１２４は、その経過時間が、例えば１トランザクション分の印刷データを含む受信データを受信するのに十分な所定時間に達したときに、送受信部１０２から第１バッファー１０４への受信データの転送処理を終了する。また、データ受信部１２４は、送受信部１０２から第１バッファー１０４への受信データの転送処理を終了したときに、その旨を、抽出部１２６及び動作管理部１３２に通知する。これにより、抽出部１２６、及び抽出部１２６の出力を受けて動作する検証処理部１２８は、例えば１トランザクション分の印刷データを含む受信データを受信したことに応じて処理を行うこととなる。
【００２５】
さらに、データ受信部１２４は、送受信部１０２から第１バッファー１０４への受信データの転送時に、転送中の受信データに検証機能問合せコマンドが含まれているか否かを判断する。そして、データ受信部１２４は、受信データに検証機能問合せコマンドが含まれているときは、検証機能問合せコマンドを受信した旨を、動作管理部１３２に通知する。
【００２６】
検証機能問合せコマンドは、印刷装置１００が検証処理を行う機能を有するか否か（受信データ検証機能を有するか否か）を問合せるためのコマンドである。外部装置１８０は、印刷装置１００へのデータの送信に先立って印刷装置１００へ検証機能問合せコマンドを送信する。
【００２７】
検証機能問合せコマンドを受信した旨の通知をデータ受信部１２４から受信した動作管理部１３２は、検証機能フラグが１（有効）であれば、受信データ検証機能が有効である旨の応答を、送受信部１０２を介して外部装置１８０へ送信する。また、動作管理部１３２は、検証機能フラグが０（無効）であれば、受信データ検証機能が無効である旨の応答を、外部装置１８０へ送信する。
【００２８】
なお、外部装置１８０は、受信データ検証機能が有効である旨の応答又は受信データ検証機能が無効である旨の応答を受信すれば、印刷装置１００が少なくとも受信データ検証機能を有していることを知ることができる。すなわち、受信データ検証機能が有効である旨の応答及び受信データ検証機能が無効である旨の応答は、共に、検証処理を行う機能を有する旨の返信に対応する。受信データ検証機能を有していない印刷装置は、検証機能問合せコマンドに対して適切な応答ができないため、外部装置１８０は、受信データ検証機能を有していないことを知ることができる。
【００２９】
外部装置１８０は、印刷装置１００から受信データ検証機能が有効である旨の応答を受信すると、その旨（印刷装置１００は受信データ検証機能が有効である旨）を記憶する。そして、印刷装置１００に対し、第１誤り検出符号を含むデータを送信する。本実施形態では、外部装置１８０は、上述した検証機能有効化指示コマンド及び検証機能問合せコマンドを除く全てのデータ（コマンド及び印刷データ）に、第１誤り検出符号を付加して送信する。例えば、１トランザクション分の印刷データと、第１誤り検出符号と、を含んだ印刷実行データを送信する。
【００３０】
図２は、外部装置１８０が送信する印刷実行データの構成の一例を示す図である。図示の印刷実行データは、データバイト数フィールド２００、印刷データフィールド２０２、及び誤り検出符号フィールド２０４で構成されている。データバイト数フィールド２００は、例えば２バイトの固定長フィールドであり、印刷データフィールド２０２及び誤り検出符号フィールド２０４の全体のデータバイト数が格納される。印刷データフィールド２０２は、可変長フィールドであり、１トランザクション分の印刷データが格納される。さらに、誤り検出符号フィールド２０４は、例えば２バイトの固定長フィールドであり、印刷データフィールド２０２に格納される印刷データについて外部装置１８０が算出した第１誤り検出符号が格納される。ここで、第１誤り検出符号は、本実施形態では、印刷データフィールド２０２に格納された印刷データのチェックサムである。
【００３１】
なお、上述したように、外部装置１８０は、各種コマンドについても第１誤り検出符号を付加して送信する。例えば、図２に示す印刷実行データと同様に、外部装置１８０は、データバイト数、コマンドコード、及び第１誤り検出符号からなるコマンドデータを、印刷装置１００に対し送信する。
【００３２】
抽出部１２６は、検証機能フラグが１（有効）であるときは、第１バッファー１０４に保存された印刷実行データから印刷データと第１誤り検出符号とを抽出する。例えば、抽出部１２６は、第１バッファー１０４に保存された受信データのうち、図２に示す印刷データフィールド２０２及び誤り検出符号フィールド２０４に相当する部分のデータを、それぞれ、印刷データ及び第１誤り検出符号として抽出する。そして、抽出部１２６は、抽出した印刷データと第１誤り検出符号とを検証処理部１２８に渡す。
【００３３】
一方、検証機能フラグが０（無効）であるときは、抽出部１２６は、第１バッファー１０４に保存された受信データを、すべて第２バッファー１０６へ転送して保存する。したがって、検証機能フラグが０であるときは、第２バッファー１０６には、送受信部１０２により受信された全ての受信データが保存される。これにより、動作管理部１３２及び印刷実行部は、検証機能フラグが０であるときは、第２バッファー１０６内に保存された全ての受信データに基づいて、受信データ検証機能を持たない従来の印刷装置と同様の動作を行うこととなる。この場合、第２バッファー１０６は、従来の印刷装置における受信バッファーに相当する。
【００３４】
ここで、外部装置１８０は、印刷装置１００の受信データ検証機能を無効から有効に変更するために、検証機能有効化指示コマンドを送信する。すなわち、印刷装置１００は、受信データ検証機能が無効であるとき、検証機能有効化指示コマンドを受信するので、そのコマンドは第１バッファー１０４から第２バッファー１０６へ転送され、動作管理部１３２は、第２バッファー１０６に格納された検証機能有効化指示コマンドに応じて、受信データ検証機能を有効に切り替える。
【００３５】
検証処理部１２８は、検証機能フラグが１（有効）であるときに、検証処理を実行して受信データ検証機能を実現する。例えば、受信したデータが印刷実行データである場合、検証処理部１２８は、抽出部１２６が抽出した印刷データから第２誤り検出符号を算出し、算出した第２誤り検出符号と抽出部１２６が抽出した第１誤り検出符号とが一致するか否かを判断する。ここで、第２誤り検出符号は、第１誤り検出符号と同様に、本実施形態では上記抽出した印刷データのチェックサムである。
【００３６】
以下、検証処理において第１誤り検出符号と第２誤り検出符号が一致することを、「誤り検出符号が一致」又は「検証結果が正常」ともいい、第１誤り検出符号と第２誤り検出符号が一致しないことを、「誤り検出符号が不一致」又は「検証結果が異常」ともいう。
【００３７】
そして、検証処理部１２８は、上記検証処理での判断の結果を表すデータを記憶部１１０に保存すると共に、上記判断の結果を示す判断結果データ３０２を外部装置１８０へ送信する。ここで、判断結果データ３０２は、例えば、上記判断の結果を表すデータを所定数以上連続させたデータ列として構成される。
【００３８】
図３は、判断結果データの構成の一例を示す図である。図示の例では、判断結果データ３０２は、１バイト固定長のデータヘッダー３００と１バイト固定長のＮＵＬコード３０４とに挟まれた、１６バイト固定長のデータ（シンボル）である。判断結果データ３０２は、例えば、誤り検出符号が一致したとき（検証結果が正常であるとき）は、誤り検出符号が一致したことを示すデータ５５Ｈを１６個連続させたデータ列として構成される。また、判断結果データ３０２は、例えば、誤り検出符号が不一致であるとき（検証結果が異常であるとき）は、誤り検出符号が不一致であったことを示すデータＡＡＨを１６個連続させたデータ列として構成される。同一のデータ５５Ｈ及びＡＡＨを複数連続させることにより、何らかの原因でデータの一部が破損した場合であっても、外部装置１８０は印刷装置１００による判断結果を把握することができる。なお、Ｈはデータ「５５」及び「ＡＡ」が１６進表記であることを示す記号である。
【００３９】
また、検証処理部１２８は、検証結果が正常であるときは、抽出部１２６が抽出した印刷データを、第２バッファー１０６に転送する。一方、検証結果が異常であるときは、検証処理部１２８は、上記抽出された印刷データを、第２バッファー１０６へ転送することなく破棄する。
【００４０】
動作管理部１３２は、上述したように、データ受信部１２４から検証機能問合せコマンドを受信した旨の通知を受けたことに応じて、記憶部１１０に保存されている検証機能フラグの値に基づき、受信データ検証機能が有効又は無効である旨の応答を、外部装置１８０へ送信する。
【００４１】
また、動作管理部１３２は、検証機能フラグが１（有効）である場合には、検証処理部１２８により第２バッファー１０６へ印刷データが転送されたことに応じて、印刷実行部１３０に対し第２バッファー１０６内の印刷データに基づく印刷の実行を指示する。これにより、印刷装置１００は、第２バッファー１０６内の、正しく受信されたことが検証された印刷データを用いて、１トラザクション分の印刷を途切れることなく行うことができる。
【００４２】
一方、検証機能フラグが０（無効）である場合、動作管理部１３２は、第２バッファー１０６に転送されたデータに、ファームウェアアップグレード等の印刷以外の動作を指示するコマンドが含まれているか否かを判断する。そして、印刷以外の動作を指示するコマンドが含まれているときは、動作管理部１３２は、そのコマンドにより指示された動作を実行する。一方、印刷以外の動作を指示するコマンドが含まれていないときは、動作管理部１３２は、印刷実行部１３０に対し、第２バッファー１０６内のデータ（印刷データ）を用いた印刷の実行を指示する。これにより、印刷装置１００では、検証機能を有さない従来の印刷装置と同様にして印刷を行うことができると共に、従来の印刷装置について確立されたスキームを用いて、ファームウェアアップグレード等の処理を行うことができる。
【００４３】
これにより、印刷装置１００は、検証機能フラグが０である場合には、受信データ検証機能を持たない従来の印刷装置と同様に動作することができる。すなわち、印刷装置１００は、従来の印刷装置で用いられるコマンドや複数パケットに分割された印刷データを受信して、自装置のファームウェアをアップグレードしたり、１パケット分の印刷データを受信する毎に印刷動作を実行することができる。
【００４４】
また、動作管理部１３２は、検証機能フラグが１（有効）である場合において、外部装置１８０から判断結果データ再送信要求を受信したときは、直前の検証処理についての判断結果データ３０２を外部装置１８０へ送信する。具体的には、動作管理部１３２は、第２バッファー１０６内の受信データに、判断結果データ再送信要求が含まれているか否かを判断する。そして、判断結果データ再送信要求が含まれているときは、直前の検証処理（判断結果データ再送信要求の一つ前の受信データに対する検証処理）において検証処理部１２８が記憶部１１０に記憶した判断結果を表すデータを用いて、判断結果データ３０２を生成する。続いて、動作管理部１３２は、生成した判断結果データ３０２を含む応答を、送受信部１０２を介して外部装置１８０へ送信する。
【００４５】
なお、抽出部１２６及び検証処理部１２８は、印刷実行データに対する上述した処理と同様の処理をコマンドデータに対しても行う。抽出部１２６は、第１バッファー１０４に保存されたコマンドデータから、コマンドコードと第１誤り検出符号とを抽出する。検証処理部１２８は、抽出部１２６により抽出されたコマンドコードから第２誤り検出符号を算出して、抽出部１２６により抽出された第１誤り検出符号と一致するか否かを判断し、判断結果データ３０２を外部装置１８０へ送信する。検証結果が正常であるときコマンドコードは第２バッファー１０６に転送され、検証結果が異常であるときコマンドコードは破棄される。そして、動作管理部１３２は、検証結果が正常である場合に、判断結果データ再送信要求に応じて、直前の判断結果データ３０２を再送信する。
【００４６】
外部装置１８０は、直前に送信した印刷データの検証結果である判断結果データを、例えば自装置がビジー状態であった等により印刷装置１００から受信できなかった場合でも、その判断結果データを再送信させて確実に受信することができる。そして、外部装置１８０は、受信した判断結果データに基づき、検証結果が正常であれば次の１トランザクション分の印刷実行データを送信し、検証結果が異常であれば直前の１トランザクション分の印刷実行データを再送信することができる。
【００４７】
すなわち、外部装置１８０は、印刷装置１００に印刷実行データ（従って、１トランザクション分の印刷データ）を送る毎に、その１トランザクション分の印刷データが正常に受信されたか否かを確認しつつ、印刷ジョブを確実に実行することができる。
【００４８】
次に、受信データ検証機能が有効である場合における（すなわち、検証機能フラグが１である場合における）、印刷装置１００の印刷処理の手順について、図４に示すフローチャートに沿って説明する。本処理は、印刷装置１００の電源がオンされたときに開始し、オフされたときに終了する。
【００４９】
処理が開始されると、まず、データ受信部１２４は、送受信部１０２がデータを受信したか否かを判断し（Ｓ１００）、受信していないときは（Ｓ１００、ＮＯ）、ステップＳ１００に戻ってデータが受信されるまで待機する。一方、送受信部１０２がデータを受信したときは（Ｓ１００、ＹＥＳ）、データ受信部１２４は、制御部１２０が備えるタイマー（不図示）により、そのデータの受信後の経過時間（すなわち、データ受信開始からの経過時間）の計測を開始する（Ｓ１０２）。そして、データ受信部１２４は、送受信部１０２から第１バッファー１０４への受信データの転送処理を開始する（Ｓ１０４）。ここで、上記転送処理は、例えば送受信部１０２が有するバッファー（不図示）内に受信データが格納される毎にそのバッファーからその受信データを読み出して、第１バッファー１０４へ転送する処理をいうものとする。
【００５０】
また、データ受信部１２４は、送受信部１０２から第１バッファー１０４へ転送している受信データの中に（すなわち、第１バッファー１０４に格納される前の受信データの中に）、検証機能問合せコマンドが含まれているか否かを判断する（Ｓ１０６）。そして、検証機能問合せコマンドが含まれていないときは（Ｓ１０６、ＮＯ）、次に、データ受信開始からの経過時間が所定時間に達したか否かを判断する（Ｓ１０８）。一方、第１バッファー１０４へ転送中の受信データの中に検証機能問合せコマンドが含まれているときは（Ｓ１０６、ＹＥＳ）、動作管理部１３２は、送受信部１０２を介して問合せ応答を送信した後（Ｓ１１０）、ステップＳ１０８に処理を移す。
【００５１】
本印刷処理は、受信データ検証機能が有効である（すなわち、検証機能フラグが１である）場合の処理であるので、ステップＳ１１０において動作管理部１３２が送信する問合せ応答は、受信データ検証機能が有効である旨の応答である。
【００５２】
そして、ステップＳ１０８において、経過時間が所定時間に達してないときは（Ｓ１０８、ＮＯ）、データ受信部１２４は、ステップＳ１０６に戻る。これにより、送受信部１０２から第１バッファー１０４への受信データの転送処理を継続しつつ、検証機能問合せコマンドが含まれているか否かの判断等の処理が繰り返される。
【００５３】
一方、ステップＳ１０８において、経過時間が所定時間に達したときは（Ｓ１０８、ＹＥＳ）、データ受信部１２４は、送受信部１０２から第１バッファー１０４への受信データの転送を終了する（Ｓ１１２）。
【００５４】
次に、抽出部１２６は、第１バッファー１０４内に保存された受信データから印刷データと第１誤り検出符号とを抽出する（Ｓ１１４）。より詳細には、例えば上述したように、抽出部１２６は、第１バッファー１０４に保存された受信データのうち図２に示す印刷データフィールド２０２及び誤り検出符号フィールド２０４に相当する部分のデータを印刷データ及び第１誤り検出符号として抽出する。
【００５５】
続いて、検証処理部１２８は、上記抽出した印刷データから第２誤り検出符号を算出し（Ｓ１１６）、上記抽出した第１誤り検出符号と上記算出した第２誤り検出符号が一致するか否かを判断する（Ｓ１１８）。なお、ステップＳ１１６及びＳ１１８は、検証処理に相当する。
【００５６】
そして、第１誤り検出符号と第２誤り検出符号とが一致したときは（Ｓ１１８、ＹＥＳ）、検証処理部１２８は、第１誤り検出符号と第２誤り検出符号とが一致した旨の判断の結果を示す判断結果データ３０２を、送受信部１０２を介して送信する（Ｓ１２０）。次に、検証処理部１２８は、抽出部１２６が抽出した印刷データを第２バッファー１０６へ転送する（Ｓ１２２）。続いて、動作管理部１３２は、印刷実行部１３０に指示して、第２バッファー１０６内の印刷データに基づく１トランザクション分の印刷を実行し（Ｓ１２４）、ステップＳ１００に戻って処理を繰り返す。
【００５７】
一方、ステップＳ１１８において、第１誤り検出符号と第２誤り検出符号とが一致しないときは（Ｓ１１８、ＮＯ）、検証処理部１２８は、第１誤り検出符号と第２誤り検出符号とが一致しない旨の判断の結果を示す判断結果データ３０２を送信する（Ｓ１２６）。次に、検証処理部１２８は、第１バッファー１０４に保存された受信データを第２バッファー１０６へ転送することなく破棄する（Ｓ１２８）。そして、検証処理部１２８は、処理をステップＳ１００に戻して印刷処理を繰り返す。
【００５８】
ここで、外部装置１８０は、上述したように、印刷装置１００へのデータの送信（印刷実行データの送信）に先立って印刷装置１００へ検証機能問合せコマンドを送信する。送受信部１０２が検証機能問合せコマンドの先頭のデータバイト又はデータビット（以下、データバイト等という）を受信することによりステップＳ１００の判断はＹＥＳとなり、外部装置１８０から送信された検証機能問合せコマンドの受信が開始される。そして、受信された検証機能問合せコマンドは、ステップＳ１０４において開始された受信データ転送処理により第１バッファー１０４に格納される。
【００５９】
外部装置１８０は、検証機能問合せコマンドに対する応答を受信するまでは、印刷実行データを送信しないため、第１バッファー１０４に検証機能問合せコマンドのみが格納された状態で、ステップＳ１１２において受信データ転送処理が終了する。
【００６０】
検証機能問合せコマンドは誤り検出符号を含まないので、その後、ステップＳ１１４以降の処理が行われると、ステップＳ１１８の判断はＮＯとなる。そして、ステップＳ１２６において、検証結果が異常（誤り検出符号が不一致）である旨の判断結果データが外部装置１８０へ送信された後、ステップＳ１００に戻って次のデータの到来が待機される。
【００６１】
これに対し、外部装置１８０は、検証結果問合せコマンドに関して送信された上記判断結果データを無視し、ステップＳ１１０において返信された受信データ検証機能が有効である旨の応答に基づいて、次に印刷実行データの送信を開始する。
【００６２】
なお、ステップＳ１０６にて受信データの中に検証機能問合せコマンドを発見したとき、ステップＳ１１０にて問合せ応答を送信する前あるいは送信した後に、検証機能問合せコマンドを第１バッファー１０４に格納することなく削除してもよい。この場合には、印刷装置１００は、検証機能問合せコマンドに対するステップＳ１１２〜Ｓ１１８及びＳ１２６の処理を省略することができ、外部装置１８０は、ステップＳ１１０にて返信された受信データ検証機能が有効である旨の応答に基づいて、直ちに印刷実行データの送信を開始することができる。
【００６３】
送受信部１０２が印刷実行データの最初のデータバイト等を受信すると、ステップＳ１００の判断はＹＥＳとなり、ステップＳ１０２からＳ１１２の処理において、印刷実行データが受信されて第１バッファーに格納される。そして、ステップＳ１１４からステップＳ１２０において、受信された印刷実行データについての検証処理が行われ、ステップＳ１２２、Ｓ１２４により、受信され検証された印刷データに基づいて、印刷が実行される。
【００６４】
以上説明したように、本実施形態の印刷装置１００は、印刷部１０８と、外部装置１８０との間でデータの送受信を行う送受信部１０２と、制御部１２０と、を備える。制御部１２０は、外部装置１８０から１トランザクション分の印刷データを含むデータを受信したことに応じて、受信したデータから、印刷データと、外部装置１８０がその印刷データから算出した第１誤り検出符号と、を抽出する。また、制御部１２０は、抽出した印刷データから第２誤り検出符号を算出し、上記第１誤り検出符号と第２誤り検出符号とが一致するか否かを判断する検証処理を実行する。そして、制御部１２０は、その判断の結果を示す判断結果データ３０２を外部装置１８０へ送信すると共に、上記第１誤り検出符号と上記第２誤り検出符号とが一致する場合に、抽出した上記１トランザクション分の印刷データに基づく印刷部１０８による印刷を実行する。一方、上記第１誤り検出符号と上記第２誤り検出符号とが一致しない場合には、制御部１２０は、受信したデータを破棄する。
本発明の印刷装置及び印刷装置の制御方法を適用した印刷装置１００によれば、１トランザクション分の印刷データが正常に受信されたか否かが、印刷データと共に受信した第１誤り検出符号と印刷データから算出した第２誤り検出符号とに基づいて検証される。このため、１トランザクションの途中で印刷動作を終了させることなく、受信誤りを生じた印刷データの使用を防止して、より信頼性の高い印刷を行うことができる。
【００６５】
詳細には、外部装置１８０から受信した受信データを保存する第１バッファー１０４と、受信データから抽出される印刷データを保存する第２バッファー１０６と、を更に備える。また、制御部１２０は、第１バッファー１０４に保存された受信データから印刷データと第１誤り検出符号とを抽出して上記検証処理を実行する。そして、制御部１２０は、第１誤り検出符号と上記第２誤り検出符号とが一致するときは、印刷データを第２バッファー１０６に転送して、印刷部１０８による印刷を実行する。第２バッファー１０６に格納された印刷データは、例えば記憶部１１０が有するプリントバッファーに展開されて、印刷部１０８により印刷される。これにより、第２バッファー１０６に転送された印刷データにより印刷を実行しつつ、新たに受信される印刷データを第１バッファー１０４に格納して検証処理を実行できるので、印刷処理のスループットを向上することができる。
【００６６】
また、印刷装置１００では、上記判断結果データ３０２は、上記判断の結果を表すデータを所定数以上連続させたデータ列として構成される。これにより、外部装置１８０は、受信した判断結果データ３０２の一部に誤りが生じている場合でも、その判断結果データ３０２に含まれる最も多いシンボルから、印刷装置１００における検証処理での判断の結果を正しく把握することができる。
【００６７】
また、印刷装置１００では、制御部１２０は、外部装置１８０から上記判断結果データ３０２の再送信要求を受信したことに応じて、その直前に外部装置１８０から受信したデータに基づく上記判断結果データ３０２を、外部装置１８０へ送信する。これにより、外部装置１８０は、印刷装置１００から送信された判断結果データ３０２を、自装置がビジー状態であったこと等により受信できなかった場合でも、その判断結果を印刷装置１００に再送信させることができる。したがって、外部装置１８０は、印刷漏れを生じさせることなく、信頼性の高い印刷ジョブを継続的に行うことができる。
【００６８】
また、印刷装置１００では、制御部１２０は、外部装置１８０から上記検証処理を無効にすることを指示する無効化指示を受信したときは、その後に外部装置１８０から受信されるデータについては上記検証処理を行わない。すなわち、外部装置１８０から受信した受信データはそのまま、第１バッファー１０４から第２バッファー１０６へ転送される。そして、制御部１２０は、受信したデータがコマンドである場合にはコマンドに応じた動作を実行し、受信したデータが印刷データである場合には印刷データに基づいて印刷部１０８による印刷を実行する。これにより、印刷装置１００は、検証処理を行わない従来の印刷装置と同様の印刷処理も行うことができる。
【００６９】
また、印刷装置１００では、制御部１２０は、外部装置１８０から上記検証処理を行う機能を有するか否かについての問い合わせを受信したときは、上記検証処理を行う機能を有する旨を示す返信を外部装置１８０へ送信する。これにより、外部装置１８０は、印刷データの送信に先立って、送信先の印刷装置が検証処理の機能を有するか否か、又は印刷装置１００の検証処理の機能が有効になっているか否かを判断することができる。このため、外部装置１８０は、検証機能を有さない従来の印刷装置に対して、又は検証機能が無効になっている印刷装置１００に対して、第１誤り検出符号を付した印刷データを送信してしまう、という誤りを回避することができる。その結果、外部装置１８０は、印刷ジョブをスムーズに遂行することができる。
【００７０】
なお、上記実施形態は本発明を適用した一具体例を示すものであり、本発明はこれに限定されるものではない。
【００７１】
例えば、制御部１２０のＣＰＵが実行するプログラムは、印刷装置１００が備えるＲＯＭ等に記憶されるプログラムに限定されない。例えば、他の記憶装置、記憶媒体や外部装置の記憶媒体に上記プログラムを記憶させ、制御部１２０により読み出して実行する構成としてもよい。
【００７２】
また、上記実施形態では、外部装置１８０と印刷装置１００との間の通信がＵＳＢを介して行われるものとしたが、これには限られない。例えば、外部装置１８０と印刷装置１００とは、Ｗｉ−Ｆｉ（登録商標）等の無線通信を介して通信を行うものとしてもよい。
【００７３】
また、上記実施形態では、第１及び第２の誤り検出符号としてチェックサムを用いたが、これには限られない。例えば、第１及び第２の誤り検出符号を、印刷データから算出されるＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）とすることもできる。
【００７４】
また、上記実施形態では、第１誤り検出符号は、印刷実行データに含まれる印刷データを対象としたが、データバイト数と印刷データを対象としてもよい。
また、上記実施形態では、印刷実行データに含まれる印刷データを第２バッファー１０６へ転送することとしたが、データバイト数と印刷データ（すなわち、第１誤り検出符号を除く全データ）を第２バッファー１０６へ転送してもよい。
【００７５】
また、図４のフローチャートに示す印刷装置１００の各処理は、支障の無い範囲で、その処理順を変更してもよいし並行に処理してもよい。
【符号の説明】
【００７６】
１００…印刷装置、１０２…送受信部、１０４…第１バッファー、１０６…第２バッファー、１０８…印刷部、１１０…記憶部、１２０…制御部、１２２…検証機能設定部、１２４…データ受信部、１２６…抽出部、１２８…検証処理部、１３０…印刷実行部、１３２…動作管理部。
【図１】
2019098531.tif 000003
【図２】
2019098531.tif 000004
【図３】
2019098531.tif 000005
【図４】
2019098531.tif 000006