(57)【特許請求の範囲】
【請求項１】
外部機器よりデータを取得し該データに基づいて処理を行う電子機器であって、
前記外部機器よりデータを受信する受信手段と、
受信したデータを一時的に保持する受信バッファと、
前記受信バッファの空き容量が所定容量より大きくない場合、前記外部機器がデータの転送処理を中止しない時間の範囲で、所定時間の間、前記外部機器によるデータの転送を禁止する転送制御手段と、
を備え、
前記転送制御手段は、前記所定時間が経過する前に前記受信バッファの空き容量が前記所定容量より大きくならない場合には、前記所定時間が経過するのに従って、前記外部機器からのデータを前記受信バッファの空き容量に対応する領域に保持するべく前記外部機器によるデータの転送を許可し、
前記転送制御手段は、前記所定時間が経過する前に前記受信バッファの空き容量が前記所定容量より大きくなる場合には、前記所定時間が経過する前でも、前記外部機器によるデータの転送を許可することを特徴とする電子機器。
【請求項２】
前記転送制御手段は、前記外部機器によるデータの転送を禁止するために、受信停止状態を前記外部機器に通知するよう制御することを特徴とする請求項１に記載の電子機器。
【請求項３】
前記受信バッファは、通常受信領域と予備受信領域とを有し、前記転送制御手段は、前記通常受信領域に空き領域が存在する場合には、前記外部機器によるデータの転送を連続的に許可し、前記通常受信領域に空き領域が存在せず、前記予備受信領域に空き領域が存在する場合には、前記外部機器がデータの転送処理を中止しない範囲で、前記所定時間の間、前記外部機器によるデータの転送を一時的に禁止することを特徴とする請求項１或いは２に記載の電子機器。
【請求項４】
前記転送制御手段は、前記外部機器によるデータの転送を禁止すべき前記所定時間を計時する計時手段を有することを特徴とする請求項１または請求項１乃至３のいずれか１項に記載の電子機器。
【請求項５】
前記所定時間を変更する変更手段をさらに有することを特徴とする請求項１乃至４のいずれか１項に記載の電子機器。
【請求項６】
前記所定時間は、外部機器からの命令に基づいて変更可能であることを特徴とする請求項５に記載の電子機器。
【請求項７】
前記受信手段は、前記外部機器より印刷データを含むデータを受信し、
前記印刷データを解析する解析手段と、
前記印刷データの解析結果に基づいて画像を形成する画像形成手段と、
をさらに備えることを特徴とする請求項１乃至請求項６のいずれか１項に記載の電子機器。
【請求項８】
外部機器よりデータを取得し該データに基づいて処理を行う電子機器の制御方法であって、
前記外部機器よりデータを受信する受信工程と、
受信したデータを受信バッファに転送する転送工程と、
前記受信バッファの空き容量が所定容量より大きくない場合において、前記外部機器によるデータの転送を禁止し、その後、前記受信バッファの空き容量が前記所定容量より大きくならないままで所定時間が経過する場合に、それに従って前記外部機器によるデータの転送を許可する第１の転送制御工程と、
前記受信バッファの空き容量が所定容量より大きくない場合において、前記外部機器によるデータの転送を禁止し、その後、前記所定時間が経過する前に前記受信バッファの空き容量が前記所定容量より大きくなる場合に、それに従って前記外部機器によるデータの転送を許可する第２の転送制御工程と、
を備え、
前記所定時間は、前記外部機器がデータの転送処理を中止しない時間の範囲内であることを特徴とする電子機器の制御方法。
【請求項９】
前記転送制御工程では、前記外部機器によるデータの転送を禁止するために、受信停止状態を前記外部機器に通知することを特徴とする請求項８に記載の電子機器の制御方法。
【請求項１０】
前記受信バッファは、通常受信領域と予備受信領域とを有し、前記通常受信領域に空き領域が存在する場合には、前記外部機器によるデータの転送を連続的に許可し、前記通常受信領域に空き領域が存在せず、前記予備受信領域に空き領域が存在する場合には、前記外部機器がデータの転送処理を中止しない範囲で、前記所定時間の間、前記外部機器からのデータの転送を一時的に禁止することを特徴とする請求項８或いは９に記載の電子機器の制御方法。
【請求項１１】
データの転送を禁止すべき前記所定時間を計時する計時部を制御する計時制御工程を有することを特徴とする請求項８乃至１０のいずれ１項に記載の電子機器の制御方法。
【請求項１２】
前記所定時間を変更する変更工程をさらに有することを特徴とする請求項８乃至１１のいずれか１項に記載の電子機器の制御方法。
【請求項１３】
前記所定時間は、外部機器からの命令に基づいて変更可能であることを特徴とする請求項１２に記載の電子機器の制御方法。
【請求項１４】
前記受信工程は、前記外部機器より印刷データを含むデータを受信し、
前記印刷データを解析する解析工程と、
前記印刷データの解析結果に基づいて画像を形成する画像形成工程と、
をさらに備えることを特徴とする請求項８乃至請求項１３のいずれか１項に記載の電子機器の制御方法。
【請求項１５】
外部機器よりデータを取得し該データに基づいて処理を行う電子機器を制御するプログラムを収めたコンピュータ可読メモリであって、
前記外部機器よりデータを受信する受信工程のコードと、
受信したデータを受信バッファに転送する転送工程のコードと、
前記受信バッファの空き容量が所定容量より大きくない場合において、前記外部機器によるデータの転送を禁止し、その後、前記受信バッファの空き容量が前記所定容量より大きくならないままで所定時間が経過する場合に、それに従って前記外部機器によるデータの転送を許可する第１の転送制御工程のコードと、
前記受信バッファの空き容量が所定容量より大きくない場合において、前記外部機器によるデータの転送を禁止し、その後、前記所定時間が経過する前に前記受信バッファの空き容量が前記所定容量より大きくなる場合に、それに従って前記外部機器によるデータの転送を許可する第２の転送制御工程のコードと、
を備え、
前記所定時間は、前記外部機器がデータの転送処理を中止しない時間の範囲内であることを特徴とするコンピュータ可読メモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子機器及びその制御方法に係り、特に外部機器よりデータを取得し該データに基づいて処理を行う電子機器及びその制御方法に関する。
【０００２】
【従来の技術】
プリンタとホストコンピュータを接続し、印刷データを転送するインターフェースの１つとして、セントロニクス・インターフェースがある。従来は、セントロニクス・インターフェースを用いたシステムにおいては、印刷データの処理能力がセントロニクス・インターフェースによるデータ転送能力よりも優れていたため、従来よりデータ転送速度の向上が望まれていた。近年、この要望に対して、ホストコンピュータ側、プリンタ側のインターフェースに関する処理をハードウエア化したり、装置内部のデータ転送にＤＭＡ（Direct Memory Access）を採用することなどにより、ホストコンピュータとプリンタ間で高速にデータ転送を行うことが可能になった。
【０００３】
【発明が解決しようとする課題】
しかしながら、ホストコンピュータよりプリンタに転送するデータは、従来はテキストデータが主体であり、転送データの規模が比較的小さかったが、現在においては、ビットマップ画像等を含むグラフィックデータを主体とする場合が多くなり、転送データが大規模化する傾向にある。
【０００４】
したがって、データ転送速度は高速化されたものの、転送データも大規模化したため、プリンタの受信バッファが満杯になる時間が長くなった。ＤＭＡコントローラは、インターフェースにおいて受信したデータをブロック単位で受信バッファに転送するため、受信バッファに１ブロック以上の空き領域が生じるまで、ホストコンピュータからのデータの受信を停止する必要がある。ところが、複雑な印刷データは、コマンド解析時間を長大にし、それに伴い受信バッファに空き領域を確保するまでの時間も長大になる。
【０００５】
これに対し、ホストコンピュータの中には、所定の時間を超過してデータの送信を停止されると、プリンタは正常に動作しているにも拘わらず、ハングアップしたものとと看做して処理を中止するものがある。
【０００６】
上記の問題は、プリンタとホストコンピュータとの間のデータ転送に限られるものではなく、所定の時間を経過しても応答がない場合に異常が発生したとみなして処理を中止する外部機器に接続して用いる電子機器一般に共通する問題であり、そのインターフェース手段もセントロニクス・インターフェースに限られるものではない。
【０００７】
本発明は、上記問題点に鑑みてなされたものであり、データ転送を連続して停止する時間を短縮し、外部機器が所定の時間を経過しても応答がない場合に異常が発生したとみなして処理を中止する頻度を軽減し、データの転送処理を効率化することを目的とする。
【０００８】
【発明が解決しようとする課題】
上記課題を解決するため、本発明に係る電子機器は、外部機器よりデータを取得し該データに基づいて処理を行う電子機器であって、前記外部機器よりデータを受信する受信手段と、受信したデータを一時的に保持する受信バッファと、前記受信バッファの空き容量に応じて、前記外部機器がデータの転送処理を中止しない時間の範囲で、前記外部機器によるデータの転送を許可または禁止する転送制御手段とを備える。
【０００９】
本発明の好適な実施の態様に拠れば、例えば、前記転送制御手段は、前記受信バッファの空き容量が少ない場合に前記外部機器からのデータの転送を一時的に禁止する。
【００１０】
また、例えば、前記受信バッファは、通常受信領域と予備受信領域とを有し、前記転送制御手段は、前記通常受信領域に空き領域が存在する場合には、前記外部機器からのデータの転送を連続的に許可し、前記通常受信領域に空き領域が存在せず、前記予備受信領域に空き領域が存在する場合には、前記外部機器がデータの転送処理を中止しない範囲で、前記外部機器からのデータの転送を一時的に禁止する。
【００１１】
また、例えば、前記転送制御手段は、データの転送を禁止すべき時間を計時する計時手段を有する。
【００１２】
また、例えば、前記計時手段により計時する時間を変更する変更手段をさらに有する。
【００１３】
また、例えば、前記計時する時間は、外部機器からの命令に基づいて変更可能である。
【００１４】
また、例えば、前記受信手段は、前記外部機器より印刷データを含むデータを受信し、前記印刷データを解析する解析手段と、前記印刷データの解析結果に基づいて画像を形成する画像形成手段とをさらに備える。
【００１５】
また、本発明に係る電子機器は、外部機器よりデータを取得し該データに基づいて処理を行う電子機器の制御方法であって、前記外部機器よりデータを受信する受信工程と、受信したデータを受信バッファに転送する転送工程と、前記受信バッファの空き容量に応じて、前記外部機器がデータの転送処理を中止しない時間の範囲で、前記外部機器によるデータの転送を許可または禁止する転送制御工程とを備えることを特徴とする。
【００１６】
本発明の好適な実施の態様によれば、例えば、前記転送制御工程は、前記受信バッファの空き容量が少ない場合に前記外部機器からのデータの転送を一時的に禁止する。
【００１７】
また、例えば、前記受信バッファは、通常受信領域と予備受信領域とを有し、前記転送制御工程は、前記通常受信領域に空き領域が存在する場合には、前記外部機器からのデータの転送を連続的に許可し、前記通常受信領域に空き領域が存在せず、前記予備受信領域に空き領域が存在する場合には、前記外部機器がデータの転送処理を中止しない範囲で、前記外部機器からのデータの転送を一時的に禁止する。
【００１８】
また、例えば、前記転送制御工程は、データの転送を禁止すべき時間を計時する計時部を制御する計時制御工程を有する。
【００１９】
また、例えば、前記計時制御工程による制御の下に計時する時間を変更する変更工程をさらに有する。
【００２０】
また、例えば、前記計時する時間は、外部機器からの命令に基づいて変更可能である。
【００２１】
また、例えば、前記受信工程は、前記外部機器より印刷データを含むデータを受信し、前記印刷データを解析する解析工程と、前記印刷データの解析結果に基づいて画像を形成する画像形成工程とをさらに備える。
【００２２】
また、本発明に係る電子機器は、外部機器よりデータを取得し該データに基づいて処理を行う電子機器を制御するプログラムを収めたコンピュータ可読メモリであって、前記外部機器よりデータを受信する受信工程のコードと、受信したデータを受信バッファに転送する転送工程のコードと、前記受信バッファの空き容量に応じて、前記外部機器がデータの転送処理を中止しない時間の範囲で、前記外部機器によるデータの転送を許可または禁止する転送制御工程のコードとを備えることを特徴とする。
【００２３】
【発明の実施の形態】
以下、図面を参照しながら本発明の好適な実施の形態の一例を説明する。
【００２４】
図１は、本実施の形態に係る画像形成装置の構成例を示すブロック図である。
１００は画像形成装置本体であり、セントロニクス・インターフェース・ケーブル１２０を介してホストコンピュータ（不図示）と接続されている。
【００２５】
画像形成装置１００内の各ブロックは、内部バス１１２によって制御部１１０に接続されている。制御部１１０は、制御プログラムの格納領域やワーク領域等を有するメモリ１１０ａ及びその制御プログラムを読み込んで各ブロックを制御するＣＰＵ１１０ｂを有する。なお、制御プログラムの詳細は後述する。
【００２６】
１０１は、セントロニクス・インターフェース・ケーブル１２０を通じてホストコンピュータとの間で信号をやり取りするセントロニクス・インターフェース・コントローラである。１０２は、セントロニクス・インターフェース・コントローラ１０１から受信バッファ１０３へ受信データをＤＭＡ転送するＤＭＡコントローラである。１０３は、転送された受信データを保持する受信バッファである。１０４は、受信バッファ１０３を管理する管理情報を保持する受信バッファ管理レジスタ群である。１０５は、ユーザの指示を入力したり、画像形成装置１００の状態を表示したりする操作パネルである。
【００２７】
１０６は、受信バッファ１０３に空き領域が存在する場合において、受信動作を停止する最大時間である最大受信停止時間を保持するウエイト時間レジスタである。１０７は、受信動作を停止した際に起動され、計時動作をするタイマ部である。１０８は、ホストコンピュータより受信した印刷データやコマンドを解析するコマンド解析部である。１０９は、印刷データをビットマップ画像に展開する展開メモリである。１１１は、記録紙等に永久可視画像形成するプリンタエンジンである。
【００２８】
図２は、受信バッファ管理レジスタ群の構成例を模式的に示す図である。受信バッファ管理レジスタ群１０４は、６つのレジスタを有する。
【００２９】
空きブロック数レジスタ（ＦＲＥＥＢＬＫ）２０１は、受信バッファ１０３の空きブロック数を保持するレジスタである。カレント受信ブロックレジスタ（ＲＵＣＲＢＬＫ）２０２は、受信ポインタが指示するブロック番号を保持するレジスタである。カレント解析ブロックレジスタ（ＡＣＵＲＢＬＫ）２０３は、解析ポインタが指示するブロック番号を保持するレジスタである。以上の３つのレジスタ２０１〜２０３は、初期化処理において適切な値に設定される。
【００３０】
総ブロック数レジスタ（ＴＯＴＡＬＢＬＫ）２０４は、受信バッファ１０３の総ブロック数を保持するレジスタである。予備ブロック数レジスタ（ＳＵＢＢＬＫ）２０５は、受信バッファ１０３の予備ブロック数を保持するレジスタである。ブロックサイズレジスタ（ＢＬＫＳＩＺＥ）２０６は、１ブロックのサイズを保持するレジスタである（受信バッファ１０３は、複数のブロックを有する）。
以上３つのレジスタ２０４〜２０６は、予め初期値が設定され、操作パネル１０５またはホストコンピュータを介して設定を変更可能な構成とする。
【００３１】
図３は、ホストコンピュータと画像形成装置の間をセントロニクス・インターフェースを用いてデータ転送する一般的なタイミングを示す図である。なお、同図は１バイトのデータ転送を示している。ＤＡＴＡ信号は、ホストコンピュータが画像形成装置に転送するデータであり、８ビットのバスで構成される。ｎＳＴＲＯＢＥ信号は、ホストコンピュータが出力する信号であり、信号レベルがＬｏ（”０”）の時に画像形成装置１００に対してデータを出力したことを示す。画像形成装置１００は、ｎＳＴＲＯＢＥ信号の立ち下がりでＤＡＴＡ信号上のデータを受信データとして取り込む。ＢＵＳＹ信号は、画像形成装置が出力する信号であり、信号レベルがＨｉ（”１”）の時は、次のデータを受け付けることができないことを示す。ｎＡＣＫ信号は、画像形成装置１００が出力する信号であり、信号レベルがＬｏの時に、データを受信したことを示す。
【００３２】
時刻ｔ１で、ホストコンピュータは、画像形成装置１００に転送すべきデータをＤＡＴＡ信号上に出力する。次いで、時刻ｔ２で、ホストコンピュータは、ｎＳＴＲＯＢＥ信号の信号レベルをＨｉからＬｏにする。このタイミングで、画像形成装置１００は、ＤＡＴＡ信号上のデータを取り込む。また、画像形成装置１００は、時刻ｔ２で、セントロニクス・インターフェース・コントローラのシーケンサを起動し、ＢＵＳＹ信号及びｎＡＣＫ信号の制御を開始する。
【００３３】
時刻ｔ３で、画像形成装置１００は、ＢＵＳＹ信号の出力レベルをＬｏからＨｉにする。そして、時刻ｔ４で、ホストコンピュータは、ｎＳＴＲＯＢＥ信号の信号レベルをＬｏからＨｉにする。時刻ｔ５で、画像形成装置１００は、ｎＡＣＫ信号の信号レベルをＨｉからＬｏにし、データを受信したことをホストコンピュータに通知する。時刻ｔ６で、画像形成装置１００は、ｎＡＣＫ信号の信号レベルをＬｏからＨｉにする。時刻ｔ７で、画像形成装置１００は、ＢＵＳＹ信号の信号レベルをＨｉからＬｏにする。以上の動作により、８ビット（１バイト）のデータ転送を終了する。
【００３４】
ＢＵＳＹ信号及びｎＡＣＫ信号は、セントロニクス・インターフェース・コントローラ１０１によって制御される。なお、ｎＡＣＫ信号をＨｉ→Ｌｏ→ＨｉにすることをｎＡＣＫパルスの出力と呼ぶことにする。
【００３５】
制御部１１０がＤＭＡコントローラ１０２を起動し、受信データを受信バッファ１０３に転送することにより、セントロニクス・インターフェース・コントローラ１０１は、ｎＡＣＫパルスを出力し、ＢＵＳＹ信号をＬｏにする。これにより、セントロニクス・インターフェース・コントローラ１０１は、受信可能状態であることをホストコンピュータに通知する。
【００３６】
図４は、受信バッファ１０３の構成例を模式的に示す図である。図示の例は、”ＴＯＴＡＬＢＬＫ＝ｎ”とした場合に、受信バッファ１０３がｎ個のブロックから構成されることを模式的に示している。この受信バッファ１０３は、リングバッファ構成とした一例を示しており、ブロック１から順にブロックｎまで受信／解析ポインタが移動し、ブロックｎの次はブロック１に該ポインタが移動する。
【００３７】
本実施の形態においては、受信データは、ＤＭＡコントローラ１２によりセントロニクス・インターフェース・コントローラ１０１から受信バッファ１３にブロック単位でＤＭＡ転送される。
【００３８】
各ブロックは、ＤＭＡコントローラ１０２による１ブロックの転送量（例えば、８ｂｉｔ×２０４８ワード（２０４８ｂｙｔｅ））のメモリ領域で構成される。なお、１ブロックの容量は、ＤＭＡコントローラ１０２の設定或いは構成により、任意に定めることができ、上記の例に限定されるものではない。
【００３９】
受信ポインタは、ＤＭＡコントローラ１０２によって管理される。すなわち、ＤＭＡコントローラ１０２は、ＤＭＡ転送の対象となるアドレス情報を保持しており、これに基づいて該当するアドレスを出力する。なお、ＤＭＡコントローラ１０２の初期化は、制御部１１０によって行うことができる。
【００４０】
解析ポインタは、コマンド解析部１０８が指示するアドレスであり、解析すべき受信データが保持されたアドレスが指示される。図示の例は、”受信ポインタ＝０”、”解析ポインタ＝０”の状態、すなわち、初期化直後或いは受信バッファが空の状態を示す。また、いずれのポインタもその値が”０”の時に、受信バッファの先頭、すなわちブロック１の先頭のアドレスを指示する。
【００４１】
図５は、一般的な構成の受信バッファ内に受信データが存在する状態を模式的に示す図である。図示の例においては、受信ポインタがブロック３の先頭（ＢＬＫＳＩＺＥ×２）を、解析ポインタがブロック３内のアドレス（ＢＬＫＳＩＺＥ×２＋ａ，０＜ａ＜ＢＬＫＳＩＺＥ）を指示している。この場合、コマンド解析部１０８が未解析の受信データは、解析ポインタが指示するアドレスから受信バッファの終端までと、受信バッファの先頭から受信ポインタまでの領域に存在する。
【００４２】
この状態で、ＤＭＡコントローラ１０２が次に受信データを転送する先はブロック３である。ところが、解析ポインタは、ブロック３内のアドレスを指示しているため、解析ポインタがブロック４の先頭アドレスを指示するまで、セントロニクス・インターフェース・コントローラ１０１は、ホストコンピュータに対してデータの受信を停止する旨の指示を出す（ＢＵＳＹ＝Ｈｉ）。この時、空ブロックはなく、空ブロック数レジスタ（ＦＲＥＥＢＬＫ）の値は”０”となっている。
【００４３】
データの受信を停止した状態が一定時間を越えると、ホストコンピュータは、画像形成装置からの応答がないものと判断し、タイムアウト処理を行う場合がある。タイムアウト処理では、ホストコンピュータは、画像形成装置に対するデータ転送処理を中止するため、データ転送処理を続行する場合には、オペレータは、ホストコンピュータにデータ転送を再開するよう指示する必要があり、画像の形成処理が非効率的になるという問題がある。しかし、受信データの解析に長時間を要する場合には、受信バッファが未解析の受信データで満たされた状態が長時間に及ぶことになり、ホストコンピュータによるタイムアウト処理の頻度も高くなる。
【００４４】
図６は、受信バッファが満たされ、画像形成装置がホストコンピュータにデータの受信停止を通知する様子を模式的に示す図である。空きブロックが１つの状態で、ＤＭＡコントローラ１０２が１ブロック分の受信データを転送（時刻ｔ１１）すると、空きブロックが存在しなくなり、セントロニクス・インターフェース・コントローラ１０１は、ＢＵＳＹ信号の信号レベルをＨｉの状態に保持し、ホストコンピュータからのデータの送信を停止させる。そして、受信データの解析・処理を行ない、１ブロックの空きが確保されたら、ＢＵＳＹ信号をＬｏにし、ｎＡＣＫパルス出力を行ない、ホストコンピュータにデータ受信が可能である旨を知らせる（時刻ｔ１２）。これを受けて、ホストコンピュータは、データの転送を開始する（時刻ｔ１３）。時刻ｔ１１〜ｔ１２間の時間が一定の時間（タイムアウト時間）を越えると、ホストコンピュータは、タイムアウト処理によりデータ転送を中止する。
【００４５】
図７は、本実施の形態における受信バッファ１０３の構成例を模式的に示す図である。受信バッファ１０３は、全体でｎ個のブロック（ＴＯＴＡＬＢＬＫ＝ｎ）を有し、このｎ個のブロックは、（ｎ−ｍ）個のブロックを有する通常受信領域９０１と、ｍ個のブロックを有する予備受信領域９０２に区分されている。
【００４６】
セントロニクス・インターフェース・コントローラ１０１は、通常受信領域７０１に空きブロックが存在する場合には、ホストコンピュータより連続して高速にデータを受信する。この時、ＤＭＡコントローラ１０２は、受信データを通常受信領域７０１に転送する。また、通常受信領域７０１に空きブロックが存在しない場合には、セントロニクス・インターフェース・コントローラ１０１は、ホストコンピュータに対してデータを受信不能である旨を通知しつつ、通常受信領域７０１の空きブロックが生じるのを待つ。また、通常受信領域７０１に空きブロックが存在しない場合は、タイマ部１０７を起動し、これにより受信不能状態にある時間（受信停止時間）を計時する。
【００４７】
そして、通常受信領域７０１の空きブロックの待ち時間、すなわち、受信停止時間がウエイト時間レジスタ１０６に設定された最大受信停止時間を超えた場合、予備受信領域７０２を使用してデータを受信する。そして、予備受信領域７０２を使用して１ブロック分のデータを受信後、さらに受信不能状態が最大受信時間を超えた場合、予備受信領域７０２の残りのブロックを使用してデータを受信する。
【００４８】
換言すると、通常受信領域７０１が満たされた場合、すなわち、受信バッファ１０３の空き領域が少なくなった場合、セントロニクス・インターフェース・コントローラ１０１は、制御部１１０の制御の下、受信を停止する。そして、受信停止時間が最大受信停止時間を超えたら、その都度予備受信領域７０２を使用して受信を行う（ホストコンピュータにデータ転送を許可する）ことにより、受信停止時間を所定の時間内（ホストコンピュータによるタイムアウト時間内）に制限し、ホストコンピュータのタイムアウトを防止し、データ転送を効率化する。なお、最大受信停止時間は、これに基づいて予備受信領域７０２を使用して受信を行うときに、ホストコンピュータがタイムアウトしない時間に設定する。
【００４９】
図８は、受信バッファ１０３の通常受信領域７０１が満たされた後、最大受信時間経過後に予備受信領域７０２を使用して受信を行う様子を示すタイミング図である。図示の例は、時刻ｔ２１において、通常受信領域７０１が満杯になり、ホストコンピュータからのデータの転送を停止し、通常受信領域７０１に空きブロックが生じる前に最大受信停止時間を経過したため、時刻ｔ２２において予備受信領域７０２を使用して受信を行う様子を示している。なお、予備受信領域７０２を使用して１ブロック分のデータを受信し、さらに最大受信停止時間を経過した後においても、通常受信領域７０１に空きブロックが存在しない場合には、予備受信領域７０２の残りのブロックを使用して受信を行うことになる。
【００５０】
図９は、画像形成装置におけるデータ解析量の時間変化の一例を模式的に示す図である。データ解析量は、単位時間に画像形成装置が解析したデータ量である。図示の例は、以下の条件によるものである。
【００５１】
１ブロックサイズ      ：２Ｋｂｙｔｅ
総ブロック数(TOTALBLK)：４ｂｌｏｃｋ
予備ブロック数(SUBBLK)：２ｂｌｏｃｋ
図１０は、従来例におけるデータ転送量の時間変化（ａ）と、空きブロック数の時間変化（ｂ）を示す図である。また、図１１は、本実施の形態におけるデータ転送量の時間変化（ａ）と、空きブロック数の時間変化（ｂ）を示す図である。ここで、データ転送量は、単位時間に画像形成装置１００が受信したデータ量である。これらは、図９に示すデータ解析量の下でのデータ転送量と空きブロック数とを示している。
【００５２】
図１０（ａ）に示す如く、従来は、受信バッファが満たされるまで連続して受信を行うため、受信バッファが一杯になった時点でデータ転送が停止し、受信バッファに空きブロックが生じるまでの期間Ｔｗａにおいては、データの転送が成されない。したがって、この期間Ｔｗａがホストコンピュータのタイムアウト時間を超過すると、ホストコンピュータは、タイムアウト処理によりデータ転送を中止する。
【００５３】
一方、図１１（ａ）に示す如く、本実施の形態においては、通常受信領域７０１が満たされるまでは連続して受信を行い、その後は、ウエイト時間レジスタ（ＷＡＩＴＴＩＭＥ）に設定された最大受信停止時間（Ｔｗｂ）内に通常受信領域７０１に空きブロックができない場合（例えば、データ解析に長時間を要する場合）は、予備受信領域７０２でデータ受信を行なう。
【００５４】
予備受信領域７０２を使用して１ブロック分のデータを受信した後に、依然として通常受信領域７０１に空きブロックが生じることなく最大受信停止時間（Ｔｗｂ）を経過した場合には、前述の如く再度予備受信領域７０２を用いて受信を行う。図示の例においては、予備受信領域７０２を使用して３回受信を行っている。この場合、受信停止時間がＴｗｂ（Ｔｗｂ＜タイムアウト時間）に制限されるため、ホストコンピュータはタイムアップすることなくデータを転送することができる。
【００５５】
図１２は、制御部１１０のメモリ１１０ａに格納された制御プログラムによる処理の流れを示す図である。制御部１１０のＣＰＵ１１０ｂは、メモリ１１０ａに格納された不図示のオペレーティング・システム（ＯＳ）に基づいて制御プログラムに係る複数のタスクを管理することにより、データ受信、データ解析、展開メモリ１０９に対する画像描画、プリンタエンジン１１１による印刷処理等を制御する。したがって、以下に示すデータ受信タスク、コマンド解析タスク、その他のタスクはＯＳの管理の元、時分割により各タスクが独立して並列処理されるものとする。
【００５６】
ステップＳ１２０１では、受信ポインタ及び解析ポインタを”０”に初期化する。”０”は、受信ポインタ１０３の先頭のアドレスを示す。ステップＳ１２０２では、受信ポインタが指示するカレント受信ブロック（ＲＣＵＲＢＬＫ）を”１”に、解析ポインタが指示するカレント解析ブロック（ＡＣＵＲＢＬＫ）を”１”に各々設定する。”ＲＣＵＲＢＬＫ＝１”及び”ＡＣＵＲＢＬＫ＝１”は、受信ポインタと解析ポインタが共に受信バッファ１０３の先頭ブロックを指示することを意味する。
【００５７】
ステップＳ１２０３では、受信バッファ管理レジスタ群１４の総ブロック数レジスタ（ＴＯＴＡＬＢＬＫ）２０４の値を空きブロック数レジスタ（ＦＲＥＥＢＬＫ）２０１に設定する。なお、その他のレジスタである、総ブロック数レジスタ（ＴＯＴＡＬＢＬＫ）２０４、予備ブロックレジスタ（ＳＵＢＢＬＫ）２０５、ブロックサイズレジスタ（ＢＬＫＳＩＺＥ）２０６は、立上時等に予め設定され、操作パネル１５等により変更可能に構成されている。
【００５８】
ステップＳ１２０４では、データ受信タスクを起動する。なお、データ受信タスクの詳細は後述する。ステップＳ１２０５では、コマンド解析タスクを起動する。なお、コマンド解析タスクの詳細は後述する。ステップＳ１２０６では、その他のタスク（例えば、展開メモリ１０９への画像描画タスク、プリンタエンジン１１１の制御タスク、操作パネル１０５の制御タスク、その他）を起動する。
図１３は、ステップＳ１２０４において起動されるデータ受信タスクにおける処理例を示すフローチャートである。データ受信タスクは、１）通常受信領域７０１に空きブロックが存在する場合には、通常受信領域７０１を使用して受信を行ない、２）通常受信領域７０１に空きブロックが存在しない場合であって、予備受信領域７０２に空きブロックが存在する場合には、ホストコンピュータに対して受信停止状態であることを通知し、受信停止時間がウエイト時間レジスタ１６に設定された最大受信停止時間（ＷＡＩＴＴＩＭＥ）を経過した場合には、予備受信領域７０２を使用して受信を行ない、３）通常受信領域７０１及び予備受信領域７０２の双方に空きブロックが存在しない場合には、データ受信を停止するように動作する。
【００５９】
先ず、ステップＳ１３０１では、空きブロック数レジスタ（ＦＲＥＥＢＬＫ）の値を１減じ、ステップＳ１３０２では、１ブロック分のデータを受信する１ブロック受信処理（詳細は後述）を実行する。
【００６０】
ステップＳ１３０３では、空きブロック数レジスタ（ＦＲＥＥＢＬＫ）の値を読込み、ステップＳ１３０４において、ＦＲＥＥＢＬＫの値が予備ブロック数レジスタ（ＳＵＢＢＬＫ）の値より大きいか否かを判定する。判定の結果、ＦＲＥＥＢＬＫの値がＳＵＢＢＬＫの値より大きい場合は、通常受信領域７０１に空きブロックが存在するため、ステップＳ１３０１に戻り、続けて次のブロックを受信するため、ステップＳ１３０１に戻る。
【００６１】
一方、ＦＲＥＥＢＬＫの値がＳＵＢＢＬＫの値より大きくない場合は、通常受信領域７０１に空きブロックが存在しないため、ステップＳ１３０５以降の処理を実行する。
【００６２】
先ず、ステップＳ１３０５では、タイマ部１０７のカウント値（ＲＥＡＬＴＩＭＥ）を”０”にリセットして起動する。タイマ部１０７は、不図示の基準クロックに基づいて計時動作し、経過時間を提供する。制御部１１０は、タイマ部のカウント値（ＲＥＡＬＴＩＭＥ）を読出すことにより、経過時間を取得することができる。
【００６３】
ステップＳ１３０６では、空きブロック数レジスタ（ＦＲＥＥＢＬＫ）の値を読込み、ステップＳ１３０７において、ＦＲＥＥＢＬＫの値が予備ブロック数レジスタ（ＳＵＢＢＬＫ）の値よりも大きいか否かを判定する。判定の結果、ＦＲＥＥＢＬＫの値がＳＵＢＢＬＫの値よりも大きければ、通常受信領域７０１に空きブロックが生じたことを意味するので、次のブロックを受信するためにステップＳ１３０１に戻る。
【００６４】
一方、ＦＲＥＥＢＬＫの値がＳＵＢＢＬＫの値よりも大きくない場合、すなわち、依然として通常受信領域７０１に空きブロックが存在しない場合はステップＳ１３０８に進む。
【００６５】
ステップＳ１３０８では、タイマ部１０７よりカウント値（ＲＥＡＬＴＩＭＥ）を読み込み、ステップＳ１３０９において、経過時間を示すＲＥＡＬＴＩＭＥが、ウエイト時間レジスタ１０６に格納された最大受信停止時間（ＷＡＩＴＴＩＭＥ）よりも大きいか否かを判定する。判定の結果、未だ、ＲＥＡＬＴＩＭＥがＷＡＩＴＴＩＭＥを超過していなければ、ステップＳ１３０６に戻り、再度通常受信領域７０１に空きブロックが生じたか否かを判定し、空きブロックが存在したらステップＳ１３ー１に戻って受信を行ない、空きブロックが存在しない場合には、ＲＥＡＬＴＩＭＥがＷＡＩＴＴＩＭＥを超過したか否かを判定する。
【００６６】
ステップＳ１３０９においてＲＥＡＬＴＩＭＥがＷＡＩＴＴＩＭＥを超過したと判定した場合は、ステップＳ１３１０に進み、空きブロック数レジスタ（ＦＲＥＥＢＬＫ）の値を読込み、ステップＳ１３１１において、ＦＲＥＥＢＬＫの値が”０”より大きいか否か、すなわち予備受信領域７０２に空きブロックが存在するか否かを判定する。判定の結果、予備受信領域７０２に空きブロックが存在しない場合にはステップＳ１３１０に戻り、予備受信領域７０２に空きブロックが生じるまで、ステップＳ１３０１及びＳ１３１１の処理を繰り返す。一方、予備受信領域７０２に空きブロックが存在する場合には、ステップＳ１３０１に戻り、受信を行う。
【００６７】
図１４は、ステップＳ１３０２の１ブロック受信処理の一例を示すフローチャートである。この処理は、前述のように、ホストコンピュータより１ブロック分のデータを受信し、受信バッファ１０３に格納する処理である。また、この処理は、制御部１１０がセントロニクス・インターフェース・コントローラ１０１及びＤＭＡコントローラ１０２を制御することにより実行する。
【００６８】
先ず、ステップＳ１４０１では、セントロニクス・インターフェース・コントローラ１０１を介してホストコンピュータに受信可能状態であることを通知する。受信可能状態の通知は、例えば、図６に示す時刻ｔ１２のように、ＢＵＳＹ信号をＬｏにしてｎＡＣＫ信号パルスを出力することにより行う。
【００６９】
次いで、ステップＳ１４０２において、制御部１１０は、ＤＭＡコントローラ１０２を起動する。ＤＭＡコントローラ１０２を起動すると、データの受信、受信バッファ１０３への受信データの転送は、セントロニクス・インターフェース・コントローラ１０１とＤＭＡコントローラ１０２によって制御されるが、便宜上それらの処理も同一のフローチャートにおいて示している。
【００７０】
ステップＳ１４０３では、セントロニクス・インターフェース・コントローラ１０１は、１バイトのデータを受信する。この受信に関する処理は、セントロニクス・インターフェース・コントローラ１０１により制御され、セントロニクス・インターフェース・コントローラ１０１は、図３に示すタイミング図の如く動作する。
【００７１】
ステップＳ１４０４では、セントロニクス・インターフェース・コントローラ１０１において受信したデータを、ＤＭＡコントローラ１０２により受信ポインタが指示する受信バッファ１０３上のアドレスに転送する。ステップＳ１４０５では、ＤＭＡコントローラ１０２は、受信ポインタの値を１加算する。
【００７２】
ステップＳ１４０６では、受信ポインタの値がカレント受信ブロックのアドレス空間（ＲＣＵＲＢＬＫ×ＢＬＫＳＩＺＥ）を超えたか否かを判定する。その結果、受信ポインタの値がカレント受信ブロックのアドレス空間を超えたと判定した場合、すなわち１ブロックの転送を終了した場合には、ステップＳ１４０７に進む。ここで、ＤＭＡコントローラ１０２は、１ブロック分の転送が終了したため、再度起動されるまで停止状態になる。
【００７３】
ステップＳ１４０７では、セントロニクス・インターフェース・コントローラ１０１は、ホストコンピュータに受信停止状態を通知する（例えば、図６の時刻ｔ１１のようにＢＵＳＹ信号をＨｉにする）。ステップＳ１４０８では、カレント受信ブロックの値（ＲＣＵＲＢＬＫ）を１増加し、ステップＳ１４０９において、カレント受信ブロック（ＲＣＵＲＢＬＫ）の値と総ブロック数レジスタ（ＴＯＴＡＬＢＬＫ）の値とを比較し、ＲＣＵＲＢＬＫの方が大きい場合には、ステップＳ１５１０において、ＲＣＵＲＢＬＫを”１”、受信ポインタを”０”とし、これにより受信バッファ１０３をリングバッファとして使用する。
【００７４】
図１５は、ステップＳ１２０５において起動されるコマンド解析タスクにおける処理例を示すフローチャートである。この処理は、受信バッファ１０３に受信データが存在する場合に、それを読み込んで解析するものである。なお、一連の処理は、制御部１１０により制御されることは既述の通りである。
【００７５】
先ず、ステップＳ１５０１では、受信ポインタの値をＤＭＡコントローラ１０２より読込み、ステップＳ１５０２では、解析ポインタの値を読み込む。そして、ステップＳ１５０３において、双方のポインタの値が等しいか否かを判定する。双方のポインタの値が一致するときは、受信データが存在しないことを意味し、双方のポインタの値が一致しない時は、受信データが存在することを意味する。判定の結果、受信データが存在しない場合には、ステップＳ１５０１に戻り、ステップＳ１５０１及びＳ１５０２の処理を繰り返す。
【００７６】
一方、受信データが存在する場合には、ステップＳ１５０４において、解析ポインタが指示するデータを読み込み、ステップＳ１５０５において、その読み込んだデータをコマンド解析部１０８に引き渡し、コマンド解析部１０８によってコマンドを解析し、ステップＳ１５０６で解析ポインタを１加算する。
【００７７】
ステップＳ１５０７では、解析ポインタの値がカレント解析ブロックのアドレス空間（ＡＣＵＲＢＬＫ×ＢＬＫＳＩＺＥ）を超えた否かを判定する。その結果、解析ポインタの値がカレント解析ブロックのアドレス空間を超えない場合、すなわち、解析ブロック内のデータの解析が完了していないと判定した場合には、ステップＳ１５０１に戻り、解析ポインタの値がカレント解析ブロックのアドレス空間のアドレスを超えた場合は、ステップＳ１５０８に進む。
【００７８】
ステップＳ１５０８では、空きブロック数レジスタ（ＦＲＥＥＢＬＫ）の値を１加算し、ステップＳ１５０９では、カレント解析ブロックレジスタ（ＡＣＵＲＢＬＫ）を１加算する。
【００７９】
ステップＳ１５１０では、カレント解析ブロックレジスタ（ＡＣＵＲＢＬＫ）の値が総ブロック数レジスタ（ＴＯＴＡＬＢＬＫ）の値より大きいか否かを判定し、大きい場合には、ステップＳ１５１１において、ＡＣＵＲＢＬＫを”１”、解析ポインタを”０”としてステップＳ１６０１に戻る。
【００８０】
以上説明したように、受信バッファの通常受信領域が満たされた場合、すなわち、受信バッファの空きブロックが少なくなったときに受信を停止し、その停止時間が一定の時間（最大受信停止時間）を超えた場合に、予備受信領域、すなわち、受信バッファの残りのブロックを用いてホストコンピュータがタイムアウトする前にデータの受信を再開することにより、データの転送効率を向上することができる。
【００８１】
次に、ウエイト時間レジスタ１０６内の最大停止時間（ＷＡＩＴＴＩＭＥ）をホストコンピュータからのコマンドにより設定する方法の一例について説明する。
【００８２】
図１６は、最大受信停止時間停止コマンドの一例を模式的に示す図である。最大受信停止時間設定コマンド１６００は、このコマンドが最大停止時間設定コマンドであることを示す識別子１６０１、設定（変更）すべき最大受信停止時間（ＷＡＩＴＴＩＭＥ）１６０２を含む。この最大受信停止時間設定コマンド１６００は、ホストコンピュータより受信し、前述のコマンド解析処理（ステップＳ１２０５）により解析される。このコマンドに相当する指示は、操作パネル１０５から入力可能な構成であっても良い。なお、最大受信停止時間（ＷＡＩＴＴＩＭＥ）は、受信バッファ１０３に受信データが存在する場合に変更されても、画像形成装置１００におけるコマンドの解析等の処理には影響を与えない。
【００８３】
図１７は、コマンド解析処理（ステップＳ１２０５）において解析されたコマンドが最大受信停止時間設定コマンドである場合に実行される最大受信停止時間設定タスクの一例を示すフローチャートである。なお、この最大受信停止時間設定タスクの実体は、メモリ１１０ａに格納されたプログラムコードである。
【００８４】
このタスクが起動されると、先ず、ステップＳ１７０１において、コマンド解析部１０８よりコマンドの解析結果（１６０２）を取得する。そして、ステップＳ１７０２において、ウエイト時間レジスタ１０６内の最大受信停止時間（ＷＡＩＴＴＩＭＥ）を解析結果に基づいて設定する。
【００８５】
以上のように、ウエイト時間レジスタの内容を変更可能な構成とすることにより、例えば、接続するホストコンピュータ等の外部機器の仕様に応じて、最適な最大受信停止時間（例えば、接続されたホストコンピュータがタイムアウトしない範囲で最大の時間）を設定することが可能になり、各機器の仕様に適合した効率的なデータ転送を実現することが可能になる。
【００８６】
なお、上記の実施の形態は、ウエイト時間レジスタに１つの最大受信停止時間を保持せしめる形態の画像形成装置に関するものであるが、例えば、複数の外部機器を接続するような場合において、各外部機器の仕様に応じた複数の最大受信停止時間を保持し、それを各外部機器に応じて選択的に使用する場合にも本発明を適用することができる。
【００８７】
また、上記の実施の形態は、受信データをＤＭＡコントローラにより受信バッファに格納する例であるが、本発明は、例えば、制御部（ＣＰＵ）によりこの機能を代用する場合にも適用可能なことは言うまでもない。この場合、セントロニクス・インターフェース・コントローラより受信バッファに受信データを転送するタスクを設けて上記の実施の形態に準じて並列処理を行うことが望ましい。
【００８８】
また、上記の実施の形態は、ブロック単位で受信バッファを管理する例であるが、本発明は、かかるブロック構成の受信バッファ以外にも適用可能であることは言うまでもない。
【００８９】
また、上記の実施の形態は、本発明をセントロニクス・インターフェースを有する画像形成装置に適用した例であるが、本発明は、装置の形態や通信方式等を限定するものではなく、所定の時間を経過しても応答がない場合に異常が発生したとみなして処理を中止する外部機器に接続して用いる電子機器一般に広く適用可能である。
【００９０】
なお、本発明は、複数の機器（例えば、ホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００９１】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９２】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００９３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９４】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９５】
【発明の効果】
以上説明したように、本発明に拠れば、受信バッファの空き容量が少なくなったときに、接続された外部機器がデータの転送処理を中止しない範囲で外部機器によるデータの転送を禁止することにより、ホストコンピュータ等の外部機器のタイムアウトを軽減し、もってデータの転送効率を向上することができるという効果がある。
【００９６】
【図面の簡単な説明】
【図１】本実施の形態に係る画像形成装置の構成例を示すブロック図である。
【図２】受信バッファ管理レジスタ群の構成例を模式的に示す図である。
【図３】ホストコンピュータと画像形成装置の間をセントロニクス・インターフェースを用いてデータ転送する一般的なタイミングを示す図である。
【図４】受信バッファ１０３の構成例を模式的に示す図である。
【図５】一般的な構成の受信バッファ内に受信データが存在する状態を模式的に示す図である。
【図６】受信バッファが満たされ、画像形成装置がホストコンピュータにデータの受信停止を通知する様子を模式的に示す図である。
【図７】本実施の形態における受信バッファ１０３の構成例を模式的に示す図である。
【図８】受信バッファ１０３の通常受信領域７０１が満たされた後、最大受信時間経過後に予備受信領域７０２を使用して受信を行う様子を示すタイミング図である。
【図９】画像形成装置におけるデータ解析量の時間変化の一例を模式的に示す図である。
【図１０】従来例におけるデータ転送量の時間変化（ａ）と、空きブロック数の時間変化（ｂ）を示す図である。
【図１１】本実施の形態におけるデータ転送量の時間変化（ａ）と、空きブロック数の時間変化（ｂ）を示す図である。
【図１２】制御１１０のメモリ１１０ａに格納された制御プログラムによる処理の流れを示す図である。
【図１３】ステップＳ１３０４において起動されるデータ受信タスクにおける処理例を示すフローチャートである。
【図１４】ステップＳ１３０２の１ブロック受信処理の一例を示すフローチャートである。
【図１５】ステップＳ１２０５において起動されるコマンド解析タスクにおける処理例を示すフローチャートである。
【図１６】最大受信停止時間停止コマンドの一例を模式的に示す図である。
【図１７】コマンド解析処理（ステップＳ１２０５）において解析されたコマンドが最大受信停止時間設定コマンドである場合に実行される最大受信停止時間設定タスクの一例を示すフローチャートである。
【図１】
0003703191.tif 000002
【図２】
0003703191.tif 000003
【図３】
0003703191.tif 000004
【図４】
0003703191.tif 000005
【図５】
0003703191.tif 000006
【図６】
0003703191.tif 000007
【図７】
0003703191.tif 000008
【図８】
0003703191.tif 000009
【図９】
0003703191.tif 000010
【図１０】
0003703191.tif 000011
【図１１】
0003703191.tif 000012
【図１２】
0003703191.tif 000013
【図１３】
0003703191.tif 000014
【図１４】
0003703191.tif 000015
【図１５】
0003703191.tif 000016
【図１６】
0003703191.tif 000017
【図１７】
0003703191.tif 000018