(57)【特許請求の範囲】
【請求項１】
印刷を行う印刷装置であって、
第１実データが割り当てられた第１実データ領域と、前記第１実データのサイズを示す第１ブロックサイズ値が固定長で割り当てられた第１ブロックサイズ領域と、第２実データが割り当てられた第２実データ領域と、前記第２実データのサイズを示す第２ブロックサイズ値が固定長で割り当てられた第２ブロックサイズ領域とを有し、前記第１ブロックサイズ領域と前記第１実データ領域と前記第２ブロックサイズ領域と前記第２実データ領域とが連続的に形成される印刷データを含む印刷ジョブを受信する受信手段と、
受信した前記印刷ジョブに含まれる各々固定長で示されるブロックサイズ値と予め設定された閾値とを比較する比較手段と、
前記ブロックサイズ値が前記閾値を超えたとき前記印刷データのうち印刷されていない印刷データを破棄する破棄手段とを備えることを特徴とする印刷装置。
【請求項２】
印刷ジョブを生成して送信する情報処理装置と、前記情報処理装置に接続され、前記印刷ジョブを受信して印刷を行う印刷装置とで構成される印刷システムであって、
前記情報処理装置は、印刷データを第１実データが割り当てられた第１実データ領域と、前記第１実データのサイズを示す第１ブロックサイズ値が固定長で割り当てられた第１ブロックサイズ領域と、第２実データが割り当てられた第２実データ領域と、前記第２実データのサイズを示す第２ブロックサイズ値が固定長で割り当てられた第２ブロックサイズ領域とが連続され、前記第１ブロックサイズ領域と前記第１実データ領域と前記第２ブロックサイズ領域と前記第２実データ領域とを各々分割する分割手段と、
前記印刷データを含む印刷ジョブを生成する生成手段と、
前記印刷ジョブを送信する送信手段とを備え、
前記印刷装置は、前記印刷ジョブを受信する受信手段と、
受信した前記印刷ジョブに含まれる前記印刷データの各々固定長で示されるブロックサイズ値と予め設定された閾値とを比較する比較手段と、
前記ブロックサイズ値が前記閾値を超えたとき前記印刷データのうち印刷されていない印刷データを破棄する破棄手段とを備えることを特徴とする印刷システム。
【請求項３】
前記情報処理装置は、前記閾値を設定する設定手段をさらに備えることを特徴とする請求項２記載の印刷システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信により印刷を行う印刷装置において、通信異常を検出し異常な印刷を防止する技術に関するものである。
【背景技術】
【０００２】
従来の印刷装置では、上位装置との通信開始タイミングの不一致やノイズなどにより通信データの一部のデータ抜けやデータ化けが発生した異常データを受信することがあった。
【０００３】
そして、このような異常データによる印刷を防止するために、定義されない印刷コマンドを受信した場合に印刷を停止する方法を採用していた。しかしながら、この方法では、定義された印刷コマンドに化けたときは、これを検出することができず、そのまま印刷してしまうという問題があった。
【０００４】
例えば、印刷データが、改ページなどの制御データに化けた場合では、定義された制御コマンドであるので、これを異常とは判定できず、数文字印刷しては改ページするということを繰り返し、大量な枚数の印刷を行うという不具合が発生していた。
【０００５】
上記問題を解決する方法として、正常な印刷においては最上端に１行だけ印刷されるケースが非常に少ないことを利用して、作成中のページの最上端行にしか印刷画像がない場合は、その受信データを異常データと判断して印刷を実行せず、以降のデータを印刷ジョブの終了まで破棄する技術があった（例えば、特許文献１参照。）。
【特許文献１】特開２０００−１６８２０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の印刷装置では、最上端に１行しか印刷データがない場合を異常印刷の判定基準としているが、不正印刷は必ずしもそのような形態で発生するとは限らず、前記問題を完全に解決することができない。
【０００７】
また、別の解決手段として、通信データのパリティチェックや誤り訂正などの処理による対策も考えられるが、汎用的なセントロインタフェースなどでは、このようなチェックは実施されておらず、このような方法でも異常印刷を防止することはできない。
【課題を解決するための手段】
【０００８】
本発明は、前述の課題を解決するために次の構成を採用する。すなわち、印刷を行う印刷装置であって、第１実データが割り当てられた第１実データ領域と、第１実データのサイズを示す第１ブロックサイズ値が固定長で割り当てられた第１ブロックサイズ領域と、第２実データが割り当てられた第２実データ領域と、第２実データのサイズを示す第２ブロックサイズ値が固定長で割り当てられた第２ブロックサイズ領域とを有し、第１ブロックサイズ領域と第１実データ領域と第２ブロックサイズ領域と第２実データ領域とが連続的に形成される印刷データを含む印刷ジョブを受信する受信手段と、受信した印刷ジョブに含まれる各々固定長で示されるブロックサイズ値と予め設定された閾値とを比較する比較手段と、ブロックサイズ値が閾値を超えたとき印刷データのうち印刷されていない印刷データを破棄する破棄手段とを備えるようにした。
【発明の効果】
【０００９】
本発明の印刷装置によれば、印刷を行う印刷装置であって、第１実データが割り当てられた第１実データ領域と、第１実データのサイズを示す第１ブロックサイズ値が固定長で割り当てられた第１ブロックサイズ領域と、第２実データが割り当てられた第２実データ領域と、第２実データのサイズを示す第２ブロックサイズ値が固定長で割り当てられた第２ブロックサイズ領域とを有し、第１ブロックサイズ領域と第１実データ領域と第２ブロックサイズ領域と第２実データ領域とが連続的に形成される印刷データを含む印刷ジョブを受信する受信手段と、受信した印刷ジョブに含まれる各々固定長で示されるブロックサイズ値と予め設定された閾値とを比較する比較手段と、ブロックサイズ値が閾値を超えたとき印刷データのうち印刷されていない印刷データを破棄する破棄手段とを備えるようにしたので、印刷ジョブのいずれの場所でデータ抜け等が発生してもこれを確実に検出することができ、異常な印刷を確実に防止することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明に係る実施の形態例を、図面を用いて説明する。なお、図面に共通する要素には同一の符号を付す。なお、以下の説明では、セントロインタフェースを用いた例を示しているが、当該インタフェースに限らず、汎用的なＵＳＢインタフェース、ＬＡＮインタフェース、或いは無線インタフェース等によるネットワーク接続であっても同様である。
【実施例１】
【００１１】
実施例１の印刷装置は、印刷データを複数に分割した各ブロックの大きさを表すブロックサイズがあらかじめ決めた閾値を超えているかどうかを判定することにより異常データの発生を検出できるようにしたものである。
【００１２】
（印刷システムおよびホスト装置の構成）
実施例１の印刷装置に係る印刷システムの構成を、図１を用いて説明する。すなわち、実施例１の印刷装置に係る印刷システムは、ＰＣ等のホスト装置１００および印刷装置１１０がセントロインタフェース等のインタフェースで接続された構成となっている。
【００１３】
そして、ホスト装置１００は、ユーザインタフェース１０１と、これに接続されたアプリケーションプログラムであるアプリケーション１０２、ジョブ制御コードや印刷データを生成するプリンタドライバ１０３、当該プリンタドライバ１０３で生成されたデータの送受信制御を行うデータ送受信部１０４とからなる。
【００１４】
アプリケーション１０２にて作成されるテキスト文書を含む画像データは、プリンタドライバ１０３にて生成され、データ送受信部１０４を経由して印刷装置１１０に送信される。ここで、アプリケーション１０２からの１回の印刷指示によりプリンタドライバ１０３が生成するデータを、便宜上「印刷ジョブ（１０５）」という。
【００１５】
プリンタドライバ１０３は、アプリケーション１０２の生成した画像データを印刷装置１１０で処理可能なページ記述言語（以下、「ＰＤＬ」という）データに変換し、さらにユーザインタフェース１０１により指示された印刷設定、例えば、印刷品質、両面印刷などを印刷に反映するために、ＰＤＬとは別のコード体系のジョブ制御コードを、ＰＤＬデータに付加する機能を有する。
【００１６】
（印刷ジョブのデータ構成）
第１の実施例における印刷ジョブのデータ構成を、図３のデータ構成図を用いて説明する。すなわち、印刷ジョブ１０５は、図３左側に示したように、ジョブ制御コード部３００と最後のジョブ制御コード部３２０と、その間に配置される印刷データ部３１０とから構成される。
【００１７】
そして、同図右側に示したように、ジョブ制御コード部３００は、ジョブ制御モード移行コード３０１、環境設定コード３０２、ＰＤＬモード移行コード３０３とからなる。環境設定コード３０２には、印刷品質や両面印刷の有無などが記述される。図３の例では、印刷品質が６００ｄｐｉ、両面印刷機能が"ＯＦＦ"として記述されている。
【００１８】
印刷データ部３１０は、ブロックサイズ（１）３１１−１、ブロックサイズ（２）３１１−２、・・・、ブロックサイズ（ｎ）３１１−ｎのブロックサイズ部、および実データ（１）３１２−１、実データ（２）３１２−２、・・・、実データ（ｎ）３１２−ｎの実データ部から構成される。
【００１９】
最後のジョブ制御コード部３２０は、最初のジョブ制御コード３００から環境設定コード３０２とＰＤＬモード移行コード３０３を取り除いた、ジョブ制御モード移行コード３２１からなる。
【００２０】
ブロックサイズ部３１１等は、２バイトから８バイト程度の範囲であらかじめ決めた固定バイト長として、後続する実データ部３１２等のデータサイズを示すものである。
【００２１】
そして、実データ部３１２等は、印刷データを前記ブロックサイズの示す長さでブロック分けしたものであり、１ブロックのサイズはあらかじめ決められた閾値以下とし、各ブロックサイズの書き込みは、印刷データの生成過程でプリンタドライバ１０３にて行われる。
【００２２】
なお、前記ブロックサイズの閾値は、コマンドの最大長を考慮し、かつ所定のマージンを考慮した値とするのがよい。例えば、ビットマップイメージをパラメータに持つコマンドで最大長のコマンドが１ブロックに所定の個数入れられることを考慮して決定するのがよい。
【００２３】
また、前記閾値は、最上位１バイトを例えば、"００"（Ｈ）とし、最上位１バイト以外には"００"（Ｈ）を含まないようにする。なお、前記（Ｈ）は１６進データであることを表している。詳細後述のように、このような閾値を設定することにより、ノイズなどによって発生する１バイトのデータ抜けのほとんど場合を検出することができる。
【００２４】
なお、データ抜けが２バイトのデータ抜けであるような場合には、ブロックサイズの固定バイト長を３バイト以上として、閾値の上位２バイトを、例えば"００００"（Ｈ）とするのがよい。
【００２５】
（印刷装置の構成）
再び、図１に戻って、印刷装置１１０の構成を説明する。図１および図２に示したように、印刷装置１１０は、ホスト装置１００とのデータ送受信を行うデータ送受信部１１１、詳細後述の印刷ジョブ処理部１１２、印刷ジョブ処理部１１２にて生成した印刷データを印刷部に送信し、印刷データに基づき印刷を制御する印刷制御部１１３とからなる。
【００２６】
印刷ジョブ処理部１１２は、図２に示したように、データ送受信部１１１で受信したデータのうち、ジョブ制御コード部３００、３２０にあたるデータを処理するジョブ制御処理部１２１、環境設定コード３０２による印刷設定情報を格納する設定保存部１２３、設定保存部１２３に記憶されている印刷設定に基づいて印刷データ部３１０にあたるデータを処理するＰＤＬ処理部１２２とから構成される。
【００２７】
さらに、ＰＤＬ処理部１２２は、プログラムコードとして持つブロックサイズ閾値に基づいて印刷データ中のブロックサイズを検査しながら実データを処理するブロックサイズ判断部１２４、データ抜けが検出されると後続データをジョブ終了コード、すなわちジョブ制御モード移行コードを検出するまで破棄するデータ破棄処理部１２５から構成される。
【００２８】
そして、印刷出力１１４は、データ破棄処理部１２５で処理されたデータを除いて、ＰＤＬ処理部１２２で処理されたデータに基づき印刷制御部１１３にて印刷出力されるものである。
【００２９】
（動作）
以上の構成により、実施例１の印刷装置は、以下のように動作する。この動作を図４のデータ抜けの例示図および図５ないし図８の動作フローチャートを用いて以下説明する。
【００３０】
（印刷ジョブに１バイトずれが発生した例の説明）
まず、図４は、印刷ジョブ１０５がノイズなどにより１バイトのデータ抜けが発生したときの状態を示したものである。図４（ａ）が、プリンタドライバ１０３が生成した送信前の印刷ジョブ１０５の元のデータであり、同図（ｂ）が、印刷装置１１０が受信した印刷ジョブ１０５のデータであり、実データ（ｎ−１）の中の１バイトのデータ抜けが発生した例を示している。この１バイトのデータ抜けが通常発生するほとんどのケースである。なお、この例ではブロックサイズ部を４バイトの固定長としている。
【００３１】
同図（ｂ）のように、１バイトが欠落しデータ抜けが発生すると、それ以降のデータは本来の位置よりも１バイト前にずれ込み、例えばブロックサイズ（ｎ）の先頭を表す図４（ａ）のｘ位置が１バイトずれにより図４（ｂ）のｘ'位置にずれてしまう。ｙ位置、ｚ位置も同様に１バイトずつずれ、ｙ'位置、ｚ'位置となる。
【００３２】
このため、実データ（ｎ−１）に続くブロックサイズ（ｎ）の値は、本来"０００１８５１０"（Ｈ）、すなわち"１８５１０"（Ｈ）であるが、１バイトずれた影響により"０１８５１０１Ｂ"（Ｈ）、すなわち"１８５１０１Ｂ"（Ｈ）となることになる。
【００３３】
なお、図４の例では、ブロックサイズ（ｎ−１）やブロックサイズ（ｎ）の値が異なっているが、これは各ブロックが任意の複数のコマンドからなるので、ブロック毎にブロックサイズが異なるためである。
【００３４】
（印刷ジョブ処理）
次に、図５ないし８の動作フローチャートを用いて実施例１の印刷装置１１０の印刷ジョブ処理の動作を説明する。なお、各処理の終了条件としては、受信タイムアウト、ネットワーク受信におけるＥＯＦパケットを受信した場合もあるが、説明が煩雑となるので、その説明については省略する。
【００３５】
図５の印刷ジョブ処理では、まず図６に示したジョブ制御処理を行う（Ｓ５０２）。
【００３６】
（印刷ジョブ処理のジョブ制御処理）
すなわち、ジョブ制御処理では、受信データを所定のサイズ分読み込み（ステップＳ７０１）、当該読み込んだデータがジョブ制御モード移行コード３０１或いは３２１であるかどうか判定し、ジョブ制御モード移行コード３０１或いは３２１の場合は、Ｓ７０１へ戻る（ステップＳ７０２）。
【００３７】
その他の場合は、環境設定コード３０２であるかどうかを判定し（ステップＳ７０３）、環境設定コード３０２であった場合は、環境設定コードに対応する印刷設定、例えば前述の印刷品質や両面印刷設定などを設定保存部１２３へ保存し（ステップＳ７０５）、Ｓ７０１へ戻る。
【００３８】
その他の場合は、読み込んだデータがＰＤＬモード移行コード３０３であるかどうか判定し（ステップＳ７０４）、ＰＤＬモード移行コード３０３の場合は、ジョブ制御処理の終了要因をＰＤＬモード移行コードとしてジョブ制御処理を終了する。
【００３９】
以上の動作を繰り返し、Ｓ７０１にて読み込む印刷ジョブのデータがなくなったときは、ジョブ制御処理の終了要因をデータなしとしてジョブ制御処理を終了する。
【００４０】
再び、図５に戻って、以上のジョブ制御処理を終了すると、ジョブ制御処理の終了要因がＰＤＬモード移行コード３０３による場合かどうか判定し（ステップＳ５０３）、ＰＤＬモード移行コード３０３により終了したと判定した場合は、ＰＤＬモード移行コード３０３で指定されたＰＤＬ処理Ｓ５０４へ進む。
【００４１】
（印刷ジョブ処理のＰＤＬ処理）
そして、ＰＤＬ処理Ｓ５０４では、図７に示したように以下のような処理を行う。まず、ＰＤＬ処理内部変数であるブロックサイズ変数を０クリアする（ステップＳ８０１）。そして、ブロックサイズ変数が０より大きいかどうか判定し（ステップＳ８０２）、０のときは、最初の読み込みであり印刷データ中のブロックサイズ部の認識フェーズであると判断し、受信データを固定バイト数、本例の場合は、４バイトを読み込み（ステップＳ８０３）、ブロックサイズ変数へ格納し、ブロックサイズ変数の値とあらかじめ決めたブロックサイズ判定閾値と比較する（ステップＳ８０４）。
【００４２】
図４（ａ）、すなわち正常な受信があったときのブロックサイズ（ｎ）の場合では、ブロックサイズが"０００１８５１０"（Ｈ）であるので（ｘ位置）、ブロックサイズ変数にこの値が格納され、前記ブロックサイズ判定閾値と比較することになる。
【００４３】
ここで、ジョブ制御コードの１つであるＨＰ社の定義するＰＪＬ（Ｐｒｉｎｔ  Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）コードでは、図４の右端に示したように、ジョブ制御モード移行コードは、"＜ＥＳＣ＞％−１２３４５Ｘ"であり、これをアスキー文字コード（１６進数）として見ると、＜ＥＳＣ＞が"１Ｂ"（Ｈ）、"％"が"２５"（Ｈ）、"−"が"２Ｄ"（Ｈ）、"１"が"３１"（Ｈ）、"２"が"３２"（Ｈ）等であるので、"１Ｂ２５２Ｄ３１３２３３３４３５５８"（Ｈ）となる。
【００４４】
このように、一般に、制御コードは、ＮＵＬＬ、すなわち"００"（Ｈ）で始まることはないので、ブロックサイズ判定閾値として、例えば"００ＦＦＦＦＦＦ"（Ｈ）とすることにより、ブロックサイズとジョブ制御モード移行コードとを容易に区別することができる。
【００４５】
なお、１バイトのデータ抜けを検出する場合では、最上位１バイトを"００"（Ｈ）にすれば、そのほかの値としても勿論よい。例えば、"００ＥＦＦＦＦＦ"（Ｈ）や"００８ＦＦＦＦＦ"（Ｈ）などとしてもよい。
【００４６】
再び図７に戻って、ブロックサイズ変数値が、前記閾値以下であるかどうか判定し（ステップＳ８０４）、前記閾値以下の場合は、データ抜けなく正常に受信しているものと判断しＳ８０２へ進むと、すでにステップＳ８０３にてブロックサイズを読み込んでおりブロックサイズ変数は０ではないので、ステップＳ８０８に進み、データの読み込みを行う。
【００４７】
図４（ａ）のブロックサイズ（ｎ）の場合では、ブロックサイズ変数に格納された"０００１８５１０"（Ｈ）と、前記ブロックサイズ判定閾値である“００ＦＦＦＦＦＦ"（Ｈ）と比較すると、閾値以下であり、０ではないのでステップＳ８０８に進み、データの読み込みを行うことになる。
【００４８】
そして、受信データをコマンドに応じた所定のサイズ分読み込み（ステップ８０８）、ブロックサイズ変数をＳ８０８で読み込んだサイズ分だけ減算するとともに（ステップ８０９）、ＰＤＬ言語にて記述された各コマンドに応じた処理を実行し（ステップ８１０）、ステップＳ８０２に戻る。
【００４９】
図４（ａ）のブロックサイズ（ｎ）の場合では、ブロックサイズ変数に"０００１８５１０"（Ｈ）が格納されているので、ｙ位置からｚ位置までの"１８５１０"（Ｈ）分の受信データを読み込み、ブロックサイズ変数を"１８５１０"（Ｈ）減算すると、ブロックサイズ変数は、０となる。
【００５０】
一方、ステップＳ８０４の判定にて、ブロックサイズ変数値が前記閾値より大きい場合は、ジョブ制御モード移行コード３２１の一部であるかどうかの判定を行い（ステップＳ８０５）、ジョブ制御モード移行コードであった場合には、ＰＤＬ処理の終了要因をジョブ制御モード移行コードとしてＰＤＬ処理を終了する。
【００５１】
図４（ａ）のブロックサイズ（ｎ）の場合では、ステップＳ８０２に戻ると、ブロックサイズ変数は、０となっているのでＳ８０３にてブロックサイズである４バイトを読み込むと、ｚ位置からの４バイトを読み込むので、ブロックサイズ変数には"１Ｂ２５２Ｄ３１"（Ｈ）が格納され（ステップＳ８０３）、これとブロックサイズ判定閾値である"００ＦＦＦＦＦＦ"（Ｈ）と比較すると、閾値より大きいのでステップＳ８０５に進み、ジョブ制御モード移行コード"１Ｂ２５２Ｄ３１３２３３３４３５５８（Ｈ）"の上位４バイトである"１Ｂ２５２Ｄ３１"（Ｈ）と比較すると一致するので、ジョブ制御モード移行コードを要因とした終了とすることになる。
【００５２】
ブロックサイズ変数値が前記閾値より大きくジョブ制御モード移行コードと異なる場合は、データ抜けが発生していると判断し、異常な印刷を未然に防止するため、印刷制御部１１３へ送られていない現在編集中のページのデータをクリアした後（ステップＳ８０６）、図８に示したデータ破棄処理として、ジョブ終了コード、本例ではジョブ制御モード移行コード３２１を検出するまで、後続データを読み込んで破棄し（ステップＳ６０１・６０２）、ＰＤＬ処理の終了要因をデータ破棄としてＰＤＬ処理を終了する（ステップＳ８０７）。
【００５３】
例えば、図４（ｂ）、すなわち１バイトのデータ抜けがあった場合で、ブロックサイズ（ｎ−１）の場合は、Ｓ８０３にてブロックサイズである４バイトを読み込むと、ｘ位置からの４バイトを読み込むことになるので、ブロックサイズ変数には"０１８５１０１Ｂ"（Ｈ）が格納され（ステップＳ８０３）、これとブロックサイズ判定閾値である"００ＦＦＦＦＦＦ"（Ｈ）と比較すると、閾値より大きいのでステップＳ８０５に進み、ジョブ制御モード移行コード"１Ｂ２５２Ｄ３１３２３３３４３５５８"（Ｈ）の上位４バイトである"１Ｂ２５２Ｄ３１"（Ｈ）と比較する。すると、これらは一致しないので、データ破棄処理を行い、ＰＤＬ処理の終了要因をデータ破棄としてＰＤＬ処理を終了することになる。
【００５４】
ＰＤＬ処理を終了すると（再び、図５に戻って）、ＰＤＬ処理（ステップＳ５０４）の終了要因がジョブ制御モード移行コード３２１によるかどうかを判定し（ステップＳ５０５）、ジョブ制御モード移行コード３２１が終了要因の場合は、図７のステップＳ８０５にて最後のジョブ制御モード移行コード３２１が検出され、正常なデータ受信があった場合であるのでＳ５０２へ戻り、図６のジョブ制御処理を継続する。
【００５５】
その他の場合、すなわち、ＰＤＬ処理の終了要因がジョブ制御モード移行コード３２１によらない場合では、１バイト抜けが発生しステップＳ８０７のデータ破棄処理を実行した場合であるので、印刷ジョブ処理を終了する。
【００５６】
（実施例１の効果）
以上詳細に説明したように、実施例１の印刷装置によれば、印刷データを複数ブロックに分割し、各ブロックの実データに各ブロックのデータサイズを示すブロックサイズを加えた構成とし、あらかじめ決めた閾値を基準として各ブロックサイズのデータを判定して異常データを検出するようにしたので、印刷ジョブのいずれの場所でデータ抜けが発生してもこれを確実に検出することができる。
【実施例２】
【００５７】
実施例２の印刷装置は、各ブロックサイズと比較して異常データを判定する基準である閾値を任意に設定できるようにしたものである。
【００５８】
（印刷システムおよび印刷装置の構成）
実施例２の印刷装置のシステム構成では、図９に示したように、ホスト装置１００のユーザインタフェース１０１に、異常データを判定する基準である閾値を設定する閾値設定部１０１ａを設け、印刷操作を行う操作者が通信環境などに応じて任意に当該閾値を設定したり、印刷装置１１０の機種等により当該閾値を変更したりして、任意に閾値を設定できる構成としている。
【００５９】
また、実施例２の印刷装置では、図１０に示したように、印刷装置１１０の印刷ジョブ処理部１１２の設定保存部１２３に、前記閾値設定部１０１ａに設定された閾値を印刷装置１１０に送信し、これを格納できる閾値レジスタ１２３ａを設けた構成となっている。
【００６０】
そのほかの構成は、実施例１にて説明した図１および図２と同様であるので、簡略化のためにその詳細な説明を省略する。
【００６１】
（印刷ジョブのデータ構成）
実施例２の印刷装置１１０では、ホスト装置１００から送信される印刷ジョブ１０５は、実施例１と同様、図１１左側に示したように、ジョブ制御コード部３００と最後のジョブ制御コード部３２０と、その間に配置される印刷データ部３１０とから構成される。
【００６２】
そして、同図右側に示したように、ジョブ制御コード部３００は、ジョブ制御モード移行コード３０１、環境設定コード３０２、ＰＤＬモード移行コード３０３とからなる。環境設定コード３０２には、印刷品質や両面印刷の有無、前記閾値が記述されるようになっている。図１１の例では、印刷品質が６００ｄｐｉ、両面印刷機能が"ＯＦＦ"、閾値が"００ＦＦＦＦＦＦ"（Ｈ）として記述されている。
【００６３】
前記閾値は、最上位１バイトを例えば、"００"（Ｈ）とし、最上位１バイト以外には"００"（Ｈ）を含まないようにし、データ抜けが２バイトのデータ抜けであるような場合には、ブロックサイズの固定バイト長を３バイト以上として、閾値の上位２バイトを、例えば"００００"（Ｈ）とするのがよいことは実施例１と同様である。
【００６４】
ここで、前記閾値は、例えば、ホスト装置１００や印刷装置１１０を操作する操作者が、通信環境に応じてデータ抜けが多く発生する場合では、前記閾値を小さく、あまりデータ抜けが発生しない場合は、閾値を大きく設定したり、或いは印刷装置の種類やインタフェースの種類に応じてあらかじめ決めた閾値としたりしてもよいし、印刷装置１１０にてデータ抜けの発生した回数などを保存して置き、当該回数情報などにより閾値を適時変更するようにしてもよい。
【００６５】
次の印刷データ部３１０の構成は、実施例１と同様、各ブロックサイズおよび実データとから構成される。また、最後のジョブ制御コード部３２０、ブロックサイズ部３１１−１、３１１−２、・・、３１１−ｎ（以下、便宜上全体を「ブロックサイズ３１１」という）、実データ３１２−１、３１２−２、・・、３１２−ｎ（以下、便宜上全体を、「実データ３１２」という）は、実施例１と同様である。
【００６６】
（動作）
以上の構成により、実施例２の印刷装置は、以下のように動作する。この動作を図４のデータ抜けの例示図および図１２の動作フローチャートを用いて以下説明する。なお、ステップＳ９０１、Ｓ９０３、Ｓ９０４、Ｓ９０６〜Ｓ９１１は、実施例１のＳ８０１、Ｓ８０２、Ｓ８０３、Ｓ８０５〜Ｓ８１０とほぼ同様である。
【００６７】
（印刷ジョブ処理）
全体の印刷ジョブ処理、ジョブ制御処理、データ破棄処理については、実施例１にて説明した図５、図６、図８と同様であるので、同様の部分については、簡略化のために詳細な説明は省略する。なお、各処理の終了条件としては、受信タイムアウト、ネットワーク受信におけるＥＯＦパケットを受信した場合もあるが、説明が煩雑となるので、実施例１と同様、その説明について省略する。
【００６８】
まず、印刷ジョブ処理では、前述図５のように図６に示したジョブ制御処理を行い、受信データのヘッダ部分のジョブ制御コード３００を読み込み、環境設定コード３０２として記載された印刷品質、両面印刷設定などの印刷設定を設定保存部１２３へ保存し、次のＰＤＬ処理へ移行する（ステップＳ５０２・Ｓ７０１〜Ｓ７０５）。
【００６９】
実施例２の印刷装置では、環境設定コード３０２に、データ抜け検出の基準である閾値を格納できる構成となっているので、当該閾値を設定保存部１２３の閾値レジスタ１２３ａに格納し、次のＰＤＬ処理へ移行する。
【００７０】
（印刷ジョブ処理のＰＤＬ処理）
ＰＤＬ処理（Ｓ５０４）では、図１２の動作フローチャートに示したように以下のような処理を行う。まず、ＰＤＬ処理内部変数であるブロックサイズ変数を０クリアする（ステップＳ９０１）。そして、設定保存部１２３の閾値レジスタ１２３ａから閾値を読み出してＰＤＬ処理内部変数である閾値変数へ設定する（ステップＳ９０２）。
【００７１】
そして、ブロックサイズ３１１を読み込み（ステップＳ９０３・９０４）、読み込んだブロックサイズを前記閾値変数と比較し（ステップＳ９０５）、閾値以内であれば、ブロックサイズ分のデータを読み込み（ステップＳ９０９〜９１１）、これを繰り返し最後のブロックのデータまで読み込む。
【００７２】
例えば、図４（ａ）、すなわち正常な受信があったときでは、図示しないブロックサイズ（１）のブロックサイズ（１）３１１−１を読み込み、次にブロックサイズ（１）分の実データ（１）３１２−１を読み込み、これを繰り返し最後のブロックのブロックサイズ（ｎ）３１１−ｎを読み込むと、ブロックサイズが"０００１８５１０"（Ｈ）であるので（ｘ位置）、前記ブロックサイズ判定閾値"００ＦＦＦＦＦＦ"（Ｈ）と比較すると、閾値以下であるので、最後の実データ（ｎ）３１２−ｎである"１８５１０"（Ｈ）分のデータを読み込む。
【００７３】
そして、次に、ブロックサイズとして読み込んだデータが、ジョブ制御モード移行コード３２１の一部であるかどうかの判定を行い、ジョブ制御モード移行コードであった場合には、ＰＤＬ処理の終了要因をジョブ制御モード移行コードとしてＰＤＬ処理を終了する（ステップＳ９０６）。
【００７４】
図４（ａ）のブロックサイズ（ｎ）の場合では、ブロックサイズである４バイトを読み込むと、ｚ位置からの４バイトを読み込むので"１Ｂ２５２Ｄ３１"（Ｈ）となり、これとブロックサイズ判定閾値である"００ＦＦＦＦＦＦ"（Ｈ）と比較すると、閾値より大きいのでステップＳ９０６に進み、ジョブ制御モード移行コード"１Ｂ２５２Ｄ３１３２３３３４３５５８"（Ｈ）の上位４バイトである"１Ｂ２５２Ｄ３１"（Ｈ）と比較すると一致するので、ジョブ制御モード移行コードを要因とした終了とすることになる。
【００７５】
ブロックサイズ変数値が前記閾値より大きくジョブ制御モード移行コードと異なる場合は、データ抜けが発生していると判断し、異常な印刷を未然に防止するために、印刷制御部１１３へ送られていない現在編集中のページのデータをクリアした後、図８に示したデータ破棄処理として、ジョブ終了コード、本例ではジョブ制御モード移行コード３２１を検出するまで、後続データを読み込んで破棄し（ステップＳ８０１・８０２）、ＰＤＬ処理の終了要因をデータ破棄としてＰＤＬ処理を終了する（（ステップＳ９０７・ステップＳ９０８）。
【００７６】
例えば、図４（ｂ）、すなわち１バイトのデータ抜けがあった場合で、ブロックサイズ（ｎ−１）の場合は、Ｓ９０４にてブロックサイズである４バイトを読み込むと、ｘ位置からの４バイトを読み込むことになるので、ブロックサイズが"０１８５１０１Ｂ"（Ｈ）であるので、これとブロックサイズ判定閾値である"００ＦＦＦＦＦＦ"（Ｈ）と比較すると閾値より大きく、ジョブ制御モード移行コード"１Ｂ２５２Ｄ３１３２３３３４３５５８（Ｈ）"の上位４バイトである"１Ｂ２５２Ｄ３１"（Ｈ）と比較すると一致しないので、データ破棄処理を行い、ＰＤＬ処理の終了要因をデータ破棄としてＰＤＬ処理を終了することになる。
【００７７】
ＰＤＬ処理を終了すると、ＰＤＬ処理の終了要因がジョブ制御モード移行コード３２１によるかどうかを判定し、ジョブ制御モード移行コード３２１が終了要因の場合は、図１２のステップＳ９０６にて最後のジョブ制御モード移行コード３２１が検出され、正常なデータ受信があった場合と判断しジョブ制御処理を継続する。
【００７８】
その他の場合、すなわち、ＰＤＬ処理の終了要因がジョブ制御モード移行コード３２１によらない場合では、１バイト抜けが発生しステップＳ９０８のデータ破棄処理を実行した場合であるので、印刷ジョブ処理を終了する。
【００７９】
（実施例２の効果）
以上詳細に述べたように、実施例２の印刷装置によれば、異常データを判定する基準である閾値を任意に設定できるようにしたので、実施例１の効果に加え、通信環境や印刷装置の種類、インタフェース種類等に応じて最適な条件で通信異常を検出することができる。
【産業上の利用可能性】
【００８０】
以上の実施例の説明では、ＰＤＬ（ページ記述言語）を扱うプリンタについて説明したが、これには限定されず、例えばビットマップイメージを直接扱うホストベースプリンタなど、各種プリンタにも本発明を適用することができる。
【図面の簡単な説明】
【００８１】
【図１】実施例１の印刷装置にかかるシステム構成図である。
【図２】実施例１の印刷ジョブ処理部の構成図である。
【図３】実施例１の印刷ジョブのデータ構成図である。
【図４】データ抜けの例示図である。
【図５】実施例１の印刷ジョブ処理の動作フローチャート図である。
【図６】実施例１のジョブ制御処理の動作フローチャート図である。
【図７】実施例１のＰＤＬ処理の動作フローチャート図である。
【図８】実施例１のデータ破棄処理の動作フローチャート図である。
【図９】実施例２の印刷装置にかかるシステム構成図である。
【図１０】実施例２の印刷ジョブ処理部の構成図である。
【図１１】実施例２の印刷ジョブのデータ構成図である。
【図１２】実施例２のＰＤＬ処理の動作フローチャート図である。
【符号の説明】
【００８２】
１０３    プリンタドライバ
１０１ａ  閾値設定部
１０５    印刷ジョブ
１１２    印刷ジョブ処理部
１２１    ジョブ制御処理部
１２２    ＰＤＬ処理部
１２３    設定保存部
１２３ａ  閾値レジスタ
１２４    ブロックサイズ判定部
１２５    データ破壊処理部
３００、３２０  ジョブ制御コード
３０１、３２１  ジョブ制御モード移行コード
３０２    環境コード
３０３    ＰＤＬモード移行コード
３１０    印刷データ
３１１    ブロックサイズ
３１２    実データ
４０１    閾値変数
【図１】
0004781023.tif 000002
【図２】
0004781023.tif 000003
【図３】
0004781023.tif 000004
【図４】
0004781023.tif 000005
【図５】
0004781023.tif 000006
【図６】
0004781023.tif 000007
【図７】
0004781023.tif 000008
【図８】
0004781023.tif 000009
【図９】
0004781023.tif 000010
【図１０】
0004781023.tif 000011
【図１１】
0004781023.tif 000012
【図１２】
0004781023.tif 000013