(57)【特許請求の範囲】
【請求項１】
バッファフル状態を通知された場合にデータ送信を停止する外部装置からデータを受信する受信手段と、
受信したデータを格納する、所定量の予備容量を含む受信バッファと、異常事態を検知する異常検知手段と、
前記受信バッファの残容量が前記予備容量以下となったバッファフル状態を検知して前記外部装置にその旨通知する状態検知手段と、
前記異常検知手段により異常を検知した場合に、前記状態検知手段によりバッファフル状態を検知しているならば前記外部装置に対するその旨の通知を無効にしてから前記外部装置に対して異常の発生を通知する制御手段と
を備えることを特徴とするインターフェース装置。
【請求項２】
前記状態検知手段は更に、前記予備容量が所定量以下の場合に、前記制御手段により無効にできないバッファフル状態を外部装置に通知することを特徴とする請求項１に記載のインターフェース装置。
【請求項３】
前記外部装置は当該インターフェース装置とのデータの交換に送受信兼用バッファを用い、前記予備容量は、少なくとも前記送受信兼用バッファ容量と同じであることを特徴とする請求項１に記載のインターフェース装置。
【請求項４】
前記受信手段による受信速度を低速化させる受信速度低速化手段を更に備え、前記制御手段は、前記検知手段により異常事態が検知されたなら受信速度を低速にすることを特徴とした請求項１に記載のインターフェース装置。
【請求項５】
前記受信手段による受信速度を低速化させる受信速度低速化手段を更に備え、前記制御手段は、外部装置に対するバッファフル状態の通知を無効にしてから受信速度を低速にすることを特徴とした請求項１に記載のインターフェース装置。
【請求項６】
前記予備容量を設定する設定手段を更に備えることを特徴とする請求項１に記載のインターフェース装置。
【請求項７】
前記制御手段は、異常を検知していない場合にバッファフル状態を検知した場合には、バッファフル状態をそのまま外部装置に通知することを特徴とする請求項１に記載のインターフェース装置。
【請求項８】
請求項１乃至５のいずれかに記載のインターフェース装置により外部装置と接続され、前記インターフェース装置を介して受信したデータに基づいて画像を印刷する印刷手段を備えることを特徴とする印刷装置。
【請求項９】
受信バッファのバッファフル状態を通知された場合にデータ送信を停止する外部装置と接続される周辺装置を制御する制御方法であって、
異常が検知された場合に、受信バッファの残容量が前記予備容量以下となったバッファフル状態が検知されているならば、前記外部装置に対するバッファフル状態の通知を無効にしてから前記外部装置に対して異常の発生を通知することを特徴とする制御方法。
【請求項１０】
送受信兼用のバッファを介してデータを送信または受信するホスト装置と接続されたインターフェース装置であって、
前記ホスト装置により送信されたデータを受信する受信手段と、
前記ホスト装置の前記バッファ以上の容量が確保された予備領域を有する、前記受信手段により受信される受信データを格納する受信バッファと、
異常状態が検出された場合には、前記予備領域を使用するように前記受信バッファを制御する制御手段と
を備えることを特徴とするインターフェース装置。
【請求項１１】
前記制御手段は、異常状態を表すデータを受信する前記ホスト装置の前記バッファがバッファフルとならないように前記予備領域を使用すべく前記受信バッファを制御することを特徴とする請求項１０に記載のインターフェース装置。
【請求項１２】
前記受信手段によるデータ受信速度を低下させる低速化手段を更に備え、
前記制御手段は、前記受信バッファの利用可能な残容量が前記予備領域の容量よりも大きな所定値と等しいか、あるいは該所定値よりも小さい場合に受信速度を低下させ、前記ホスト装置に送信すべきデータが生成された場合に、受信速度を元の速度に戻すことを特徴とする請求項１０に記載のインターフェース装置。
【請求項１３】
前記受信手段によるデータ受信速度を低下させる低速化手段を更に備え、
前記制御手段は、前記受信バッファの利用可能な残容量が前記予備領域の容量よりも大きな所定値と等しいか、あるいは該所定値よりも小さい場合に受信速度を低下させ、所定時間経過後に、受信速度を元の速度に戻すことを特徴とする請求項１０に記載のインターフェース装置。
【請求項１４】
前記所定値は、前記インターフェース装置が受信処理を実行できない最長の期間に、前記低下された受信速度でデータを受信でき格納できる容量であることを特徴とする請求項１１に記載のインターフェース装置。
【請求項１５】
ホスト装置と接続されたインターフェース装置の制御方法であって、
前記ホスト装置の送受信兼用のバッファを介してデータを送信または受信する工程と、
前記ホスト装置の前記バッファ以上の容量が確保された予備領域を有する、前記インターフェース装置の受信バッファに受信データを格納する工程と、
異常状態が検出された場合には、前記予備領域を使用するように前記受信バッファを制御する工程と
を有することを特徴とする制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばプリンタ装置等の周辺装置に好適なインターフェース装置および制御方法及びそれを用いた印刷装置に関するものである。
【０００２】
【従来の技術】
パーソナルコンピュータ等のホスト装置とプリンタ装置等の周辺装置間でデータを伝送するのに、セントロニクス社仕様のパラレルインターフェース（以下、セントロニクスインターフェースと呼ぶ）が広く用いられてきたのは周知の通りである。さらに今日では、ＩＥＥＥにおいて上記セントロニクスインターフェースと上位互換の、双方向パラレルインターフェース標準が規定されている。（IEEE Std 1284-1994:Standard Signaling Method for a Bi-directional Parallel Peripheral Interface for Personal Computer.以下、ＩＥＥＥ１２８４と呼ぶ。）
双方向通信では、例えばプリンタ装置等の周辺装置の動作状況をホスト装置側で監視できるようになるため、ユーザに対してより一層使い勝手の良い操作環境を提供することができる。しかも、単に操作が簡単になるというだけでなく、周辺装置側において動作状況を報知したり、あるいは作業指示を行ったりする操作パネルを簡素化することができるため、結果として装置を安価に提供することが可能となる。
【０００３】
さて、セントロニクスインターフェースを備えたプリンタ装置の構成例が特開平８−２２１２５０に開示されている。ホスト装置から送られてきたデータは、特開平８−２２１２５０号の記載にもあるように、一旦、リングバッファに蓄えられる。リングバッファに蓄えられたデータは、プリンタ装置の印字記録動作に伴い、蓄積された順に取り込まれていくが、
0003768668.tif 000002
である場合には、データはリングバッファにどんどん溜まっていく。この際、プリンタ装置はリングバッファの残容量が所定量以下になった時点、すなわちバッファフル時にＢｕｓｙ信号をアサートして、ホスト装置からのそれ以上のデータ伝送を抑制する。データの取り込みが進行してリングバッファの残容量が所定量以上に回復すると、Ｂｕｓｙ信号はネゲートされて、ホスト装置からのデータ伝送が再開される。
【０００４】
またプリンタ装置に、例えばインク・記録用紙がなくなったなどの異常事態が発生した場合にはオフラインとなり、この場合にもＢｕｓｙ信号はアサートされ、ホスト装置からのデータ伝送は抑制される。当該異常事態がユーザの手によって修復された後、オンラインキーが押下されると、Ｂｕｓｙ信号はネゲートされて、ホスト装置からのデータ伝送が再開される。
【０００５】
以上はセントロニクスインターフェース、言い換えるならＩＥＥＥ１２８４インターフェースのコンパチブルモード時の例であるが、ＥＣＰモードの時も基本的な動作には差異はなく、バッファフル時や異常事態発生時には、ホスト装置からのデータ伝送が抑制される（ＥＣＰモード時のデータ伝送の抑制には、プリンタ装置側においてＩＥＥＥ１２８４に規定されるＥｖｅｎｔ３６を実行しなければよい）。
【０００６】
一方、今日のパーソナルコンピュータでは、特開平９−３４５９６号にも開示されているように、キーボード、シリアルポート、２次記憶装置等々のＩ／Ｏ回路は、１〜２個程度のチップセットを用いて構成するのが主流となっている。
【０００７】
このようなチップセットは、パーソナルコンピュータ向けとして、幾つかの半導体メーカーから市販されている。例えば米国ナショナルセミコンダクター社のＰＣ８７３０３ＶＵＬというチップは、ＩＥＥＥ１２８４パラレルポート、シリアルポート、フロッピーディスクコントローラ、ＩＤＥハードドライブデコーダ、キーボードコントローラ、リアルタイムクロック等の回路が１チップ内に納められている。
【０００８】
ところで、このようなチップセットのＩＥＥＥ１２８４パラレルポート回路には、送受信兼用のＦＩＦＯが搭載されていることが多い。送受信兼用であるので、ＦＩＦＯが空にならないうちは、送受信動作を切り替えることができない様になっている。（強制的に送受信動作を切り替えることも可能ではあるが、その場合はＦＩＦＯ内の残留データをクリアするしかない。）
さてＩＥＥＥ１２８４インターフェースを採用した場合、プリンタ装置側で何らかの異常事態が発生した時には、その状況がＥＣＰモードのリバース転送、あるいはニブルモードを用いてパーソナルコンピュータ側に報知される。この時、上記チップセット内のＩＥＥＥ１２８４パラレルポート回路は、当然受信動作を行う。
【０００９】
【発明が解決しようとする課題】
しかしながら、プリンタ装置側の異常事態発生は全くランダムなタイミングで起こる。したがって、その時直ちにパーソナルコンピュータからのデータ伝送を抑制してしまうと、上記チップセットのＦＩＦＯ内に未伝送のデータを残してしまうことになるので、送受信動作の切り替えをすることができず、結果として異常事態の報知を行うことができなくなってしまう。
【００１０】
プリンタ装置側のリングバッファに十分な残容量が残っている場合には、データ伝送の抑制を直ちにではなく、若干遅らせてやることでＦＩＦＯを空にしてやることが可能である。しかしながら、バッファフル状態の時に異常事態が発生してしまった場合にはどうすることもできなくなってしまう。つまり従来技術に置いては、双方向であるＩＥＥＥ１２８４インターフェースを採用していても、場合によっては双方向通信がうまく機能しないのである。
【００１１】
このことの根本的な解決策は、送受信兼用ではなく、送信、受信で独立してＦＩＦＯを持つことである。そのような構成のチップセットを製造し、当該チップセットを用いてパーソナルコンピュータを製造することは、技術的に当然可能である。
【００１２】
しかしながらこの解決策では、既に市場に出てしまった何百台というパーソナルコンピュータを救済することができない。
【００１３】
本発明は、上記従来技術の問題点に鑑みてなされたものであり、その目的はパーソナルコンピュータ側に何らのハードウェア的変更を加えることなく、周辺装置側の工夫のみで双方向通信を正常に機能させるインターフェース装置及び制御方法及び印刷装置を提供することにある。
【００１４】
【課題を解決するための手段】
上記目的を達成するために、本発明は次のような構成から成る。
【００１５】
バッファフル状態を通知された場合にデータ送信を停止する外部装置からデータを受信する受信手段と、
受信したデータを格納する、所定量の予備容量を含む受信バッファと、
異常事態を検知する異常検知手段と、
前記受信バッファの残容量が前記予備容量以下となったバッファフル状態を検知して前記外部装置にその旨通知する状態検知手段と、
前記異常検知手段により異常を検知した場合に、前記状態検知手段によりバッファフル状態を検知しているならば前記外部装置に対するその旨の通知を無効にしてから前記外部装置に対して異常の発生を通知する制御手段とを備える。
【００１６】
或いは、送受信兼用のバッファを介してデータを送信または受信するホスト装置と接続されたインターフェース装置であって、
前記ホスト装置により送信されたデータを受信する受信手段と、
前記ホスト装置の前記バッファ以上の容量が確保された予備領域を有する、前記受信手段により受信される受信データを格納する受信バッファと、
異常状態が検出された場合には、前記予備領域を使用するように前記受信バッファを制御する制御手段とを備える。
【００１７】
或いは、印刷装置であって、上記のいずれかに記載のインターフェース装置により外部装置と接続され、前記インターフェース装置を介して受信したデータに基づいて画像を印刷する印刷手段を備える。
【００１８】
【発明の実施の形態】
（第１の実施の形態）
以下に本発明の第１の実施形態につき説明する。図１は、本発明を実施したインターフェース装置を備えたプリンタ装置のブロック図である。図中、ＣＰＵ１０は、プリンタ装置全体の制御を行う。ＲＯＭ／ＲＡＭ１１のうち、ＲＯＭ部にはプログラム、フォントデータなどが記憶されており、ＲＡＭ部は印字バッファのほか、各種作業領域として利用する。印字部１２は、モータや印字ヘッド及びそれらを駆動する回路などから構成される。また、印字部１２には各種センサが取り付けられており、インクや記録用紙がなくなったり、記録用紙の搬送に弊害（いわゆる、紙詰まり）があったりなどの異常事態を割り込み要求信号として出力できるようになっている。ＩＥＥＥ１２８４インターフェース回路１３には、後述するバッファフル信号あるいはＣＰＵ１０からの指示に基づいて、不図示のホスト装置からのデータ伝送を抑制する為のデータ伝送抑制回路が内包されている。このデータ伝送の抑制は、コンパチブルモードにあってはＢｕｓｙ信号をアサートすることで、ＥＣＰモードにあってはＥｖｅｎｔ３６の実行を保留することで実施される。また、ＩＥＥＥ１２８４インターフェース回路１３は、コンパチブルモードあるいはＥＣＰモードで通信しているときに、ＣＰＵ１０からの指示に基づいてｎＦａｕｌｔ信号あるいはｎＰｅｒｉｐｈＲｅｑｕｅｓｔ信号を任意にアサート／ネゲートできるようになっている。また、ＦＤ２１は、データやプログラムを外部から供給するためのフロッピーディスクドライブ等の取り外し可能な記憶媒体である。これはＲＯＭカセット等、データ交換可能な記憶媒体であれば種類は問わない。また、データ交換が不要であれば備えられていなくとも良い。
【００１９】
ＲＡＭ１６は受信バッファとして用いられる。図１ではＲＡＭ素子をＲＯＭ／ＲＡＭ１１とＲＡＭ１６の双方に具備しているが、１ユニットのＲＡＭ素子のみで、システムを構成する場合は、ＲＯＭ／ＲＡＭ１１にはＲＡＭ素子を具備せず、ＲＡＭ１６だけを有するようにしてもよい。この場合は、ＲＡＭ１６の一部を受信バッファとして利用し、他の部分は各種作業領域として用いる。ＤＭＡコントローラ１４は、ＩＥＥＥ１２８４インターフェース回路１３にホスト装置から伝送データが到来した時に、ＲＡＭ１６に当該伝送データをＤＭＡ転送する。また、ＲＯＭ／ＲＡＭ１１の印字バッファ部に必要なだけデータがそろった時に、当該データを印字部１２の印字ヘッド（不図示）にＤＭＡ転送する際にも使用される。
【００２０】
ライトポインタ１７及びリードポインタ１８は、それぞれカウンタ回路等からなる。ＤＭＡ転送は、ライトポインタ値が指し示すアドレスに実施される。また、ＤＭＡコントローラ１４が、伝送データをＤＭＡ転送する度ごとにライトポインタ値が１増加するように構成されている。ポインタ値の増加の結果、受信バッファ領域を超えた場合は、受信バッファの先頭アドレスに戻る。
【００２１】
リードポインタアドレスアクセスポート１５を、ＣＰＵ１０がリードすると、リードポインタ値が指し示す位置のアドレス信号がＲＡＭ１６に対して出力される。つまり、本ポートをリードすることで、受信バッファからデータを取り込むことができるようになっている。
【００２２】
さらに、リードポインタアドレスアクセスポート１５をＣＰＵ１０がリードすると、リードポインタ値が１増加するように構成されている。増加の結果、受信バッファ領域を超えた場合は、受信バッファの先頭アドレスに戻る。したがって、ライトポインタ１７とリードポインタ１８とで、受信バッファとしていわゆるリングバッファを構成する。なお、ライトポインタ１７、リードポインタ１８のポインタ値は、装置立ち上げ時等にＣＰＵ１０によって任意の値に初期化できるようになっている。
【００２３】
バッファフル判定回路１９は、受信バッファのオーバーフローを防止する為に、ライトポインタ１７とリードポインタ１８のポインタ値から受信バッファ残容量値を計算して、該残容量が所定値以下になった時に、ＩＥＥＥ１２８４インターフェース回路１３にバッファフル信号を出力する。ＩＥＥＥ１２８４インターフェース回路１３は、バッファフル信号が出力されると、ホスト装置からのデータ伝送を抑制する動作を実施する。受信バッファからのデータの取り込みが進行して、受信バッファ残容量値が所定値にまで回復すると、バッファフル信号は出力されなくなり、データ伝送の抑制は解除される。詳細については後述するが、バファウル判定回路１９では、バッファフルの判定を、２つの異なる受信バッファ残容量値で、２回行なうようになっている。また、バッファフル信号およびその反転信号はＣＰＵ１０に対する割込み要求信号としても出力されていて、バッファフルおよびバッファフル解除をＣＰＵ１０に報知可能なようになっている。操作パネル２０は、電源キー、リジュームキーなどのキーや、ステータス表示用のＬＥＤなどから構成される。リジュームキーは、ホストとの通信が不可能な状態（オフライン状態）から、通信が可能な状態（オンライン状態）に復帰させるためのスイッチである。
＜バッファフル判定回路＞
図２は、バッファフル判定回路１９の詳細な構成を示すブロック図である。図において、受信バッファ残容量値計算回路３０は、ライトポインタ値と、リードポインタ値と、受信バッファサイズ設定ポート３１にＣＰＵ１０から設定される受信バッファ全容量値とから、受信バッファの残容量値を計算する。残容量値は次式にて算出することができる。
【００２４】
0003768668.tif 000003
第１バッファフル量設定ポート３２には、ＣＰＵ１０の指示に基づいて一回目のバッファフル判定をする為の残容量値が設定される。当該設定値と受信バッファ残容量値計算回路３０から出力される実際の残容量値とは、マグニチュードコンパレータ３５で比較され、
第１バッファフル量設定値≧受信バッファ残容量値              （４）
である場合には、ＪＫフリップフロップ３８のＪ端子にセット信号が出力される。
【００２５】
第２バッファフル量設定ポート３３には、ＣＰＵ１０の指示に基づいて二回目のバッファフル判定をするための残容量値が設定される。当該設定値と受信バッファ残容量値計算回路３０から出力される実際の残容量値とは、マグニチュードコンパレータ３５で比較され、
第２バッファフル量設定値≧受信バッファ残容量値              （５）
である場合には、ＪＫフリップフロップ３９のＪ端子にセット信号が出力される。
【００２６】
バッファフル解除量設定ポート３４には、ＣＰＵ１０の指示に基づいてバッファフル解除を判定するための残容量値が設定される。当該設定値と受信バッファ残容量値計算回路３０から出力される実際の残容量値とは、マグニチュードコンパレータ３５で比較され、
バッファフル解除量設定値＜受信バッファ残容量値              （６）
である場合には、ＪＫフリップフロップ３８，３９のＫ端子にリセット信号が出力される。
【００２７】
ＪＫフリップフロップ３８，３９の出力信号は、ＯＲ素子４２で論理和が取られ、その論理和信号がバッファフル信号としてＩＥＥＥ１２８４インターフェース回路１３に出力される。ただし、ＪＫフリップフロップ３８の出力信号は、ＡＮＤ素子４１により、第１バッファフル有効無効設定ポート４０の出力信号によってマスクされる。第１バッファフル有効無効設定ポート４０の有効・無効出力は、ＣＰＵ１０が任意に設定できるようになっており、有効・無効の設定に対してそれぞれＨｉ、Ｌｏｗが出力される。
【００２８】
第１バッファフル量の設定値と、第２バッファフル量の設定値は
0003768668.tif 000004
に設定される。従って、まずはじめに第１バッファフル量でバッファフルと判定され、ホスト装置からのデータ伝送が抑制される。しかし、必要であれば第１バッファフル量でのバッファフル判定は無効にすることができる。この場合、データ伝送の抑制は一時的に解除され、受信バッファの残容量が第２バッファフル量に到達するまでは受信動作が第２バッファフル量に到達するまでは受信動作が継続される。
【００２９】
そして、第１、第２バッファフル量のいずれについてバッファフルになった場合でも、バッファフル解除量にまで受信バッファの残容量が回復すると、データ伝送の抑制は解除されて受信動作が再開される。
【００３０】
また、図２には不図示であるが、ＪＫフリップフロップ３８，３９の出力信号はＣＰＵ１０で読み出し可能になっており、現在第１あるいは第２バッファフル量でバッファフル状態にあるか否かが認知できるようになっている。さらに、装置立ち上げ時等にＣＰＵ１０からＪＫフリップフロップ３８，３９を初期化できるようになっている。
＜バッファフルの判定＞
次に、図３〜図６のフローチャートを用いて、どのようなときに第１バッファフル量でのバッファフル判定を無効とするのかについて説明する。これらフローチャートの手順は、図１におけるＣＰＵ１０により、ＲＯＭ／ＲＡＭ１１に格納されたプログラムを実行することで実現される。
【００３１】
図３は初期化処理のフローチャートである。電源投入後、まずステップ１００において、ライトポインタ値とリードポインタ値とを初期化する。次いでステップ１０１において、図２で説明した各設定ポートを初期化する。例えば、受信バッファ全容量値を２５６ｋバイト、第１バッファフル量を１２ｋバイト、第２バッファフル量を６４バイト、バッファフル解除量を２４ｋバイトに設定する。また、第１バッファフル有効無効設定は有効に設定しておく。続いて、ステップ１０２において、ＪＫフリップフロップ３８，３９を初期化しておく。
【００３２】
以上の初期化処理後は、特にフローチャートで図示しないが、本実施例のプリンタ装置はプリンタとしての通常の動作を行う。
【００３３】
図４は、図２のバッファフル信号４３によるバッファフルの割込み要求信号がＣＰＵ１０に到来した場合の、割り込み処理のフローチャートである。ステップ２００において、バッファフル状態になったことをＲＯＭ／ＲＡＭ１１のＲＡＭ部の作業領域に記憶しておく。なお、ステップ２００の処理期間中は、他の割り込みの受け付けを禁止しておく。次にステップ２０１において、第１バッファフル量でのバッファフルであるか、第２バッファフル量でのバッファフルであるかを判定する。どちらであるかは、ＪＫフリップフロップ３８，３９の出力信号から判定可能である。第２バッファフル量でのバッファフルの場合は、何もせずに割り込み処理を終了する。
【００３４】
次いで、ステップ２０２においてプリンタ装置に何らかの異常事態が発生しているか否かを判定する。異常事態が何も発生していなければ、何もせずに割り込み処理を終了する。何らかの異常事態が発生している場合は、ステップ２０３において第１バッファフル有効無効設定を無効に設定する。
【００３５】
図５は、印字部１２のセンサからの割り込み要求信号がＣＰＵ１０に到来した場合の、割り込み処理のフローチャートである。
【００３６】
まず、ステップ３００において印字動作を継続することができない異常事態の発生であるか否かを判定する。異常事態でない場合は、ステップ３０１において当該センサ信号に対応する処理を実行して、割り込み処理を終了する。一方、異常事態であった場合には、ステップ３０２において異常事態が発生したことをＲＯＭ／ＲＡＭ１１のＲＡＭ部の作業領域に記憶しておく。図２のステップ２０２における異常事態発生の判定は、実際には係る作業領域に記憶しておいた情報に基づいて行なわれる。なお、ステップ３０２の処理期間中は、他の割り込みの受け付けを禁止しておく。そしてステップ３０３において、ホスト装置に異常事態が発生したことを報知すべく、コンパチブルモード時にあってはｎＦａｕｌｔ信号を、またＥＣＰモード時にあってはｎＰｅｒｉｐｈＲｅｑｕｓｔ信号をアサートする。これらの信号は、ともにＩＥＥＥ１２８４に規定された信号である。
【００３７】
次にステップ３０４においてバッファフル状態にあるか否かを判定する。当該判定は、ステップ２００において作業領域に記憶しておいた情報に基づいて行われる。バッファフル状態にある場合は、ステップ３０５において第１バッファフル有効無効設定を無効に設定する。次いでステップ３０６で、プリンタ装置からホスト装置へのニブルモードあるいはＥＣＰモードのリバース転送でのデータの伝送が可能と判定された場合は、ステップ３０７においてホスト装置に異常事態の発生を報知する。報知のための送信の終了後、ステップ３０８において、ステップ３０３でアサートしたｎＦａｌｔ信号またはｎＰｅｒｉｐｈＲｅｑｕｓｔ信号をネゲートし、さらにＣＰＵ１０の指示によりホスト装置からのデータ伝送を抑制する。このためには、例えばコンパチブルモードであればＢｕｓｙ信号をアサートする。この段階でプリンタ装置はオフライン状態となる。
【００３８】
ステップ３０６での判定の結果、ホスト装置が逆向きのデータ伝送、すなわちプリンタからホストへのデータ伝送を許可していない場合は、そのままステップ３０９に至る。
【００３９】
ステップ３０９では、オフライン状態からの復帰のために操作パネル２０のリジュームキーが押下されたか否かを判定する。リジュームキーが押下された場合は、すなわちオフライン状態からの復帰が指示された場合は、ステップ３１０に至り、ステップ３０２で記憶しておいた異常事態の発生情報をクリアする。なお、ステップ３１０の処理期間中は、他の割り込みの受け付けを禁止しておく。次いでステップ３１１で、ＣＰＵ１０の指示によるデータ伝送の抑制を解除し、割り込み処理を終了する。例えば、コンパチブルモードにおいては、ステップＳ３０８でＢｕｓｙ信号をアサートしたのであればそれをネゲートしてデータ伝送の抑制を解除する。
【００４０】
リジュームキーが未だ押下されない場合、すなわちオフライン状態の解除が指示されていない場合はステップ３１２に至る。ステップ３１２では、ホスト装置に対する異常事態の発生の報知が終了しているか否かを判定する。終了している場合はステップ３０９から、また終了していない場合はステップ３０６からの処理を継続する。
【００４１】
図６は、図２におけるバッファフルの反転信号４４により、バッファフル解除の割り込み要求信号がＣＰＵ１０に到来した場合の、割り込み処理のフローチャートである。ステップ４００において、ステップ２００で記憶しておいたバッファフル状態の情報をクリアする。次いでステップ４０１において第１バッファフル有効無効設定を有効に設定する。
【００４２】
このようにして異常事態が発生した場合にバッファフル／バッファフル解除の処理を行なうことで、次のような動作上の特徴が生じる。
（１）プリンタに異常事態が発生しても、直ちにはホスト装置からのデータ伝送を抑制しない。
（２）データ伝送の抑制は、ホスト装置に対して異常事態発生の報知が終了した後に行う。
（３）図７の受信バッファの模式図（リングバッファなので輪状にしてある）にあるように、第１バッファフル量ａから第２バッファフル量（ａ＋ｂ）までの１２ｋバイト（図中ｂ）を予備領域とし、通常は先頭から第１バッファフル量まで約２４４ｋバイト（図中ａ）を使用する。
（４）第１バッファフル量である２４４ｋｂｙｔｅの領域を使いきるとバッファフルになり、ホスト装置からのデータ伝送は抑制される。通常は、このまま受信バッファの空き領域の回復を待って上記データ伝送の抑制を解除する。
（５）バッファフル時に異常事態が発生したり、異常事態が発生した後にバッファフルになってしまった場合には、（４）での第１バッファフル量を基準としたバッファフル状態を解除して（図５のステップ３０５）、上記予備領域にデータを受信する。
【００４３】
ここで予備領域のサイズをホスト側のチップセットのＦＩＦＯと同容量以上にしておけば、ホスト装置側のチップセットのＦＩＦＯに未伝送のデータを残留させることがない。したがって、第１バッファフルが生じた時点でホストからのデータ転送を抑制しておけば、ホストのチップセットのＦＩＦＯにデータが残留することなく、ホストからのデータ転送を止めることができる。このため、ホストがそのＦＩＦＯを受信時にも利用するとしても、プリンタからホストへのデータの転送が可能になり、常に双方向通信を実施することが可能になる。
【００４４】
このように、ホスト装置側で、送信ＦＩＦＯと受信ＦＩＦＯとを独立してもたずに兼用している場合に、印刷装置で生じた異常を、ＦＩＦＯ内のデータを失わせることなくホストからのデータ送信を中断させた上で、ホストに通知することができる。
【００４５】
従って、既に市場に出てしまったコンピュータとの組み合わせにおいても、ＩＥＥＥ１２８４インタフェースが持つ双方向通信の機能を十分に活用したプリンタ装置を提供することができる。
【００４６】
また、ＩＥＥＥ１２８４など既存のプロトコルに違反するところがないため、パーソナルコンピュータ側の動作には従来との互換性が保たれる。つまり本発明を採用したプリンタ装置に接続する場合と、そうでないプリンタ装置に接続する場合とで、パーソナルコンピュータ側の動作を変更する必要がない。
（第２の実施の形態）
上記第１の実施の形態では、受信バッファの予備領域にデータを受信してホスト装置側のＦＩＦＯを空にし、その後にプリンタ装置から異常事態の発生をホスト装置に報知するようになっている。この方式が正しく機能するには、ホスト装置がｎＦａｕｌｔ信号あるいはｎＰｅｒｉｐｈＲｅｑｕｓｔ信号がアサートされたのを検知したら、適当な区切りで送信を中断して、プリンタ装置からホスト装置へのデータ伝送を許可してやることが前提となっている。
【００４７】
ところがホスト装置によっては、ｎＦａｕｌｔ信号あるいはｎＰｅｒｉｐｈＲｅｑｕｓｔ信号のアサート／ネゲートに関係なく、概ね４秒程度のインターバルでしかプリンタ装置からホスト装置へのデータ伝送の許可しないものがあることがわかった。このようなホスト装置の場合、上記実施例では予備領域を１２ｋバイトとしているから、
１２ｋ［バイト］／４［秒］＝３ｋ［バイト／秒］              （８）
となって、受信速度が３ｋバイト／秒を超えると異常事態の発生をホスト装置に報知する前に上記予備領域を使い果たしてしまう。ＩＥＥＥ１２８４インターフェースの転送速度は遅いものでも数十ｋバイト／秒以上であるから、３ｋバイト／秒は容易に超える。
【００４８】
本発明における第２の実施形態では、このことに対処するために更なる工夫をした。図８は本実施例におけるプリンタ装置のブロック図である。図中、符号１０〜１２、１４〜２０は図１で説明したものと全く同じである。ＩＥＥＥ１２８４インターフェース１３’は、図１のＩＥＥＥ１２８４インターフェース回路１３と異なり、内部にＣＰＵ１０からの指示に基づき受信速度を低速化する低速受信制御回路を備えている。
【００４９】
受信速度を低速化するには、コンパチブルモードにあっては、図９に示すようにｎＡｃｋ信号をアサートする前に付加時間Ｔｄを挿入すればよい。また、ＥＣＰモードにあっては、図１０に示すようにＩＥＥＥ１２８４に規定されるＥｖｅｎｔ３２の前、あるいは図１１に示すようにＥｖｅｎｔ３６の前に付加時間Ｔｄを挿入すればよい。付加時間Ｔｄの長さは予備領域の大きさとインターバル間隔から決めることができる。本実施例では２ｍ秒とする。この場合、受信速度は概ね、
１［バイト］／２ｍ［秒］＝５００［バイト／秒］              （９）
程度となり、上記の３ｋバイト／秒を下回る。
【００５０】
次に、いつ受信速度を低速化するのかについて説明する。図１２は、第２の実施例における印字部１２のセンサからの割り込み要求信号がＣＰＵ１０に到来した場合の、割り込み処理のフローチャートである。図中、ステップ３００〜３１２の処理は図５の場合と同じである。図５に示したフローチャートと異なるのは、ステップ３０３とステップ３０４との間にステップ３０３’が挿入され、またステップ３１０とステップ３１１との間にステップ３１０’が挿入されている点である。本実施形態では、異常事態が発生したらステップ３０３’において低速化の指示を行い、リジュームキーが押下された後、ステップ３１０’において低速化の指示を解除する。
【００５１】
つまり本実施形態では、異常事態発生後は受信速度が低下するので、仮に予備領域への受信が始まっていても、予備領域を使い尽くしてしまう前にプリンタ装置からホスト装置へのデータ伝送が許可されて、異常事態の発生をホスト装置に報知しすることが可能になる。
（第３の実施の形態）
受信速度の低速化は、以下のように実施してもよい。図１３は第３の実施の形態におけるバッファフルの割り込み要求信号がＣＰＵ１０に到来した場合の、割り込み処理のフローチャートである。図中、ステップ２００〜２０３の処理は図４の場合と同じである。図４に示したフローチャートと異なるのは、ステップ２０３’が、追加されている点である。
【００５２】
また図１４は、第３の実施の形態における印字部１２のセンサからの割り込み要求信号がＣＰＵ１０に到来した場合の、割り込み処理のフローチャートである。図１２に示したフローチャートと異なるのは、ステップ３０３’が、ステップ３０４とステップ３０５の間に挿入されている点である。
【００５３】
本実施形態では、異常事態が発生して予備領域への受信を開始したら、ステップ２０３’またはステップ３０３’において低速化の指示を行い、リジュームキーが押下された後、ステップ３１０’において低速化の指示を解除する。
【００５４】
つまり本実施形態においては、予備領域に受信している間は受信速度が低下し、予備領域を使い尽くしてしまう前にプリンタ装置からホスト装置へのデータ伝送が許可されて、異常事態の発生をホスト装置に報知することが可能になる。
【００５５】
以上説明してきたように第２、第３の実施形態によれば、概ね４秒程度のインターバルでしかプリンタ装置からホスト装置へのデータ伝送の許可しないホスト装置に対しても、プリンタで生じた異常事態を通報することが可能となる。
【００５６】
なお第１〜第３の実施例ともＩＥＥＥ１２８４インターフェースを備えたプリンタ装置を例に説明を行なったが、本発明を他のインターフェースに応用することももちろん可能である。また、プリンタ装置に限らず、他の周辺装置に本発明を応用しても、優れた効果を発揮する。
【００５７】
【他の実施形態】
なお、本発明は、複数の機器（例えばホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【００５８】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
【００５９】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６０】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００６１】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００６２】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００６３】
【発明の効果】
以上説明してきたように本発明によれば、ホスト装置側で、送信ＦＩＦＯと受信ＦＩＦＯとを独立してもたずに兼用している場合に、印刷装置で生じた異常を、ＦＩＦＯ内のデータを失わせることなくホストからのデータ送信を中断させた上で、ホストに通知することができる。
【００６４】
更に、ホスト側の制御は従前であり、印刷装置側の制御によって上記効果を得ているために、既に市場に出てしまったコンピュータとの組み合わせにおいても、双方向通信の機能を十分に活用したプリンタ装置を提供することができるという優れた効果を有する。
【００６５】
また本発明を実施しても、ＩＥＥＥ１２８４など既存のプロトコルに違反するところがないため、パーソナルコンピュータ側の動作には従来との互換性が保たれる。つまり本発明を採用したプリンタ装置に接続する場合と、そうでないプリンタ装置に接続する場合とで、パーソナルコンピュータ側の動作を変更する必要がない。
【００６６】
【図面の簡単な説明】
【図１】本発明を実施したプリンタ装置の構成図である。
【図２】バッファフル判定回路の構成図である。
【図３】割り込み処理のフローチャートである。
【図４】割り込み処理のフローチャートである。
【図５】割り込み処理のフローチャートである。
【図６】割り込み処理のフローチャートである。
【図７】受信バッファの模式図である。
【図８】第２の実施例におけるプリンタ装置の構成図である。
【図９】受信速度の低速化を説明するためのタイミング図である。
【図１０】受信速度の低速化を説明するためのタイミング図である。
【図１１】受信速度の低速化を説明するためのタイミング図である。
【図１２】第２の実施例における割り込み処理のフローチャートである。
【図１３】第３の実施例における割り込み処理のフローチャートである。
【図１４】第３の実施例における割り込み処理のフローチャートである。
【符号の説明】
１０  ＣＰＵ
１１  ＲＯＭ／ＲＡＭ
１２  印字部
１３  ＩＥＥＥ１２８４インターフェース回路
１４  ＤＭＡコントローラ
１５  リードポインタアドレスアクセスポート
１６  ＲＡＭ
１７  ライトポインタ
１８  リードポインタ
１９  バッファフル判定回路
２０  操作パネル
【図１】
0003768668.tif 000005
【図２】
0003768668.tif 000006
【図３】
0003768668.tif 000007
【図４】
0003768668.tif 000008
【図５】
0003768668.tif 000009
【図６】
0003768668.tif 000010
【図７】
0003768668.tif 000011
【図８】
0003768668.tif 000012
【図９】
0003768668.tif 000013
【図１０】
0003768668.tif 000014
【図１１】
0003768668.tif 000015
【図１２】
0003768668.tif 000016
【図１３】
0003768668.tif 000017
【図１４】
0003768668.tif 000018