(57)【要約】【課題】エラーが発生し所望の印刷結果を得ることが出来ない場合に、エラー発生原因がデータ抜けであった場合でも、できる限り所望する印刷結果を得ることが可能となる印刷装置におけるエラー処理を実現すること。【解決手段】データ抜けが発生したラスタがページ先頭もしくはページ最後である場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有する。データ抜けが発生したらラスタの前もしくは後のラスタがＮＵＬＬラスタである場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有する。【選択図】        図１
2004188774.tif 000002
【特許請求の範囲】
【請求項１】
所定のコマンド体系で記述された印刷データのコマンド解釈を行う際に、現在解釈中のデータ以前の任意バイト数のデータをメモリなどに保持し、任意のデータが前記コマンド体系の先頭キーワードに一致しておらずデータ抜けであると判断された場合は前記任意バイト数のデータ中から先頭キーワードを検索し、先頭キーワード以降に保持したデータをエラーであると判断されたデータの直前のデータとして採用する印刷装置において、前記データ抜けが発生したラスタがページ先頭もしくはページ最後である場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有することを特徴とする印刷装置におけるエラー処理方法。
【請求項２】
前記データ抜けが発生したラスタの前もしくは後のラスタがＮＵＬＬラスタである場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有することを特徴とする請求項１記載の印刷装置におけるエラー処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、印刷制御方法および印刷装置に関し、特に所定のコマンド体系で記述された印刷データに基づいて記録媒体上に画像を形成する印刷制御方法および印刷装置に関するものである。
【０００２】
【従来の技術】
従来、パソコンなどのホスト装置から送信された所定のコマンド体系で記述された印刷データをプリンタなどの印刷装置で例えば１バイトずつ解析し、その結果、前記コマンド体系のフォーマットにマッチしない場合にはエラーとし、印刷装置の表示部にエラー種別が判断できるメッセージを表示したり、ホスト装置に対してエラーを通知することが可能となっている。
【０００３】
また、前記印刷装置において、エラー発生時にそれ以降の印刷を中止したり（特開平９−８１３４２号公報）、エラーとなったコマンドに関するデータを読み飛ばし、後に続くコマンドの解析を続行したり、エラー発生原因がデータ通信時におけるデータ抜けであった場合には、前記コマンドに関するデータに関してホスト装置に再送要請を行うこと（特開平１１−１３４１４６号公報）が可能となっている。
【０００４】
【発明が解決しようとする課題】
しかしながら上記従来例は、エラー発生原因がデータ通信時におけるデータ抜けであった場合には、エラーとなったコマンドに関するデータを読み飛ばすことはできるが、一般的には、エラーと判断されたコマンドの前に実行されたコマンドにおいてデータ抜けが発生しているのが原因であり、結果としては、むしろ正常なコマンドパケットを読み捨てていることになっている。しかも、複数色を印刷可能な印刷装置においては、エラーが発生した色データのみを読み飛ばし、他の色データは印刷されてしまうため、印刷物としては使用できない。
【０００５】
また、ホスト装置から該当するデータを再送することにより、所望する印刷結果を得ることはできるが、ホスト装置から印刷データを再送するため、結果として印刷スピードの低下を招くという欠点が存在する。
【０００６】
本出願に係る目的は、エラーが発生し所望の印刷結果を得ることが出来ない場合に、エラー発生原因がデータ抜けであった場合でも、ホスト装置から印刷データを再送することなく、できる限り所望する印刷結果を得ることが可能となる印刷装置におけるエラー処理を実現することである。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、本出願第１の発明は、データ抜けが発生したラスタがページ先頭もしくはページ最後である場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有することを特徴とする。
【０００８】
上記目的を達成するために、本出願第２の発明は、データ抜けが発生したラスタの前もしくは後のラスタがＮＵＬＬラスタである場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有することを特徴とする。
【０００９】
【発明の実施の形態】
（第１の実施例）
図１は本実施例を実現する印刷装置システムの一構成例であり、１はＣＰＵ、２はＬＣＤなどの表示部、３はスイッチやキーなどの入力部、４はインクを格納するタンクやインクを吐出し印刷を行うヘッドなどの印刷部、５は書き換えの発生頻度が低いモジュールを格納するＲＯＭやフラッシュメモリなどのメモリ、６は主にメモリ５に格納されているプログラムの作業領域や変数などに使用されるＲＡＭなどのメモリ、７はセントロやＵＳＢなどの通信インタフェース、８はパソコンなどのホスト装置である。
【００１０】
メモリ５に格納されているファームウェアは印刷装置を制御するためのプログラムであり、図３〜図７のフローチャートで示される各処理を含んでいる。
【００１１】
メモリ５に格納されているユーティリティは、例えば、給紙トレイ（未図示）にセットされているメディアのサイズや種類などを設定したり、通信インタフェース７がセントロであるかＵＳＢであるかなどを選択するための機能を有する。
【００１２】
メモリ６に確保されているプリントバッファは、ホスト装置８から受信した印刷データを印刷部４が印刷できる形式にファームウェアが処理するための領域である。Ｂｕｆ［８］（以降、Ｂｕｆとのみ記述する）、Ｄａｔａ、Ｐｕｔ＿ｐｎｔ、Ｇｅｔ＿ｐｎｔ、Ｆｒｏｍ＿ｂｕｆ、Ｄｅｌ＿ｆｌｇ、Ｅｒｒ＿ｆｌｇは図３〜図７及び図９、図１０のフローチャートで用いられる変数であり、個々の説明はそれぞれ使用されるフローチャートにおいて行う。
【００１３】
通信インタフェース７は、印刷装置とホスト装置８の間で、印刷データや印刷装置の状態をやり取りするために使用される。
【００１４】
ホスト装置８は、印刷装置へ印刷データを送信したり、印刷装置を制御するためのユーティリティを実行するために使用される。
【００１５】
図２は本実施例を実現する印刷装置本体の一構成例であり、９は印刷装置、１０は表示部としてのパネル、１１は入力部としてのキーである。
【００１６】
パネル１０は図１における表示部２に相当し、後述するエラーメッセージなどを表示する。この他にも、前述したユーティリティの表示手段として利用される。
【００１７】
キー１１は図１における入力部３に相当し、前述したユーティリティの入力手段などとして利用される。
【００１８】
図３は本実施例を実現するコマンド解釈処理のフローチャートである。
【００１９】
図４は本実施例を実現する先頭キーワード処理のフローチャートである。
【００２０】
図５は本実施例を実現するデータ取得処理のフローチャートである。
【００２１】
図６は本実施例を実現するエラー処理のフローチャートである。
【００２２】
図７は本実施例を実現するコマンドメイン処理のフローチャートである。
【００２３】
図８は本実施例を実現するデータ保持メモリの一例であり、これは図１におけるメモリ６のＢｕｆ［８］に相当し、一つのマスで１バイトのデータを表している。本実施例ではデータ保持メモリを８バイトの配列としており、左端のマスが０バイト目、右端のマスが７バイト目である。データの保持は０バイト目から格納し、７バイト目まで格納したら再び０バイト目から上書きしていくことにより、常に最新の８バイトを保持しておく。８バイトというサイズはシステム依存であり、１バイト以上であれば問題ない。また、０ｘ８１，０ｘ００などはデータの値を１６進数で表したものである。
【００２４】
本実施例は、印刷装置９のコマンド解釈処理において、コマンドの先頭キーワードを取得し、これが先頭キーワードでない場合は、直前に解釈したコマンドパケットにデータ抜けが発生しているとしてデータ保持メモリから先頭キーワードを検索して取得し、さらに、データ抜けが発生したラスタがページの先頭ラスタもしくは最終ラスタであると、そのラスタの全色のデータを削除するものである。
【００２５】
本実施例では、以降、これらの実現方法を図３〜図７のフローチャート及び図８のデータ保持メモリの一例を用いて説明していく。尚、データ抜けラスタがページの先頭である場合の処理は図６により実現し、前記ラスタがページの最終である場合の処理は図７により実現している。
【００２６】
まず、印刷装置９におけるコマンド解釈処理全体の流れを図３のフローチャートを用いて説明する。
【００２７】
Ｓ３−１ではＦｒｏｍ＿ｂｕｆを０に初期化している。本フラグは１の場合はデータ保持メモリから、１以外の場合は受信バッファ（未図示）からデータを取得することを示す。従って、デフォルトは受信バッファから取得することになる。
【００２８】
Ｓ３−２ではデータを１バイト取得し、先頭キーワードを取得する処理を行っている。取得方法に関する詳細は後に図４のフローチャートを用いて説明する。Ｓ３−３では先頭キーワード取得後に、さらに数バイト取得し、コマンドの種類を取得している。
【００２９】
Ｓ３−４ではＳ３−３で取得したコマンドの種類に従って、各コマンド毎のメイン処理を行っている。詳細は後に図７のフローチャートを用いて説明する。
【００３０】
Ｓ３−５ではコマンドが終了コマンドであるか否かを判断している。終了コマンドでない場合は、Ｓ３−２へ戻り、次のコマンド解釈のために先頭キーワード処理を行う。終了コマンドである場合は、コマンド解釈処理を終了する。
【００３１】
次に、Ｓ３−２の先頭キーワード取得処理を図４のフローチャートを用いて説明する。
【００３２】
Ｓ４−１では受信バッファ（未図示）もしくはデータ保持メモリＢｕｆからデータを１バイト取得している。取得方法に関する詳細は後に図５のフローチャートを用いて説明する。
【００３３】
Ｓ４−２ではＳ４−１で取得したデータが先頭キーワードであるか否かを判断している。先頭キーワードとは例えばＥＳＣコード（０ｘ１Ｂ）などである。先頭キーワードである場合は先頭キーワード処理を終了し、先頭キーワードでない場合はＳ４−３へ行く。
【００３４】
Ｓ４−３〜Ｓ４−７ではデータ保持メモリＢｕｆから先頭キーワードを検索している。Ｂｕｆには、受信バッファから取得したデータの最新の８バイトを常に保持している。データ保持方法に関する詳細は後に図５のフローチャートで説明する。以下、Ｓ４−３〜Ｓ４−７を順に説明する。
【００３５】
Ｓ４−３ではデータ保持メモリのデータが先頭キーワードであるか否かを判断している。先頭キーワードでない場合はＳ４−４へ行き、先頭キーワードである場合はＳ４−９へ行き、Ｆｒｏｍ＿ｂｕｆに１を代入することにより、次のデータは受信バッファではなくＢｕｆから取得することを示している。ここで、Ｇｅｔ＿ｐｎｔはＢｕｆにおける取得ポインタであり、Ｂｕｆから１バイト取得するごとに次の位置に移動し、受信バッファからデータを１バイト取得するごとに更新される。ちなみに、後述するＰｕｔ＿ｐｎｔはＢｕｆにおける格納ポインタであり、Ｂｕｆに１バイト格納するごとに次の位置に移動する。
【００３６】
Ｓ４−４では取得ポインタＧｅｔ＿ｐｎｔが０であるか否かを判断している。０の場合はＳ４−５へ行き、０でない場合はＳ４−６へ行く。
【００３７】
Ｓ４−５ではＧｅｔ＿ｐｎｔに７を代入し、Ｓ４−６ではＧｅｔ＿ｐｎｔから１を減算することにより、それぞれ、１つ前のデータ位置を示すようにしている。
【００３８】
Ｓ４−７ではＢｕｆに保持されているデータを全て検索したか否かを判断している。全てを検索していない場合はＳ４−３へ行き、再び先頭キーワードの検索処理を続行する。検索を終了した場合はＳ４−８へ行く。
【００３９】
Ｓ４−８では受信バッファから先頭キーワードを取得できなかったためにエラー処理を行っている。エラー処理に関する詳細は後に図６のフローチャートで説明する。
【００４０】
次に、Ｓ４−１のデータ取得処理を図５のフローチャートを用いて説明する。
【００４１】
Ｓ５−１では受信バッファからデータを取得するか、データ保持メモリＢｕｆからデータを取得するかを判断している。受信バッファから取得する場合はＳ５−２へ行き、データ保持メモリから取得する場合はＳ５−８へ行く。Ｆｒｏｍ＿ｂｕｆは図４のＳ４−９で受信バッファから先頭キーワードを取得できなかった場合に１にセットされ、データ保持メモリから先頭キーワードを検索不可になったら０にリセットされる。
【００４２】
Ｓ５−２〜Ｓ５−７は受信バッファからデータを取得する場合の一連の処理であり、以下、順に説明していく。
【００４３】
Ｓ５−２では受信バッファからデータを１バイト取得し、変数Ｄａｔａに代入している。
【００４４】
Ｓ５−３ではＳ５−４以降でデータ保持メモリＢｕｆにデータを格納し、格納ポインタＰｕｔ＿ｐｎｔを更新するため、現在のＰｕｔ＿ｐｎｔをＧｅｔ＿ｐｎｔに代入することにより、取得ポインタを更新している。
【００４５】
Ｓ５−４では格納ポインタＰｕｔ＿ｐｎｔが７であるか否かを判断している。７の場合はＳ５−５へ行き、７でない場合はＳ５−６へ行く。
【００４６】
Ｓ５−５ではＰｕｔ＿ｐｎｔに０を代入し、Ｓ５−６ではＰｕｔ＿ｐｎｔに１を加算することにより、それぞれ、次のデータ格納位置を更新している。
【００４７】
Ｓ５−７ではデータ保持メモリに受信バッファから取得したデータを保持している。これにより、常に最新の８バイトのデータを保持することが可能となる。
【００４８】
次に、Ｓ５−８〜Ｓ５−１３はデータ保持メモリからデータを取得する場合の一連の処理であり、以下、順に説明していく。
【００４９】
Ｓ５−８ではデータ保持メモリからデータを１バイト取得し、変数Ｄａｔａに代入している。
【００５０】
Ｓ５−９では取得ポインタＧｅｔ＿ｐｎｔが７であるか否かを判断している。７の場合はＳ５−１０へ行き、７でない場合はＳ５−１１へ行く。
【００５１】
Ｓ５−１０ではＧｅｔ＿ｐｎｔに０を代入し、Ｓ５−１１ではＧｅｔ＿ｐｎｔに１を加算することにより、それぞれ、次のデータ取得位置を更新している。
【００５２】
Ｓ５−１２ではではＢｕｆにデータが保持されているか否かを判断している。データが保持されれていない場合はＳ５−１３へ行き、データが保持されている場合は終了する。
【００５３】
Ｓ５−１３ではＦｒｏｍ＿ｂｕｆに０を代入することにより、次回のデータは受信バッファから取得するように示している。
【００５４】
次に、Ｓ４−８のエラー処理を図６のフローチャートを用いて説明する。
【００５５】
Ｓ６−１では先頭キーワードをデータ保持メモリＢｕｆから取得したか否かをＦｒｏｍ＿ｂｕｆを用いて判断している。データ保持メモリから取得した場合はＳ６−２へ行き、取得できなかった場合は後述するラスタデータの削除を行う必要がないため、Ｓ６−７へ行く。
【００５６】
Ｓ６−２ではデータ抜けが発生したラスタがページの先頭であるか否かを判断している。この判断方法はシステム依存であるが、フラグを使用する事などが考えられる。例えば、給紙後に初めてラスタデータをプリントバッファに展開するとフラグを０にリセットし、排紙するとフラグを１にセットすることにより、１の場合はページ先頭であることが判断できる。ページ先頭である場合はＳ６−３へ行き、ページ先頭でない場合はラスタデータを削除しないのでＳ６−８へ行く。
【００５７】
Ｓ６−８ではＤｅｌ＿ｆｌｇに１をセットしている。このフラグは、データ抜けが発生したにもかかわらずエラー処理においてラスタデータを削除しなかったことを示す。このフラグは図７のコマンドメイン処理で使用する。
【００５８】
Ｓ６−３ではデータ抜けが発生したデータがそのラスタの最初の色であるか否かを判断している。これは例えば、ＫＣＭＹ（ブラック、シアン、マゼンタ、イエロー）４色のカラープリンタを想定すると、ラスタデータはＫのラスタデータ、Ｃのラスタデータ、Ｍのラスタデータ、Ｙのラスタデータの順番でホストから転送されるとした場合、Ｋのラスタデータを受信中にデータ抜けが発生したのか否かを判断するということである。最初の色でない場合はＳ６−４へ行き、最初の色である場合はそのラスタにおいて既にプリントバッファに展開されている色のデータは存在しないので、Ｓ６−６へ行く。
【００５９】
Ｓ６−４ではデータ抜けが発生したラスタの全色のデータをプリントバッファから削除している。これは例えば、前記データ抜けの発生した色がＭであれば、プリントバッファには既にＫとＣのラスタデータが展開されているので、これを削除するということである。
【００６０】
Ｓ６−５ではＳ６−４でラスタデータを削除したので、プリントバッファに既に書き込まれているラスタ数を減算している。プリントバッファ内ラスタ数（未図示）はプリントバッファに書き込みが可能か否かを判断するためなどに使用される。
【００６１】
Ｓ６−６ではＥｒｒ＿ｆｌｇに１をセットしている。このフラグは、データ抜けが発生した色データを破棄する必要があることを示す。これはＳ６−４の例ではＭのことである。このフラグは図７のコマンドメイン処理で使用する。
【００６２】
Ｓ６−７ではデータ抜けが発生しているためにエラー通知を行っている。エラー通知の方法はシステム依存であるが、パネル１０などにエラーメッセージを表示することなどが考えられる。
【００６３】
最後に、Ｓ３−４のコマンドメイン処理を図７のフローチャートを用いて説明する。
【００６４】
Ｓ７−１では図３のＳ３−３で取得したコマンドが印刷コマンドであるか否かを判断している。印刷コマンドである場合はＳ７−２へ行き、印刷コマンドでない場合はＳ７−１２へ行く。
【００６５】
Ｓ７−１２では排紙コマンドであるか否かを判断している。排紙コマンドである場合はＳ７−１３へ行き、排紙コマンドでない場合はＳ７−２０へ行く。
【００６６】
Ｓ７−２０では印刷コマンド及び排紙コマンド以外のコマンド処理を行っている。本実施例では印刷コマンドと排紙コマンド以外は重要でないため詳細は説明しないが、例えば、データの圧縮方法の設定やグラフィックス解像度の設定などを示す。
【００６７】
Ｓ７−２〜Ｓ７−１１は印刷コマンドの処理であり、以下、順に説明していく。
【００６８】
Ｓ７−２ではデータ抜けが発生した色データを破棄する必要があるか否かをＥｒｒ＿ｆｌｇを用いて判断している。破棄する必要がない場合はＳ７−３へ行き、破棄する必要がある場合はＳ７−９へ行く。
【００６９】
Ｓ７−９では受信した色データを破棄している。データ破棄の方法はシステム依存であるが、本実施例では単にプリントバッファにデータを展開しないだけでよい。
【００７０】
Ｓ７−１０では受信したラスタデータがそのラスタの最後の色であるか否かを判断している。これは図６の例で言えば、Ｙのラスタデータであるか否かということである。最後の色でない場合はＳ７−６へ行き、最後の色である場合はＳ７−１１へ行く。
【００７１】
Ｓ７−１１ではＥｒｒ＿ｆｌｇを０にリセットしている。これにより、次回からはデータの破棄が行われないようになる。
【００７２】
Ｓ７−３では圧縮されたデータを伸張するなどしてプリントバッファにラスタデータを展開している。
【００７３】
Ｓ７−４では受信したラスタデータがそのラスタの最後の色であるか否かを判断している。最後の色でない場合はＳ７−６へ行き、最後の色である場合はＳ７−５へ行く。
【００７４】
Ｓ７−５では１ラスタ分の色データを全て展開したので、プリンタバッファ内ラスタ数を加算している。
【００７５】
Ｓ７−６ではプリントバッファにデータが書き込めるか否かを判断している。書き込める場合はコマンドメイン処理を終了し、書き込めない場合はＳ７−７へ行く。
【００７６】
Ｓ７−７ではプリントバッファにこれ以上書き込めないため、データを出力している。
【００７７】
Ｓ７−８ではＳ７−７でプリントバッファが空になったため、プリントバッファ内ラスタ数を０にリセットしている。
【００７８】
Ｓ７−１３〜Ｓ７−１９は排紙コマンドの処理であり、以下、順に説明していく。
【００７９】
Ｓ７−１３ではデータ抜けが発生したにもかかわらずエラー処理においてラスタデータを削除しなかったか否かをＤｅｌ＿ｆｌｇを用いて判断している。エラー処理においてラスタデータを削除した場合はＳ７−１７へ行き、削除しなかった場合はＳ７−１４へ行く。
【００８０】
Ｓ７−１４では最終ラスタでデータ抜けが発生したので、そのラスタの全色のデータをプリントバッファから削除している。
【００８１】
Ｓ７−１５ではＳ７−１４でラスタデータを削除したので、プリントバッファに既に書き込まれているラスタ数を減算している。
【００８２】
Ｓ７−１６ではＳ７−１４でラスタデータを削除したので、Ｄｅｌ＿ｆｌｇを０にリセットしている。
【００８３】
Ｓ７−１７では排紙を実行する前に、プリントバッファに保持してあるデータを出力している。ここで、データが保持されていない場合も考えられるが、その場合は何もしない。
【００８４】
Ｓ７−１８ではＳ７−１７でプリントバッファが空になったため、プリントバッファ内ラスタ数を０にリセットしている。
【００８５】
Ｓ７−１９では排紙を実行している。
【００８６】
以上で、コマンド解釈処理において、コマンドの先頭キーワードを取得し、これが先頭キーワードでない場合は、直前に解釈したコマンドパケットにデータ抜けが発生しているとしてデータ保持メモリから先頭キーワードを検索して取得し、さらに、データ抜けが発生したラスタがページの先頭ラスタもしくは最終ラスタであると、そのラスタの全色のデータを削除したことになる。
【００８７】
これにより、データ抜けが発生し所望の印刷結果を得ることが出来ない場合であっても、そのラスタがページの先頭や最終であれば、そのラスタの全色のデータを削除することにより、実際の印刷結果に対して目立たない範囲の印刷結果を得ることが可能となる。
【００８８】
（第２の実施例）
図９は本実施例を実現するエラー処理のフローチャートである。
【００８９】
図１０は本実施例を実現するコマンドメイン処理のフローチャートである。
【００９０】
本実施例は、第１の実施例と比較してラスタの全色のデータを削除する条件が異なる。第１の実施例はデータ抜けが発生したラスタがページの先頭もしくは最終であると、そのラスタの全色のデータを削除するものだが、本実施例はデータ抜けが発生したラスタの前ラスタもしくは次ラスタがＮＵＬＬラスタであると、そのラスタの全色のデータを削除するものである。
【００９１】
従って、図３〜図５は第１の実施例と同様であるため、ここでは説明を省き、以降、実現方法を図９，図１０のフローチャートを用いて説明していく。尚、データ抜けラスタの前ラスタがＮＵＬＬラスタである場合の処理は図９により実現し、前記ラスタの次ラスタがＮＵＬＬラスタである場合の処理は図１０により実現している。
【００９２】
まず、Ｓ４−８のエラー処理を図９のフローチャートを用いて説明する。
【００９３】
Ｓ９−１では先頭キーワードをデータ保持メモリＢｕｆから取得したか否かをＦｒｏｍ＿ｂｕｆを用いて判断している。データ保持メモリから取得した場合はＳ９−２へ行き、取得できなかった場合は後述するラスタデータの削除を行う必要がないため、Ｓ９−７へ行く。
【００９４】
Ｓ９−２ではデータ抜けが発生したラスタの前ラスタがＮＵＬＬラスタであるか否かを判断している。この判断方法はシステム依存であるが、フラグを使用する事などが考えられる。例えば、１ラスタの全色のデータに関して、データ数（未図示）に０が指定されていたり、実際のデータが全て０である場合にはフラグを１にセットすることにより、１の場合は前ラスタがＮＵＬＬラスタであることが判断できる。ＮＵＬＬラスタである場合はＳ９−３へ行き、ＮＵＬＬラスタでない場合はラスタデータを削除しないのでＳ９−８へ行く。
【００９５】
Ｓ９−８ではＤｅｌ＿ｆｌｇに１をセットしている。このフラグは、データ抜けが発生したにもかかわらずエラー処理においてラスタデータを削除しなかったことを示す。このフラグは図１０のコマンドメイン処理で使用する。
【００９６】
Ｓ９−３ではデータ抜けが発生したデータがそのラスタの最初の色であるか否かを判断している。これは例えば、ＫＣＭＹ（ブラック、シアン、マゼンタ、イエロー）４色のカラープリンタを想定すると、ラスタデータはＫのラスタデータ、Ｃのラスタデータ、Ｍのラスタデータ、Ｙのラスタデータの順番でホストから転送されるとした場合、Ｋのラスタデータを受信中にデータ抜けが発生したのか否かを判断するということである。最初の色でない場合はＳ９−４へ行き、最初の色である場合はそのラスタにおいて既にプリントバッファに展開されている色のデータは存在しないので、Ｓ９−６へ行く。
【００９７】
Ｓ９−４ではデータ抜けが発生したラスタの全色のデータをプリントバッファから削除している。これは例えば、前記データ抜けの発生した色がＭであれば、プリントバッファには既にＫとＣのラスタデータが展開されているので、これを削除するということである。
【００９８】
Ｓ９−５ではＳ９−４でラスタデータを削除したので、プリントバッファに既に書き込まれているラスタ数を減算している。
【００９９】
Ｓ９−６ではＥｒｒ＿ｆｌｇに１をセットしている。このフラグは、データ抜けが発生した色データを破棄する必要があることを示す。このフラグは図１０のコマンドメイン処理で使用する。
【０１００】
Ｓ９−７ではデータ抜けが発生しているためにエラー通知を行っている。エラー通知の方法はシステム依存であるが、パネル１０などにエラーメッセージを表示することなどが考えられる。
【０１０１】
最後に、Ｓ３−４のコマンドメイン処理を図１０のフローチャートを用いて説明する。
【０１０２】
Ｓ１０−１では図３のＳ３−３で取得したコマンドが印刷コマンドであるか否かを判断している。印刷コマンドである場合はＳ１０−２へ行き、印刷コマンドでない場合はＳ１０−１７へ行く。
【０１０３】
Ｓ１０−１７では印刷コマンド以外のコマンド処理を行っている。本実施例では印刷コマンド以外は重要でないため詳細は説明しないが、例えば、データの圧縮方法の設定やグラフィックス解像度の設定などを示す。
【０１０４】
Ｓ１０−２ではデータ抜けが発生したにもかかわらずエラー処理においてラスタデータを削除しなかったか否かをＤｅｌ＿ｆｌｇを用いて判断している。エラー処理においてラスタデータを削除した場合はＳ１０−３へ行き、削除しなかった場合はＳ１０−１３へ行く。
【０１０５】
Ｓ１０−１３では現在のラスタデータがＮＵＬＬラスタであるか否かを判断している。ＮＵＬＬラスタの場合はＳ１０−１４へ行き、ＮＵＬＬラスタでない場合はＳ１０−１６へ行く。
【０１０６】
Ｓ１０−１４ではデータ抜けが発生したラスタの次ラスタがＮＵＬＬラスタなので、前ラスタすなわちデータ抜けが発生したラスタの全色のデータを削除している。
【０１０７】
Ｓ１０−１５ではＳ１０−１４でラスタデータを削除したので、プリントバッファに既に書き込まれているラスタ数を減算している。
【０１０８】
Ｓ１０−１６ではＳ１０−１４でラスタデータを削除したので、Ｄｅｌ＿ｆｌｇを０にリセットしている。
【０１０９】
Ｓ１０−３ではではデータ抜けが発生した色データを破棄する必要があるか否かをＥｒｒ＿ｆｌｇを用いて判断している。破棄する必要がない場合はＳ１０−４へ行き、破棄する必要がある場合はＳ１０−１０へ行く。
【０１１０】
Ｓ１０−１０では受信した色データを破棄している。データ破棄の方法はシステム依存であるが、本実施例では単にプリントバッファにデータを展開しないだけでよい。
【０１１１】
Ｓ１０−１１では受信したラスタデータがそのラスタの最後の色であるか否かを判断している。これは図９の例で言えば、Ｙのラスタデータであるか否かということである。最後の色でない場合はＳ１０−７へ行き、最後の色である場合はＳ１０−１２へ行く。
【０１１２】
Ｓ１０−１２ではＥｒｒ＿ｆｌｇを０にリセットしている。これにより、次回からはデータの破棄が行われないようになる。
【０１１３】
Ｓ１０−４では圧縮されたデータを伸張するなどしてプリントバッファにラスタデータを展開している。
【０１１４】
Ｓ１０−５では受信したラスタデータがそのラスタの最後の色であるか否かを判断している。最後の色でない場合はＳ１０−７へ行き、最後の色である場合はＳ１０−６へ行く。
【０１１５】
Ｓ１０−６では１ラスタ分の色データを全て展開したので、プリンタバッファ内ラスタ数を加算している。
【０１１６】
Ｓ１０−７ではプリントバッファにデータが書き込めるか否かを判断している。書き込める場合はコマンドメイン処理を終了し、書き込めない場合はＳ１０−８へ行く。
【０１１７】
Ｓ１０−８ではプリントバッファにこれ以上書き込めないため、データを出力している。
【０１１８】
Ｓ１０−９ではＳ１０−８でプリントバッファが空になったため、プリントバッファ内ラスタ数を０にリセットしている。
【０１１９】
以上で、データ抜けが発生したラスタの前ラスタもしくは次ラスタがＮＵＬＬラスタであると、そのラスタの全色のデータを削除したことになる。
【０１２０】
これにより、データ抜けが発生し所望の印刷結果を得ることが出来ない場合であっても、そのラスタの前ラスタや次ラスタがＮＵＬＬラスタであれば、そのラスタの全色のデータを削除することにより、実際の印刷結果に対して目立たない範囲の印刷結果を得ることが可能となる。
【０１２１】
【発明の効果】
以上説明したように、本出願に係る第１の発明によれば、データ抜けが発生したラスタがページ先頭もしくはページ最後である場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有することにより、データ抜けが発生したラスタがページの先頭や最後のラスタであれば、データを中途半場に印刷するよりもラスタの全色を印刷しない方が、人の目には判断しにくい程度の品位を持ったドキュメントとして利用することが可能となる。
【０１２２】
本出願に係る第２の発明によれば、データ抜けが発生したラスタの前もしくは後のラスタがＮＵＬＬラスタである場合、前記データ抜けが発生したラスタを全色印刷しないように動作する手段を有することにより、例えば、あるイメージの最上端ラスタや最下端ラスタにデータ抜けが発生した場合であれば、前記ラスタの前ラスタや次ラスタはＮＵＬＬラスタなので、データ抜けが発生したデータを中途半場に印刷するよりもラスタの全色を印刷しない方が、人の目には判断しにくい程度の品位を持ったドキュメントとして利用することが可能となる。
【図面の簡単な説明】
【図１】本発明の第１，２の実施例を実現する印刷装置システムの一構成例である。
【図２】本発明の第１，２の実施例を実現する印刷装置本体の一例である。
【図３】本発明の第１，２の実施例を実現するコマンド解釈処理のフローチャートである。
【図４】本発明の第１，２の実施例を実現する先頭キーワード処理のフローチャートである。
【図５】本発明の第１，２の実施例を実現するデータ取得処理のフローチャートである。
【図６】本発明の第１の実施例を実現するエラー処理のフローチャートである。
【図７】本発明の第１の実施例を実現するコマンドメイン処理のフローチャートである。
【図８】本発明の第１，２の実施例を実現するのデータ保持メモリＢｕｆ［８］の一例である。
【図９】本発明の第２の実施例を実現するエラー処理のフローチャートである。
【図１０】本発明の第２の実施例を実現するコマンドメイン処理のフローチャートである。
【符号の説明】
１  ＣＰＵ
２  表示部
３  入力部
４  印刷部
５  メモリ
６  メモリ
７  通信インタフェース
８  ホスト装置
９  印刷装置
１０  ＬＣＤ
１１  キー
１２  データ保持メモリＢｕｆ［８］
【図１】
2004188774.tif 000003
【図２】
2004188774.tif 000004
【図３】
2004188774.tif 000005
【図４】
2004188774.tif 000006
【図５】
2004188774.tif 000007
【図６】
2004188774.tif 000008
【図７】
2004188774.tif 000009
【図８】
2004188774.tif 000010
【図９】
2004188774.tif 000011
【図１０】
2004188774.tif 000012