(57)【要約】【課題】  ホストから受信したデータを複数のバッファブロックに格納して処理する画像形成装置において、ブロック型の転送方式を採用した場合、ホストから印刷ジョブが最後まで連続して送信されてこない場合に、受信済みのデータが後段に転送されず、これに含まれる印字データが即座に印刷されないという問題が生じていた。【解決手段】  ジョブ識別部201で、受信した印刷ジョブがパケット化されているジョブか否かを判別し、パケット化されていない印刷ジョブの場合は、受信データ転送手段を非ブロック型で動作させる。【選択図】  図１０
2009220497.tif 000002
【特許請求の範囲】
【請求項１】
ホストから受信した印刷ジョブを画像形成出力する画像形成装置であって、
印刷ジョブを受信する受信手段と、
前記受信した印刷ジョブかパケット化された印刷ジョブであるか否かを識別するジョブ識別手段と、
前記受信した印刷ジョブに含まれる印字データを格納する複数の受信バッファブロックと、
前記受信バッファブロックに格納した印字データを、ブロック型、または、非ブロック型で後段に転送する受信データ転送手段とを備え、
前記ジョブ識別手段は、前記受信した印刷ジョブがパケット化された印刷ジョブであるか否かに基づいて、前記受信データ転送手段をブロック型、または、非ブロック型で動作させることを特徴とする画像形成装置。
【請求項２】
ホストとの接続が断絶した場合に、受信中の印刷ジョブを終了させるか否かを択一的に選択する選択手段をさらに備え、
前記ジョブ識別手段は、前記選択手段の選択結果に基づいて、前記受信データ転送手段をブロック型、または、非ブロック型で動作させることを特徴とする請求項１に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストから受信した印字データを複数のバッファブロックに格納して処理する画像形成装置において、バッファブロックに格納した印字データを後段に転送する際のデータ転送方式に関するものである。
【背景技術】
【０００２】
従来、ホストから受信した印刷ジョブを画像形成出力する装置において、受信データを複数のバッファブロックに格納して処理することで、データ処理効率を高めるようにした装置が考案されている（例えば、特許文献１、特許文献２参照）。
【特許文献１】特開2001-109596号公報
【特許文献２】特開2001-184191号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このように、受信データをバッファブロックに格納して処理する画像形成装置では、一般的に、受信データが１ブロック分溜まった時点で後段にデータを転送している（これをブロック型の転送方式と呼ぶ）。
【０００４】
なぜなら、バッファブロックを用いるのに非ブロック型で転送した場合、データ転送効率を高めることができないからである。
【０００５】
ここで、その具体例を説明する。
【０００６】
図３に示すように、ホストから4KB×4回＝計16KBのＰＤＬデータ301を受信し、これを16KBのバッファブロック302で処理したとする。
【０００７】
図４は、ブロック型の転送方式で処理した場合の例を示し、図示した通り、使用するバッファブロックは１つ（ブロックＡ）、ＰＤＬインタプリタへの転送回数も１回で済む。
【０００８】
図５は、非ブロック型の転送方式で処理した場合の例を示し、図示した通り、使用する受信バッファブロックは４つ（ブロックＡ〜Ｄ）、転送回数も４回必要となる。
【０００９】
このように、受信データをバッファブロックに格納して処理する場合、ブロック型の転送方式を採用した方が、メモリ使用効率もデータ転送効率も高い。
【００１０】
しかしながら、ブロック型の転送方式の場合、以下のようなケースで問題が生じる。
【００１１】
図６に示すとおり、ホストからのデータ送信が途中（4KB×2回=計8KB受信した時点）で途絶えたとする。
【００１２】
この場合、ブロック型の転送方式では、受信したデータが１ブロック分のサイズ(16KB)に満たないので、この時点では未だＰＤＬインタプリタにデータが転送されない。
【００１３】
したがって、受信済みの8KBに１ページ分の印字データが含まれていたとしても、この時点では未だ印刷されない。
【００１４】
これに対し、非ブロック型の転送方式の場合、受信済みの8KBのデータは、この時点で既にＰＤＬインタプリタに転送されているので、１ページ分即座に印刷される。
【００１５】
このように、ブロック型の転送方式では、印刷ジョブが最後まで連続して送信されてくる場合には、データ処理効率が高いというメリットが得られる一方で、印刷ジョブが最後まで連続して送信されてこない場合に、上述の問題が生じていた。
【課題を解決するための手段】
【００１６】
上述した課題を解決するために、請求項１記載の発明は、ホストから受信した印刷ジョブを画像形成出力する画像形成装置であって、印刷ジョブを受信する受信手段と、前記受信した印刷ジョブかパケット化された印刷ジョブであるか否かを識別するジョブ識別手段と、前記受信した印刷ジョブに含まれる印字データを格納する複数の受信バッファブロックと、前記受信バッファブロックに格納した印字データを、ブロック型、または、非ブロック型で後段に転送する受信データ転送手段とを備え、前記ジョブ識別手段は、前記受信した印刷ジョブがパケット化された印刷ジョブであるか否かに基づいて、前記受信データ転送手段をブロック型、または、非ブロック型で動作させることを特徴とする。
【００１７】
また、請求項２に記載の発明は、請求項１に記載の画像形成装置において、ホストとの接続が断絶した場合に、受信中の印刷ジョブを終了させるか否かを択一的に選択する選択手段をさらに備え、前記ジョブ識別手段は、前記選択手段の選択結果に基づいて、前記受信データ転送手段をブロック型、または、非ブロック型で動作させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、受信データをバッファブロックに格納して処理する画像形成装置において、データ処理効率を高めるという効果を保ちつつ、ブロック型の転送方式で発生する課題を解決することができる。
【発明を実施するための最良の形態】
【００１９】
次に、本発明の詳細を実施例の記述に従って説明する。
【実施例１】
【００２０】
＜ハード構成＞
図１は、本発明が適用される画像形成装置のハード構成の概要を示すブロック図である。
【００２１】
図示するように、画像形成装置1は、全体の制御を司るプリンタ・コントローラ(コントローラ)10、ユーザからの指示を受け付けたり表示を行うパネル20、印刷を行うプリンタ・エンジン30、からなる。
【００２２】
コントローラ10は、CPU101のCPUバス102に、ローカル・インターフェース(ローカルI/F)103、ネットワーク・インターフェース（Network I/F）104、画像生成器105、プリンタ・エンジン・インターフェース（プリンタI/F）106、パネル・インターフェース(パネルI/F)107、RAM108、ROM109、NVRAM110が接続されている。
【００２３】
ローカルI/F103は、ＵＳＢ等のインターフェースで接続するホスト2aから印刷ジョブを受信する。
【００２４】
Network I/F104は、ネットワーク３に接続する複数のホスト(2b、2c)から印刷ジョブを受信する。
【００２５】
画像生成器105は、受信した印刷ジョブを解釈して得られたDisplay Listからビットマップ画像を生成する。
【００２６】
プリンタI/F106は、画像生成器105で生成されたビットマップ画像をプリンタ・エンジン40に出力する。
【００２７】
パネルI/F107は、パネル20に接続し、パネル20より入力されたユーザの指示をCPU101に通知したり、ROM109、RAM108に格納されている画面情報や設定情報をパネル20に表示する。
【００２８】
RAM108は、受信した印刷ジョブを格納したり、CPU101の作業領域として使用されるメモリである。
【００２９】
ROM109は、制御プログラムやパネル20に表示する画面情報が格納されたメモリである。
【００３０】
NVRAM110は、各種設定情報を保持する不揮発性のメモリである。
【００３１】
CPU101は、ROM109に格納された制御プログラムに従って、コントローラ10の各部を制御する。
【００３２】
＜ソフト構成＞
図２は、本実施例におけるコントローラ１０の機能ブロック図である。
【００３３】
ジョブ識別部201は、ホストI/F(103、104)で受信した印刷ジョブを解析し、印刷ジョブに含まれるＰＤＬデータを受信データ転送部202に渡す。
【００３４】
また、印刷ジョブを受信するとＰＤＬインタプリタ205を起動する。
【００３５】
受信データ転送部202は、ジョブ識別部201から渡されたＰＤＬデータを、受信バッファブロック204に格納し、これを、ブロック型、または、非ブロック型でＰＤＬインタプリタ205に転送する。
【００３６】
受信データ管理テーブル203は、受信データ転送部202が、受信したＰＤＬデータをジョブ毎に管理するためのテーブルである。
【００３７】
受信バッファブロック204は、受信したＰＤＬデータを格納するメモリブロックで、RAM108上に確保される。
【００３８】
なお、受信データ管理テーブル203、受信バッファブロック204の詳細については、後述する。
【００３９】
ＰＤＬインタプリタ205は、受信データ転送部202から転送されたＰＤＬデータを解釈し、Display List206を生成して、RAM108に格納する。
【００４０】
画像形成出力部207は、Display List206を画像生成器105でページ画像208に展開し、展開したページ画像208をプリンタI/F106を介してプリンタ・エンジン30に出力する。
【００４１】
＜印刷ジョブの構成＞
図７は、画像形成装置１が受信する印刷ジョブの構成を示す図である。
【００４２】
画像形成装置１は、パケット化されていない印刷ジョブ701や、パケット化された印刷ジョブ702を受信する。
【００４３】
図７の701は、パケット化されていない印刷ジョブの例を示す。
【００４４】
パケット化されていない印刷ジョブ701は、ＰＤＬデータそのもので、便宜上、Ａ、Ｂ、Ｃの３つのパートに分かれているとする。
【００４５】
図７の702は、パケット化されていない印刷ジョブ701をパケット化した例を示し、ジョブ開始パケット7021、ＰＤＬ送信パケット7022A、7022B、7022C、ジョブ終了パケット7023から構成されている。
【００４６】
図７の703は、パケットの構成を示す図である。
【００４７】
パケット703は、６バイトのヘッダ部7031とデータ部7032から構成される。
【００４８】
ヘッダ部7031の第0〜1バイト目には、パケットであることを示す識別文字（本実施例では0xCDCAとする）が入る。
【００４９】
ヘッダ部7031の第2〜3バイト目には、パケットの役割を示すオペレーションコードが入る。
【００５０】
例えば、ジョブ開始を示すオペレーションコード(0x0001)、ＰＤＬデータの送信を示すオペレーションコード(0x0002)、ジョブ終了を示すオペレーションコード(0x0003)などが入る。
【００５１】
ヘッダ部7031の第4〜5バイト目には、次に続くデータ部7032のサイズが入る。
【００５２】
データ部7032は、ＰＤＬ送信パケットの場合、ＰＤＬデータが入る。
【００５３】
例えば、ＰＤＬ送信パケット7022A、7022B、7022Cのデータ部7032には、それぞれパケット化されていない印刷ジョブ701のパートＡ、Ｂ、Ｃが入る。
【００５４】
このように、パケット化された印刷ジョブ702は、ジョブ終了が明示的であるのに対し、パケット化されていない印刷ジョブ701は、ジョブ終了が明示的ではないという違いがある。
【００５５】
＜ジョブ識別部の処理＞
図８〜図１０は、ジョブ識別部201において、ホストI/F（103、104）から印刷ジョブを受信した時の処理を示すフローチャートである。
【００５６】
以下、これらのフローチャートを用いて、ジョブ識別部201の処理を説明する。
【００５７】
ジョブ識別部201は、ホストI/Fから印刷ジョブを受信すると、まず、データの先頭の2バイトが、パケットを示す識別文字(0xCDCA)と一致するか否かを調べる(S801)。
【００５８】
一致する場合は、パケット化された印刷ジョブ用の処理を起動し(S802)、一致しない場合は、パケット化されていない印刷ジョブ用の処理を起動する(S803)。
【００５９】
図９は、パケット化された印刷ジョブ用の処理を示すフローチャートである。
【００６０】
ジョブ識別部201は、ホストI/Fからパケットを受信し(S901)、パケットのオペレーションコードを解析する(S902)。
【００６１】
オペレーションコードが「ジョブ開始命令」の場合(S903)、ジョブ識別部201は、受信データ転送部202に書き込み開始通知を行い(S904)、ＰＤＬインタプリタ205を起動する(S905)。
【００６２】
なお、書き込み開始通知で指定するデータ転送モード(Mode)には、ブロックモードをセットする。
【００６３】
オペレーションコードが「ＰＤＬ送信命令」の場合(S906)、ジョブ識別部201は、パケットに含まれるＰＤＬデータを、受信データ転送部202に書き込む(S907)。
【００６４】
オペレーションコードが「ジョブ終了命令」の場合(S908)、ジョブ識別部201は、受信データ転送部202に書き込み終了通知を行って(S909)、一連の処理を終える。
【００６５】
図１０は、パケット化されていない印刷ジョブ用の処理を示すフローチャートである。
【００６６】
ジョブ識別部201は、まず、受信データ転送部202に書き込み開始通知を行い(S1001)、ＰＤＬインタプリタを起動する(S1002)。
【００６７】
なお、書き込み開始通知で指定するデータ転送モード(Mode)には、非ブロックモードをセットする。
【００６８】
続いて、ジョブ識別部201は、ホストI/Fからデータを受信し(S1003)、受信したデータを受信データ転送部202に書き込む(S1004)。
【００６９】
次に、ジョブ識別部201は、「ジョブタイムアウト」が有効か否かを判断し(S1005)、有効な場合は、引き続き「タイムアウト時間」が経過したか否かを判断する(S1007)。
【００７０】
ここで、「ジョブタイムアウト」について説明する。
【００７１】
パケット化されていない印刷ジョブの場合、先述のとおり、ジョブ終了が明示的でないので、いつまでもジョブが終了しない可能性がある。
【００７２】
そこで、ホストからのデータ受信が一定期間途絶えた場合に、その時点でジョブを終了するという機能が「ジョブタイムアウト」であって、「タイムアウト時間」とは、タイムアウトまでの時間を示す。
【００７３】
なお、「ジョブタイムアウト」および「タイムアウト時間」の設定情報は、予めユーザがパネル20から設定し、NVRAM110に保持されている。
【００７４】
ステップS1007で、「タイムアウト期間」が経過していた場合、ジョブ識別部201は、受信データ転送部202に書き込み終了通知を行って(S1008)、一連の処理を終える。
【００７５】
ステップS1005で、「ジョブタイムアウト」が無効の場合、また、ステップS1007で「タイムアウト時間」経過していない場合、ジョブ識別部201は、ホストI/Fからのデータ受信を待機する(S1006)。
【００７６】
ホストI/Fからデータを受信すると、再びステップS1003に移行して、次の受信データを処理する。
【００７７】
図１１は、ジョブ識別部201と受信データ転送部202間のインターフェースを示す図である。
【００７８】
「WriteStart」は、書き込み開始通知を示し、ジョブの識別番号を示す「JobID」、受信データ転送部202からＰＤＬインタプリタ205へのデータ転送モードを指定する「Mode」がセットされる。
【００７９】
「Write」は、書き込み通知を示し、「JobID」、書き込むデータの格納元アドレスを示す「*Ptr」、書き込むデータのサイズを示す「Size」がセットされる。
【００８０】
「WriteEnd」は、書き込み終了通知を示し、「JobID」がセットされる。
【００８１】
＜受信データ転送部のＰＤＬデータ書き込み時の処理＞
図１２〜図１４は、受信データ転送部202において、ジョブ識別部201から、各種通知(「WriteStart」「Write」「WriteEnd」)を受信したときの処理を示すフローチャートである。
【００８２】
以下、これらのフローチャートを用いて、受信データ転送部202におけるＰＤＬデータ書き込み時の処理を説明する。
【００８３】
図１２は、受信データ転送部202において、ジョブ識別部201から書き込み開始通知(WriteStart)を受信したときの処理を示すフローチャートである。
【００８４】
受信データ転送部202は、「WriteStart」を受信すると、受信データ管理テーブル203を初期化する(S1201)。
【００８５】
図１５に、受信データ管理テーブル203の構成を示す。
【００８６】
受信データ管理テーブル203は、先述の「JobID」「Mode」と、現在（カレント）の書き込みブロックを示す「CurWriteBlock」、現在（カレント）の読み出しブロックを示す「CurReadBlock」から構成される。
【００８７】
ステップS1201の初期化では、「JobID」「Mode」に、それぞれジョブ識別部201から「WriteStart」で通知された値をセットし、「CurWriteBlock」「CurReadBlock」にNULLをセットする。
【００８８】
図１３は、受信データ転送部202において、ジョブ識別部201から書き込み通知(Write)を受信したときの処理を示すフローチャートである。
【００８９】
受信データ転送部202は、「Write」を受信すると、まず、受信データ管理テーブル203のカレント書き込みブロック(CurWriteBlock)を参照し、NULLか否かを調べる(S1301)。
【００９０】
「CurWriteBlock」がNULLの場合、受信データ転送部202は、RAM108からフリーの受信バッファブロックを1つ獲得する(S1302)。
【００９１】
ここで、受信バッファブロック204について説明する。
【００９２】
図１６に受信バッファブロック204の構成を示す。
【００９３】
受信バッファブロック204は、受信データを格納するデータ部1602と管理情報部1601から構成される。
【００９４】
管理情報部1601は、さらに、「PrevBlock」「NextBlock」「DataSize」「Flag」というメンバから構成される。
【００９５】
「PrevBlock」は、受信バッファブロックのリンクの前のブロックを示す。
【００９６】
「NextBlock」は、受信バッファブロックのリンクの次のブロックを示す。
【００９７】
「DataSize」は、データ部1602に格納しているデータのサイズを示す。
【００９８】
「Flag」は、当該ブロックへの書き込みが終了しているか否かを示すフラグで、「TURE」の場合、書き込みが終了していることを示す。
【００９９】
受信バッファブロック204は、電源起動時に、RAM108上に所定個数フリーのブロックとして確保される。
【０１００】
また、受信データ転送部202が、フリーのブロックを獲得して受信したデータを書き込み、これを次々にリンクしていくことにより、受信バッファブロックのリンクが形成されていく。
【０１０１】
再び図１３のフローチャートに戻って説明する。
【０１０２】
受信データ転送部202は、受信データ管理テーブル203の「CurWriteBlock」に獲得したブロックを示す値をセットし(S1303)、獲得したブロックをリンクに繋げる(S1304)。
【０１０３】
なお、リンクの形成については後述する。
【０１０４】
続いて、受信データ転送部202は、カレント書き込みブロックに、ジョブ識別部201から受信したデータを格納する(S1305)。
【０１０５】
具体的には、書き込み通知(Write)の「*Ptr」で示されるアドレスから、「Size」分のデータを、カレント書き込みブロックのデータ部にコピーする。
【０１０６】
ステップS1305の結果、カレント書き込みブロックのデータ部に空きがなくなった場合(S1306)、受信データ転送部202は、当該ブロックへの書き込みを終了と判断する。
【０１０７】
また、ブロックのデータ部に空きがあっても、データ転送モード(Mode)が非ブロックモードの場合(S1307)、受信データ転送部202は、当該ブロックへの書き込みを終了と判断する。
【０１０８】
受信データ転送部202は、当該ブロックへの書き込みを終了と判断すると、当該ブロックの書き込み済みフラグ(Flag)にTRUEをセットし、受信データ管理テーブル203の「CurWriteBlock」にNULLをセットする(S1308)。
【０１０９】
続いて、受信データ転送部202は、ジョブ識別部201から通知された受信データを全て格納し終えたか否かを判断する(S1309)。
【０１１０】
全データを格納し終えていない場合は、再びステップS1301に移行し、全データを格納し終えた場合は、この時点で一連の処理を終了する。
【０１１１】
図１４は、受信データ転送部202において、ジョブ識別部201から書き込み終了通知(WriteEnd)を受信したときの処理を示すフローチャートである。
【０１１２】
受信データ転送部202は、「WriteEnd」を受信すると、リンクをターミネートする(S1401)。
【０１１３】
具体的には、リンクの最後のブロックの「NextBlock」にリンクの終端であることを示す所定の値(TERM)をセットし、「Flag」にTRUEをセットする。
【０１１４】
＜受信データ転送部のＰＤＬデータ読み出し時の処理＞
図１７は、受信データ転送部202とＰＤＬインタプリタ205間のインターフェースを示す図である。
【０１１５】
ＰＤＬインタプリタ205は、ジョブ識別部201から起動されると、受信データ転送部202に、受信データの読み出し要求(Raed)を通知する。
【０１１６】
「Read」は、この読み出し要求を示し、ジョブの識別番号を示す「JobID」、データの格納先アドレスを示す「*Ptr」、読み出し要求サイズを示す「Size」がセットされる。
【０１１７】
図１８から図１９は、受信データ転送部202において、ＰＤＬインタプリタ205から、読み出し要求の通知「Read」を受信したときの処理を示すフローチャートである。
【０１１８】
受信データ転送部202は、「Read」を受信すると、まず、内部変数「ReqSize(読み出し要求の残りサイズ)」に、「Read」の「Size」で指定された読み出し要求サイズをセットする(S1801)。
【０１１９】
続いて、受信データ転送部202は、受信データ管理テーブル203のカレント読み出しブロック(CurReadBlock)を参照し、NULLか否かを調べる(S1802)。
【０１２０】
「CurReadBlock」がNULLの場合、受信データ転送部202は、「CurReadBlock」に、リンクの最初のブロックを示す値をセットする(S1803)。
【０１２１】
続いて、受信データ転送部202は、カレント読み出しブロックの「Flag」を参照し、当該ブロックへの書き込みが終了しているか否かを調べる(S1804)。
【０１２２】
「Flag」が「TRUE」でない場合、当該ブロックは未だ書き込み中で読み出せないので、「TRUE」になるまで待機する。
【０１２３】
「Flag」が「TRUE」の場合、受信データ転送部202は、内部変数「ReadSize(読み出し済みサイズ)」に、カレント読み出しブロックの格納データサイズ「DataSize」をセットする(S1805)。
【０１２４】
続いて、受信データ転送部202は、カレント読み出しブロックがリンクの終端のブロックか否かを調べる(S1806)。
【０１２５】
具体的には、カレント読み出しブロックの「NextBlock」を参照し、「TERM」がセットされていた場合に、終端のブロックと判断する。
【０１２６】
終端のブロックではなかった場合、受信データ転送部202は、内部変数の「ReqSize」と「ReadSize」とを比較する(S1807)。
【０１２７】
「ReqSize」が「ReadSize」以上の場合は、内部変数「CopySize(コピーするサイズ)」に「ReadSize」をセットする(S1808)。
【０１２８】
「ReqSize」が「ReadSize」より小さい場合は、内部変数「CopySize」に「ReqSize」をセットする(S1809)。
【０１２９】
続いて、受信データ転送部202は、カレント読み出しブロックに格納している受信データを、ＰＤＬインタプリタ205に転送する(S1810)。
【０１３０】
具体的には、カレント読み出しブロックのデータ部に格納しているデータを、ＰＤＬインタプリタ205からの読み出し要求(Read)の「*Ptr」で示されるアドレスに、「CopySize」分コピーする。
【０１３１】
続いて、受信データ転送部202は、内部変数「ReqSize」「ReadSize」それぞれから「CopySize」を差し引く(S1811)。
【０１３２】
次に、受信データ転送部202は、「ReadSize」が0、すなわち、カレント読み出しブロックに格納しているデータを全てＰＤＬインタプリタ205に渡し終えたか否かを判別する(S1812)。
【０１３３】
「ReadSize」が0の場合、受信データ転送部202は、受信データ管理テーブル203のカレント読み出しブロック(CurReadBlock)に、リンクの次のブロック(NextBlock)を示す値をセットする(S1813)。
【０１３４】
続いて、受信データ転送部202は、当該ブロックを解放する(S1814)。
【０１３５】
具体的には、当該ブロックの全データを初期化することにより、当該ブロックはフリーの受信バッファブロックとして解放される。
【０１３６】
続いて、受信データ転送部202は、「ReqSize」が0、すなわち、ＰＤＬインタプリタ205から要求されたサイズ分のデータを全て転送し終えたか否かを判別する(S1815)。
【０１３７】
「ReqSize」が0でない場合、再びステップS1806に移行して、ＰＤＬインタプリタ205にデータを転送する。
【０１３８】
「ReqSize」が0の場合、この時点で処理を終える。
【０１３９】
なお、ステップS1812で、「ReadSize」が0でない場合、まだカレント読み出しブロックに未転送のデータが残っている状態なので、カレント読み出しブロック(CurReadBlock)は解放せずに、そのまま処理を終える。
【０１４０】
図１９は、図１８のステップS1806で、カレント読み出しブロックが、リンクの終端のブロックであった場合の処理を示すフローチャートである。
【０１４１】
受信データ転送部202は、まず、「ReqSize」が0、すなわち、ＰＤＬインタプリタ205へのデータ転送を全て転送し終えたか否かを判別する(S1816)。
【０１４２】
「ReqSize」が0の場合、受信データ転送部202は、ＰＤＬインタプリタ205に一連のデータの最後であることを示す「EOF」を渡す(S1817)。
【０１４３】
具体的には、ＰＤＬインタプリタ205からの「Read」に対して、「EOF」を表す値(例えば-1)を返す。
【０１４４】
なお、ＰＤＬインタプリタ205は、この「EOF」をもって、一連のデータの最後であることを認識する。
【０１４５】
続いて、受信データ転送部202は、当該ブロックを解放し(S1818)、受信データ管理テーブル203を初期化して(S1819)、一連の処理を終える。
【０１４６】
なお、ステップS1816で、「ReqSize」が0でなかった場合、受信データ転送部202は、カレント読み出しブロックに格納しているデータをＰＤＬインタプリタ205に転送して(S1820〜S1824)、処理を終える。
【０１４７】
＜受信バッファブロックのリンクの推移＞
図２０は、上述した受信データ転送部202の処理により、受信バッファブロックのリンクがどのように推移していくかを具体的に示した図である。
【０１４８】
例では、受信データ転送部202が、ジョブ識別部201から24KBのデータを受信し(1回目=16KB、2回目=8KB)、これを、1ブロックのデータ格納サイズが16KBの受信バッファブロックで処理したとする。
【０１４９】
ステップS2001は、受信データ転送部202が、ジョブ識別部201から1回目の「Write」を受信し、図１３のステップS1302でフリーの受信バッファブロックB1を獲得した時点を示す。
【０１５０】
ステップS2002は、受信データ転送部202が、図１３のステップS1305で、カレント書き込みブロックB1に、ジョブ識別部201から受信した1回目の受信データ(16KB分)を書き込み終えた時点を示す。
【０１５１】
図示する通り、1ブロックのデータ格納サイズ(16KB)分のデータを書き込み終えたので、受信バッファブロックB1の「Flag」には「TRUE」がセットされている。
【０１５２】
また、「Flag」が「TRUE」なので、当該ブロックのデータは、ＰＤＬインタプリタ205が読み出し可能な状態となっている。
【０１５３】
ステップS2003は、受信データ転送部202が、ジョブ識別部202から2回目の「Write」を受信し、図１３のステップS1302でフリーの受信バッファブロックB2を獲得し、さらに、ステップS1304でリンクに繋ぎ終えた時点を示す。
【０１５４】
図示する通り、リンクの前のブロック(B1)の「NextBlock」にカレント書き込みブロックB2をセットし、また、カレント書き込みブロックB2の「PrevBlock」に前のブロックB1をセットすることにより、リンクが形成される。
【０１５５】
ステップS2004は、受信データ転送部202が、図１３のステップS1305で、カレント書き込みブロックB2に、ジョブ識別部201から受信した2回目の受信データ(8KB)を書き込み終えた時点を示す。
【０１５６】
ここで、データ転送モード(Mode)が、ブロックモードの場合と、非ブロックモードの場合とで、違いが出てくる。
【０１５７】
ブロックモードの場合、この時点でカレント書き込みブロックB2のデータ部には、未だ空きがあるので、「Flag」に「TRUE」はセットされない(「FALSE」のまま)。
【０１５８】
したがって、当該ブロックのデータは、未だＰＤＬインタプリタ205が読み出し不可能な状態である。
【０１５９】
これに対し、非ブロックモードの場合、この時点で「Flag」に「TRUE」がセットされるので、当該ブロックのデータは、ＰＤＬインタプリタ205が読み出し可能な状態となっている。
【０１６０】
ステップS2005は、受信データ転送部202が、ジョブ識別部201から「WriteEnd」を受信した時点を示す。
【０１６１】
図示する通り、ブロックモードの場合は、この時点で「Flag」に「TRUE」がセットされ、当該ブロックのデータは、ＰＤＬインタプリタ205が読み出し可能な状態となる。
【０１６２】
パケット化された印刷ジョブの場合、ジョブ識別部201でジョブ終了のパケットを受信した時点で「WriteEnd」が通知されるので、ブロックモードで動作させても、ステップS2004からS2005にすぐに移行する。
【０１６３】
すなわち、最後のブロックに格納されたデータは、即座にＰＤＬインタプリタ205に転送される。
【０１６４】
これに対し、パケット化されていない印刷ジョブの場合、「ジョブタイムアウト」が有効な場合は「タイムアウト時間」が経過するまで「WriteEnd」は通知されない。
【０１６５】
また、「ジョブタイムアウト」が無効な場合は、永遠に「WriteEnd」は通知されない。
【０１６６】
したがって、パケット化されていない印刷ジョブの場合、もしブロックモードで動作させると、最後のブロックに格納されたデータは、即座にＰＤＬインタプリタに転送されない可能性がある。
【０１６７】
そこで、パケット化されていない印刷ジョブの場合、非ブロックモードで動作させることにより、ステップS2004の時点で、ＰＤＬインタプリタ205が、最後のブロックに格納されたデータを即座に読み出せるようにしている。
【実施例２】
【０１６８】
実施例１では、受信した印刷ジョブがパケット化された印刷ジョブの場合、ブロックモードで、パケット化されていない印刷ジョブの場合、非ブロックモードで動作させるようにした。
【０１６９】
しかし、パケット化されていない印刷ジョブであっても、ホストとのコネクション断をもってジョブ終了とする場合は、ブロックモードで動作させるようにしても良い
図２１は、実施例２におけるジョブ識別部201の処理を示すフローチャートである。
【０１７０】
実施例１の処理（図８のフローチャート）に対して、ステップS2101〜S2104を追加している。
【０１７１】
ジョブ識別部201は、ホストI/F(103、104)から印刷ジョブを受信すると、まず、どのI/Fから受信したかを判別する(S2101)。
【０１７２】
NetworkI/F104からの受信の場合、次に、「コネクション認識」が有効か否かを判別する(S2102)。
【０１７３】
ここで、「コネクション認識」について説明する。
【０１７４】
コネクションとは、ネットワーク上の一つのホストとの接続のことを指す。
【０１７５】
「コネクション認識」とは、当該ホストとのコネクションが断絶した場合に、これをもって受信中の印刷ジョブを終了させるか否かを指定する設定のことである。
【０１７６】
「コネクション認識」が有効な場合、ホストとのコネクションが断絶した時点で、ジョブを終了させる。
【０１７７】
なお、「コネクション認識」の設定情報は、予めユーザがパネル20から設定し、NVRAM110に保持されている。
【０１７８】
ステップS2102で、「コネクション認識」が有効な場合、ジョブ識別制御部201は、内部変数Mode(データ転送モード)に「ブロックモード」をセットする(S2104)。
【０１７９】
ステップS2101で、LocalI/F103からの受信の場合、また、ステップS2103で「コネクション認識」が無効な場合、ジョブ識別制御部201は、内部変数Mode(データ転送モード)に「非ブロックモード」をセットする(S2103)。
【０１８０】
なお、ステップS2103、S2104で設定した内部変数Modeの値は、後続のパケット化されていない印刷ジョブ用の処理において用いられる。
【０１８１】
ステップS2105〜S2107は、実施例１の図８のステップS801〜S803と同様であるため、説明を割愛する。
【０１８２】
図２２は、本実施例における、パケット化されていない印刷ジョブ用の処理を示すフローチャートである。
【０１８３】
ジョブ識別部201は、まず、受信データ転送部202に書き込み開始通知を行う(S2201)。
【０１８４】
この際、書き込み開始通知で指定するデータ転送モード(Mode)には、先の図２１のステップS2103、S2104で設定された内部変数Modeの値をセットする。
【０１８５】
続いて、ジョブ識別部201は、ＰＤＬインタプリタ205を起動し(S2202)、順次ホストI/Fから受信したデータを受信データ転送部2022に書き込む（ステップS2203〜S2207）。
【０１８６】
NetworkI/F104からの受信の場合、途中でホストとのコネクションが断絶した場合、且つ、「コネクション認識」が有効な場合(S2205)、ジョブ識別部201は、この時点で受信データ転送部202に書き込み終了通知を行う(S2209)。
【０１８７】
以上説明したように、パケット化されていない印刷ジョブであっても、ホストとのコネクション断をもってジョブ終了とする場合には、この時点で「WriteEnd」が通知されるので、ブロックモードで動作させるようにした。
【図面の簡単な説明】
【０１８８】
【図１】画像形成装置のハード構成図。
【図２】コントローラ１０の機能ブロック図。
【図３】ブロック型と非ブロック型の転送方式の動作を説明する第１の図。
【図４】ブロック型と非ブロック型の転送方式の動作を説明する第２の図。
【図５】ブロック型と非ブロック型の転送方式の動作を説明する第３の図。
【図６】ブロック型と非ブロック型の転送方式の動作を説明する第４の図。
【図７】印刷ジョブの構成例を示す図。
【図８】ジョブ識別部201の処理を示す第１のフローチャート。
【図９】ジョブ識別部201の処理を示す第２のフローチャート。
【図１０】ジョブ識別部201の処理を示す第３のフローチャート。
【図１１】ジョブ識別部201と受信データ転送部202間のインターフェースを示す図。
【図１２】受信データ転送部202のＰＤＬデータ書き込み処理を示す第１のフローチャート。
【図１３】受信データ転送部202のＰＤＬデータ書き込み処理を示す第２のフローチャート。
【図１４】受信データ転送部202のＰＤＬデータ書き込み処理を示す第３のフローチャート。
【図１５】受信データ管理テーブル203の構成を示す図。
【図１６】受信バッファブロック204の構成を示す図。
【図１７】受信データ転送部202とＰＤＬインタプリタ205間のインターフェースを示す図。
【図１８】受信データ転送部202のＰＤＬデータ読み出し処理を示す第１のフローチャート。
【図１９】受信データ転送部202のＰＤＬデータ読み出し処理を示す第２のフローチャート。
【図２０】受信バッファブロックのリンクの推移を示した図。
【図２１】実施例２におけるジョブ識別部201の処理を示す第１のフローチャート。
【図２２】実施例２におけるジョブ識別部201の処理を示す第２のフローチャート。
【符号の説明】
【０１８９】
１  画像形成装置
２ａ、２ｂ、２ｃ  ホスト
３  ネットワーク
１０  プリンタ・コントローラ
２０  パネル
３０  プリンタ・エンジン
１０１  ＣＰＵ
１０２  ＣＰＵバス
１０３  ローカルI/F
１０４  Network I/F
１０５  画像生成器
１０６  プリンタI/F
１０７  パネルI/F
１０８  ＲＡＭ
１０９  ＲＯＭ
１１０  ＮＶＲＡＭ
２０１  ジョブ識別部
２０２  受信データ転送部
２０３  受信データ管理テーブル
２０４  受信バッファブロック
２０５  ＰＤＬインタプリタ
２０６  Ｄｉｓｐｌａｙ  Ｌｉｓｔ
２０７  画像形成出力部
２０８  ページ画像
【図１】
2009220497.tif 000003
【図２】
2009220497.tif 000004
【図３】
2009220497.tif 000005
【図４】
2009220497.tif 000006
【図５】
2009220497.tif 000007
【図６】
2009220497.tif 000008
【図７】
2009220497.tif 000009
【図８】
2009220497.tif 000010
【図９】
2009220497.tif 000011
【図１０】
2009220497.tif 000012
【図１１】
2009220497.tif 000013
【図１２】
2009220497.tif 000014
【図１３】
2009220497.tif 000015
【図１４】
2009220497.tif 000016
【図１５】
2009220497.tif 000017
【図１６】
2009220497.tif 000018
【図１７】
2009220497.tif 000019
【図１８】
2009220497.tif 000020
【図１９】
2009220497.tif 000021
【図２０】
2009220497.tif 000022
【図２１】
2009220497.tif 000023
【図２２】
2009220497.tif 000024