以下、本発明の実施形態について添付図面を参照して詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものではなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
[第1の実施形態]
第1の実施形態では、印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に当該原稿の画像データを当該記憶手段から読み出して、当該読み出された画像データに基づいて印刷を実行する。
この印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に中断要因が発生したことに従って、当該記憶手段のうち当該原稿の残りの画像データを記憶すべき記憶領域に特定のデータを記憶するよう制御する。そして、この印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に中断要因が発生した場合には、当該記憶手段に記憶された当該原稿の画像データ及び特定のデータに基づいて印刷を実行する。
以下、詳細に説明する。
本発明の第1の実施形態に係る印刷装置の一例であるMFP103の構成について、図1のブロック図を用いて説明する。尚、MFPとは、Multi Functional Peripheralのことである。
MFP103は、原稿を読み取って画像データを生成し、生成した画像データに基づいて画像をシートに印刷するコピー機能を備えている。また、MFP103は、PC等の外部装置から印刷ジョブを受信し、印刷指示を受け付けたデータに基づいて文字や画像をシートに印刷するPCプリント機能を備えている。尚、印刷機能による印刷は、カラーであっても、モノクロであってもよい。
MFP103のコントローラ部110は、画像入力デバイスであるスキャナ部130、及び、画像出力デバイスであるプリンタ部140と接続されており、画像情報の入出力を制御する。
スキャナ部130は、光学センサを用いて原稿の画像をスキャンし、スキャン画像データを取得する。
スキャナ部130は、制御部135とスキャナデバイス136から構成される。制御部135は、CPU131、RAM132、ROM133、及び、デバイスI/F134を有する。CPU131は、ROM133から読み出してRAM132に展開された制御プログラムを実行することで、スキャナ部130の動作を制御する。
デバイスI/F134は、スキャン画像のビデオ信号を出力するための回路(以降、「ビデオ出力回路」と呼ぶ。)を有する。このビデオ出力回路が備える各種のレジスタの設定を変更することで、スキャン画像のビデオ信号をそのまま出力したり、黒画素で構成されるデータ(ビデオ信号)を生成して出力したり、白画素で構成されるデータ(ビデオ信号)を生成して出力したりできる。そして、デバイスI/F134を介して出力されたスキャン画像のビデオ信号は、コントローラ部110に入力される。
デバイスI/F116は、スキャナ部130と、コントローラ部110とを接続し、画像データの同期系/非同期系の変換を行う。スキャナ部130のスキャナデバイス136の詳細については、図2で後述する。
プリンタ部140は、スキャナ部130やPC等から入力された画像データに基づいて、シートに画像を印刷する。プリンタ部140の詳細については、図2で後述する。
また、コントローラ部110は、ユーザインタフェース部の一例に該当する操作部150と接続される。操作部150は、表示部、及びキー入力部を有する。操作部150は、表示部を介して、ユーザに情報を提供する機能を有する。また、表示部は、LCD(Liquid Crystal Display:液晶表示部)と、LCD上に貼られたタッチパネルシートとで構成される。操作部150は、タッチパネルシートを介して、ユーザから各種設定を受け付ける機能を有する。LCDには、操作画面が表示される他、MFP103の状態が表示される。キー入力部には、例えば、スキャンやコピー等の実行の開始を指示するために用いられるスタートキーや、スキャンやコピー等の稼働中の動作の中止を指示するために用いられるストップキー等がある。
また、コントローラ部110は、ネットワーク104を介してPCやファイル共有サーバ等の外部装置(情報処理装置)と接続され、外部装置から印刷ジョブの受信等の処理を行う。ネットワーク104は、LAN(Local Area Network)であってもよく、インターネット等のWAN(Wide Area Network)であってもよい。
コントローラ部110は、CPU111、RAM112、ROM113、HDD114、ネットワークI/F115、デバイスI/F116、操作部I/F117、画像処理部118、及び、画像メモリ120を有する。各モジュールは、それぞれシステムバス125を介して互いに接続される。
CPU111は、ROM113に記憶された制御プログラム等に基づいて、MFP103を統括的に制御する。
ネットワークI/F115は、外部のネットワークとの通信制御を行うためのインタフェースである。ネットワークI/F115は、MFP103をネットワーク104に接続し、スキャナ部130から入力された画像データをPCやファイル共有サーバ等の外部装置に送信するための通信制御を行う。
HDD114は、主に、コンピュータを起動・動作させるために必要な情報(システムソフトウェア)や、画像データを記憶するための記憶部である。また、HDD114は、操作部150を介してユーザから受け付けたジョブの設定情報(例えば、コピージョブの設定情報)が記憶される。
RAM112は、読み出し及び書き込み可能なメモリである。また、RAM112は、CPU111が動作するためのシステムワークメモリでもある。更に、RAM112には、スキャナ部130やPC等から入力された画像データや、各種プログラムや設定情報等が記憶される。
ROM113は、読み出し専用のメモリである。また、ROM113は、ブートROMである。ROM113には、システムのブートプログラムが予め記憶されている。
ROM113又はHDD114には、CPU111により実行される、後述するフローチャートの各種処理等を実行するために必要な各種の制御プログラムが格納(記憶)されている。
また、ROM113又はHDD114には、ラスタライズを実行するプログラム等が記憶されている。
また、ROM113又はHDD114には、ユーザインタフェース画面(以下、UI画面)を含む操作部150の表示部に各種のUI画面を表示させるための表示制御プログラムも記憶されている。
CPU111が、ROM113又はHDD114に記憶されているプログラムを読み出して、RAM112に当該プログラムを展開することにより、本実施形態に係る各種動作を実行する。
デバイスI/F116は、スキャナ部130、プリンタ部140と、コントローラ部110とを接続し、画像データの同期系/非同期系の変換を行う。
操作部I/F117は、操作部150とコントローラ部110を接続するインタフェースであり、操作部150に表示するための画像データを操作部150に出力する。また、操作部I/F117は、ユーザによって操作部150から入力された情報をCPU111に伝達する。
画像処理部118は、ネットワーク104経由で受信した印刷データに含まれる画像データに対して画像処理を行うほか、デバイスI/F116から入出力される画像データに対して画像処理を行う。
画像処理部118は、ネットワーク104経由で受信した印刷データに含まれる画像データ、又はスキャナ部130による原稿の読み取りによって生成された画像データを画像メモリ120に格納する。そして、画像処理部118は、画像メモリ120に格納された画像データに対して、画像処理回路内のレジスタの値(例えば、カラーモード、変倍率、読取解像度、出力解像度、回転角等)に従って画像変換処理を実行する。ここで、画像変換処理とは、例えば、回転処理、解像度変換処理、変倍処理等のことである。その後、画像処理部118は、変換された画像データを画像メモリ120に再度格納する。
圧縮伸張部119は、JBIGやJPEG等といった各種圧縮方式によって画像メモリ120に格納されている画像データを圧縮/伸張する処理と、HDD114に格納されている画像データを伸張する処理を行う。また、圧縮伸張部119は、圧縮した画像データや伸張した画像データを画像メモリ120やHDD114に再度格納する画像処理ブロックを有する。
画像メモリ120は、画像処理部118によって処理される画像データを一時的に展開し、展開された画像データを書き込むためのメモリ(記憶部)である。画像メモリ120は、例えば、低圧縮画像データを格納するための領域(第1の画像メモリ領域121、及び第4の画像メモリ領域124)と、符号画像データを格納するための領域(第2の画像メモリ領域122、及び第3の画像メモリ領域123)を備える。
尚、画像メモリ120に画像データを格納するためのアドレスが、画像データのページごとにそれぞれ指定される。そして、画像メモリ120のどのアドレスに何ページ目の画像データが格納されているかの情報がRAM112に保存される。
第1の画像メモリ領域121は、例えば、アドレス「0x20000000」(以降、アドレス(a)とも呼ぶ。)で指定される領域である。仮に、画像メモリ120に格納すべき低圧縮画像データのサイズが133MByteである場合、アドレス「0x20000000」から133MByte分の領域が確保される。
第2の画像メモリ領域122は、例えば、アドレス「0x70000000」(以降、アドレス(b)とも呼ぶ。)で指定される領域である。仮に、画像メモリ120に格納すべき符号画像データのサイズが25MByteである場合、アドレス「0x70000000」から25MByte分の領域が確保される。
第3の画像メモリ領域123は、例えば、アドレス「0x80000000」(以降、アドレス(c)とも呼ぶ。)で指定される領域である。仮に、画像メモリ120に格納すべき符号画像データのサイズが25MByteである場合、アドレス「0x80000000」から25MByte分の領域が確保される。
第4の画像メモリ領域124は、例えば、アドレス「0x90000000」(以降、アドレス(d)とも呼ぶ。)で指定される領域である。仮に、画像メモリ120に格納すべき低圧縮画像データのサイズが133MByteである場合、アドレス「0x90000000」から133MByte分の領域が確保される。
尚、画像メモリ120に確保される領域のサイズは、第1の画像メモリ領域121と第4の画像メモリ領域124とで同一のサイズとなり、第2の画像メモリ領域122と第3の画像メモリ領域123とで同一のサイズとなる。
尚、第1の画像メモリ領域121、第2の画像メモリ領域122、第3の画像メモリ領域123、及び第4の画像メモリ領域124として確保すべきサイズは、画像データの圧縮率やサイズに応じて変動させてもよい。また、画像メモリ120に画像データを格納するためのアドレスの開始は、第1の画像メモリ領域121、第2の画像メモリ領域122、第3の画像メモリ領域123、及び第4の画像メモリ領域124のそれぞれで間隔を空けずに割り当ててもよい。
続いて、MFP103の構成について、図2の断面図を用いて説明する。MFP103は、スキャナ部130とプリンタ部140で構成される。
まず、スキャナ部130の動作について、図2の断面図を用いて説明する。
スキャナ部130のスキャナデバイス136は、自動原稿給送部450を有する。自動原稿給送部450は、原稿32を積載するための原稿トレイ30を有し、原稿トレイ30上に載置された原稿32を給送する。そして、スキャナ部130は、固定された光学系の位置で、給送された原稿32の画像を読み取る。以下、具体的に説明する。
自動原稿給送部450は、1枚以上の原稿32で構成される原稿束を積載する原稿トレイ30、原稿32の搬送開始前に原稿束が原稿トレイ30より突出して下流へ進出することを規制する分離パッド21、及び給送ローラ1を有する。
給送ローラ1は、原稿トレイ30に積載された原稿束の原稿面に落下し、回転する。これにより、原稿束の最上面の原稿32が給送される。給送ローラ1によって給送された複数枚の原稿32は、分離ローラ2と分離パッド21の作用によって1枚ずつ分離して給送される。この分離は周知のリタード分離技術によって実現される。
分離ローラ2と分離パッド21によって分離された原稿32は、搬送ローラ対3により、レジストローラ4へ搬送される。そして、搬送された原稿32は、レジストローラ4に突き当てられる。これにより、原稿32の搬送における斜行が解消される。レジストローラ4の下流側には、レジストローラ4を通過した原稿32を流し読みガラス201方向へ搬送する給送パスが配置されている。
給送パスに送られた原稿32は、大ローラ7及び給送ローラ5によりプラテン上に送られる。ここで、大ローラ7は、流し読みガラス201に接触する。そして、スキャナ部130は、流し読みガラス201を通過する原稿32の表面の画像を読み取る。大ローラ7により給送された原稿32は、搬送ローラ6を通過し、ローラ16と排出フラッパの間を移動する。そして、原稿32は、排出フラッパ及び排出ローラ8を介して原稿排出トレイ31に排出される。
スキャナ部130は、原稿32を反転させることで原稿32の裏面の画像を読み取ることができる。具体的には、排出ローラ8に原稿32を噛ませた状態で、排出ローラ8を逆転させて排出フラッパを切り替えることにより、反転パス19へ原稿32を移動させる。移動した原稿32を反転パス19からレジストローラ4へ突き当て、再度、原稿32の搬送における斜行が解消される。その後、給送ローラ5及び大ローラ7により、再び原稿32を流し読みガラス201へ移動させる。そして、スキャナ部130は、流し読みガラス201を通過する原稿32の裏面の画像を読み取る。
一方、原稿台ガラス202上にユーザによって載置された原稿を読み取る場合、スキャナ部130は、原稿台ガラス202上に載置された原稿に対して、光学スキャナユニット209を図3の矢印に示す副走査方向に走査させる。これによって、スキャナ部130は、原稿に記録された画像情報を光学的に読み取る。原稿トレイ30上の原稿32、又は原稿台ガラス202上の原稿は、次の光学系で読み取られる。この光学系は、流し読みガラス201、原稿台ガラス202、光学ランプ203とミラー204を有する光学スキャナユニット209、ミラー205及び206、レンズ207、CCDセンサユニット210を備える。本実施形態では、CCDセンサユニット210は、CCD211(カラー画像の読み取り用(RGB)のCCD(3ラインセンサユニット)、及び、白黒画像の読み取り用のCCD(1ラインセンサユニット))で構成される。
この光学系で読み取られた画像情報は光電変換されて、図1で説明したコントローラ部110に画像データとして入力される。尚、本実施形態では、スキャナ部130が備える光学系は、原稿32からの反射光をCCDセンサ上に結像する縮小光学系である場合について説明したが、これに限られない。スキャナ部130が備える光学系は、原稿32からの反射光をCIS(Contact Image Sensor)上に結像する等倍光学系であってもよい。
続いて、プリンタ部140の動作について、図2の断面図を用いて説明する。プリンタ部140は、プリンタ部140に転送された画像データに基づいて画像をシート301に出力する動作(印刷動作)を行う。以下、具体的に説明する。
プリンタ部140に転送された画像データは、レーザユニット332によって画像データに応じたレーザ光への変換が行われる。そして、このレーザ光は感光体ドラム(323〜326)に照射され、感光体ドラム(323〜326)には画像データに応じた静電潜像が形成される。感光体ドラム(323〜326)の潜像の部分には、現像ユニット(327〜330)によってトナー(現像剤)が付着される。尚、カラー機では、シアン、イエロー、マゼンタ、ブラック用に、4つの感光体ドラム(323〜326)、及び4つの現像ユニット(327〜330)を備えている。
また、プリンタ部140は、シート収納部(給紙段とも呼ぶ)として、カセット(351〜354)、及び、手差しトレイ350を有している。
尚、カセット(351〜354)は、複数枚(例えば、600枚)のシート301を収納することができる。一方、手差しトレイ350は、複数枚(例えば、100枚)のシート301を収納することができる。
プリンタ部140は、カセット(351〜354)、及び、手差しトレイ350のいずれかから給送されたシート301に対して、感光体ドラム(323〜326)に付着したトナーをシート301に転写する。その後、トナーが転写されたシート301は、定着ユニット333に搬送される。そして、熱と圧力によって、トナーがシート301に定着される。定着ユニット333を通過したシート301は、搬送ローラ334、335によってMFP103が備える排出トレイ345(排出部)に排出される。尚、MFP103は、感光体ドラム(323〜326)、及び現像ユニット(327〜330)を4つずつ備えるカラー機である場合について説明したが、これに限られない。MFP103は、感光体ドラム326と現像ユニット330を1つずつ備えるモノクロ機であっても、本発明を同様に適用できる。
尚、電子写真方式で画像をシート301に印刷する方法について説明したが、これに限られない。画像をシート301に印刷することができるものであれば、例えばインクジェット方式等で画像をシート301に印刷する方法であってもよく、その他の方法(例えば、熱転写方式等)であっても、本発明を同様に適用できる。
次に、スキャナ部130からビデオ信号が入力された後、HDD114に符号画像データが格納されるまでの一連の処理(S3001〜S3003)を、図3(A)に示す模式図を用いて説明する。
CPU111は、スキャンのための画像処理の順序、及び画像領域の順序を規定した図3(A)に示すスキャン画像パス3000を設定する。そして、CPU111は、スキャン画像パス3000を設定した後に、S3001〜S3003の処理を実行する。また、CPU111は、S3001〜S3003で後述する画像処理を画像処理部118で行うための各種パラメータの設定を行う。
S3001は、スキャナ部130から入力されたビデオ信号を低圧縮画像データに変換する処理である。S3001で変換された低圧縮画像データは、画像メモリ120のアドレス(a)で参照される第1の画像メモリ領域121に格納される。
S3002は、第1の画像メモリ領域121に格納された低圧縮画像データを圧縮伸張部119で圧縮して符号画像データを生成する圧縮処理である。尚、低圧縮画像データは、圧縮率の低い画像データのことである。尚、低圧縮画像データは、圧縮されていない画像データ(非圧縮画像データ)であってもよい。一方、符号画像データは、低圧縮画像データよりも圧縮率が高い画像データのことである。即ち、低圧縮画像データは、符号画像データと比べてデータ量が大きい。S3002で生成された符号画像データは、画像メモリ120のアドレス(b)で参照される第2の画像メモリ領域122に格納される。
S3003は、第2の画像メモリ領域122に格納された符号画像データをHDD114に格納する処理である。S3003の処理により、第2の画像メモリ領域122に格納された第1のページの原稿の符号画像データの読み出しの完了を待たずに、当該第1のページに後続する第2のページの原稿の符号画像データを第2の画像メモリ領域122に格納することができる。このため、第1のページに後続する第2のページの原稿の読み取りの開始が遅れてしまうことを防ぐことができる。
尚、CPU111は、スキャン処理の開始時に、第1の画像メモリ領域121、第2の画像メモリ領域122、及びHDD114のそれぞれに対してデータを格納するためのリソースを確保する。例えば、読み取り原稿のサイズが「A4」で、且つ、読み取り解像度が「600dpi」(32bit per pixel)であるとする。この場合、第1の画像メモリ領域121に対しては、例えば、133MByte分のデータ(低圧縮画像データ)を格納するためのリソースを確保する。一方、第2の画像メモリ領域122に対しては、例えば、25MByte分のデータ(符号画像データ)を格納するためのリソースを確保する。
CPU111は、S3002で説明した圧縮処理が完了した後、第1の画像メモリ領域121のリソースを解放する。また、CPU111は、S3003で説明した格納処理が完了した後、第2の画像メモリ領域122のリソースを解放する。
尚、第1の画像メモリ領域121のリソースが解放された場合、第1の画像メモリ領域121に対して、他の処理のためのデータを上書きすることが可能となる。また、第2の画像メモリ領域122のリソースが解放された場合、第2の画像メモリ領域122に対して、他の処理のためのデータを上書きすることが可能となる。このように、第1の画像メモリ領域121のリソースや、第2の画像メモリ領域122のリソースを解放することにより、画像メモリ120にオーバーフローが発生することがない。尚、第1の画像メモリ領域121のリソースが解放されたことに従って、第1の画像メモリ領域121に記憶されていた低圧縮画像データが削除される変形例であってもよい。同様に、第2の画像メモリ領域122のリソースが解放されたことに従って、第2の画像メモリ領域122に記憶されていた符号画像データが削除される変形例であってもよい。
画像メモリ120にデータを格納するための領域の確保と解放について、図4(A)、及び図4(B)に示す模式図を用いて説明する。
図4(A)は、第1の画像メモリ領域121、及び第2の画像メモリ領域122のそれぞれのリソースが画像メモリ120に確保された状態を示している。
第1の画像メモリ領域121は、例えば、アドレス「0x20000000」で指定される領域である。仮に、画像メモリ120に格納すべき低圧縮画像データのサイズが133MByteである場合、アドレス「0x20000000」から133MByte分の領域が確保される。
第2の画像メモリ領域122は、例えば、アドレス「0x70000000」で指定される領域である。仮に、画像メモリ120に格納すべき符号画像データのサイズが25MByteである場合、アドレス「0x70000000」から25MByte分の領域が確保される。
図4(B)は、第2の画像メモリ領域122のリソースのみが画像メモリ120に確保されて、第1の画像メモリ領域121のリソースは画像メモリ120から解放された状態を示している。これにより、例えば、アドレス「0x20000000」で指定された第1の画像メモリ領域121は、他のページのスキャン処理のために画像メモリ120のリソースを割り当てられるようになる。
続いて、画像メモリ120又はHDD114からデータが読み出された後、プリンタ部140にビデオ信号が出力されるまでの一連の処理(S4001〜S4003)を、図3(B)に示す模式図を用いて説明する。
CPU111は、プリントのための画像処理の順序、及び画像領域の順序を規定した図3(B)に示すプリント画像パス4000を設定する。そして、CPU111は、プリント画像パス4000を設定した後に、S4001〜S4003の処理を実行する。尚、CPU111は、S4001〜S4003で後述する画像処理を画像処理部118で行うための各種パラメータの設定を行う。
S4001は、HDD114に格納された符号画像データを読み出す処理である。S4001でHDD114から読み出された符号画像データは、画像メモリ120のアドレス(c)で参照される第3の画像メモリ領域123に格納される。
S4002は、第3の画像メモリ領域123に格納された符号画像データを圧縮伸張部119で伸張して低圧縮画像データを生成する伸張処理である。S4002で生成された低圧縮画像データは、画像メモリ120のアドレス(d)で参照される第4の画像メモリ領域124に格納される。
S4003は、第4の画像メモリ領域124に格納された低圧縮画像データをビデオ信号に変換してプリンタ部140に出力する処理である。
尚、CPU111は、プリント処理の開始時に、第3の画像メモリ領域123、第4の画像メモリ領域124、及びHDD114のそれぞれに対してデータを格納するためのリソースを確保する。
まず、プリント処理の実行タイミングで、同一ページの原稿の低圧縮画像データが格納された第1の画像メモリ領域121のリソースが解放されていない場合について説明する。この場合、CPU111は、画像メモリ120から低圧縮画像データを読み出すためのアドレスを、第4の画像メモリ領域124を参照するためのアドレス(d)から、第1の画像メモリ領域121を参照するためのアドレス(a)に置き換える。
即ち、CPU111は、プリンタ部140にビデオ信号を出力するための前処理として、画像メモリ120のアドレス(a)で指定される領域に格納された低圧縮画像データを読み出せばよい。言い換えれば、CPU111は、第1の画像メモリ領域121に格納された低圧縮画像データを取得するため、図3(B)で説明したS4001、及びS4002の処理を省略することができる。このため、S4001〜S4003のすべての処理を実行する場合と比較して、シートへの画像の印刷が開始されるまでの時間を短縮することができる。
また、画像メモリ120から低圧縮画像データを読み出すためのアドレスが第1の画像メモリ領域121に置き換えられた場合、第4の画像メモリ領域124には、同一ページの原稿の低圧縮画像データが格納されない。一旦確保された第4の画像メモリ領域124のリソースは不要となるため、CPU111は、第4の画像メモリ領域124のリソースを解放する。また、画像メモリ120から低圧縮画像データを読み出すためのアドレスが第1の画像メモリ領域121に置き換えられた場合、第3の画像メモリ領域123には、同一ページの原稿の符号画像データが格納されない。一旦確保された第3の画像メモリ領域123のリソースは不要となるため、CPU111は、第3の画像メモリ領域123のリソースを解放する。このように不要となった画像メモリ120のリソースを解放することで、他のページのスキャン処理のために画像メモリ120のリソースを割り当てられるようになる。
次に、プリント処理の実行タイミングで、同一ページの原稿の低圧縮画像データが格納された第1の画像メモリ領域121のリソースが解放されている場合について説明する。また、当該プリント処理の実行タイミングで、同一ページの原稿の符号画像データが格納された第2の画像メモリ領域122のリソースが解放されていない場合について説明する。この場合、CPU111は、画像メモリ120から符号画像データを読み出すためのアドレスを、第3のメモリ領域123を参照するためのアドレス(c)から、第2の画像メモリ領域122を参照するためのアドレス(b)に置き換える。
即ち、CPU111は、プリンタ部140にビデオ信号を出力するための前処理として、画像メモリ120のアドレス(b)で指定される領域に格納された符号画像データを読み出せばよい。言い換えれば、CPU111は、第2の画像メモリ領域122に格納された符号画像データを取得するため、図3(B)で説明したS4001の処理を省略することができる。このため、S4001〜S4003のすべての処理を実行する場合と比較して、シートへの画像の印刷が開始されるまでの時間を短縮することができる。
また、画像メモリ120から符号画像データを読み出すためのアドレスが置き換えられた場合、第3の画像メモリ領域123には、符号画像データが格納されない。一旦確保された第3の画像メモリ領域123のリソースは不要となるため、CPU111は、第3の画像メモリ領域123のリソースを解放する。このように不要となった画像メモリ120のリソースを解放することで、他のページのスキャン処理のために画像メモリ120のリソースを割り当てられるようになる。
次に、以下の場合について説明する。プリント処理の実行タイミングで同一ページの原稿の低圧縮画像データが格納された第1の画像メモリ領域121のリソースが解放され、同一ページの原稿の符号画像データが格納された第2の画像メモリ領域122のリソースが解放されていた場合である。この場合、CPU111は、HDD114から符号画像データを読み出して、S4001、S4002、及びS4003の処理を行う。
続いて、第1の実施形態に係るMFP103において、スキャン処理を動作させた時の処理の順序を、図5(A)〜(D)の模式図を用いてそれぞれ説明する。
図5(A)は、S3001の処理が実行されて、第1の画像メモリ領域121に低圧縮画像データが格納されるフェーズを表している。
図5(B)は、第1の画像メモリ領域121に低圧縮画像データが格納された後、S3002の処理が実行されて、第2の画像メモリ領域122に符号画像データが格納されるフェーズを表す。
図5(C)は、第2の画像メモリ領域122に符号画像データが格納された後、S3003の処理が実行されて、HDD114に符号画像データが格納されるフェーズを表している。この時、第1の画像メモリ領域121のリソースは解放されている。このため、第1の画像メモリ領域121のリソースを、他のページのスキャン処理のために割り当てられるようになる。
図5(D)は、スキャン処理が完了し、HDD114に符号画像データが格納された状態を表している。この時、第1の画像メモリ領域121、及び、第2の画像メモリ領域122のリソースは解放されている。このため、第1の画像メモリ領域121のリソース、及び、第2の画像メモリ領域122のリソースを、他のページのスキャン処理のために割り当てられるようになる。
続いて、第1の実施形態に係るMFP103において、コピー処理の動作時にスキャン処理とプリント処理を並列で動作させた時の処理の順序を、図6(A)〜(D)の模式図を用いてそれぞれ説明する。図6(A)〜(D)は、図5(A)〜(D)で説明したいずれかのフェーズでプリント処理が開始されることを表している。
尚、第1の実施形態に係るMFP103では、印刷のために画像メモリ120から画像データが読み出される速度よりも、原稿の読み取りにより画像メモリ120に画像データが書き込まれる速度の方が速いものとする。
尚、第1の実施形態におけるコピー処理の動作では、第4の画像メモリ領域124を参照するためのアドレス(d)を、第1の画像メモリ領域121を参照するためのアドレス(a)に置き換えることができる設定となっているものとして以降説明を進める。
また、第1の実施形態におけるコピー処理の動作では、第3の画像メモリ領域123を参照するためのアドレス(c)を、第2の画像メモリ領域122を参照するためのアドレス(b)に置き換えることができる設定となっているものとして以降説明を進める。
図6(A)は、図5(A)で説明したスキャン処理のフェーズで、プリント処理が開始された場合のコピー処理動作の処理内容を表す。このコピー処理動作のフェーズ(以降、当該フェーズを「コピー並列処理モード」と呼ぶ。)では、第4の画像メモリ領域124を参照するためのアドレス(d)が、第1の画像メモリ領域121を参照するためのアドレス(a)を参照するためのアドレスに置き換えられる。そして、S4003の処理では、第1の画像メモリ領域121に格納された低圧縮画像データが読み出される。即ち、図6(A)のコピー処理動作では、図3(A)で説明したS3001の処理と、図3(B)で説明したS4003の処理のみでコピー処理の動作が行われる。
即ち、図6(A)のプリント処理では、CPU111は、第1の画像メモリ領域121に格納された低圧縮画像データを取得するため、図3(B)で説明したS4001、及びS4002の処理を省略することができる。このため、S4001〜S4003のすべての処理を実行する場合と比較して、シートへの画像の印刷が開始されるまでの時間を短縮することができる。
また、図6(A)のスキャン処理では、HDD114に符号画像データを格納するために、図3(A)で説明したS3002、及びS3003の処理まで行われる。このように、HDD114に符号画像データを格納することにより、プリント処理で異常が発生した場合(例えば、プリントジャム等が発生した場合)であっても、異常からの復帰後にプリント処理を再開することができる。
図6(B)は、図5(B)で説明したスキャン処理のフェーズで、プリント処理が開始された場合のコピー処理動作の処理内容を表す。このコピー処理動作のフェーズでは、S3001の処理が完了し、且つ、S3002の処理が実行中である。即ち、当該フェーズでは、第1の画像メモリ領域121のリソースがS3002の処理のために使用中である。言い換えれば、当該フェーズでは、第1の画像メモリ領域121のリソースがまだ解放されていない。このため、図6(A)のコピー処理動作と同様に、図6(B)のコピー処理動作では、第4の画像メモリ領域124を参照するためのアドレス(d)が、第1の画像メモリ領域121を参照するためのアドレス(a)を参照するためのアドレスに置き換えられる。そして、S4003の処理では、第1の画像メモリ領域121に格納された、対応する低圧縮画像データが読み出される。即ち、図6(B)のコピー処理動作では、S3001の処理とS4003の処理のみでコピー処理の動作が行われる。
即ち、図6(B)のプリント処理では、CPU111は、第1の画像メモリ領域121に格納された低圧縮画像データを取得するため、図3(B)で説明したS4001、及びS4002の処理を省略することができる。このため、S4001〜S4003のすべての処理を実行する場合と比較して、シートへの画像の印刷が開始されるまでの時間を短縮することができる。
また、図6(B)のスキャン処理では、HDD114に符号画像データを格納するために、S3003の処理まで行われる。このように、HDD114に符号画像データを格納することにより、プリント処理で異常が発生した場合(例えば、プリントジャム等が発生した場合)であっても、異常からの復帰後にプリント処理を再開することができる。
図6(C)は、図5(C)で説明したスキャン処理のフェーズで、プリント処理が開始された場合のコピー処理動作の処理内容を表す。このコピー処理動作のフェーズでは、S3001、及びS3002の処理が完了し、且つ、S3003の処理が実行中である。即ち、当該フェーズでは、第2の画像メモリ領域122のリソースがS3003の処理のために使用中である。言い換えれば、当該フェーズでは、第2の画像メモリ領域122のリソースがまだ解放されていない。一方、当該フェーズでは、第1の画像メモリ領域121のリソースは解放された状態である。このため、図6(C)のコピー処理動作では、第3の画像メモリ領域123を参照するためのアドレス(c)が、第2の画像メモリ領域122を参照するためのアドレス(b)を参照するためのアドレスに置き換えられる。そして、S4002の処理では、第2の画像メモリ領域122に格納された符号画像データが読み出される。即ち、図6(C)のコピー処理動作では、S3001、S3002、S4002、及びS4003の処理でコピー処理の動作が行われる。
即ち、図6(C)のプリント処理では、CPU111は、第2の画像メモリ領域122に格納された符号画像データを取得するため、図3(B)で説明したS4001の処理を省略することができる。このため、S4001〜S4003のすべての処理を実行する場合と比較して、シートへの画像の印刷が開始されるまでの時間を短縮することができる。
また、図6(C)のスキャン処理では、HDD114に符号画像データを格納するために、S3003の処理まで行われる。このように、HDD114に符号画像データを格納することにより、プリント処理で異常が発生した場合(例えば、プリントジャム等が発生した場合)であっても、異常からの復帰後にプリント処理を再開することができる。
図6(D)は、図5(D)で説明したスキャン処理のフェーズで、プリント処理が開始された場合のコピー処理動作の処理内容を表す。このコピー処理動作のフェーズでは、S3001、S3002、及びS3003の処理が完了している。即ち、当該フェーズでは、第1の画像メモリ領域121のリソースが解放された状態で、且つ、第2の画像メモリ領域122のリソースも解放された状態である。また、当該フェーズでは、HDD114に符号画像データが格納された状態である。このため、図6(D)のコピー処理動作では、画像メモリ120を参照するためのアドレスの置き換えが行われない。即ち、CPU111は、HDD114に格納された符号画像データを読み出した後、S4001、S4002、及びS4003の処理でコピー処理の動作が行われる。
図6(D)のコピー処理動作では、第2の画像メモリ領域122に格納された第1のページの原稿の符号画像データの読み出し完了を待たずに、第1のページに後続する第2のページの原稿の符号画像データを第2の画像メモリ領域122に格納する事ができる。このため、第1のページに後続する第2のページの原稿の読み取りの開始が遅れてしまうことを防ぐことができる。また、第2の画像メモリ領域122に格納された符号画像データがHDD114に格納されたことに従って、第2の画像メモリ領域122のリソースが解放されるため、画像メモリ120にオーバーフローが発生することがない。
続いて、図6(A)で前述したコピー処理動作のフェーズ(コピー並列処理モード)におけるコピー処理動作のタイミングチャートについて、図7の模式図を用いて説明する。
タイミング701は、スタートキーが押下されたことに従って、コピージョブが開始されたタイミングを示す。
タイミング718は、ビデオ信号の出力が終了したタイミングを示す。
第1の実施形態では、MFP103がコピー並列処理モードで動作することにより、タイミング701からタイミング718までの間に掛かる時間を短縮する。
コマンド702、コマンド703、コマンド704、コマンド705、及びコマンド706は、スキャナ部130のデバイスI/F134と、コントローラ部110のデバイスI/F116と、の間でやり取りされるコマンドである。また、これらのコマンド702〜706は、コントローラ部110と、スキャナ部130の制御部135と、が同期を取りながら動作するためのコマンドでもある。
コマンド702は、原稿32の引き込みの準備要求である。スキャナ部130の制御部135は、コマンド702を受信したことに従って、原稿トレイ30に積載された原稿32の引き込みのための初期設定等を行う。
コマンド703は、コマンド702に対する返答コマンドである。コントローラ部110は、コマンド702を受信することで、原稿32の引き込みのための準備が行われたと判断する。コントローラ部110のCPU111は、コマンド702を受信したことに従って、スキャンのための画像処理の順序、及び画像領域の順序を規定した図3(A)のスキャン画像パス3000を設定する。
コマンド704は、原稿32の引き込みのための開始要求である。スキャナ部130の制御部135は、コマンド704を受信したことに従って、原稿トレイ30に積載された原稿32の引き込みを開始する。
コマンド705は、コマンド704に対する返答コマンドである。コントローラ部110は、コマンド705を受信することで、原稿32の引き込みが開始されたと判断する。このとき、スキャナ部130の制御部135は、コントローラ部110に対して、原稿32の引き込みが正常に開始された旨の情報を通知してもよい。
コマンド706は、スキャンビデオ要求であり、スキャナ部130からのスキャン画像のビデオ信号の入力を要求するためのコマンドである。尚、コマンド706は、コントローラ部110のCPU111が、スキャナ部130に対して原稿32の読み取りを指示するコマンドに相当する。
割り込み707は、ビデオ信号入力開始の割り込みである。割り込み707が通知されてから、スキャン画像のビデオ信号がコントローラ部110に継続的に入力される。そして、コントローラ部110に入力されたスキャン画像のビデオ信号は、コントローラ部110の画像処理部118によって画像処理が行われる。
ビデオ715は、スキャン画像のビデオ信号を模式的に表したものである。
タイミング716は、スキャン画像のビデオ信号の終了タイミングを示す。
コマンド710、コマンド711、及び、コマンド713は、プリンタ部140と、コントローラ部110のデバイスI/F116と、の間でやり取りされるコマンドである。
コマンド710は、給紙のための開始要求である。プリンタ部140は、コマンド710を受信したことに従って、カセット(351〜354)に収納されたシートや、手差しトレイ350に保持されたシートの給送を開始する。
コマンド711は、コマンド710に対する返答コマンドである。コントローラ部110は、コマンド711を受信することで、給紙が開始されたと判断する。
コマンド713は、プリントビデオ要求であり、プリンタ部140へのプリント画像のビデオ信号の出力開始を要求するためのコマンドである。尚、コマンド713は、コントローラ部110のCPU111が、プリンタ部140に対して印刷を指示するコマンドに相当する。
割り込み714は、プリントビデオ開始の割り込みである。割り込み714が通知されてから、プリント画像のビデオ信号がプリンタ部140に継続的に入力される。そして、プリンタ部140に入力されたプリント画像のビデオ信号に基づいて、プリンタ部140での印刷動作が行われる。
ビデオ717は、プリント画像のビデオ信号を模式的に表したものである。
イベント709は、プリント準備の開始イベントである。コントローラ部110がイベント709を受け付けたことに従って、コマンド710がプリンタ部140に通知される。また、コントローラ部110のCPU111は、イベント709を受け付けたことに従って、図3(B)で示したように、プリントのための画像処理の順序、及び画像領域の順序を規定したプリント画像パス4000を設定する。また、CPU111は、図3(B)のS4001〜S4003で説明した画像処理を行うための各種パラメータを画像処理部118に設定し、画像メモリ120の画像メモリ領域に対して確保すべきリソースを確保する。
MFP103がコピー並列処理モードで動作している場合、スキャン側処理でコマンド705を受信してから、プリント側処理でイベント709が通知されるところが特徴である。
イベント712は、プリント処理の開始イベントである。コントローラ部110がイベント712を受け付けたことに従って、コマンド713がプリンタ部140に通知される。尚、割り込み707が通知されたことに従って、イベント712が発生する。
異常通知708は、スキャン処理の実行中に異常(以降、中断要因とも呼ぶ。)が発生したことにより、スキャナ部130のデバイスI/F134と、コントローラ部110のデバイスI/F116と、を介して異常が通知された状態を示す。
スキャン処理の実行中に発生する異常として、例えば、原稿32のジャムや、原稿32のサイズ誤検知によるエラーや、重送検知によるエラーや、スキャン処理の停止によるエラーや、電気ノイズ等によるスキャンビデオ信号の異常エラー等がある。
尚、重送検知によるエラーは、自動原稿給送部450に超音波センサ等の重送検知センサが備えられている場合に、自動原稿給送部450から原稿32を給送し、給送された原稿32に重送が起きたことを重送検知センサで検知した時に発生するものである。
また、スキャン処理の停止によるエラーは、原稿32の画像の読み取りの途中で、原稿32の画像の読み取りを停止するためのストップキーの押下を、操作部150を介してユーザから受け付けた時に発生するものである。
また、スキャンビデオ信号の異常エラーは、スキャナ部130の制御部135のデバイスI/F134が有するビデオ出力回路によってスキャン画像のビデオ信号を生成する時に、電気ノイズ等に起因して発生するものである。
例えば、原稿32のジャムが発生した場合、原稿32のジャムが発生したことに従って、図14(A)に示すエラー画面1410が操作部150の表示部に表示される。また、例えば、原稿32の重送検知によるエラーが発生した場合、原稿32の重送検知によるエラーが発生したことに従って、図14(B)に示すエラー画面1420が操作部150の表示部に表示される。
第1の実施形態では、印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に当該原稿の画像データを当該記憶手段から読み出して、当該読み出された画像データに基づいて印刷を実行する。
この印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に中断要因が発生したことに従って、当該記憶手段のうち当該原稿の残りの画像データを記憶すべき記憶領域に特定のデータを記憶するよう制御する。そして、この印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に中断要因が発生した場合には、当該記憶手段に記憶された当該原稿の画像データ及び特定のデータに基づいて印刷を実行する。
以下、詳細に説明する。
画像メモリ120に書き込まれるデータについて、図8(A)、及び図8(B)に示す模式図を用いて説明する。前述したとおり、画像メモリ120は、MFP103で実行されるすべての画像処理で共有される。このため、コピージョブに基づく画像処理に必要な画像メモリ領域が、画像メモリ120に対してその都度確保される。そして、確保された画像メモリ120の画像メモリ領域は、使用後に解放される。
図8(A)は、タイミング701の時点における画像メモリ120のデータの状態を模式的に表した図である。
図8(A)の例では、画像メモリ120に不定データが残っている状態を示す。不定データは、例えば、画像メモリ120に記憶されたデータをクリアした時に、画像メモリ120に書き込まれたランダムデータである。また、不定データは、例えば、別のジョブ(例えば、ネットワーク経由で外部装置から受信した印刷ジョブや、FAX受信ジョブ等)の実行で画像メモリに書き込まれたデータである。
原稿32の搬送中にジャム等の中断要因が発生すると、原稿32の搬送が止まるため、原稿32の画像がスキャナ部130で読み取られない。このため、コントローラ部110にスキャン画像のビデオ信号が入力されない。コントローラ部110にスキャン画像のビデオ信号が入力されない限り、スキャンで生成される画像データが画像メモリ120に格納されることはない。故に、画像メモリ120に残っていた不定データが、スキャンで生成される画像データによって上書きされない。
一方、プリント処理では、画像メモリ120に書き込まれているデータが読み出される。そして、プリンタ部140は、印刷のために画像メモリ120から読み出されたデータに基づいて、シートに画像を印刷する。
第1の実施形態では、印刷のために画像メモリ120から画像データが読み出される速度よりも、原稿32の読み取りにより画像メモリ120に画像データが書き込まれる速度が速いMFP103が、コピー並列処理モードで動作する例について述べる。
コピー並列処理モードでは、スキャン処理のために原稿32の引き込みが開始されたことに従って、プリント処理を実行するための準備動作が開始される。そして、コピー並列処理モードでは、原稿32の画像がスキャナ部130で読み取られ、スキャン画像のビデオ信号がコントローラ部110に入力されたことに従って、画像メモリ120に書き込まれているデータがプリント処理で読み出される。このため、コピー並列処理モードで動作している間に中断要因が発生し、原稿32の読み取り動作を停止させるための要求をコントローラ部110が受け付けた時には、画像メモリ120に書き込まれているデータがプリント処理で既に読み出されてしまっている。
一方、原稿ジャム等の中断要因の発生により、コントローラ部110にスキャン画像のビデオ信号が入力されないため、画像メモリ120に残っていた不定データは、スキャンで生成される画像データによって上書きされない。
故に、コピー並列処理モードで動作している間に中断要因が発生した場合、画像メモリ120に残っていた不定データがプリント処理で読み出されてしまう為、画像メモリ120から読み出された不定データに基づいてシートに画像が印刷されてしまう。もし、この不定データが、ユーザが想定することがないランダムデータであった場合、ランダムデータに基づく印刷が行われてしまう。このため、ユーザは、印刷されたシート(印刷物)を見たときに、想定していないデータに混乱してしまう。一方、もし、この不定データが、ユーザがアクセスすることができない他人のジョブのデータであった場合、他人のジョブのデータに基づく印刷が行われてしまう。このため、ユーザは、印刷されたシート(印刷物)を見たときに、本来ならアクセスすることができないはずの他人のジョブのデータを知ってしまう。
尚、図8(A)に示すように、例えば、アドレス「0x20000000」を先頭に、第1の画像メモリ領域121が割り当てられたとする。割り込み707が通知された時点からスキャンのための画像処理が開始され、処理された画像データに対する第1の画像メモリ領域121への書き込みが開始される。尚、画像データは、一定量の単位データで分割して処理される。単位データは、1ラインであってもよく、一定数のラインをまとめたバンドであってもよく、一定サイズの矩形であってもよい。画像データは、固定長のヘッダ部と可変長のデータ部とから構成される。
図8(B)は、画像メモリ120に書き込まれた画像データの状態を模式的に表した図である。
図8(B)の例では、割り込み714が通知された時点で、画像メモリ120に3単位データ分の画像データ(低圧縮画像データ)が書き込まれた状態を示す。この状態において、図3(B)で前述したS4003の処理では、アドレス「0x20000000」から画像データの読み出しを開始する。そして、画像データのヘッダ部(A1)とデータ部(A1)の読み出しが完了した時点で、コントローラ部110の画像処理部118は、単位データ(A1)の画像処理を行う。続いて、画像データのヘッダ部(A2)とデータ部(A2)の読み出しが完了した時点で、画像処理部118は、単位データ(A2)の画像処理を行う。続いて、画像データのヘッダ部(A3)とデータ部(A3)の読み出しが完了した時点で、画像処理部118は、単位データ(A3)の画像処理を行う。このように、画像処理部118は、画像データのヘッダ部とデータ部の読み出しの完了と共に単位データの画像処理を行う。
尚、割り込み714が通知された時点では、スキャン処理を実行している途中であり、さらに継続的にスキャンのための画像処理が行われる。図8(B)の例では、画像データのデータ部(A3)以降のアドレスに、継続的に画像データが書き込まれる。
第1の実施形態では、MFP103がコピー並列処理モードで動作している場合、異常通知708により異常が通知されても、スキャン処理の実行を継続するものである。
第1の実施形態では、割り込み707が通知されてからスキャン処理の実行中に何らかの異常が発生し、原稿の読み取り動作を停止させるための要求(以降、アボート要求と呼ぶ。)が発生しても、タイミング718まで継続的にスキャンのための画像処理を行う。これにより、画像メモリ120に書き込む画像データを完成させる。
異常が発生した時点で、画像メモリ120には、それ以降、特定のデータが書き込まれる。特定のデータは、例えば、当該データに基づいてシートに画像を印刷すると、黒ベタ画像となるようなデータ(即ち、黒画素で構成されるデータ)や、白紙となるようなデータ(即ち、白画素で構成されるデータ)である。
前述したように、スキャナ部130の制御部135のデバイスI/F134のビデオ出力回路が備える各種のレジスタの設定を変更することで、黒画素で構成されるデータを生成して出力したり、白画素で構成されるデータを生成して出力したりすることができる。そして、CPU111は、これらの出力データ(特定のデータ)を画像メモリ120に書き込む。これにより、割り込み707が通知されてから、スキャン処理の実行中に何らかの異常が発生し、アボート要求が発生したとしても、画像メモリ120に残っていた不定データがプリント処理で読み出されてしまうことがない。なぜなら、画像メモリ120に残っていた不定データは、特定のデータに上書きされるからである。
尚、スキャン処理の実行中にアボート要求が発生しても、画像メモリ120から画像データを読み出すためのアドレスを変更する事により、画像メモリ120に残っていた不定データがプリント処理で読み出されないよう制御する変形例であってもよい。このとき、例えば、スキャン処理の実行中にアボート要求が発生したことに従って、画像メモリ120から画像データを読み出すためのアドレスを、特定のデータが予め記憶された画像メモリ領域を参照するためのアドレスに変更すればよい。特定のデータは、例えば、当該データに基づいてシートに画像を印刷すると、黒ベタ画像となるようなデータ(即ち、黒画素で構成されるデータ)や、白紙となるようなデータ(即ち、白画素で構成されるデータ)である。尚、プリンタ部140がコマンド710を受信する前(即ち、プリント処理の開始前)に、スキャン処理の実行中に何らかの異常が発生した場合は、異常が通知されたことに応じてアボート処理を行う。例えば、コントローラ部110がコマンド705を受信するまでに異常通知を受けた場合、アボート処理を行う。
続いて、第1の実施形態に係るMFP103において、実行指示を受け付けたコピージョブを実行する一連の処理を、図9(A)及び図9(B)に示すフローチャートを用いて説明する。この処理は、CPU111が、ROM113又はHDD114から読み出してRAM112に展開された制御プログラムを実行することで行われる。尚、図9(A)の処理は、コピー処理を実行するための実行画面が操作部150の表示部に表示された状態で開始される。
まず、図9(A)に示すフローチャートについて説明する。
CPU111は、操作部150を介して、ユーザによってスタートキーが押下されたか否かを判定する(S901)。CPU111は、スタートキーが押下されたと判定した場合(S901:Yes)、S902に処理を進める。一方、CPU111は、スタートキーが押下されていないと判定した場合(S901:No)、スタートキーが押下されたと判定するまでS901の処理を繰り返す。
続いて、CPU111は、コピージョブの設定情報(例えば、部数、カラー選択、倍率、用紙選択、ページ印字、ページレイアウト、及び製本等の設定)をHDD114から取得する(S902)。尚、S901でスタートキーが押下される前に、操作部150を介してユーザからコピージョブの設定を受け付けたことに従って、当該コピージョブの設定情報がHDD114に記憶されているものとする。
続いて、CPU111は、スキャナ部130に対して、図10で後述するスキャン処理(S1000)を開始するよう指示するコマンドを出力する(S903)。そして、スキャナ部130は、CPU111から当該指示(スキャン指示と呼ぶ。)を受け付けたことに従って、スキャン処理(S1000)を実行する。
続いて、図9(B)に示すフローチャートについて説明する。
CPU111は、プリント準備の開始イベント(イベント709)を受け付けたか否かを判定する(S904)。CPU111は、プリント準備の開始イベント(イベント709)を受け付けたと判定した場合(S904:Yes)、プリンタ部140に対して、図12で後述するプリント処理(S1200)を開始するよう指示するコマンド(コマンド710)を出力する。そして、コントローラ部110は、プリンタ部140が当該指示(プリント指示と呼ぶ。)を受け付けたことに従って、プリント処理(S1200)を実行する(S905)。一方、CPU111は、プリント準備の開始イベント(イベント709)を受け付けるまで、S904の処理を繰り返す。
尚、S902で取得されたコピージョブの設定情報が特定値である場合、CPU111は、スキャナ部130及びプリンタ部140の夫々に対して、スキャン処理(S1000)とプリント処理(S1200)とを並列させてコピー処理を開始するよう指示する。即ち、CPU111は、スキャナ部130及びプリンタ部140のそれぞれに対して、図6(A)で前述したコピー処理動作のフェーズ(コピー並列処理モード)を開始するよう指示する。
例えば、コピージョブの設定情報として、倍率が「等倍」、部数の指定が「1部」で、カラーモードが自動選択でなく、給紙段が自動選択でない場合、スキャナ部130及びプリンタ部140のそれぞれに対して、コピー並列処理モードを開始するよう指示する。尚、倍率が「等倍」であるとは、ユーザにより倍率が「100%」と指定された場合や、例えば、原稿サイズがA4に対して出力用紙サイズがA4であると指定された場合のことである。一方、倍率が「等倍」でない(即ち、「変倍」)であるとは、例えば、ユーザにより倍率が「86%」と指定された場合や、原稿サイズがB4に対して出力用紙サイズがA3であると指定された場合のことである。
カラーモードが「自動選択」であるとは、原稿を読み取って生成された画像データをCPU111が解析することにより、読み取り原稿がカラーか白黒かを判断することである。読み取り原稿が「カラー」又は「モノクロ」であることをユーザが予め指定した場合は、カラーモードは「自動選択」でない。
給紙段が「自動選択」であるとは、出力用紙サイズに一致するサイズのシートが収納されているカセット351〜354を検索し、当該出力用紙サイズに一致するサイズのシートが収納されているカセットからシートを給送することである。尚、出力用紙サイズは、例えば、読み取り原稿のサイズ、及び倍率に基づいて決定される。一方、給紙段が「自動選択」でないとは、例えば、出力するシートを給送するカセット351〜354や手差しトレイ350がユーザにより予め指定された場合のことである。
続いて、第1の実施形態に係るMFP103において、実行指示を受け付けたコピージョブのスキャン処理を実行する一連の処理(S1000)を、図10に示すフローチャートを用いて説明する。この処理は、CPU111が、ROM113又はHDD114から読み出してRAM112に展開された制御プログラムを実行することで行われる。
コントローラ部110は、コマンド703を受信したことに従って、S1001の処理を開始する。CPU111は、図3(A)で示したように、スキャンのための画像処理の順序、及び画像領域の順序を規定したスキャン画像パス3000を設定する(S1001)。
続いて、CPU111は、図3(A)のS3001〜S3003で説明した画像処理を行うための各種パラメータを画像処理部118に設定する(S1002)。
続いて、CPU111は、S1002で設定された各種パラメータに基づいて、第1の画像メモリ領域121、及び第2の画像メモリ領域122のそれぞれに対して確保すべきリソースの容量を算出する(S1003)。尚、第1の画像メモリ領域121、及び第2の画像メモリ領域122のそれぞれに対して確保すべきリソースの容量は、原稿を読み取って生成される画像データのデータサイズによって決まる。尚、原稿を読み取って生成される画像データのデータサイズは、例えば、カラー、モノクロ、読み取り解像度、読み取り原稿のサイズ等の設定に依存する。
続いて、CPU111は、第1の画像メモリ領域121、及び第2の画像メモリ領域122のそれぞれに対して、S1003で算出された容量のリソースを確保する(S1004)。
CPU111は、S1004の処理を実行した後、スキャナ部130に対して原稿の読み取りを指示するコマンド(コマンド706)を出力する(S1005)。そして、スキャナ部130は、CPU111から読み取り指示を受け付けたことに従って、原稿を読み取る(S1005)。
続いて、CPU111は、原稿トレイ30に積載された原稿32の引き込みが開始されたか否かを判定する(S1006)。CPU111は、コマンド705を受信することで、原稿32の引き込みが開始されたと判定し(S1006:Yes)、S1007に処理を進める。一方、CPU111は、コマンド705を受信するまで、S1006の処理を繰り返す。
続いて、CPU111は、異常が通知されたか否かを判定する(S1007)。CPU111は、スキャナ部130の制御部135から異常通知708を受信した場合に、異常が通知されたと判定し(S1007:Yes)、アボート処理を実行する(S1024)。これは、プリンタ部140がコマンド710を受信する前(即ち、プリント処理の開始前)に、スキャン処理の実行中に何らかの異常が発生した場合に相当するため、異常が通知されたことに応じてアボート処理を行うものである。
一方、CPU111は、スキャナ部130の制御部135から異常通知708を受信しなかった場合、S1008に処理を進める。CPU111は、アボート処理を実行した後(S1024)、所定の終了処理を実行し(S1025)、スキャン処理に係る一連の処理(S1000)を終了する。
CPU111は、ビデオ開始を示す割り込み信号(割り込み707)を待機する(S1008)。この割り込み信号は、スキャナ部130からデバイスI/F116を介して画像処理部118に入力されるハードウェア割り込み信号である。この割り込み信号をトリガとしてスキャン画像のビデオ信号がスキャナ部130から入力され始める。
CPU111は、割り込み707が通知されたことに基づいて、ビデオ開始を示す割り込み信号が入力されたと判定し(S1008:Yes)、S1009に処理を進める。一方、CPU111は、割り込み707が通知されるまで、S1008の処理を繰り返す。
続いて、CPU111は、画像処理部118を介して、ビデオ信号を低圧縮画像データに変換する処理を実行する(S1009)。
続いて、CPU111は、S1009の処理によって生成された低圧縮画像データを第1の画像メモリ領域121に書き込む(S1010)。
続いて、CPU111は、異常が通知されたか否かを判定する(S1011)。CPU111は、スキャナ部130の制御部135から異常通知708を受信した場合に、異常が通知されたと判定し(S1011:Yes)、S1012に処理を進める。
CPU111は、図6(A)で前述したコピー処理動作のフェーズ(コピー並列処理モード)で実行しているか否かを判定する(S1012)。
CPU111は、コピー並列処理モードで実行していないと判定した場合(S1012:No)、アボート処理を実行する(S1024)。これは、コピー並列処理モードで実行していない時に、スキャン処理の実行中に何らかの異常が発生した場合に相当するため、異常が通知されたことに応じてアボート処理を行うものである。即ち、コピー並列処理モードで実行していない時に、スキャン処理の実行中に何らかの異常が発生した場合、プリント処理の実行がまだ開始されていないため、プリント処理の実行を開始する前に当該プリント処理を停止させることができる。このため、アボート要求が発生した後も、プリント処理の実行が開始されず、画像メモリ120に残っていた不定データがプリント処理で読み出され、不定データに基づく印刷が行われてしまうことがない。CPU111は、アボート処理を実行した後(S1024)、所定の終了処理を実行し(S1025)、スキャン処理に係る一連の処理(S1000)を終了する。
一方、CPU111は、コピー並列処理モードで実行していると判定した場合(S1012:Yes)、S1026に処理を進める。これは、コピー並列処理モードで実行している時に、割り込み707が通知された後、スキャン処理の実行中に何らかの異常が発生した場合に相当する。
CPU111は、特定のデータを第1の画像メモリ領域121に書き込む(S1026)。特定のデータは、例えば、当該データに基づいてシートに画像を印刷すると、黒ベタ画像となるようなデータ(即ち、黒画素で構成されるデータ)や、白紙となるようなデータ(即ち、白画素で構成されるデータ)である。S1026の処理の後、S1013に処理を進める。
このように、スキャン処理の実行中に何らかの異常が発生し、アボート要求が発生しても、タイミング718まで継続的にスキャンのための画像処理を行うことで、画像メモリ120に書き込む画像データを完成させる。異常が発生した時点で、画像メモリ120には、それ以降、特定のデータが書き込まれる。アボート要求が発生しても、タイミング718まで継続的にスキャンのための画像処理を行うことで、画像メモリ120に書き込む画像データを完成させる。これにより、画像メモリ120に残っていた不定データがプリント処理で読み出され、不定データに基づく印刷が行われてしまうことを防ぐ。
もし、この不定データが、ユーザが想定することがないランダムデータであった場合、ランダムデータに基づく印刷が行われてしまう。このため、ユーザは、印刷されたシート(印刷物)を見たときに、想定していないデータに混乱してしまう。そこで、第1の実施形態では、不定データに基づく印刷が行われてしまう事を防ぐことにより、ユーザは、印刷されたシート(印刷物)を見たときに、想定していないデータに混乱することがない。
一方、もし、この不定データが、ユーザがアクセスすることができない他人のジョブのデータであった場合、他人のジョブのデータに基づく印刷が行われてしまう。このため、ユーザは、印刷されたシート(印刷物)を見たときに、本来ならアクセスすることができないはずの他人のジョブのデータを知ってしまう。一方、第1の実施形態では、不定データに基づく印刷が行われてしまう事を防ぐことにより、ユーザは、印刷されたシート(印刷物)を見たときに、本来ならアクセスすることができないはずの他人のジョブのデータを知ることがない。
続いて、CPU111は、画像処理部118から出力されるビデオ終了を示す割り込み信号を待機する(S1013)。この割り込み信号は、S1002で設定されたパラメータに基づいて、画像処理部118が内部的に発生させるハードウェア割り込み信号である。
CPU111は、ビデオ終了を示す割り込み信号が入力されたと判定した場合(S1013:Yes)、S1014に処理を進める。一方、CPU111は、ビデオ終了を示す割り込み信号が入力されていないと判定した場合(S1013:No)、S1011に処理を戻す。続いて、CPU111は、圧縮伸張部119を介して、第1の画像メモリ領域121に記憶された低圧縮画像データを圧縮する処理を実行する(S1014)。
続いて、CPU111は、S1014で生成された符号画像データを第2の画像メモリ領域122に書き込む(S1015)。
続いて、CPU111は、S1014で実行された圧縮処理が完了したか否かを判定する(S1016)。CPU111は、圧縮処理が完了したと判定した場合(S1016:Yes)、S1017に処理を進める。一方、CPU111は、圧縮処理が完了していないと判定した場合(S1016:No)、S1014に処理を戻す。
続いて、CPU111は、S1004で確保された第1の画像メモリ領域121のリソースを解放する(S1017)。尚、第1の画像メモリ領域121のリソースは、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されたことに従って解放される。言い換えれば、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されるまで、第1の画像メモリ領域121のリソースは解放されない。尚、CPU111によってコマンド(画像メモリ120のリソースを解放するためのコマンド)が出力されたことに従って、第1の画像メモリ領域121のリソースが解放される変形例であってもよい。
CPU111は、S1017の処理を実行した後、第2の画像メモリ領域122に記憶された符号画像データをHDD114に格納する処理を実行する(S1018)。
続いて、CPU111は、第2の画像メモリ領域122から出力された符号画像データをHDD114に書き込む(S1019)。
続いて、CPU111は、S1018で実行された格納処理が完了したか否かを判定する(S1020)。CPU111は、格納処理が完了したと判定した場合(S1020:Yes)、S1021に処理を進める。一方、CPU111は、格納処理が完了していないと判定した場合(S1020:No)、S1018に処理を戻す。
続いて、CPU111は、S1004で確保された第2の画像メモリ領域122のリソースを解放する(S1021)。尚、第2の画像メモリ領域122のリソースは、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されたことに従って解放される。言い換えれば、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されるまで、第2の画像メモリ領域122のリソースは解放されない。尚、CPU111によってコマンド(画像メモリ120のリソースを解放するためのコマンド)が出力されたことに従って、第2の画像メモリ領域122のリソースが解放される変形例であってもよい。
続いて、CPU111は、前述したスキャン処理のために使用された画像処理部118のリソースを解放する(S1022)。
続いて、CPU111は、次のページが有るか否かを判定する(S1023)。尚、次のページとは、2ページ目以降の原稿のことである。例えば、スキャナ部130によってスキャンすべきページ(原稿)が残っている場合、CPU111は、次のページが有ると判定し(S1023:Yes)、S1002に処理を戻す。一方、CPU111は、次のページが無いと判定した場合(S1023:No)、所定の終了処理を実行し(S1025)、スキャン処理に係る一連の処理(S1000)を終了する。
尚、前述したS1017で、CPU111は、S1014で実行された圧縮処理が完了したことに従って、第1の画像メモリ領域121のリソースを解放する場合について説明したが、これに限られない。
CPU111は、S1014で実行された圧縮処理が完了しても第1の画像メモリ領域121のリソースを解放せずに、次のページの原稿が読み取られて画像データが生成されたことに従って、第1の画像メモリ領域121のリソースを解放してもよい。即ち、CPU111は、次のページのビデオ開始を示す割り込み信号が入力されたと判定されるまで、前のページのために確保された第1の画像メモリ領域121のリソースを解放しなくてもよい。
また、前述したS1021で、CPU111は、S1018で実行された格納処理が完了したことに従って、第2の画像メモリ領域122のリソースを解放する場合について説明したが、これに限られない。
CPU111は、S1018で実行された圧縮処理が完了しても第2の画像メモリ領域122のリソースを解放せずに、次のページの原稿が読み取られて画像データが生成されたことに従って、第2の画像メモリ領域122のリソースを解放してもよい。即ち、CPU111は、次のページのビデオ開始を示す割り込みが入力されたと判定されるまで、前のページのために確保された第2の画像メモリ領域122のリソースを解放しなくてもよい。
もしくは、CPU111は、次ページのために画像メモリ120のリソースを確保しにいくタイミングで、前ページのために確保された画像メモリ120(第1の画像メモリ領域121、及び第2の画像メモリ領域122)のリソースを解放してもよい。
続いて、第1の実施形態に係るMFP103において、スキャナ部130の制御部135がコピージョブのスキャン処理を実行する一連の処理を、図11に示すフローチャートを用いて説明する。この処理は、制御部135のCPU131が、スキャナ部130のROM133から読み出してRAM132に展開された制御プログラムを実行することで行われる。
まず、CPU131は、原稿32の引き込みの準備要求(コマンド702)を待機する(S1101)。CPU131は、コマンド702を受信したことに基づいて、原稿32の引き込みのための準備要求が通知されたと判定し(S1101:Yes)、S1102に処理を進める。一方、CPU131は、コマンド702を受信するまで、S1101の処理を繰り返す。
続いて、CPU131は、スキャナ部130の開始処理を実行する(S1102)。
続いて、CPU131は、原稿32の引き込みの開始要求(コマンド704)を待機する(S1103)。CPU131は、コマンド704を受信したことに基づいて、原稿32の引き込みのための開始要求が通知されたと判定し(S1103:Yes)、S1104に処理を進める。一方、CPU131は、コマンド704を受信するまで、S1103の処理を繰り返す。
続いて、CPU131は、原稿32の引き込み前に、スキャナ部130で何らかの異常が発生したか否かを判定する(S1104)。原稿32の引き込み前に、スキャナ部130で発生する異常として、例えば、原稿32の引き込みを停止するためのストップキーの押下をユーザから操作部150を介して受け付けたことによる原稿給送の停止がある。また、例えば、電気ノイズ等によるスキャンビデオ信号の異常エラーがある。
CPU131は、異常が発生したと判定した場合(S1104:Yes)、コントローラ部110のCPU111に異常通知708を通知する(S1114)。これにより、図10で前述したS1007において、CPU111は、YESと判定する。CPU111は、異常通知708を通知した後(S1114)、所定の終了処理を実行し(S1115)、スキャナ部130の制御部135がコピージョブのスキャン処理を実行する一連の処理を終了する。
一方、CPU131は、異常が発生していないと判定した場合(S1104:No)、原稿トレイ30に載置された原稿32の引き込みを開始する(S1105)。このとき、スキャナ部130のCPU131がコマンド705を出力し、コントローラ部110のCPU111がコマンド705を受信する。これにより、図10で前述したS1006において、CPU111は、YESと判定する。
続いて、CPU131は、コントローラ部110からのスキャンビデオ要求があったか否かを判定する(S1106)。CPU131は、コマンド706を受信したことに基づいて、スキャナ部130からのスキャン画像のビデオ信号の入力の要求があったと判定し(S1106:Yes)、S1107に処理を進める。一方、CPU131は、コマンド706を受信するまで、S1106の処理を繰り返す。
続いて、CPU131は、コントローラ部110に対して、ビデオ開始を示す割り込み信号(割り込み707)を出力する(S1107)。これにより、図10で前述したS1008において、CPU111は、YESと判定する。
続いて、CPU131は、スキャン処理の実行中に、スキャナ部130で何らかの異常が発生したか否かを判定する(S1104)。ここで、スキャン処理の実行中に発生する異常として、例えば、原稿32のジャムや、原稿32のサイズ誤検知によるエラーや、重送検知によるエラーや、スキャン処理の停止によるエラーや、電気ノイズ等によるスキャンビデオ信号の異常エラー等がある。
CPU131は、異常が発生したと判定した場合(S1108:Yes)、コントローラ部110のCPU111に異常通知708を通知する(S1109)。
これにより、図10で前述したS1011において、CPU111は、YESと判定する。図10のS1007で前述したように、CPU111は、スキャナ部130の制御部135から異常通知708を受信した場合に、異常が通知されたと判断する。そして、図10のS1024で前述したように、CPU111は、異常通知708を受信したことに応じて、アボート処理を実行する。
CPU111は、異常通知708を通知した後(S1109)、S1111に処理を進める。
一方、CPU131は、異常が発生していないと判定した場合(S1108:No)、S1110に処理を進める。続いて、CPU131は、原稿32の画像の読み取りに基づいて、スキャナ部130の制御部135のデバイスI/F134が有するビデオ出力回路で生成されたビデオ信号を、コントローラ部110に対して出力する(S1110)。そして、S1110の処理の後、S1111に処理を進める。
続いて、CPU131は、スキャン画像のビデオ信号が終了か否かを判定する(S1111)。CPU131は、スキャン画像のビデオ信号が終了であると判定した場合(S1111:Yes)、S1112に処理を進める。一方、CPU131は、スキャン画像のビデオ信号が終了でないと判定した場合(S1111:No)、S1108に処理を戻す。
CPU131は、コントローラ部110に対して、スキャン画像のビデオ信号の終了を示す割り込み信号を出力した後(S1112)、次ページが有るか否かを判定する(S1113)。尚、次のページとは、2ページ目以降の原稿32のことである。例えば、原稿トレイ30に載置された原稿32が残っている場合、CPU131は、次ページが有ると判定し(S1113:Yes)、S1103に処理を戻す。一方、原稿トレイ30に載置された原稿32が残っていない場合、CPU131は、次ページが無いと判定し(S1113:No)、所定の終了処理を実行する(S1115)。そして、S1115の処理の後、スキャナ部130の制御部135がコピージョブのスキャン処理を実行する一連の処理を終了する。
続いて、第1の実施形態に係るMFP103において、実行指示を受け付けたコピージョブのプリント処理を実行する一連の処理(S1200)を、図12に示すフローチャートを用いて説明する。この処理は、CPU111が、ROM113又はHDD114から読み出してRAM112に展開された制御プログラムを実行することで行われる。
プリンタ部140は、コマンド710を受信したことに従って、S1201〜S1204の処理を実行する。
まず、CPU111は、図3(B)で示したように、プリントのための画像処理の順序、及び画像領域の順序を規定したプリント画像パス4000を設定する(S1201)。
続いて、CPU111は、図3(B)のS4001〜S4003で説明した画像処理を行うための各種パラメータを画像処理部118に設定する(S1202)。
続いて、CPU111は、S1202で設定された各種パラメータに基づいて、第3の画像メモリ領域123、及び第4の画像メモリ領域124のそれぞれに対して確保すべきリソースの容量を算出する(S1203)。尚、第3の画像メモリ領域123、及び第4の画像メモリ領域124のそれぞれに対して確保すべきリソースの容量は、原稿を読み取って生成される画像データのデータサイズによって決まる。尚、原稿を読み取って生成される画像データのデータサイズは、例えば、カラー、モノクロ、読み取り解像度、読み取り原稿のサイズ等の設定に依存する。
続いて、CPU111は、第3の画像メモリ領域123、及び第4の画像メモリ領域124のそれぞれに対して、S1203で算出された容量のリソースを確保する(S1204)。
ここで、プリント処理におけるメモリ制御について図13に示す模式図を用いて説明する。
図13(A)は、画像メモリ120に対して、第1の画像メモリ領域121、及び第2の画像メモリ領域122のリソースが確保された後、第3の画像メモリ領域123、及び第4の画像メモリ領域124の夫々のリソースが更に確保された状態を示している。
第3の画像メモリ領域123は、例えば、アドレス「0x80000000」で指定される領域である。仮に、画像メモリ120に格納すべき符号画像データのサイズが25MByteである場合、アドレス「0x80000000」から25MByte分の領域が確保される。
第4の画像メモリ領域124は、例えば、アドレス「0x90000000」で指定される領域である。仮に、画像メモリ120に格納すべき低圧縮画像データのサイズが133MByteである場合、アドレス「0x90000000」から133MByte分の領域が確保される。
尚、画像メモリ120に確保される領域のサイズは、第1の画像メモリ領域121と第4の画像メモリ領域124とで同一のサイズとなり、第2の画像メモリ領域122と第3の画像メモリ領域123とで同一のサイズとなる。
図12に示したフローチャートに説明を戻す。
CPU111は、S1204の処理を実行した後、プリンタ部140に対して印刷を指示するコマンド(コマンド713)を出力する(S1205)。続いて、CPU111は、ビデオ出力開始信号(割り込み714)を受信したか否かを判定する(S1206)。このビデオ出力開始信号は、プリンタ部140からデバイスI/F116を介して画像処理部118に入力されるハードウェア割り込み信号である。CPU111は、割り込み714が通知されたことに基づいて、プリントビデオ開始の割り込み(ビデオ出力開始信号)を受信したと判定し(S1206:Yes)、S1207に処理を進める。一方、CPU111は、割り込み714が通知されるまで、S1206の処理を繰り返す。
続いて、CPU111は、第1の画像メモリ領域121のリソースが解放されているか否かを判定する(S1207)。CPU111は、リソースが解放されていると判定した場合(S1207:Yes)、S1213に処理を進める。一方、CPU111は、リソースが解放されていないと判定した場合(S1207:No)、S1208に処理を進める。
尚、第1の画像メモリ領域121に同一ページの原稿の低圧縮画像データが格納されている場合、CPU111は、第1の画像メモリ領域121のリソースが解放されていないと判定する(S1207:No)。一方、第1の画像メモリ領域121に同一ページの原稿の低圧縮画像データが格納されていない場合、CPU111は、第1の画像メモリ領域121のリソースが解放されていると判定する(S1207:Yes)。
もしくは、画像メモリ120のリソースを解放するためのコマンドが出力された場合、CPU111は、第1の画像メモリ領域121のリソースが解放されていると判定してもよい(S1207:Yes)。一方、画像メモリ120のリソースを解放するためのコマンドが出力されていない場合、CPU111は、第1の画像メモリ領域121のリソースが解放されていないと判定してもよい(S1207:No)。
まず、S1208以降の処理について説明する。
CPU111は、画像メモリ120から低圧縮画像データを読み出すためのアドレスとして、第4の画像メモリ領域124を参照するためのアドレス(d)から、第1の画像メモリ領域121を参照するためのアドレス(a)に変更する(S1208)。
ここで、図13に示した模式図に説明を戻す。
図13(B)は、S1208の処理によって、画像メモリ120から低圧縮画像データを読み出すためのアドレスとして、アドレス「0x90000000」からアドレス「0x20000000」に置き換えた状態を示している。これにより、CPU111は、プリンタ部140にビデオ信号を出力するための前処理として、アドレス「0x20000000」で指定される領域(即ち、第1の画像メモリ領域121)に格納された低圧縮画像データを読み出すことができるようになる。
図12に示したフローチャートに説明を戻す。
CPU111は、S1208の処理を実行した後、S1204で確保された第3の画像メモリ領域123、及び第4の画像メモリ領域124のリソースを解放する(S1209)。尚、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されたことに従って、第3の画像メモリ領域123、及び第4の画像メモリ領域124のリソースが解放される。言い換えれば、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されるまで、第3の画像メモリ領域123、及び第4の画像メモリ領域124のリソースは解放されない。尚、CPU111によってコマンド(画像メモリ120のリソースを解放するためのコマンド)が出力されたことに従って、第3の画像メモリ領域123、及び第4の画像メモリ領域124のリソースが解放される変形例であってもよい。
ここで、図13に示した模式図に説明を戻す。
図13(C)は、第1の画像メモリ領域121、及び第2の画像メモリ領域122のリソースが画像メモリ120に確保されて、第3の画像メモリ領域123、及び第4の画像メモリ領域124のリソースは画像メモリ120から解放された状態を示している。これにより、例えば、アドレス「0x80000000」で指定された第3の画像メモリ領域123は、他のページのスキャン処理のために画像メモリ120のリソースを割り当てられるようになる。また、例えば、アドレス「0x90000000」で指定された第4の画像メモリ領域124は、他のページのスキャン処理のために画像メモリ120のリソースを割り当てられるようになる。
図12に示したフローチャートに説明を戻す。
CPU111は、S1209の処理を実行した後、画像処理部118を介して、第1の画像メモリ領域121に記憶された低圧縮画像データをビデオ信号に変換する処理を実行する(S1210)。
続いて、CPU111は、S1209の処理で生成されたビデオ信号をプリンタ部140に出力する(S1211)。
続いて、CPU111は、S1209で実行された変換処理が完了したか否かを判定する(S1212)。CPU111は、変換処理が完了したと判定した場合(S1212:Yes)、S1230に処理を進める。一方、CPU111は、変換処理が完了していないと判定した場合(S1212:No)、S1210に処理を戻す。
次に、S1213以降の処理について説明する。
CPU111は、第2の画像メモリ領域122のリソースが解放されているか否かを判定する(S1213)。CPU111は、第2の画像メモリ領域122のリソースが解放されていると判定した場合(S1213:Yes)、S1219に処理を進める。一方、CPU111は、第2の画像メモリ領域122のリソースが解放されていないと判定した場合(S1213:No)、S1214に処理を進める。
尚、第2の画像メモリ領域122に同一ページの原稿の符号画像データが格納されている場合、CPU111は、第2の画像メモリ領域122のリソースが解放されていないと判定する(S1213:No)。一方、第2の画像メモリ領域122に同一ページの原稿の符号画像データが格納されていない場合、CPU111は、第2の画像メモリ領域122のリソースが解放されていると判定する(S1213:Yes)。
もしくは、画像メモリ120のリソースを解放するためのコマンドが出力された場合、CPU111は、第2の画像メモリ領域122のリソースが解放されていると判定してもよい(S1213:Yes)。一方、画像メモリ120のリソースを解放するためのコマンドが出力されていない場合、CPU111は、第2の画像メモリ領域122のリソースが解放されていないと判定してもよい(S1213:No)。
CPU111は、画像メモリ120から符号画像データを読み出すためのアドレスとして、第3の画像メモリ領域123を参照するためのアドレス(c)から、第2の画像メモリ領域122を参照するためのアドレス(b)に変更する(S1214)。
続いて、CPU111は、S1204で確保された第3の画像メモリ領域123のリソースを解放する(S1215)。尚、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されたことに従って、第3の画像メモリ領域123のリソースが解放される。言い換えれば、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されるまで、第3の画像メモリ領域123のリソースは解放されない。尚、CPU111によってコマンド(画像メモリ120のリソースを解放するためのコマンド)が出力されたことに従って、第3の画像メモリ領域123のリソースが解放される変形例であってもよい。
続いて、CPU111は、圧縮伸張部119を介して、第2の画像メモリ領域121(B)に記憶された符号画像データを伸張する処理を実行する(S1216)。
続いて、CPU111は、S1216の処理で生成された低圧縮画像データを第4の画像メモリ領域に書き込む(S1217)。
続いて、CPU111は、S1215で実行された伸張処理が完了したか否かを判定する(S1218)。CPU111は、伸張処理が完了したと判定した場合(S1218:Yes)、S1226に処理を進める。一方、CPU111は、伸張処理が完了していないと判定した場合(S1218:No)、S1216に処理を戻す。
次に、S1219以降の処理について説明する。
CPU111は、HDD114から符号画像データを読み出す処理を実行する(S1219)。
続いて、CPU111は、S1219で読み出された符号画像データを第3の画像メモリ領域123に書き込む(S1220)。
続いて、CPU111は、S1219で実行された読み出し処理が完了したか否かを判定する(S1221)。CPU111は、読み出し処理が完了したと判定した場合(S1221:Yes)、S1222に処理を進める。一方、CPU111は、読み出し処理が完了していないと判定した場合(S1221:No)、S1219に処理を戻す。
続いて、CPU111は、圧縮伸張部119を介して、第3の画像メモリ領域123に記憶された符号画像データを伸張する処理を実行する(S1222)。
続いて、CPU111は、S1221で生成された低圧縮画像データを第4の画像メモリ領域124に書き込む(S1223)。
続いて、CPU111は、S1222で実行された伸張処理が完了したか否かを判定する(S1224)。CPU111は、伸張処理が完了したと判定した場合(S1224:Yes)、S1225に処理を進める。一方、CPU111は、伸張処理が完了していないと判定した場合(S1224:No)、S1222に処理を戻す。
続いて、CPU111は、S1204で確保された第3の画像メモリ領域124のリソースを解放する(S1225)。尚、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されたことに従って、第3の画像メモリ領域123のリソースが解放される。言い換えれば、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されるまで、第3の画像メモリ領域123のリソースは解放されない。尚、CPU111によってコマンド(画像メモリ120のリソースを解放するためのコマンド)が出力されたことに従って、第3の画像メモリ領域123のリソースが解放される変形例であってもよい。
次に、S1226以降の処理について説明する。
CPU111は、画像処理部118を介して、第4の画像メモリ領域124に記憶された低圧縮画像データをビデオ信号に変換する処理を実行する(S1226)。
続いて、CPU111は、S1226で生成されたビデオ信号をプリンタ部140に出力する(S1227)。
続いて、CPU111は、S1226で実行された変換処理が完了したか否かを判定する(S1228)。CPU111は、変換処理が完了したと判定した場合(S1228:Yes)、S1204で確保された第4の画像メモリ領域124のリソースを解放する(S1229)。尚、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されたことに従って、第4の画像メモリ領域124のリソースが解放される。言い換えれば、CPU111によって出力されたコマンド(画像メモリ120のリソースを解放するためのコマンド)が受信されるまで、第4の画像メモリ領域124のリソースは解放されない。尚、CPU111によってコマンド(画像メモリ120のリソースを解放するためのコマンド)が出力されたことに従って、第4の画像メモリ領域124のリソースが解放される変形例であってもよい。
次に、S1230以降の処理について説明する。
プリンタ部140は、S1211、又はS1227の処理によって出力されたビデオ信号(即ち、画像データ)に基づいて、シートに画像を印刷する(S1230)。
続いて、CPU111は、画像処理部118から出力されるビデオ出力終了信号を待機する(S1231)。このビデオ出力終了信号は、S1202で設定されたパラメータに基づいて、画像処理部118が内部的に発生させるハードウェア割り込み信号である。CPU111は、ビデオ出力終了信号が入力されたと判定した場合(S1231:Yes)、S1232に処理を進める。一方、CPU111は、ビデオ出力終了信号が入力されていないと判定した場合(S1231:No)、ビデオ出力終了信号が入力されるまでS1231の処理を繰り返す。
続いて、CPU111は、前述したプリント処理のために使用された画像処理部118のリソースを解放する(S1232)。
続いて、CPU111は、次のページが有るか否かを判定する(S1233)。例えば、プリンタ部140によってプリントすべきページが残っている場合、CPU111は、次のページが有ると判定し(S1233:Yes)、S1202に処理を戻す。一方、CPU111は、次のページが無いと判定した場合(S1233:No)、プリント処理に係る一連の処理(S1200)を終了する。
以上説明したように本発明を適用した第1の実施形態では、印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に当該原稿の画像データを当該記憶手段から読み出して、当該読み出された画像データに基づいて印刷を実行した。この印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に中断要因が発生したことに従って、当該記憶手段のうち当該原稿の残りの画像データを記憶すべき記憶領域に特定のデータを記憶するよう制御した。そして、この印刷装置は、読み取られる原稿の1ページ分の画像データが記憶手段に記憶される前に中断要因が発生した場合には、当該記憶手段に記憶された当該原稿の画像データ及び特定のデータに基づいて印刷を実行した。
具体的には、割り込み707が通知されてから、スキャン処理の実行中に何らかの異常が発生し、アボート要求が発生しても、タイミング718まで継続的にスキャンのための画像処理を行った。具体的には、異常が発生した時点で、CPU111は、それ以降、特定のデータを画像メモリ120に書き込むことにより、画像メモリ120に書き込む画像データを完成させた。即ち、画像メモリ120に残っていた不定データは、特定のデータに上書きされる。故に、割り込み707が通知されてからスキャン処理の実行中に何らかの異常が発生し、アボート要求が発生したとしても、画像メモリ120に残っていた不定データがプリント処理で読み出され、不定データに基づく印刷が行われてしまう事を防ぐことができる。
もし、この不定データが、ユーザが想定することがないランダムデータであった場合、ランダムデータに基づく印刷が行われてしまう。このため、ユーザは、印刷されたシート(印刷物)を見たときに、想定していないデータに混乱してしまう。一方、本発明を適用した第1の実施形態では、不定データに基づく印刷が行われてしまう事を防ぐことができるため、ユーザは、印刷されたシート(印刷物)を見たときに、想定していないデータに混乱することがない。
一方、もし、この不定データが、ユーザがアクセスすることができない他人のジョブのデータであった場合、他人のジョブのデータに基づく印刷が行われてしまう。このため、ユーザは、印刷されたシート(印刷物)を見たときに、本来ならアクセスすることができないはずの他人のジョブのデータを知ってしまう。一方、本発明を適用した第1の実施形態では、不定データに基づく印刷が行われてしまう事を防ぐことができるため、ユーザは、印刷されたシート(印刷物)を見たときに、本来ならアクセスすることができないはずの他人のジョブのデータを知ることがない。
(その他の実施形態)
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施形態の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。
例えば、本実施形態では、MFP103のコントローラ部110のCPU111が上記各種制御の主体となっていたが、これに限らない。MFP103と別筐体の外付けコントローラ等の印刷制御装置によって、上記各種制御の一部又は全部を実行可能に構成しても良い。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。