<第1の実施の形態>
以下、本発明の実施の形態を説明する。
図2及び図3は実施の形態の印刷システムであって、ホストコンピュータから印刷装置への印刷ジョブ送信、印刷装置の情報獲得、環境設定が行われる仕組みを具現化した印刷システムの機能構成を示すブロック図である。
この印刷システムは、印刷ジョブを生成するホストコンピュータ200と当該印刷ジョブに基づいて実際に用紙に印刷を行う印刷装置300、ホストコンピュータ200と印刷装置300を接続するインターフェイス210、311から構成されている。インターフェイス210、311はIEEE1284で規定されているローカルインターフェイスでも、EtherNetのようなネットワークインターフェイスでもよく、ここではローカルインタフェイスの場合の説明を行う。
図2において、ホストコンピュータ200は、アプリケーション部201、プリンタドライバ部202、送信バッファ203、I/Fドライバ部204、ユーティリティ部205、論理チャネル制御部206、ジョブパケット生成部207から構成されている。
アプリケーション部201では、ユーザがグラフィックユーザインターフェイスを操作し、それに応じて所望の画像データを生成する。プリンタドライバ部202は、アプリケーション部201が生成した画像データを、印刷装置300が印刷可能なページ記述言語(以下PDLと略称)データに変換する。送信バッファ203には、プリンタドライバ部202が生成したPDLデータが一時的に格納される。ジョブパケット生成部207は、送信バッファ203に格納されたPDLデータとアプリケーション部201が有するジョブ情報とから所定のジョブパケットを生成する。
ユーティリティ部205は、印刷装置300の状態の確認や送信した印刷ジョブの印刷状態の確認、印刷ジョブの取り消し、印刷ジョブの割り込み、印刷ジョブの印刷停止、印刷ジョブの印刷再開などの操作をユーザがグラフィカルユーザインターフェイスを用いて行えるようにし、これらの操作に応じて印刷装置300が解釈可能な管理パケットを生成する。
論理チャネル制御部206は、ジョブパケットと管理パケットをそれぞれ異なるチャネルに割り振り、OSI7階層におけるトランスポート層の多重化を行う。I/Fドライバ部204は、論理的なデータと電気信号とに双方向に変換して、インターフェイス210とのやりとりを行う。
図3において、印刷装置300は、I/Fドライバ部301、論理チャネル制御部302、ジョブプリプロセッサ部303、ジョブスプーラ部304、機器データベース部305、PDLトランスレータ部306、描画バッファ307、描画部308、プリンタエンジン部309、情報管理部310、割込み処理部312、ジョブ読み出しテーブル313から構成されている。
I/Fドライバ部301は、論理的なデータと電気信号とに双方向に変換し、インターフェイス311とのやりとりを行う。論理チャネル制御部302は、ジョブパケットと管理パケットをそれぞれ異なるチャネルに割り振り、OSI7階層におけるトランスポート層の多重化を行う。ジョブプリプロセッサ部303は、ジョブパケットを受け取って解析し、印刷ジョブのジョブ情報を機器データベース部305に、PDLデータをジョブスプーラ部304に割り分けて格納する。
ジョブスプーラ部304は、HDDやフラッシュメモリ、あるいはDRAMなどの大容量メモリデバイスから構成され、印刷ジョブのPDLデータを印刷完了まで一時的に保持する。印刷ジョブの最後の1ページの排紙が完了したと検知された段階で、ジョブスプーラ部304に格納されている当該印刷ジョブのPDLデータは削除、或いは無効にされる。
ジョブ読み出しテーブル313には、印刷ジョブの処理順番が記述されている。PDLトランスレータ部306は、ジョブ読み出しテーブル313に記述された処理順番どおりに印刷ジョブを選択し、機器データベース部305に格納された当該印刷ジョブのジョブ情報とジョブスプーラ部304に格納された当該印刷ジョブのPDLデータを解析して、リアルタイムに描画処理可能な中間データを生成(これをトランスレートすると言う)し、その中間データを描画バッファ307に格納する。
描画バッファ307は、中間データをページ単位に印刷完了まで一時的に保持する。描画部308は、描画バッファ307から中間データを取得し、プリンタエンジン部309が行う用紙搬送処理に伴ってリアルタイムに中間データのレンダリングを行い、プリンタエンジン部309にビデオデータを送信する。プリンタエンジン部309は、既知の電子写真技術を用いて描画部308から送信されたビデオデータを基に、用紙に物理的に印刷を行う。
情報管理部310は、ホストコンピュータ200から送信されてきた管理パケットを受け取り、要求に応じて機器データベース部305から情報の獲得を行い、また印刷ジョブの取り消し指定(取り消し要求)、割り込み指定(割り込み要求)、印刷停止指定(印刷停止要求)、印刷再開指定(印刷再開要求)、優先印刷指定(優先印刷要求)を処理し、またジョブの終了や機器の異常を検知して自立的にホストコンピュータ200にその旨を通知するための管理パケットを発行する。
割り込み処理部312は、印刷ジョブの割り込みの指定が行われた時に、実際の割り込み処理を行う。停止/再開処理部315は、印刷ジョブの印刷停止(以下、停止と省略する)指定、印刷ジョブの印刷再開(以下、再開と省略する)指定が行われたときに、実際の停止処理、再開処理を行う。プロモート処理部316は、印刷ジョブの優先印刷(以下、プロモートとも言う)指定、が行われたときに、実際のプロモート処理を行なう。プロモート処理では、印刷ジョブの処理順序を優先的にあげる処理のことを言う。
ホストコンピュータ200の論理チャネル制御部206と印刷装置の論理チャネル制御部302との間で行われるデータ通信は、例えば、ネットワークの場合はTCP/IP、ローカルの場合はIEEE1284/IEEE1284.4などの規定のプロトコルにより、トランスポート層レベルの多重化が行われる。詳細の説明は、ここでは省略する。
論理的にジョブパケット生成部207から送信されるジョブパケットは、ジョブプリプロセッサ部303が受け取る。このジョブパケットが流れる論理的的な経路をジョブチャネルという。ユーティリティ部205と情報管理部310との間では、管理パケットが送受信される。この管理パケットが流れる論理的な経路を管理チャネルという。両チャネルは双方向通信が可能であると規定されているが、ジョブチャネルはホストコンピュータから>印刷装置への片方向でも、本実施の形態では構わない。ジョブチャネルと管理チャネルはOSI7階層におけるトランスポート層レベルで多重化されており、片方のチャネルのフロー処理が他方のチャネルに影響することはない。
次にジョブパケット及び管理パケットの構造について説明する。ジョブパケット及び管理パケットはアプリケーション層のプロトコルで規定されており、ヘッダ部、データ部(パラメータ部ともいう)から構成されるパケット構造になっている。1つの印刷ジョブは複数のジョブパケットから構成される。印刷ジョブを構成する一連のジョブパケットの集合をジョブスクリプトと呼ぶ。
図4はジョブパケットの構造を示す説明図である。縦軸はバイトを示し、横軸は各バイトのビットを示している。図中において0〜1バイト目のオペレーションコードは、パケットの機能を示す長さ2バイト(16ビット)のIDである。ジョブパケットにおいては以下の値を取ることができる。
0x0201:ジョブ開始オペレーション0x0202:ジョブ属性設定オペレーション0x0204:PDLデータ送信オペレーション0x0205:ジョブ終了オペレーション 2〜3バイト目のブロック番号は、ジョブパケットを送信した送信側が返答を要求する(返答要求)場合に、受信側からの返答が送信側のどの返答要求に対するものであるか、その対応を取るために使用される番号である。例えば、ホストコンピュータ200が、それぞれブロック番号=1、2、3のジョブパケットを立て続けに送信した時に、ブロック番号=2というエラーパケットが帰ってきたとする。この場合、ホストコンピュータは、2番目に送ったジョブパケットにエラーが発生したと特定することが可能である。
4〜5バイト目のパラメータ長はデータ部のバイト長さを示す領域で、0〜64Kバイトまでを示すことが可能である。
6〜7バイト目はジョブパケットの各種フラグを示すビットが格納される領域でそれぞれ以下の値を示す。
エラーフラグ:この値が1の場合、印刷装置で何らかのエラーが発生したことを示す。このフラグは印刷装置300からホストコンピュータ200に送られる返信パケットに付加される。
通知フラグ:この値が1の時は、ホストコンピュータ200から印刷装置300への要求パケットに対する返答ではなく、印刷装置300がなんらかの通知事項があることをホストコンピュータ200に通知することを示している。
継続フラグ:この値が1の場合、データ部にすべてのデータが入らなかったため、次のジョブパケットで残りのデータが送られることを示す。次のジョブパケットは前のパケットと同じオペレーションコード、ブロック番号を設定しなくてはならない。
返答要求:ホストコンピュータ200が、要求パケットに対する返答パケットを印刷装置300に要求する場合に1をセットする。0のときは要求パケットが正常に処理された場合には、返答パケットは返答されない。印刷装置でエラーが発生した場合には返答要求の0/1に関わらす、つねにエラーフラグを1にした返答パケットが送出される。
8〜9バイト目のユーザIDおよび10〜11バイト目のパスワードは、パケットでできる操作にセキュリティ的制限が設けられている際に、認証に使われる領域である。
12バイト目以降はオペレーションコードに対応した追加データが格納されるデータ部である。ジョブ開始オペレーションの場合、追加データとして、ジョブの実行モード(動作モード)が記述される。指定可能な動作モードコードは以下の通りである。
0x01:印刷ジョブの通常実行。当該印刷ジョブは通常印刷ジョブとして印刷装置のキューの最後に追加され、スケジューリングが回ってきたら印刷処理が行われる。
0x03:印刷ジョブのプロモート実行。当該印刷ジョブは、プロモート指定された印刷ジョブとして扱われ、当該印刷ジョブの印刷が優先して実行される。
0x04:印刷ジョブの割り込み実行。当該印刷ジョブは割り込み印刷ジョブとして扱われ、全ての印刷ジョブの処理が停止され、当該印刷ジョブの印刷が優先して実行される。
0x05:印刷ジョブの印刷停止。当該印刷ジョブは、投入と同時に停止印刷ジョブとして扱われ、当該印刷ジョブの印刷データの格納のみが行われ、実際の印刷は行われない。
図13は、プリンタドライバ部202が、ユーザに所望の処理方法(ジョブの実行モード)を指示させるために提供するグラフィックユーザインターフェースを示す図である。図13の画面において、ジョブの処理方法と書かれた欄に「印刷(R)」、「割り込み印刷(T)」、「停止印刷(E)」、「プロモート印刷(B)」という項目と、各項目に対するチェックボタンがある。チェックボタンは排他的に選択され、いずれかのボタンがチェックされると、他のボタンのチェックは解除される。「印刷」のチェックボタンがチェックされると実行モードは0x01となり、「割り込み印刷」のチェックボタンがチェックされると実行モードは0x04となる。
「停止印刷」のチェックボタンがチェックされると実行モードは0x05となる。「プロモート印刷」のチェックボタンがチェックされると実行モードは0x03となる。
ジョブ属性設定オペレーションの場合、追加データとして、設定を行いたいジョブ属性IDとジョブ属性値がデータ部に格納される。ジョブ属性IDとは、ジョブに関する属性或いは環境に対応した識別子を示すもので、ISO−10175(DPA)で規定されるジョブの属性に相当するIDが予め割り振られている。以下にジョブ属性の代表的なものを挙げる。
ジョブ属性ID0x0101:ジョブ名称0x0103:ジョブオーナ名0x016a:ジョブサイズ0x0002:ジョブ完了の通知アドレス この他、印刷装置の機能に応じて、印刷部数、モノクロ・カラーなどのジョブ属性に、それぞれ対応するIDが割り振られる。
PDLデータ送信オペレーションの場合は、追加データとして、PDLデータがデータ部に入る。1つのジョブパケットのデータは前記パラメータ長に格納できる最大サイズまでで、64KBまで格納可能であり、それ以上のデータは、PDLデータ送信オペレーションを有する複数のジョブパケットに分割して送信される。この場合は前記継続フラグに1を立てる。
ジョブ終了オペレーションの場合は追加データは存在しない。
次にホストコンピュータのジョブパケット生成部207を説明する。図5及び図6はジョブパケット生成部207の動作を示すフローチャートである。アプリケーション部201で印刷指示が選択されると、まずプリンタドライバ部202が起動し、プリンタドライバ部202が印刷データを送信バッファ203に格納し終えた後に、ジョブパケット生成部207は、処理を開始する。
まず、ステップ501において、当該印刷ジョブが割り込み指定されたか、停止指定されたか、プロモート指定されたかどうかを判断する。割り込み指定は、ユーザがプリンタドライバ部202のユーザインターフェースのプロパティ画面で、割り込み印刷を指定した場合に行われる。停止指定は、ユーザがプリンタドライバ部202のユーザインターフェースのプロパティ画面で、印刷ジョブの停止を指定した場合に行われる。プロモート指定は、ユーザがプリンタドライバ部202のユーザインターフェースのプロパティ画面で、プロモート印刷を指定した場合に行なわれる。
割り込み指定がある場合には、ステップ502において動作モードが0x04に設定される。停止指定がある場合には、ステップ503において動作モードが0x05に設定される。プロモート指定がある場合には、ステップ509において動作モードが0x03に設定される。割り込み指定でも、停止指定でも、プロモート指定でもない場合には、ステップ510において動作モードが0x01に設定される。
次に、ステップ504において、オペレーションコードが格納されている領域にジョブ開始オペレーションコード(=0x0201)が格納されているジョブパケットを論理チャネル制御部206に発行する。この時、ジョブパケットのデータ部に動作モードを示す値が設定され、通常ジョブであるか、割り込み印刷ジョブであるか、停止印刷ジョブであるか、プロモート印刷ジョブであるかの指定がなされる。
以降、ジョブ終了オペレーションが発行されるまで、全てのオペレーションは当該印刷ジョブのジョブ情報の設定に用いられる。
ステップ505において、ジョブの名称の設定が行われる。オペレーションコードが格納される領域にジョブ属性設定オペレーションコード(0x0202)を格納し、データ部に、ジョブ名称を示すジョブ属性ID(=0x0101)とジョブ属性値となる名称を格納して、ジョブパケットを生成し、そのジョブパケットを論理チャネル制御部206に発行する。
ステップ506において、ジョブの所有者の設定が行われる。図4のオペレーションコードが格納される領域にジョブ属性設定オペレーションコード(0x0202)を格納し、データ部に、ジョブ所有者を示すジョブ属性ID(=0x0103)とジョブ属性値となる所有者名を格納して、ジョブパケットを生成し、そのジョブパケットを論理チャネル制御部206に発行する。
ステップ507において、ジョブのサイズの設定が行われる。図4のオペレーションコードが格納される領域にジョブ属性設定オペレーションコード(0x0202)を格納し、データ部に、ジョブサイズを示すジョブ属性ID(=0x016a)とジョブ属性値となるジョブのデータサイズを格納して、ジョブパケットを生成し、そのジョブパケットを論理チャネル制御部206に発行する。
ステップ509では、当該印刷ジョブのジョブ完了を通知する際の通知先のアドレス(通知アドレス)の設定が行われる。ジョブ完了とは、印刷ジョブの最後の1ページの排紙が完了したことをいう。図4のオペレーションコードが格納される領域にジョブ属性設定オペレーションコード(0x0202)を格納し、データ部に通知先アドレスを示すジョブ属性ID(=0x0002)とジョブ属性値となるジョブ完了の通知先アドレスを格納して、ジョブパケットを生成し、そのジョブパケットを論理チャネル制御部206に発行する。
通知アドレスは、通常、印刷ジョブを送信したホストコンピュータの送信アドレスを示しており、送信元が1284.4を用いたローカルインターフェースであってソケットIDが0x10の場合は、“1284.4:0x20”という文字列となり、送信元がTCP/IPのIPアドレスが172.16.1.1であってポート番号が0xb9b9の場合には、“TCP/IP:172.16.1.1:0xb9b9”という文字列となる。
ステップ508において、変数sizeに送信すべきPDLデータのバイトサイズを代入する。
ステップ601において、変数sizeの大きさをチェックし、64Kより大きいかどうかを比較する。1つのジョブパケットのデータ部に格納できるデータのサイズは、パケットヘッダのパラメータ長が16ビットで表現されているため、最大64Kバイトという制限がある。そのため、それ以上のデータは複数のジョブパケットに分割して発行されることになる。
もしPDLデータのサイズが64Kよりも大きい時は、ステップ605において、図5のパケットヘッダの継続フラグを1に設定し、さらに、ステップ607において、図5のオペレーションコードが格納される領域にPDLデータ送信オペレーション(0x0204)を格納し、送信バッファ部403から64Kバイト分のPDLデータを取り出してデータ部に格納して、ジョブパケットを生成し、そのジョブパケットを論理チャネル制御部206に発行する。また、ステップ608において、送信した分の64Kをsizeから減じて、ステップ601の分岐に戻る。
ステップ601において、PDLデータのサイズ示す変数sizeが64K以下の場合は、後1回のPDLデータ送信オペレーションコードを有するジョブパケットで全PDLデータの送信が完了する。この場合、ステップ602において、図4のパケットヘッダの継続フラグを0にして、PDLデータの送信が最後であることを設定し、さらに、ステップ603において、図4のオペレーションコードが格納される領域にPDLデータ送信オペレーションコード(0x0204)を格納し、送信バッファ203から残り全てのPDLデータを取り出してデータ部に格納して、ジョブパケットを生成し、そのジョブパケットを論理チャネル制御部206に発行する。
最後に、ステップ604において、図4のオペレーションコードが格納される領域にジョブ終了オペレーションコード(0x0205)を格納して、ジョブパケットを生成し、そのジョブパケットを論理チャネル制御部206に発行して終了する。
次に、ジョブパケットを受け取るジョブプリプロセッサ部303の説明を行う。
図7はジョブプリプロセッサ部303の動作を示すフローチャートである。図7において、ジョブプリプロセッサ部303は、印刷装置300の起動時に起動され、以後印刷装置300の電源遮断まで処理を継続する。
まず最初に、ステップ701において、ジョブパケットの受信を行う。ジョブパケットを受信すると、ステップ702において、そのジョブパケットのオペレーションコードがジョブ開始オペレーションコードであるかかどうかを判定する。ここでジョブ開始オペレーション以外のオペレーションコードを有するジョブパケットが到着した場合には、不正動作となり、ステップ703において、そのジョブパケットの破棄が行われる。
ジョブ開始オペレーションコードであると判定されると、ステップ704において、当該印刷ジョブのジョブIDを獲得する。ジョブIDは、印刷装置300内で発行されるものであり、2バイトの番号として割り振られ、機器データベース部305におけるジョブ情報の読み書き処理のキーとして利用される。
次に、ステップ705において、ジョブパケットのデータ部に格納されている動作モードコードを調べて、動作モードがなにになっているかを判定する。
動作モードコードが0x01の場合は、ステップ706において、ジョブ読み出しテーブル313に当該印刷ジョブのジョブIDを登録(追加)する。このとき、後述するジョブ読み出しテーブルの停止フラグを確認して、停止フラグがFになっている印刷ジョブの最後尾に当該印刷ジョブを追加する。
0x04の場合は、ステップ707において、割り込み処理部312に対して当該印刷ジョブの割り込み印刷の指示を出す。このとき、ステップ704で獲得したジョブIDも、割り込み処理部312に送信する。
0x05の場合は、ステップ716において、ジョブ読み出しテーブル313に当該印刷ジョブのジョブIDを登録する。ただし、当該印刷ジョブは停止印刷ジョブであるため、ジョブIDをジョブ読み出しテーブル313の最後尾に追加し、更に、当該印刷ジョブの停止フラグをTに設定する。
0x03の場合は、ステップ715において、ジョブ読み出しテーブル313に当該印刷ジョブのジョブIDを登録する。ただし、当該印刷ジョブは、プロモート印刷ジョブであるため、ジョブIDを、後で説明するジョブ読み出しテーブル313のポインタが指すジョブIDの次にジョブIDを登録する。ポインタ801がいずれの印刷ジョブをも指していない場合には、ジョブ読み出しテーブル313の先頭に割り込ませる。
続いて、ステップ708において、次に来るジョブパケットの受け付けを行う。
ステップ709において、次に受信したジョブパケットのオペレーションコードが属性設定オペレーションコードであるかを判定する。属性設定オペレーションコードである場合は、ステップ710において、当該印刷ジョブのジョブ情報として機器データベース部305に登録する。この時キーとなるのは、ステップ704で獲得したジョブIDとジョブパケットのデータ部に格納されている属性IDおよび属性データ(属性値)である。
属性設定(ジョブ情報の登録)が完了すると、次のジョブパケットを受信するため、ステップ708に戻る。
ステップ711においては、受信したジョブパケットのオペレーションコードがPDLデータ送信オペレーションコードであるかどうか判定する。PDLデータ送信オペレーションコードである場合には、ステップ712において、ジョブスプーラ部304にPDLデータを格納する。この時、ステップ704で取得したジョブIDをキーにしてPDLデータを格納し、後でPDLデータを取り出すときには、ジョブIDをキーにして取り出せるようにしておく。一方、ジョブスプーラ部304では、ジョブIDとPDLデータとを関連付けて、PDLデータを格納しておく。ジョブスプーラ部304への追加が完了すると次のジョブパケットを受信するため、708に戻る。PDLデータ送信オペレーションコードでない場合には、ステップ713に進む。
ステップ713において、ジョブパケットのオペレーションコードがジョブ終了オペレーションコードであるかどうかを判定する。ジョブ終了オペレーションコードである場合には、一連のループを抜けてステップ701の初期状態に戻る。
ジョブパケットのオペレーションコードがいずれのオペレーションコードにも該当しない場合には、不正なジョブパケットであると判断して、ステップ714においてジョブパケットを破棄する。
以上の動作によって、ジョブプリプロセッサ部303は、ジョブパケットのジョブ情報を機器データベース部305に、ジョブパケットのPDLデータをジョブスプーラ部304に振り分ける。
次に、情報管理部310が行なうジョブ完了通知について説明する。図15は、情報管理部310が行うジョブ完了処理の動作を示すフローチャートである。まず、ステップ1501において、最後のページの排紙が完了した印刷ジョブについて、機器データベース部305の当該印刷ジョブのジョブ属性を調べて、ジョブ完了の通知アドレスが設定されているか否かを判定する。
通常、ジョブパケット生成部207は、図5のステップ509において、通知アドレスを有するジョブパケットを生成しているため、ステップ1501ではyesになる。
すると、ステップ1502において、完了通知イベントが通知アドレスに送信される。完了通知イベントは、ジョブパケットと同様に、図4のようなパケット構造をしている。ただし、完了通知イベントのオペレーションコードは0x000aであり、通知フラグのビットと返答送信のビットが1になる。データ部には、ジョブ完了を示すイベントID(=0x0008)と、印刷装置300に複数の排紙ビンがある場合には排紙がなされた排紙ビンのビン番号が格納される。
ユーティリティ部205は、完了通知イベントを受信すると、ポップアップダイアログを表示して、グラフィックユーザインターフェースを用いてユーザに印刷ジョブの印刷処理が完了したことを報せる。図16は、このポップアップダイアログの一例である。
ユーティリティ部205の説明を行う。ユーティリティ部205は、ユーザが、印刷ジョブのリストや属性の表示、印刷ジョブの取り消し、印刷ジョブの割り込み指定、印刷ジョブの停止指定或いは再開指定、印刷ジョブのプロモート指定等の操作を行うのに使用される。
ユーティリティ部205で行われた操作は、管理チャネルを介して、管理パケットがホストコンピュータ200と印刷装置300との間で送受信されることにより実現される。管理パケットは、ジョブパケットと同様、図4に示すようなデータ構造を持つ。0〜11バイト目のパケットヘッダの各情報の内容もジョブパケットと同様である。ただし、オペレーションコードのみが以下のように異なる。
0x010b:印刷ジョブのキャンセル指定0x0123:印刷ジョブの割り込み指定0x010d:印刷ジョブのリスト獲得0x0120:印刷ジョブの停止指定0x0121:印刷ジョブの再開指定0x0022:印刷ジョブのプロモート指定0x0105:属性の設定0x0106:属性の獲得0x0110:印刷装置の停止指定0x0111:印刷装置の復帰指定0x011a:印刷装置のリセット指定 管理パケットは、ジョブパケットと異なり、は個々のパケットが固有の目的に使用される。
印刷ジョブが、ジョブパケットという形で印刷装置300に送信されると、印刷装置300では、ジョブプリプロセッサ部303の働きにより、機器データベース部305に、ジョブIDとジョブ情報が格納される。
ユーティリティ部205が印刷装置300にどの印刷ジョブが投入されているかを知りたい時は、印刷ジョブのリスト獲得のオペレーションコード(0x010d)を有した管理パケットを管理チャネルに送信する。データ部には、獲得したいオブジェクトである印刷ジョブクラスを示すオブジェクトID=0x0102を格納する。そして、この管理パケットが,論理チャネル制御部206、I/Fドライバ部204、インターフェイス210、インターフェイス311、I/Fドライバ部301、論理チャネル制御部302を介して、情報管理部310に送られる。
情報管理部310は、受け取った管理パケットのオペレーションコードから印刷ジョブのリスト獲得だと認識し、機器データベース部305に蓄えられた印刷ジョブのリスト情報を獲得して、そのリスト情報が格納された返信パケットを返信する。返信パケットのデータ部には、印刷装置300で認識されている印刷ジョブの個数、および、各印刷ジョブのジョブIDのリストが格納されている。
各印刷ジョブが、ジョブ属性設定オペレーションによりジョブ名称、オーナ、サイズの情報を持っている場合、ユーティリティ部205は印刷ジョブに関する詳細な情報を獲得可能である。そのために、ユーティリティ部205は、印刷ジョブのリストを獲得した後、属性の獲得のオペレーションコード(=0x0106)を有した管理パケットを印刷装置300に送信する。管理パケットのデータ部には、獲得したい印刷ジョブのジョブID、獲得したい属性の属性IDを指定する。例えば、ジョブIDが1の印刷ジョブのジョブ名称を獲得したい場合には、ジョブIDに1、属性IDに0x0101を指定する。
情報管理部310は、受け取った管理パケットのオペレーションコードから属性の獲得だと認識し、機器データベース部305から、指定されたジョブIDの、指定された属性IDの属性値を獲得し、その値が格納された返信パケットを返信する。
図14は、ユーティリティ部205のジョブリスト表示のユーザインターフェースを示す図である。図14では、装置名「LSHOT P−840」の印刷装置におけるジョブリストが表示されている。ここでは、印刷装置内に印刷ジョブが1つだけ存在している。
ユーティリティ部205が、印刷ジョブのリスト獲得のオペレーションコードを有する管理パケットを発行して、印刷ジョブのリストを獲得し、更に、その印刷ジョブのリストの中の個々の印刷ジョブの属性を獲得するオペレーションコードを有する管理パケットを発行して、各印刷ジョブの属性を獲得し、これらの情報をもとに表示が行われる。
図14では、ジョブ名称が「http://www...」の印刷ジョブが1つあり、この印刷ジョブは現在印刷中で、オーナ名が「toitoi」で、サイズが16Kバイトであることが示されている。
ユーザは、図14のユーザインターフェースにおいて、追加操作することができる。ユーザは、マウスを用いて、画面に表示されている所望の印刷ジョブの欄にカーソルを移動して、マウスの右ボタンを押下する。すると、追加メニューとして、「印刷ジョブのキャンセル」、「印刷ジョブの割り込み印刷」、「印刷ジョブの印刷停止」、「印刷ジョブの再開印刷」、「印刷ジョブの優先印刷」との選択画面が表示され、いずれを選択することができる。
ユーザが「印刷ジョブのキャンセル」を選択した場合、印刷ジョブのキャンセル指定のオペレーションコードを有し、データ部に当該印刷ジョブのジョブIDが格納された管理パケットが生成され、印刷装置300に向けて送信される。
ユーザが「印刷ジョブの割り込み印刷」を選択した場合、印刷ジョブの割り込み指定のオペレーションコード(=0x0123)が格納された管理パケットが印刷装置300に送信される。この管理パケットのデータ部には、割り込み指定された印刷ジョブのジョブIDが格納される。
ユーザが、「印刷ジョブの印刷停止」を選択した場合、印刷ジョブの停止指定のオペレーションコード(=0x0120)が格納された管理パケットが印刷装置300に送信される。この管理パケットのデータ部には、停止指示された印刷ジョブのジョブIDが格納される。
ユーザが、「印刷ジョブの印刷再開」を選択した場合、印刷ジョブの再開指定のオペレーションコード(=0x0121)が格納された管理パケットが印刷装置300に送信される。この管理パケットのデータ部には、再開指示された印刷ジョブのジョブIDが格納される。
ユーザが、「印刷ジョブの優先印刷」を選択した場合、印刷ジョブのプロモート指定のオペレーションコード(=0x0022)が格納された管理パケットが印刷装置300に送信される。この管理パケットのデータ部には、優先印刷指示された印刷ジョブのジョブIDが格納されている。
最後に、ジョブ読み出しテーブル313について説明する。図8は、ジョブ読み出しテーブルを表す説明図である。PDLトランスレータ部306は、このジョブ読み出しテーブル313に記述された処理順番どおりに印刷ジョブを選択して、選択した印刷ジョブのPDLデータをトランスレート処理していく。
8−1のジョブ読み出しテーブルには、ジョブIDが1〜4の印刷ジョブが登録されている。従って、PDLトランスレータ部306はトランスレートを実行する時、読み出しテーブルの上から順番に、ジョブIDが1の印刷ジョブ、ジョブIDが2の印刷ジョブ、ジョブIDが3の印刷ジョブ、ジョブIDが4の印刷ジョブという順に印刷ジョブを選択して、これらの印刷ジョブのPDLデータをトランスレートする。
ジョブプリプロセッサ部303が、ジョブ読み出しテーブル313にジョブIDが5の印刷ジョブを追加した場合、8−2のジョブ読み出しテーブルのように、ジョブIDが5の印刷ジョブはジョブ読み出しテーブルの最後に追加される。
プリンタエンジン部がジョブIDが1の印刷ジョブの最後のページの排紙を完了すると、8−3のジョブ読み出しテーブルのように、ジョブIDが1の印刷ジョブはジョブ読み出しテーブルから削除される。
以上のようにジョブ読み出しテーブル313はPDLトランスレータ部が処理する印刷ジョブの処理順番を示し、印刷ジョブの処理順序を制御するのに用いられる。
なお、PDLトランスレータ部306がどの印刷ジョブのPDLデータを読み出して処理しているかを示すのが、ポインタ801である。PDLトランスレータ部306がある印刷ジョブのPDLデータをすべてトランスレート処理し終わると、ポインタ801はその印刷ジョブの次の印刷ジョブを指すようになる。図8では、ジョブIDが2の印刷ジョブのPDLデータが、PDLトランスレータ部306により読み出されている。PDLトランスレータ部306がジョブIDが2の印刷ジョブのPDLデータをすべてトランスレート処理素すると、次は、ポインタ801はジョブIDが3の印刷ジョブを指す。
停止フラグは、その印刷ジョブに対して停止指定がされているか否かを示すフラグである。この停止フラグがTrue(T)になっている場合には、その印刷ジョブは停止されており、False(F)になっている場合には、その印刷ジョブは停止されていない。なお、図8のジョブ読み出しテーブルでは、ジョブIDが1〜5の印刷ジョブは全て停止指示されておらず、停止印刷ジョブは存在しない。
以下、割り込み処理、停止/再開処理、プロモート処理について説明する。
<割り込み処理>
まず、割り込み処理について説明する。
ジョブプリプロセッサ部303が、図7のステップ705において、印刷ジョブの割り込み指定を認識すると、ステップ715において、割り込み処理部に対して割り込み指示を行う。この時、割り込みが行われる印刷ジョブのジョブIDも通知される。
図9は割り込み処理部312の動作を示すフローチャートである。割り込み処理部312は、まず、ステップ909において、割り込み指示がされたかどうかを判定する。割り込み指示がされると、ステップ901において、PDLトランスレータ部306に対して、現在処理している印刷ジョブの処理中止を指示する。指示されたPDLトランスレータ部306は、現在行っているトランスレート処理を直ちに中断する。
次にステップ902において、描画バッファ307に中間データがある場合にはそれらの中間データの削除を行う。なお、中間データの削除は、実際にデータを消すことだけを指すのではなく、その中間データを無効にすることも含む。さらにステップ904において、プリンタエンジン部309に処理の中止を指示する。ただし、プリンタエンジン部309が、現在まさに印刷中であったり、排紙中であったりする場合に、処理を中止するとジャムが発生する可能性がある。そのため、印刷中や排紙中の場合は、それらの処理の中止は行われない。
そして、ステップ911において、割り込まれた印刷ジョブのすでに排紙が完了したページ数をプリンタエンジン部309から取得し、当該印刷ジョブのジョブ情報として機器データベース部305に記憶しておく。なお、このステップは、プリンタエンジン部309自身が行ってもよく、この場合、プリンタエンジン部309が、割り込み処理部312から処理中止の指示を受けたときに、割込まれた印刷ジョブについてすでに排紙が完了したページ数を情報管理部310に送信し、情報管理部310がその情報を当該印刷ジョブのジョブ情報として機器データベース部305に記憶しておく。
ステップ905において、割り込み指示された印刷ジョブのジョブIDをジョブ読み出しテーブル313の先頭に追加する。このとき、ポインタ801はこの印刷ジョブのジョブIDを指すようにポイント移動する。このジョブIDは、ジョブプリプロセッサ部303から割り込み指示とともに通知されてきたものである。これによって、ジョブ読み出しテーブル313において、次に処置される印刷ジョブが割り込み指示された印刷ジョブとなる。
さらにステップ906において、PDLトランスレータ部306に処理再開の指示を出す。すると、PDLトランスレータ部306は読み出しテーブル313のポインタ810を見て、読み出しテーブル313のポインタ810が指す印刷ジョブ(この場合、割り込み指示された印刷ジョブ)のPDLデータをジョブスプーラ部304から取り出してトランスレート処理を行う。また、ステップ907においては、描画部308に処理再開の指示を出し、最後にステップ908においてプリンタエンジン部に処理再開の指示を出す。
図10は割り込み処理がされた場合のジョブ読み出しテーブル313の状態を示す説明図である。この図では、停止フラグは省略されている。10−1のジョブ読み出しテーブルにおいて、ジョブIDが1〜4の通常印刷ジョブが投入されている状態で、ジョブIDが5の割り込み印刷ジョブが投入されてきたときを説明する。ジョブIDが5の割り込み印刷ジョブが投入されると、割り込み処理部312が、図9のステップ905において、ジョブIDが5の印刷ジョブがジョブ読み出しテーブルの先頭に追加し、10−2のジョブ読み出しテーブルになる。
そして、処理再開の指示をされたPDLトランスレータ部306は、ジョブ読み出しテーブル313に記述された順番に印刷ジョブのトランスレートを行うため、以後、ジョブIDが5の印刷ジョブ、ジョブIDが1の印刷ジョブ、ジョブIDが2の印刷ジョブ、ジョブIDが3の印刷ジョブ、ジョブIDが4の印刷ジョブといった順に印刷ジョブがトランスレート処理される。
なお、ジョブ読み出しテーブルが10−1の状態で、ジョブIDが1の印刷ジョブが排紙途中に割り込まれた場合、図9のステップ911で、ジョブIDが1の印刷ジョブにおいて排紙が完了したページ数が当該印刷ジョブのジョブ情報として機器データベース部305に記憶される。そして、ジョブIDが1の印刷ジョブが再びジョブ読み出しテーブルの先頭に来て、当該印刷ジョブのPDLデータがPDLトランスレータ部306によりトランスレート処理されはじめるが、描画部308は、印刷ジョブの排紙が完了したページ数の情報に基づいて排紙完了したページの描画処理をスキップする。これによって、割り込まれた印刷ジョブの復帰を行う際に、割り込まれる前の印刷ページと割り込まれた後の印刷ページの重複を避けることができ、同じページが2度印刷されるのを防ぐことができる。
前述では、ジョブ開始オペレーションコードを有するジョブパケットのデータ部に格納された動作モードを見て割り込み処理を行うかどうかの判断をしていたが、通常ジョブとして投入されたジョブに関して後で割り込み指定を行うことも可能である。
前に説明したように、図14の画面において、ユーザが「印刷ジョブの割り込み印刷」を選択した場合、印刷ジョブの割り込み指定のオペレーションコード(=0x0123)が格納された管理パケットが印刷装置300に送信される。この管理パケットのデータ部には、割り込み指定された印刷ジョブのジョブIDが格納される。
情報管理部310は、受け取った管理パケットのオペレーションコードから、印刷ジョブの割り込み指定だと認識し、割り込み処理部312に割り込みの指示を行う。この場合、ジョブプリプロセッサ部303からの割り込み指示と異なり、割り込みジョブは新規追加ではなく、すでにある印刷ジョブが割り込みジョブに変化するのである。そのため、割り込み処理部312の処理が若干異なる。
図11は、割り込み処理部312の動作を説明するフローチャートである。図9のフローチャートとほぼ同等ではあるが、ステップ1105では、ジョブ読み出しテーブル313において、割り込み指定されたジョブのジョブIDを元の位置から先頭へ移動する点で異なる。なお、このステップでは、ポインタ801は、割込み指定された印刷ジョブのジョブIDを指すようにポイント移動する。
図12は、割り込み処理がされた場合のジョブ読み出しテーブル313の状態を表す説明図である。12−1のジョブ読み出しテーブルにおいて、ジョブIDが1〜4の通常印刷ジョブが投入されている状態で、ジョブIDが4の印刷ジョブがユーティリティ部205から割り込み指定されたときを説明する。ジョブIDが4の印刷ジョブが割込み指定されると、割り込み処理部312が、図11のステップ1105において、ジョブIDが4の印刷ジョブをジョブ読み出しテーブルの先頭に移動し、12−2のジョブ読み出しテーブルになる。
そして、処理再開の指示をされたPDLトランスレータ部306は、ジョブ読み出しテーブルに記述された順番に印刷ジョブのトランスレートを行うため、以後、ジョブIDが4の印刷ジョブ、ジョブIDが1の印刷ジョブ、ジョブIDが2の印刷ジョブ、ジョブIDが3の印刷ジョブといった順に印刷ジョブがトランスレート処理される。
なお、ジョブIDが1の印刷ジョブが排紙途中で割り込まれた場合、図11のステップ1111で、ジョブIDが1の印刷ジョブにおいて排紙が完了したページ数が当該印刷ジョブのジョブ情報として機器データベース部305に記憶される。そして、ジョブIDが1の印刷ジョブが再びジョブ読み出しテーブルの先頭に来て、当該印刷ジョブのPDLデータがPDLトランスレータ部306によりトランスレート処理され始めるが、描画部308は、印刷ジョブの排紙が完了したページ数のジョブ情報に基づいて排紙完了したページの描画処理をスキップする。これによって、割り込まれた印刷ジョブの復帰を行う際に、割り込まれる前の印刷ページと割り込まれた後の印刷ページの重複を避けることができ、同じページが2度印刷されるのを防ぐことができる。
なお、割り込み指定がされた印刷ジョブの印刷物(印刷された用紙)は、割り込まれた印刷ジョブの印刷物の途中ページの後に出力されるため、その後割り込まれた印刷ジョブの印刷物の残りのページが出力されると、割り込まれた印刷ジョブの印刷物の中に、割り込んだ印刷ジョブの印刷物が混じってしまう可能性がある。これを混載問題という。
従って、印刷装置によっては排紙ビンを複数もつものがあるので、割り込み印刷ジョブの印刷物と割り込まれた印刷ジョブの印刷物で、排紙口を自動的に変更することによって、混載問題を回避することが可能である。
割り込み印刷は、割込まれる印刷ジョブに影響を与え、その割込まれた印刷ジョブの所有者に迷惑をかける。そのため、割り込み印刷を行えるユーザを制限したいという要望がある。ここでは、割り込み印刷の制限を実現する方法について説明する。
まず、印刷装置300の操作パネル314で割り込み印刷の制限を設定する方法を説明する。図17は、操作パネル314の液晶表示(LCD)を示す図である。印刷装置300では、印刷ジョブの印刷処理が行われていないときに、ユーザが操作パネル314を操作することにより、各種環境変数の書き換えが可能である。ユーザは操作パネル314を操作して、図17のように「ワリコミインサツショリ」のメニューを表示させる。そして、操作パネル314にある左右キーを押すことで、「ツカウ」、「ツカワナイ」を表示させることができ、表示されている方が設定値として環境変数に書き込まれる。設定値が「ツカウ」となっている場合には、割り込み印刷が行われるが、設定値が「ツカワナイ」となっている場合には、割り込み印刷が無効になる。図18は、割り込み印刷の制限が考慮された場合の、ジョブプリプロセッサ部303の動作を示すフローチャートである。図7のフローチャートと異なる点は、ステップ1817において、環境変数「ワリコミインサツショリ」の設定値が「ツカウ」になっているか否かを判定している点である。ステップ1817において「ツカウ」になっている場合には、ステップ1807において、割り込み処理部312に割り込み指示を出す。しかし、ステップ1817において、設定値が「ツカワナイ」になっている場合には、割り込み印刷の指示を出さずに、ステップ1806に進む。
このように、操作パネルで環境変数に設定値を設定することで、印刷装置が割込み印刷の処理を行えるようにするか否かを制限することできる。
次に、ある特定のユーザ、例えば、管理者のみが割り込み印刷を行えるようにする場合の方法について説明する。まず、印刷装置300の属性として、管理者ユーザIDと管理者パスワードという属性を設け、それらの属性値を機器データベース部305に記憶しておく。これは、それぞれ2バイトで表現可能な任意の数字とする。この属性値は、印刷装置300の設置時に、ユーティリティ部205或いは操作パネル314から設定される。
そして、印刷ジョブが印刷装置300に投入されたときに、ジョブ開始のオペレーションコードを有するジョブパケットのユーザID及びパスワード(図4の8〜11バイト目)が、それぞれ管理者ユーザID及び管理者パスワードと一致した場合のみ、当該印刷ジョブの割り込み指定が有効と判断され、ジョブプリプロセッサ部303が割り込み処理部312に割り込み指示を出せるようにする。
なお、管理者がプリンタドライバ部202で割り込み印刷を指定する場合には、ポップアップダイアログが表示され、ユーザIDとパスワードの入力を求められる。そして、この入力値は、ジョブパケット生成部207がジョブ開始のオペレーションコードを有するジョブパケットを生成する際に用いられ、そのジョブパケットのユーザID及びパスワードが格納される領域に格納される。
これにより、特定のユーザのみが割込み印刷を行えるように制限することができる。
土に、管理者以外でも、複数の特定ユーザが割り込み印刷を行えるようにする場合の方法について説明する。まず、印刷装置300の属性として、割り込み印刷を行うことを許可されたユーザのユーザIDとパスワードのリストの属性を設け、その属性値を機器データベース部305に記憶しておく。なお、この属性の属性値の変更、例えば、リストへのユーザIDとパスワードの追加、は、管理者がユーティリティ部205或いは操作パネル314から設定することにより行われる。
そして、ユーザがプリンタドライバ部202で割り込み印刷を指定する場合には、ポップアップダイアログが表示され、ユーザIDとパスワードの入力を求められる。そして、この入力値は、ジョブパケット生成部207がジョブ開始のオペレーションコードを有するジョブパケットを生成する際に用いられ、そのジョブパケットのユーザID及びパスワードが格納される領域に格納される。
この印刷ジョブが印刷装置300に投入されたときに、ジョブ開始のオペレーションコードを有するジョブパケットのユーザID及びパスワード(図4の8〜11バイト目)が、リストにあるユーザID及びパスワードと一致した場合のみ、当該印刷ジョブの割り込み指定が有効と判断され、ジョブプリプロセッサ部303が割り込み処理部312に割り込み指示を出せるようにする。
これにより、割り込み印刷を行うことを許可されたユーザのみが、割り込み印刷を行えるように制限することができる。
<停止/再開処理>
次に、停止/再開処理について説明する。
図19は、停止/再開処理を説明するためのジョブ読み出しテーブルを表す説明図である。19−1の読み出しテーブルには、ジョブIDが1〜4の印刷ジョブが登録されている。
停止フラグは、その印刷ジョブに対して停止指示がされているか否かを示すフラグである。この停止フラグがTrue(T)になっている場合には、その印刷ジョブは停止されており、False(F)になっている場合には、その印刷ジョブは停止されていない。なお、19−1のジョブ読み出しテーブルでは、ジョブIDが1〜3の印刷ジョブは停止指示されておらず、ジョブIDが4の印刷ジョブは、停止印刷ジョブである。
従って、PDLトランスレータ部306はトランスレートを実行する時、読み出しテーブルの上から順番に印刷ジョブを選択して、これらの印刷ジョブのPDLデータをトランスレートする。ただし、停止フラグがTになっている印刷ジョブのPDLデータは選択してトランスレートするということを行わない。
ジョブプリプロセッサ部303が、ステップ706において、ジョブ読み出しテーブル313にジョブIDが5の印刷ジョブを追加する場合、19−2のジョブ読み出しテーブルのように、停止フラグがFになっている印刷ジョブの最後尾に、ジョブIDが5の印刷ジョブを追加する。すなわち、ジョブIDが3の印刷ジョブとジョブIDが4の印刷ジョブの間にジョブIDが5の印刷ジョブが追加される。ジョブIDが5の印刷ジョブは、停止指定されていないので、停止フラグはFになる。
プリンタエンジン部がジョブIDが1の印刷ジョブの最後のページの排紙を完了すると、19−3のジョブ読み出しテーブルのように、ジョブIDが1の印刷ジョブはジョブ読み出しテーブルから削除される。
ジョブプリプロセッサ部303が、印刷ジョブの動作モードが印刷停止であると認識すると、図7のステップ716において、ジョブ読み出しテーブル313に当該印刷ジョブのジョブIDを登録する。ただし、当該印刷ジョブは停止印刷ジョブであるため、ジョブIDをジョブ読み出しテーブル313の最後尾に追加し、更に、当該印刷ジョブの停止フラグをTに設定する。
図21は、停止処理がされた場合のジョブ読み出しテーブル313の状態を示す説明図である。21−1のジョブ読み出しテーブルにおいて、ジョブIDが1〜4の印刷ジョブが投入されている状態で、ジョブIDが5の停止印刷ジョブが投入されてきたときを説明する。
ジョブIDが5の停止印刷ジョブが投入されると、ジョブプリプロセッサ部303が、当該印刷ジョブをジョブ読み出しテーブル313の停止フラグがFになっている印刷ジョブの最後尾に追加し、更に、当該印刷ジョブの停止フラグをTにする。それが、21−2のジョブ読み出しテーブルである。
PDLトランスレータ部306は、ジョブ読み出しテーブルに記述された処理順番に従って、ジョブIDが1の印刷ジョブ、ジョブIDが2の印刷ジョブ、ジョブIDが3の印刷ジョブ、ジョブIDが4の印刷ジョブのPDLデータを順にトランスレート処理すると、停止フラグがTになっているジョブIDが5の印刷ジョブのみが残ったままになる。この停止指示されているジョブIDが5の印刷ジョブは、再開指示が出され、停止フラグがFになったのちに、PDLトランスレータ部306によりPDLデータがトランスレート処理される。
いままでは、停止印刷ジョブを投入するときの処理について説明してきたが、この停止印刷ジョブの印刷再開の指示を後で行うことが可能である。
それでは、ユーザがユーティリティ部205から再開指定を行う方法について説明する。図14のユーザインタフェースにおいて、ユーザが「印刷ジョブの印刷再開」を選択すると、再開指定のオペレーションコードを有する管理パケットが印刷装置300に送信される。なお、この管理パケットのデータ部には、再開指示された印刷ジョブのジョブIDが格納されている。
情報管理部310は、受け取った管理パケットのオペレーションコードから、印刷ジョブの再開指定だと認識し、停止/再開処理部315に再開指示を行う。このとき、再開指示された印刷ジョブのジョブIDも停止/再開処理部315に送信される。すると、停止/再開処理部315は、図20のステップ2005〜2008のフローチャートに従って、再開処理を行う。
また、ジョブ開始オペレーションコードを有するジョブパケットのデータ部に格納された動作モードに従って停止処理を行うかどうかを判定していたが、通常印刷ジョブとして投入された印刷ジョブに対して後で停止指定を行うことも可能である。
ユーザがユーティリティ部205から停止指定を行う方法について説明する。図14のユーザインターフェースにおいて、ユーザが「印刷ジョブの印刷停止」を選択すると、停止指示のオペレーションコードを有する管理パケットが印刷装置300に送信される。なお、この管理パケットのデータ部には、停止指示された印刷ジョブのジョブIDが格納されている。
情報管理部310は、受け取った管理パケットのオペレーションコードから、印刷ジョブの印刷停止指定だと認識し、停止/再開処理部315に停止指示を行う。このとき、停止指示された印刷ジョブのジョブIDも停止/再開処理部315に送信される。すると、停止/再開処理部315は、図20のステップ2001〜2005のフローチャートに従って、再開処理を行う。
図21は、情報管理部310から停止/再開処理部315に、停止指示或いは再開指示が送られたときの停止/再開処理部315の動作を説明するフローチャートである。まず、停止/再開処理部315は、ステップ2001において、停止指示が送られてきたのかどうかを判定する。停止指示がない場合には、ステップ2005に進む。
停止指示が送られていると、ステップ2002において、停止指示された印刷ジョブのPDLデータの読み出しがすでに行われているかどうかの判定を行う。情報管理部310から送られてきた停止指示された印刷ジョブのジョブIDから、当該印刷ジョブのPDLデータが既にPDLトランスレータ部306により読み出されている場合には、停止処理を行なわないようにステップ2001に戻る。これは、ジョブ読み出しテーブル313のポインタ801がどの印刷ジョブを指しているかで判断できる。ジョブ読み出しテーブルにおいて、ポインタ801が指している印刷ジョブから上にある印刷ジョブは、既に読み出しが行なわれている。
読み出しが行われていなければ、ステップ2003において、停止指示された印刷ジョブのジョブIDをジョブ読み出しテーブル313の最後尾に移動する。更に、ステップ2004において、当該印刷ジョブの停止フラグをTに設定する。これによって、当該印刷ジョブは停止印刷ジョブになり、当該印刷ジョブの再開指示が出されるまで、印刷処理されない。
つづいて、ステップ2005において、再開指示が送られてきたかどうかを判定する。再開指示がない場合には、ステップ2001に戻る。
再開指示が送られてきていれば、次は、ステップ2006において、再開指示された印刷ジョブが実際に停止されているかを調べる。これは、読み出しテーブルの停止フラグがTになっているか、Fになっているかで判断できる。停止されていなければ、ステップ2001に戻る。
再開指示された印刷ジョブが停止されていれば、ステップ2007において、再開指示された印刷ジョブの停止フラグをFに設定し、ステップ2008において、この印刷ジョブのジョブIDを停止フラグがFになっている印刷ジョブの最後尾に移動する。
図22は、停止処理された場合のジョブ読み出しテーブル313の状態を表す説明図である。22−1のジョブ読み出しテーブルにおいて、ジョブ1〜4の通常印刷ジョブが投入されている状態で、ジョブIDが3の印刷ジョブがユーティリティ部205から停止指定されたときを説明する。ジョブIDが3の印刷ジョブが停止指定されると、停止/再開処理部315が、図21のステップ2002において、ジョブIDが3の印刷ジョブをジョブ読み出しテーブルの最後尾に移動し(22−2のジョブ読み出しテーブル)、ステップ2003において、当該印刷ジョブの停止フラグをTに設定する。すると、22−3のジョブ読み出しテーブルになる。
PDLトランスレータ部306は、ジョブ読み出しテーブルに記述された順番に印刷ジョブのPDLデータのトランスレート処理を行なうことにより、ジョブIDが1、2、4の印刷ジョブが順に処理され、停止印刷ジョブとなったジョブIDが3の印刷ジョブのみが残ったままになる。なお、この停止印刷ジョブは、再開指示により、停止フラグがFに設定されたのちに、PDLトランスレータ部306によりPDLデータがトランスレート処理される。
なお、前述の停止処理では、停止印刷ジョブはジョブ読み出しテーブル313の最後尾に追加されたが、読み出しテーブルでの位置は移動せず、停止フラグをTに設定するだけの方法もある。PDLトランスレータ部306は、停止フラグがTになっている印刷ジョブは読み飛ばし(選択を飛ばし)、停止フラグがFになっている印刷ジョブのPDLデータをトランスレート処理していくので、この場合も、停止フラグがTになっている停止印刷ジョブのみが残ったままになる。ただし、印刷ジョブの選択され方が前述と異なる。
すなわち、図23の23−1のジョブ読み出しテーブルにおいて、ジョブIDがジョブIDが3の印刷ジョブが停止指定された場合、印刷ジョブの順序は変えずに、停止フラグだけをTに設定すると、23−1のジョブ読み出しテーブルになる。そして、ジョブIDが1の印刷ジョブのトランスレート処理が完了すると、23−2のジョブ読み出しテーブルになる。
更に、ここで、ジョブIDが3の印刷ジョブに対して再開指定がされると、ジョブの順序は変えずに、停止フラグのみをFに設定し直すので、23−3のジョブ読み出しテーブルになる。
こうすると、前述の停止処理では、停止指示された印刷ジョブは最後尾に追加されるが、この場合の停止処理では、停止指示された印刷ジョブが即座に再開指示されると、停止指示されたときの順番に近い順番で印刷が行なわれる。
以上の停止処理において、印刷装置300内に停止印刷ジョブが存在しても、印刷装置300の外見からは確認し難い。そのため、停止印刷ジョブが存在する状態で印刷装置300の電源が切断される恐れがある。すると、ジョブスプーラ部304にPDLデータが残ったままになってジョブスプーラ部304の記憶容量が圧迫され、当該印刷ジョブを投入したユーザは、印刷が行なわれないために再度印刷指示を出すなどが生ずる恐れがある。そのため、印刷装置300の電源切断時に次のような処理を行なう。
図24は、電源切断時の処理を示すフローチャートである。また、図25及び図26は、操作パネル314の表示例を示す図である。図26の電源スイッチが押されたときに、図24の処理が開始される。まず、ステップ2401において、ジョブ読み出しテーブル313を確認して、停止印刷ジョブが存在しないかどうか判定する。存在しないのであれば、ステップ2404において、電源切断処理を実行して一連の処理を終了する。
存在するのであれば、ステップ2402において、図26のように、停止印刷ジョブが残っていることを操作パネルに一定時間(例えば、5秒間)表示する。更に、ステップ2403にいて、電源スイッチが押されているかいなかを再度判定する。
電源スイッチが押されている場合には、ステップ2404において、電源切断処理を実行して一連の処理を終了する。
一方、ステップ2403において、電源スイッチが押されていないと判定された場合には、電源切断処理を行なわず(電源切断をせず)に、一連の処理を終了する。
以上は、操作パネル314の電源スイッチが押された場合について説明したが、ユーザが、ホストコンピュータ200のユーティリティ部205から電源切断を指示できるようにした場合に、図24のフローチャートに従って、図26のようなダイアログ画面をホストコンピュータ200のユーザインターフェースに表示させるようにしてもよい。
<プロモート処理>
次に、印刷ジョブの優先印刷(プロモート印刷)について説明する。
割り込み印刷は、割込まれた印刷ジョブのトランスレート処理を中止して、復帰後あらためて割込まれた印刷ジョブのトランスレート処理を行なうため、トランスレート処理が複数回実行され、その分、印刷装置300全体のスループットが低下する可能性がある。
そこで、既に印刷処理が行なわれている印刷ジョブは中止させない程度に、指定された印刷ジョブの印刷順位を優先的に上げることによって、印刷装置300全体のスループットを低下させずに、印刷ジョブを至急に出力させることが可能である。
そこで、ジョブプリプロセッサ部303は、プロモート印刷ジョブを受信すると、図7のステップ706において、ジョブ読み出しテーブル313において、ポインタ801が指す印刷ジョブのジョブIDの次に、プロモート指定された印刷ジョブのジョブIDを登録する。ポインタ801がいずれの印刷ジョブをも指していない場合には、ジョブ読み出しテーブル313の先頭に割り込ませる。
また、ジョブ開始オペレーションコードを有するジョブパケットのデータ部に格納された動作モードに従ってプロモート処理を行うかどうかを判定していたが、通常印刷ジョブとして投入された印刷ジョブに対して後でプロモート指定を行うことも可能である。
ユーザがユーティリティ部205からプロモート指定を行う方法について説明する。図14のユーザインターフェースにおいて、ユーザが「印刷ジョブのプロモート印刷」を選択すると、プロモート印刷指定のオペレーションコードを有する管理パケットが印刷装置300に送信される。なお、この管理パケットのデータ部には、プロモート指定された印刷ジョブのジョブIDが格納されている。
情報管理部310は、受け取った管理パケットのオペレーションコードから、印刷ジョブのプロモート指定だと認識し、プロモート処理部316にプロモート指示を行う。このとき、プロモート指示された印刷ジョブのジョブIDもプロモート処理部316に送信される。
図27は、プロモート処理部316の動作を示すフローチャートである。プロモート処理部316は、まず、ステップ3001において、プロモート指示されたかを判断し、指示されていない場合には、ステップ3001に戻って、プロモート指示を待つ。プロモート指示は、情報管理部310がプロモート指定のオペレーションコードを有する管理パケットを受信したときに、情報管理部310からプロモート処理部316に送信される。なお、この管理パケットのデータ部には、優先印刷指定された印刷ジョブ(この印刷ジョブをプロモート印刷ジョブという)のジョブIDが格納されている。
ステップ3001において、プロモート指示があった場合には、ステップ3002において、優先印刷指定された印刷ジョブのジョブIDがジョブ読み出しテーブル313に存在するかを確認する。存在しない場合には、ステップ3001に戻る。存在する場合には、ステップ3003において、優先印刷指定された印刷ジョブを、ポインタ801が指す印刷ジョブの次に挿入する。つまり、未だにPDLトランスレータ部306によりPDLデータが読み出されていない印刷ジョブの先頭に割り込ませる。ポインタ801がいずれの印刷ジョブをも指していない場合には、ジョブ読み出しテーブル313の先頭に割り込ませる。
図28は、プロモート処理を説明するためのジョブ読み出しテーブルを示す説明図である。この図では、停止フラグは省略している。PDLトランスレータ部306は、ジョブ読み出しテーブルのポインタが指すジョブIDを獲得して、そのジョブIDに関連するPDLデータをジョブスプーラ部304から読み出し、トランスレート処理する。
31−1のジョブ読み出しテーブルでは、PDLトランスレータ部306は、ジョブIDが2の印刷ジョブのトランスレート処理を行なっている。ジョブIDが2の印刷ジョブの処理が完了すると、このままの状態では、ジョブIDが3の印刷ジョブのPDLデータがトランスレート処理される。しかし、ジョブIDが5の印刷ジョブがプロモート指定されると、ジョブ読み出しテーブル313でジョブIDの入れ替わりが行われ、31−2のジョブ読み出しテーブル313のようになる。すると、ジョブIDが1の印刷ジョブの処理が完了すると、次に、ジョブIDが5の印刷ジョブのPDLデータがトランスレート処理され、その結果、ジョブIDが5の印刷ジョブは、ジョブIDが3、4の印刷ジョブよりも先に印刷される。このように、プロモート印刷は、印刷ジョブのPDLデータの解析、印刷処理を停止しないため、印刷装置全体のスループットの低下を防ぐことができる。一方、現在とトランスレート処理されている印刷ジョブの次に印刷処理が行なわれるようになるため、緊急の印刷を行なう場合には割込み印刷処理が適している。
<割り込み通知>
図39は、ホストコンピュータと印刷装置が、ネットワークを介して、或いは、ローカルケーブルを介して接続されているシステムの一例を示す図である。ホストコンピュータ3901、3902、3903は、図2のホストコンピュータ100と同等なホストコンピュータである。また、印刷装置3904は、図3の印刷装置300と同等な印刷装置である。
ホストコンピュータ3901と印刷装置3904、ホストコンピュータ3902と印刷装置3904は、ネットワークを介して接続されている。従って、ホストコンピュータ3901やホストコンピュータ3902は、それぞれネットワークアドレスを有している。また、ホストコンピュータ3903と印刷装置3904とは、セントロニクスインターフェースやSCSIインターフェースなどのローカルケーブルを介して接続されている。
図35は、複数のホストコンピュータ(ホストコンピュータ3901、3902、3903)から送信されてきた各印刷ジョブの状態および印刷ジョブのジョブ情報を管理するための管理テーブルの一例を示す。この管理テーブルは、機器データベース部305の一部として、RAM3610等に記憶される。
図35において、欄3501は印刷ジョブの認識番号(ジョブID)を示す。欄3502は各印刷ジョブの状態を示す。欄3503は、印刷ジョブのPDLデータから生成された、出力中または出力待ちになっている中間データが格納されているアドレスを示す。欄3504は、割り込みが行われた場合の現在の解析情報が格納されているアドレスを示す。欄3505は、割り込みが行われた場合の出力情報が格納されているアドレスを示す。欄3506は、印刷ジョブを送信したホストコンピュータのネットワークアドレスを示す。
図36は、描画バッファ307に格納される、中間データの一例を示したものである。本実施の形態の描画バッファでは、レコードが基本単位となっている。図36において、3601は次に続くレコードのアドレスを示す領域である。3602は、このレコードが罫線を示すものであることを示している。3603は、罫線の開始座標を、3604は罫線の終了座標を示している。3605は線の太さを示す。これらの情報によって罫線がレンダリングされる。
また、3606は、3601で示されたアドレスの領域で、次に続くレコードのアドレスを示す領域である。3607〜3611は、文字を示すレコードである。3608は、フォント名称を示し、フォント名称によりフォントパターンが確定される。3609は、開始座標を示す。3610は、連続して格納されている文字の文字数を示す。3611は、文字コードを示す。描画部308は、文字コードに対応したパターンを読み出して、開始座標から順次文字をレンダリングしていく。
さらに、3613〜3616は矩形のレコードを示したものである。すなわち、開始座標(3614)、終了座標(3615)、線幅(3616)に基づいて、矩形がレンダリングされる。
これらのレコードの集まりに基づいて、1ページ分の画像がレンダリングされる。
図37は、出力情報の一例を示したものである。図37において、3701は現在排出中の排紙先を示す。3702は、排出中の紙サイズ・送り方向を示す。また、3703は、印刷ジョブの印刷処理によって出力されたページ数を示す。
図38は、割り込みの通知を行なう場合の、割り込み処理部の動作を説明するフローチャートである。図38は、図9のフローチャートに、割り込みの通知を行なうためのステップ3812〜3814を追加したものである。割り込み処理部312は、まず、ステップ909において、割り込み指示がされたかどうかを判定する。割り込み指示がされると、ステップ3812において、図37で示した出力情報をRAMに退避させる。次に、ステップ3813において、割り込まれた印刷ジョブを検索する。具体的には、管理テーブルで各印刷ジョブの状態を調べて割り込まれた印刷ジョブを検索してもいいし、また、ジョブ読み出しテーブル313を調べて割り込まれた印刷ジョブを検索してもいい。
図35の管理テーブルでは、ジョブIDが1,2,3である印刷ジョブが、割り込まれた印刷ジョブになる。また、図10のジョブ読み出しテーブルでは、ジョブIDが1,2,3,4である印刷ジョブが、割り込まれた印刷ジョブになる。
ステップ3814において、割り込まれた印刷ジョブを送信したホストコンピュータに、割り込みが発生したことを通知する。図35の管理テーブルでは、まず、ジョブIDが1である印刷ジョブを送信したホストコンピュータは、ローカルケーブルを介して直接接続されているので、ローカルケーブルを介して通知が送信される。また、ジョブIDが2及び3である印刷ジョブを送信したホストコンピュータは、ネットワークを介して接続されているので、図3の管理テーブルの欄3506に格納されているネットワークアドレスに基づいて通知が送信される。
ステップ901において、PDLトランスレータ部306に対して、現在処理している印刷ジョブの処理中止を指示する。指示されたPDLトランスレータ部306は、現在行っているトランスレート処理を直ちに中断する。
次にステップ902において、描画バッファ307に中間データがある場合にはそれらの中間データの削除を行う。なお、中間データの削除は、実際にデータを消すことだけを指すのではなく、その中間データを無効にすることも含む。さらにステップ904において、プリンタエンジン部309に処理の中止を指示する。ただし、プリンタエンジン部309が、現在まさに印刷中であったり、排紙中であったりする場合に、処理を中止するとジャムが発生する可能性がある。そのため、印刷中や排紙中の場合は、それらの処理の中止は行われない。
そして、ステップ911において、割り込まれた印刷ジョブのすでに排紙が完了したページ数をプリンタエンジン部309から取得し、当該印刷ジョブのジョブ情報として機器データベース部305に記憶しておく。なお、このステップは、プリンタエンジン部309自身が行ってもよく、この場合、プリンタエンジン部309が、割り込み処理部312から処理中止の指示を受けたときに、割込まれた印刷ジョブについてすでに排紙が完了したページ数を情報管理部310に送信し、情報管理部310がその情報を当該印刷ジョブのジョブ情報として機器データベース部305に記憶しておく。
ステップ905において、割り込み指示された印刷ジョブのジョブIDをジョブ読み出しテーブル313の先頭に追加する。このとき、ポインタ801はこの印刷ジョブのジョブIDを指すようにポイト移動する。このジョブIDは、ジョブプリプロセッサ部303から割り込み指示とともに通知されてきたものである。これによって、ジョブ読み出しテーブル313において、次に処置される印刷ジョブが割り込み指示された印刷ジョブとなる。
さらにステップ906において、PDLトランスレータ部306に処理再開の指示を出す。すると、PDLトランスレータ部306は読み出しテーブル313のポインタ810を見て、読み出しテーブル313のポインタ810が指す印刷ジョブ(この場合、割り込み指示された印刷ジョブ)のPDLデータをジョブスプーラ部304から取り出してトランスレート処理を行う。また、ステップ907においては、描画部308に処理再開の指示を出し、最後にステップ908においてプリンタエンジン部に処理再開の指示を出す。
図40は、割り込みの通知を行なう場合の、割り込み処理部の動作を説明するフローチャートである。図40は、図9のフローチャートに、図38で説明した割り込みの通知を行なうためのステップ3812〜3814を追加したものである。
図41は、プロモートの通知を行なう場合の、プロモート処理部の動作を説明するフローチャートである。図41は、図27のフローチャートに、プロモートの通知のためのステップ4113と4114を追加したものである。
プロモート処理部316は、まず、ステップ3001において、プロモート指示されたかを判断し、指示されていない場合には、ステップ3001に戻って、プロモート指示を待つ。プロモート指示は、情報管理部310がプロモート指定のオペレーションコードを有する管理パケットを受信したときに、情報管理部310からプロモート処理部316に送信される。なお、この管理パケットのデータ部には、優先印刷指定された印刷ジョブ(この印刷ジョブをプロモート印刷ジョブという)のジョブIDが格納されている。
ステップ3001において、プロモート指示があった場合には、ステップ3002において、優先印刷指定された印刷ジョブのジョブIDがジョブ読み出しテーブル313に存在するかを確認する。存在しない場合には、ステップ3001に戻る。
存在する場合には、ステップ4113において、割り込まれた印刷ジョブを検索する。具体的には、管理テーブルで各印刷ジョブの状態を調べて割り込まれた印刷ジョブを検索してもいいし、また、ジョブ読み出しテーブル313を調べて割り込まれた印刷ジョブを検索してもいい。図28のジョブ読み出しテーブルでは、ジョブIDが3,4である印刷ジョブが、プロモート処理で割り込まれた印刷ジョブになる。
ステップ4114において、プロモート処理で割り込まれた印刷ジョブを送信したホストコンピュータに、プロモートが発生したことを通知する。このとき、管理テーブルの欄3506に格納されているネットワークアドレスに基づいて通知が送信される。
ステップ3003において、優先印刷指定された印刷ジョブを、ポインタ801が指す印刷ジョブの次に挿入する。つまり、未だにPDLトランスレータ部306によりPDLデータが読み出されていない印刷ジョブの先頭に割り込ませる。ポインタ801がいずれの印刷ジョブをも指していない場合には、ジョブ読み出しテーブル313の先頭に割り込ませる。
更に、印刷装置300の制御構成を説明する。図33は、印刷装置300の制御構成を示すブロック図である。図33において、印刷装置3601は、プリンタコントローラ(以下、コントローラ)3603と、エンジン3604と、パネル装置3605と、ディスク装置3606を備えた構成となっている。
また、コントローラ3603は、CPU3607と、PROM3608と、オプションメモリ3609と、RAM3610と、ホストI/F3611と、エンジンI/F3612と、パネルI/F3613と、ディスクI/F3614と、NVRAM3615を備えた構成となっている。
CPU3607は、PROM3608に格納された、図5、6、7,9,11,15,18、20、24、30のフローチャートで示すような制御プログラム及びその他の各種制御プログラムに基づいて各部を制御する。ホストI/F3611は、ホストコンピュータ3602と印刷ジョブなどの送受信を行うためのインターフェースである。エンジンI/F3612は、実際に印字を行うエンジン3604と通信するためのインターフェースである。
パネルI/F3613は、ユーザにレーザビームプリンタ3601の状態を示したり、ユーザがレーザビームプリンタ3601に印刷環境の変更を指示したりするためのパネル装置3605と、指示と状態を送受信するためのインターフェースである。ディスクI/F3614は、ディスク装置3606と通信するためのインターフェースである。
オプションメモリ3609は、フォントなどを格納するための抜き差し可能なメモリで、カードやオプションROM、FLASHメモリなどである。RAM3610には、画像オブジェクトを格納するフレームバッファ3610aや、ホストコンピュータ3602から入力されたPDLデータを一時的に格納する受信バッファ3610bなどの領域が確保されている。また、RAM3610はCPU3607のワークエリアとしても使用される。NVRAM3615は、機器或いは印刷ジョブに関する各種設定項目の設定値を格納するために使用される。
パネル装置3605には、レーザビームプリンタ3601の状態などの情報を文字列として表示するための液晶パネルディスプレイ、ユーザがレーザビームプリンタ3601に対する様々な操作をするための各種の操作ボタン、給紙場所やオンライン/オフラインなどをユーザに知らせるためのLEDなどが備わっている。
エンジン3604は、記録媒体に画像オブジェクトを実際に印刷する。ディスク装置3606は、様々なデータを記憶しておく外部記憶装置であり、ハードディスク装置や光磁気ディスク装置、フロッピー(登録商標)ディスク装置などである。レーザビームプリンタ3601は図示しない電源部から電力の供給を受けている。
図3の印刷システムの機能構成における各構成、例えば、論理チャネル制御部302、ジョブプリプロセッサ部303、PDLトランスレータ部306、描画部308、情報管理部310、割り込み処理部312、停止/再開処理部315、プロモート処理部316などは、図36の印刷装置3601におけるCPU3607が、PROM3608に格納された制御プログラムを実行することにより実現される。また、図3のジョブスプーラ部304、機器データベース部305、ジョブ読み出しテーブル313、描画バッファ307は、図36の印刷装置3601のRAM3610やディスク装置3606上に確保される。
更に、ホストコンピュータ200の制御構成を説明する。図34は、ホストコンピュータ200の制御構成を示すブロック図である。図34において、CPU3701は、ROM3702もしくはハードディスク(HD)3711、フロッピー(登録商標)ディスク(FD)3712などの記憶媒体に記億された、制御プログラムを実行し、システムバス3704に接続される各デバイスを総括的に制御する。
3703はRAMで、CPU3701の主メモリ、ワークエリア等として機能する。3705はキーボードコントローラ(KBC)で、キーボード(KB)3709や不図示のポインティングデバイスなどからのユーザによる指示入力を制御する。
3706はCRTコントローラ(CRTC)で、CRTディスプレイ(CRT)3710の表示を制御する。3707はディスクコントローラ(DKC)で、ブートプログラム、種々のアプリケーション、編集ファイル、ユーザファイル、制御プログラム等を記憶するハードディスク(HD)3711およびフロッピー(登録商標)ディスク(FD)3712とのアクセスを制御する。3708はインターフェースカード(IC)で、通信媒体を介して、印刷装置300と双方向にデータのやりとりをする。
図2の印刷システムの機能構成における各構成、例えば、論理チャネル制御部206、ジョブパケット生成部207、プリンタドライバ部202、アプリケーション部201、ユーティリティ部205は、図37のホストコンピュータ200におけるCPU3701が、ROM3702或いはHD3711に格納された制御プログラムを実行することにより実現される。また、図2の送信バッファ203は、図34のホストコンピュータ200のRAM3703やHD3711上に確保される。
図29は、図3或いは図36の印刷装置の一例であるレーザビームプリンタ(以下、LBPと略す)の内部構造を示す断面図で、このLBPは、文字パターンデータ等を入力して記録紙に印刷することができる。図29において、8012はLBP本体であり、供給される文字パターン等を基に、記録媒体である記録紙上に像を形成する。8000は操作のためのスイツチ及びLED表示器などが配されている操作パネル、8001はLBP8012全体の制御及び文字パターン情報等を解析するプリンタ制御ユニツトである。このプリンタ制御ユニツト8001は主に文字パターン情報をビデオ信号に変換してレーザドライバ8002に出力する。レーザドライバ8002は半導体レーザ8003を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ8003から発射されるレーザ光8004をオン・オフ切替えする。レーザ光8004は回転多面鏡8005で左右方向に振られて静電ドラム8006上を走査する。これにより、静電ドラム8006上には文字パターンの静電潜像が形成される。この潜像は静電ドラム8006周囲の現像ユニツト8007により現像された後、記録紙に転写される。この記録紙にはカットシートを用い、カットシート記録紙はLBP8012に装着した複数種の用紙に対応した複数の用紙カセツト8008に収納され、給紙ローラ8009及び搬送ローラ8010と8011とにより装置内に取込まれて、静電ドラム8006に供給される。
図30は、図3或いは図36の印刷装置の一例であるインクジェット記録装置IJRAの概観図である。同図において、駆動モータ9011の正逆回転に連動して駆動力伝達ギア9010,9008を介して回転するリードスクリュー9004の螺旋溝9003に対して係合するキャリッジHCはピン(不図示)を有し、矢印a,b方向に往復移動される。このキャリッジHCには、インクジェットカートリッジIJCが搭載されている。9001は紙押え板であり、キャリッジの移動方向に亙って紙をプラテン9000に対して押圧する。9006,9007はフォトカプラで、キャリッジのレバー9005のこの域での存在を確認して、駆動モータ9011の回転方向切り換え等を行うためのホームポジション検知手段である。9013は記録ヘッドの前面をキャップするキャップ部材9019を支持する部材で、9012はこのキャップ内を吸引する吸引手段で、キャップ内開口9020を介して記録ヘッドの吸引回復を行う。9014はクリーニングブレードで、9016はこのブレードを前後方向に移動可能にする部材であり、本体支持板9015にこれらが支持されている。ブレードは、この形態でなく周知のクリーニングブレードが本例に適用できることは言うまでもない。又、9018は、吸引回復の吸引を開始するためのレバーで、キャリッジと係合するカム9017の移動に伴って移動し、駆動モータからの駆動力がクラッチ切り換え等の公知の伝達手段で移動制御される。これらのキャッピング、クリーニング、吸引回復は、キャリッジがホームポジション側の領域に来た時にリードスクリュー9004の作用によってそれらの対応位置で所望の処理が行えるように構成されているが、周知のタイミングで所望の作動を行うようにすれば、本例にはいずれも適用できる。
なお、本発明は、単体で存在するコピー機、プリンタ、スキャナ等から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施の形態の機能を実現するソフトウエア(制御プログラム)のプログラムコードを記録した記憶媒体(図31)を、図36及び図37に示すようなシステムに供給し、そのシステムの装置(CPU3607、CPU3701)が記憶媒体に格納されたプログラムコードを読出し実行することによって達成される。プログラムやデータを供給する方法として図32に示すようにフロッピー(登録商標)ディスクFD3402に記憶させてPC本体3401に供給する方法も一般的である。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスクやハードディスク以外にも,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、プログラムやデータを供給する方法として図32に示すように、LAN或いは公衆回線3405を介して、サーバ装置からPC本体3401に供給する方法も一般的である。この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを送出したサーバ装置は本発明を構成することになる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
<第2の実施の形態>
図42は、本発明を適用したレーザビームプリンタ(以下、LBPと略す)の内部構造を示す断面図である。このLBPは、不図示のデータ源から送出された文字パターンの登録や定型書式(フォームデータ)などの登録を行う。
図42において、4200はLBP本体であり、外部に接続されているホストコンピュータ(図43の4301,4311,4312)から供給される文字情報(文字コード)やフォーム情報あるいはマクロ命令などを入力して記憶すると共に、それらの情報に従って対応する文字パターンやフォームパターンなどを作成し、記録媒体である印刷メデイア上に像を形成する。1112は操作のためのスイッチおよびLED表示器などが配されている操作パネル、4201はLBP4200全体の制御および上記ホストコンピュータから供給される文字情報などを解析するプリンタ制御ユニットである。このプリンタ制御ユニット4201は、主に文字情報を対応する文字パターンのビデオ信号に変換してレーザドライバ4202に出力する。
レーザドライバ4202は半導体レーザ4203を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ4203から発射されるレーザ光4204をオンオフ切り替えする。レーザ光4204は回転多面鏡4205で左右方向に振られ、静電ドラム4206上を走査する。これにより、静電ドラム4206上には文字パターンの静電潜像が形成される。この潜像は、静電ドラム4206の周囲にある現像ユニット4207により現像された後、印刷メディアに転送される。この印刷メディアにはカットシートを用いる。カットシート(印刷メディア)はLBP4200に装着した用紙カセット4208内に収納され、給紙ローラ4209および搬送ローラ4210,4211とによりLBP装置内に取り込まれて、静電ドラム4206に供給される。
4212は、カットシートの排出先を振り分けるユニットであり、これによりフェースアップトレイ4213に排出するか、あるいはフェースダウントレイ4214に排出するかを選択することができる。
図43は、図42に示したLBPのブロック構成と、データ発生源との関係を示す。なお、本図中に示した符号4302から4315の各ブロックは図42に示したプリンタ制御ユニット4201に含まれるものであり、プリンタ部4310の構成は図42で説明した通りである。
4301は、第1のデータ源となるホストコンピュータである。4302はデータ源(ホストコンピュータ)4301に対する入力バッファ、4303はデータ源(ホストコンピュータ)4301に返送するための出力バッファ、4304は本LBPの制御を司るCPU、4305はプログラム(図8,図10)やフォントパターンが格納されているROM、4305はワーク情報および解析情報、出力情報を格納するRAMである。4307は、解析されたイメージ情報を格納するページバッファであり、複数のページ情報を格納できる。4308は、操作パネル4212との接続制御を行うパネルインタフェースである。4309は、プリンタとの制御を行うプリンタインタフェースである。4310は、実際の印字を行うプリンタ部(プリンタエンジン)である。
4311,4312は、ネットワークに接続されたホストコンピュータである。4313は、ネットワークとの接続を制御するネットワークI/F(インタフェース)である。4314および4315は、それぞれ入力バッファ4302および出力バッファ4303に対応する、ネットワーク接続のための入力バッファおよび出力バッファである。
図44は、データ源となるホストコンピュータ4301,4311,4312より送信された各ジョブの状態およびその情報を管理するためにRAM4306に記憶させた管理テーブルの一例を示す。本図において、欄4401はジョブの認識番号(ID)、欄4402は受け付けた各ジョブの状態を示す。欄4403は、解析されて出力中または出力待ちになっているページのページバッファ4307内のアドレスを示す。欄4404は、割り込みが行われた場合の現在の解析情報を格納したアドレスを示す。欄4405は、割り込みが行われた場合の出力情報を格納したアドレスを示す。欄4406には、ネットワーク(図43参照)を通して受信したジョブに関するホストコンピュータのネットワークアドレスを格納してある。
図45は、データ源となるホストコンピュータ4301,4311,4312(図43参照)から指定される割り込みコマンドの一例を示した図である。本図において、4501は、制御コマンドであることを示すESCコードである。4502は、この命令が割り込みコマンドであることを示す文字列PROである。4503には、どの状態のジョブ(図44の4402参照)に対して割り込みを行うかを指定する情報が格納される。
図46は、ページバッファ4307(図43参照)に格納される、データ解析後のページバッファの一例を示したものである。本実施の形態において、ページバッファはレコードを基本単位として処理する。本図において、4601は、次に続くレコードのアドレスを指定する領域である。4602は、このレコードが罫線を処理するものであることを示している。4603は、罫線の開始座標を、4604は終了座標を、4605は線の太さをそれぞれ示し、これらの情報によって罫線が引かれる。
また、4606は、上記の4601によりリンクされたものであり、次にリンクされるアドレスが格納されている。このレコードは文字(4607)を記述するレコードであり、フォント名称(4608)によりフォントパターンを確定する。そして、開始点(4609)より開始座標を確定し、文字数(4610)分のコードが連続して格納されているので、文字コード(4611)に応じたパターンを読み出して開始座標から順次画像を形成していく。
さらに、4612〜4616は矩形のレコードを示したものである。すなわち、開始座標(4614)、終了座標(4615)および線幅(4616)によって画像を形成する。
これらのレコードの集まりによって、1ページ分の画像が形成されていく。
図47は、解析情報の一例を示した図である。本図において、4701には、現在画像を展開している座標値が格納されている。4702には、罫線の幅および罫線の種類が格納されている。4703には、現在選択されているフォント名称,文字ピッチ,書体が格納されている。4704には、用紙のサイズ,送り方向,拡大率,用紙の種類が格納されている。これらの解析情報をRAMに格納することによって、中断したジョブを再開させることが可能となる(図8のステップS810、ステップS816参照)。
図48は、出力情報の一例を示したものである。本図において、4801には現在排出中の排紙先が、4802には排出中の紙サイズ・送り方向が格納されている。また、4803には、現在のジョブの出力を終えたページ数が格納されている。
図49は、ROM4305に予め記憶されている制御プログラムに従って、CPU4304が実行すべき制御手順を示したフローチャートである。以下、図49の各ステップに基づいて、本実施の形態における動作を説明する。
まず、電源が投入されることにより、本プログラムが開始する(ステップS4901)。ステップS4902では、ホストコンピュータからポート(入力バッファ)にデータが着信しているか否かをチェックする。データがない場合には、ステップS4902のループを繰り返す。データが着信すると、管理テーブル(図44参照)ヘの登録が行われる(ステップS4902A)。すなわち、ジョブのIDが欄4401へ登録される。
その後、ステップS4903に移り、受信したデータが制御コマンドであるか否かを確認する。制御コマンドでない場合は、ステップS4904に移り、入力されたデータの解析を行い、内部コードに変換する。この内部コードの内容は、先に図5で述べた通りである。そして、ステップS4905において、この内部コードはページバッファ4307(図43参照)ヘ書き込まれる。これと同時に、管理テーブルの欄4403「ページバッファ」(図44参照)にアドレスが登録される。ここで、複数のジョブのページバッファが作成され、ジョブが出力待ちになる場合には、管理テーブルの欄4402「状態」を「出力待ち」にする。
ステップS4906では、ページバファの作成が完了したか否かを確認し、完了していない場合には、ステップS4903以降の処理を再度行う。
ページバッファの作成が完了した場合は、ステップS4907に移り、プリンタI/F4309(図43参照)を介してプリンタ部(プリンタエンジン)4310ヘ出力する。この時、管理テーブルの欄4402「状態」(図44参照)を「出力中」に変更する。
一方、ステップS4903において制御コマンドであると判断された場合は、ステップS4908において、割り込みの命令であるか否かを、割り込みコマンドの402(PRO:図4参照)に対応させて確認する。ステップS4908で割り込みの命令でないと判断された場合は、ステップS4909に移って制御コマンドに対応する解析を行い、かつ必要であれば、ページバッファヘの書き込みを行い、データの解析(ステップS4904)に戻る。
ステップS4908において、割り込みコマンドであることが確認され、現在解析中のジョブに対して割り込みがなされた場合には、ステップS4910の処理を実行する。すなわち、ステップS4910では、図6に示した解析情報、および、図7に示した出力情報をRAMに退避する。
次のステップS4911では、管理テーブルの欄4401および4402(図44参照)から、割り込まれたジョブを検索する。本例では3つのジョブが存在し、それぞれのジョブに割り込みがなされることになる。
ステップS4912では、割り込まれたジョブに関するホストコンピュータに対して、割り込みが発生したことを通知する。図44の例でみると、ジョブID「1」については、ホストコンピュータ4301から直接入力されているので(行4407参照)、出力バッファ4303(図43参照)を介して通知が行われる。他方、ジョブID「2」および「3」(すなわち、行4408,4409に示されているジョブ)はネットワークを介して発せられたことが欄4406により判るので、この場合には、各ジョブを送出したホストコンピュータのネットワークアドレス(欄4406)に基づき、ネットワークI/F4313(図43参照)を通じてジョブの割り込みが発生したことを通知する。
上記のネットワークアドレスは、ジョブを送出する時に、制御コマンドの一部として送られてくる。従って、ステップS4909のコマンド解析処理において、管理テーブルの欄4406に登録される。
ステップS4913では、割り込みデータの受信が可能となり、データ受信を開始する。次のステップS4914では、割り込みデータの受信が終了したか否かを確認し、終了していない場合は、ステップS4913に戻って再度受信を行う。
割り込みデータを全て受信すると、ステップS4915に移ってデータ解析が行われ、プリンタ部(プリンタエンジン)4310ヘの出力が開始される。
割り込みデータの出力が終了すると、ステップS4916において、ステップS4910で退避した解析情報および出力情報を戻す。これにより、解析中のジョブ「3」(図44の行4409参照)の解析が続行可能となる。
ステップS4917では、データの有無を確認し、データ有りと判断された場合はステップS4903に戻って処理を継続する。他方、データが存在しないと判断された場合は、現在解析され出力待ちとして格納されているページバッファを出力し、処理を終了する。
(他の実施の形態)
これまでの説明では、割り込みコマンド(図45参照)の発令後にデータ割り込みを行ったが、複数のジョブが既に格納されている場合には、印刷制御装置内でのジョブ割り込みを行うことも可能である。その場合の割り込みコマンドの一例を図50に示す。
図50において、901は、制御コマンドであることを示すESCコードである。902は、このコマンドが割り込みコマンドであることを示す文字列である。903は、割り込みジョブを行うジョブのIDを示す。904は、割り込まれるジョブのIDを示す。
また、割り込みジョブによる印刷済みシートを、通常とは異なる排紙先に排出することも可能である。図51は、この排出処理を示すフローチャートである。本図に示す処理手順は、ROM4305(図43参照)に記憶されているプログラムに従って、CPU4304が制御するものである。
図51における制御は、図49のステップS4908で割り込みコマンドとして認識された後の処理を前提としている。まずステップS5102において、割り込まれるジョブの状態をチェックする。割り込まれるジョブの状態が「出力中」の場合、例えば図44に示すジョブID「1」の場合は、ステップS5103において出力情報を退避する。
ステップS5102において、出力中でないと判断された場合、例えば図44に示すジョブID「2」のように出力待ちの場合は、ステップS5104において、割り込みジョブの優先順位を割り込まれたジョブより上げる。
次のステップS5105では、割り込みジョブの出力先として、現在使用されている排紙先を変更して出力を行う。そして排紙が終了すると、ステップS5106に移り、退避されている出力情報を戻し、かつ排紙先も元に戻す。
以上説明したように、上記によれば、ユーザがホストコンピュータ上から割り込み指定した印刷指示を出すことによって、印刷装置は、既に他の印刷ジョブの印刷処理を行っていても、その印刷ジョブの印刷処理を停止して、割り込み指定された印刷ジョブの印刷処理を即座に行うことが可能であり、そのため、緊急の印刷ジョブをすぐに印刷処理することが可能である。
さらに、割り込み指定された印刷ジョブの印刷処理が終了した後、割込まれた印刷ジョブの印刷処理が自動的に復帰されるため、割込まれた印刷ジョブの所有者が印刷ジョブの再送を行わなくてもよくなる。
さらに、すでに印刷装置に投入した通常の印刷ジョブに対して、ユーザはユーティリティから割り込み指定を行うことができ、印刷ジョブ投入後にその印刷ジョブの割り込み印刷の必要性が発生しても、同様の効果を達成することが可能である。
さらに複数の排紙ビンを持つ印刷装置の場合、割り込み指定された印刷ジョブの排紙口を割込まれた印刷ジョブの排紙口と異なるものに変更することにより、割込まれた印刷ジョブの印刷物と割り込み指定された印刷ジョブの印刷物の混載を防ぐことが可能である。
さらに、既に印刷処理が行なわれている印刷ジョブは中止させないで、印刷ジョブの印刷順位を優先的に上げる優先印刷により、印刷装置全体のスループットを発生させることなく、印刷ジョブを優先的に処理することが可能である。
さらに、ユーザがホストコンピュータから印刷処理を実行する場合に、停止指定を行なって印刷実行をおこなうことにより、停止指定された印刷ジョブは印刷装置内で印刷処理されずに停止され、再開指定を改めて行なうことにより、実際の印刷処理をおこなうということが可能である。
さらに、既に印刷装置に投入された通常の印刷ジョブに対して、停止指定を行なって印刷処理を一時的に停止させることにより、例えばその印刷ジョブの処理時間がかかり印刷装置を占有してしまうのを避けるためなど、印刷ジョブ投入後に印刷の停止をする必要が発生した場合に、後ろの印刷ジョブを先に印刷させることができる。
さらに、印刷装置の電源切断時に、停止されたままの印刷ジョブが印刷装置内に存在していることを操作パネルなどに表示することにより、停止された印刷ジョブが存在する状態で印刷装の電源が切断されるのを回避することができる。
さらに、割り込み印刷ジョブが発生した場合には、割り込まれた印刷ジョブの送信元(ホストコンピュータなど)に対して、割り込みが発生したことを通知できる。
さらに、ネットワークを介してプリンタに接続されたホストコンピュータがある場合にも、そのホストコンピュータに対して、割り込まれたことを通知することができる。
さらに、複数の排紙手段を有するプリンタを用いる場合には、割り込み印刷ジョブの排紙先と、通常的に使用されている排紙先とを異ならせることができる。