(57)【特許請求の範囲】
【請求項１】
以下を備えることを特徴とする、印刷装置の拡張スロットに装着可能なインターフェース装置。
（ａ）前記インターフェース装置に接続されるホストコンピュータが送信するデータを受信する受信部と、
（ｂ）前記インターフェース装置が装着される印刷装置に前記データを送信する送信部と、
（ｃ）前記印刷装置が前記データを受信できるか否かを検知する検知部と、
（d）前記印刷装置が前記データを受信できない旨を前記検知部が検知した場合でも、前記受信部により受信された前記データが所定の処理を直ちに行わせるリアルタイムコマンドであれば、前記データを前記送信部に送信させるリアルタイムコマンド送信制御部と、を備え、
前記リアルタイムコマンド送信制御部は、前記送信部がリアルタイムコマンド以外のデータを送信中にリアルタイムコマンドのデータを送信させるときは、前記リアルタイムコマンド以外のデータの送信が完了してから、前記送信部にリアルタイムコマンドのデータを送信させる。
【請求項２】
前記リアルタイムコマンド送信制御部は、フラグ領域を備え、前記フラグ領域の状態に応じて、前記送信部にリアルタイムコマンドのデータを送信させるように構成されていることを特徴とする請求項１に記載のインターフェース装置。
【請求項３】
以下のステップを備えることを特徴とする、印刷装置の拡張スロットに装着可能なインターフェース装置の制御方法。
（ａ）前記インターフェース装置に接続されるホストコンピュータが送信するデータを受信する受信ステップと、
（ｂ）前記インターフェース装置が装着される印刷装置に前記データを送信する送信ステップと、
（ｃ）前記印刷装置が前記データを受信できるか否かを検知する検知ステップと、
（d）前記検知ステップにおいて前記印刷装置が前記データを受信できない旨を検知した場合でも、前記受信ステップにおいて受信された前記データが所定の処理を直ちに行わせるリアルタイムコマンドであれば前記データを前記送信ステップにより送信させるリアルタイムコマンド送信制御ステップと、を備え、
前記リアルタイムコマンド送信制御ステップは、前記送信ステップがリアルタイムコマンド以外のデータを送信中にリアルタイムコマンドのデータを送信させるときは、前記リアルタイムコマンド以外のデータの送信が完了してから、前記送信ステップにリアルタイムコマンドのデータを送信させる。
【請求項４】
前記リアルタイムコマンド送信制御ステップは、フラグ領域を備え、前記フラグ領域の状態に応じて、前記送信ステップにリアルタイムコマンドのデータを送信させることを特徴とする請求項３に記載のインターフェース装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、印刷装置（プリンタ）用インターフェース装置、その制御方法、および、情報記録媒体に関する。特に、印刷装置の拡張スロットに装着され、ホストコンピュータと接続され、印刷装置のバッファリング状況を監視しながらホストコンピュータが送信した指令データを受信し、これを適切にバッファリングして印刷装置に送信する印刷装置用インターフェース装置、その制御方法、および、情報記録媒体に関する。
【０００２】
【従来の技術】
印刷装置とホストコンピュータを接続するインターフェースとしては、すでに種々の形態が提案されている。たとえば、ホストコンピュータが備えるパラレルポートやＲＳ−２３２ポートを介するもの、ＩＥＥＥ（Institute of Electrical and Electronic Engineers；米国電気電子学会）１２８４を介するもの、近年普及し始めたＵＳＢ（Universal Serial Bus）やホストコンピュータが接続された通信ネットワークを介するものなどである。
【０００３】
このようなインターフェースを解してホストコンピュータは印刷装置に対して、実際に文字や図形を印刷する処理を指令する印刷指令や、印刷装置自体の制御を行う処理を指令するコマンドなどを表すバイト列を、指令データとして送信する。
【０００４】
上記のように、さまざまな規格に基づいて、コネクタの形状がさまざまに異なるが、ホストコンピュータ側の接続状況が変化しても印刷装置自体のハードウェアは共通のものとしておきたい。特に、ホストコンピュータは交換したいが、印刷装置はできるだけそのまま使用したい、という希望がある。
【０００５】
そこで、上記のような様々な接続形態によって送信されるデータやコマンドを、ひとまずインターフェース装置が受信し、電圧変換やインピーダンス合わせ、送信されたデータやコマンドのバッファリング、さらには、これらの解釈およびフィルタ処理を行い、しかる後に、印刷装置固有のポート形式、たとえば、ＲＳ−２３２形式に変換して出力する。
【０００６】
このように、インターフェース装置を交換することにより、１台の印刷装置をさまざまな状況に合わせて使用することができる。すなわち、インターフェース装置と印刷装置の組合せにより、さまざまなインターフェース規格に対応する印刷装置を提供することができる。これにより、印刷装置自体を大量生産することができ、印刷装置全体に要するコストを低減させることができる。
【０００７】
従来のインターフェース装置を使用した場合、以下のような形態により、指令データのバッファリングが行われていた。すなわち、ホストコンピュータがインターフェース装置に指令データを送信すると、インターフェース装置はこの指令データを印刷装置に受信した順番通りに送信し、印刷装置はこの指令データを受信バッファに記憶する。印刷装置の受信バッファがフルの場合には、インターフェース装置に対して、たとえば特開平７−１３７３５８号公報に開示されるようなＡＳＢ（Auto Status Back）機能や、ビジー信号線を介してこれをホストコンピュータにそのまま通知する。ホストコンピュータは、印刷装置の受信バッファフルが通知された場合には、指令データの送信を中断する。
【０００８】
【発明が解決しようとする課題】
しかしながら、印刷装置自体を変更せずに、これに組み込むインターフェース装置を用いることで、さらに適切にデータのバッファリングを行い、ホストコンピュータでの処理速度と、印刷装置の印刷速度の向上を図りたいという要望は大きい。
【０００９】
また、特開平１０−３３３８５６号公報に開示されるような所定の処理を直ちに行わせるリアルタイムコマンドに印刷装置が対応する場合には、インターフェース装置がリアルタイムコマンドを受信したときに、そのリアルタイムコマンドを単にバッファに蓄積するだけでなく、ホストコンピュータからの緊急な情報要求等に応える機能を備える必要もある。
【００１０】
本発明は、以上のような問題を解決するためになされたもので、印刷装置の拡張スロットに装着され、ホストコンピュータと接続され、印刷装置のバッファリング状況を監視しながらホストコンピュータが送信したデータを受信し、これを適切にバッファリングして印刷装置に送信する印刷装置用インターフェース装置、その制御方法、および、情報記録媒体を提供することを目的とする。
【００１１】
また、本発明は、インターフェース装置が受信したデータに、印刷装置に優先して転送すべき指令データがあった場合、これを印刷装置に確実に送信し、ホストコンピュータからの指令データの特性に応じてバッファ処理ができる印刷装置用インターフェース装置、その制御方法、および、情報記録媒体を提供することを目的とする。
【００１２】
【課題を解決するための手段】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１３】
つまり、本発明のインターフェース装置は、以下を備えることを特徴とする、印刷装置の拡張スロットに装着可能なものである。
【００１４】
（ａ）前記インターフェース装置に接続されるホストコンピュータが送信するデータを受信する受信部と、
（ｂ）前記インターフェース装置が装着される印刷装置に前記データを送信する送信部と、
（ｃ）前記印刷装置が前記データを受信できるか否かを検知する検知部と、
（d）前記印刷装置が前記データを受信できない旨を前記検知部が検知した場合でも、
前記受信部により受信された前記データが所定の処理を直ちに行わせるリアルタイムコマンドであれば、前記データを前記送信部に送信させるリアルタイムコマンド送信制御部と、を備え、
前記リアルタイムコマンド送信制御部は、前記送信部がリアルタイムコマンド以外のデータを送信中にリアルタイムコマンドのデータを送信させるときは、前記リアルタイムコマンド以外のデータの送信が完了してから、前記送信部にリアルタイムコマンドのデータを送信させるように構成されている。
【００１５】
当該構成によれば、印刷装置がデータを受信できないとき、例えば、印刷装置の受信バッファフル、カバーオープンによるオフラインのときでも、インタフェース装置は、リアルタイムコマンドを解釈して印刷装置に送信することができる。また、リアルタイムコマンド以外の通常コマンドのときは、印刷装置がデータを受信できないときにはインターフェース装置の記憶部に記憶しておくことができる。
【００１６】
本発明のインターフェース装置は、印刷装置の拡張スロットに装着可能であり、受信部、送信部、検知部、記憶部、制御部を備えるように構成する。
【００１７】
ここで、受信部は、当該インターフェース装置に接続されるホストコンピュータが送信するデータを受信する。
【００１８】
一方、送信部は、当該インターフェース装置が装着される印刷装置の拡張スロットを介して当該印刷装置にデータを送信する。
【００１９】
さらに、検知部は、当該印刷装置がデータを受信できるか否かを検知する。
【００２０】
そして、記憶部は、当該印刷装置がデータを受信できない旨を検知部が検知した場合、受信部により受信されたデータを記憶する。
【００２１】
一方、制御部は、当該印刷装置がデータを受信できる旨を検知部が検知した場合、記憶部に記憶されたデータに続いて受信できる旨を検知した後に受信部により受信されたデータを送信部に送信させる。
【００２２】
また、本発明のインターフェース装置は、さらに、判別部、通知部を備えるように構成することができる。
【００２３】
ここで、判別部は、記憶部にさらにデータを記憶することができるか否かを判別する。
【００２４】
一方、通知部は、判別部によりさらにデータを記憶することができない旨を判別した場合、その旨を当該ホストコンピュータに通知する。
【００２５】
また、本発明のインターフェース装置の送信部は、ＲＳ−２３２規格に準拠したコネクタを有するように構成することができる。
【００２６】
また、本発明のインターフェース装置は、当該印刷装置の拡張スロットに装着した場合、当該印刷装置の匡体に収まる大きさとするように構成することができる。
【００２７】
また、本発明のインターフェース装置は、さらにリアルタイムコマンド送信制御部を備えることができる。
【００２８】
ここで、リアルタイムコマンド送信制御部は、当該印刷装置がデータを受信できない旨を検知部が検知した場合、受信部により受信されたデータがリアルタイムコマンドであれば当該データを送信部に送信させる。
【００２９】
また、本発明のインターフェース装置において、リアルタイムコマンド送信制御部が、当該リアルタイムコマンドのデータを前記送信部に送信させた場合、記憶部は、当該データを記憶しないように構成することもできる。
【００３０】
また、本発明のインターフェース装置において、送信部が送信したデータが途切れた場合で、そのデータが他のコマンドを表すデータ列の途中である場合、リアルタイムコマンド送信制御部は、送信部による当該他のコマンドを表すデータ列の送信が完了してから、送信部に当該リアルタイムコマンドのデータを送信させるように構成することができる。
【００３１】
本構成により、他のコマンドを表すデータ列の送信の途中にリアルタイムコマンドのデータが割り込んでしまうことが防止できる。本構成では、現在あるコマンドを送信している途中か否かを判別して、送信の途中でなくなるまで、つまり、コマンドのコマンドの区切りになるまで、リアルタイムコマンドのデータの送信を待機するからである。
【００３２】
本発明の印刷装置の拡張スロットに装着可能なインターフェース装置の制御方法は、受信ステップと、検知ステップと、記憶ステップと、送信ステップとを備えるように構成する。
【００３３】
ここで、受信ステップでは、ホストコンピュータが送信するデータを受信する。
【００３４】
一方、検知ステップでは、印刷装置がデータを受信できるか否かを検知する。
【００３５】
さらに、記憶ステップでは、検知ステップにおいて当該印刷装置がデータを受信できない旨を検知した場合、受信ステップにおいて受信されたデータを記憶する。
【００３６】
そして、送信ステップでは、検知ステップにおいて当該印刷装置がデータを受信できる旨を検知した場合、記憶ステップにおいて記憶されたデータがあればそれを当該印刷装置に送信してから、受信ステップにおいて受信されたデータを当該印刷装置に送信する。
【００３７】
また、本発明のインターフェース装置の制御方法は、判別ステップと、通知ステップとをさらに備えるように構成することができる。
【００３８】
ここで、判別ステップでは、記憶部にさらにデータを記憶することができるか否かを判別する。
【００３９】
一方、通知ステップでは、判別ステップにおいてさらにデータを記憶することができない旨を判別した場合、その旨を当該ホストコンピュータに通知する。
【００４０】
また、本発明のインターフェース装置の制御方法は、リアルタイムコマンド送信ステップをさらに備えるように構成することができる。
【００４１】
ここで、リアルタイムコマンド送信ステップでは、検知ステップにおいて当該印刷装置がデータを受信できない旨を検知した場合、受信ステップにおいて受信されたデータがリアルタイムコマンドであれば当該データを当該印刷装置に送信する。
【００４２】
また、本発明のインターフェース装置の制御方法において、リアルタイムコマンド送信ステップにおいて当該リアルタイムコマンドのデータが当該印刷装置に送信された場合、記憶ステップによる当該データの記憶は実行しないように構成することができる。
【００４３】
また、本発明のインターフェース装置の制御方法において、当該印刷装置に送信されたデータが途切れた場合で、そのデータが他のコマンドを表すデータ列の途中である場合、リアルタイムコマンド送信ステップは、当該他のコマンドを表すデータ列の送信が完了してから、当該リアルタイムコマンドのデータを送信するように構成することができる。
【００４４】
本発明のインターフェース装置を制御するためのプログラムをコンパクトディスク、フロッピーディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープなどの情報記録媒体に記憶することができる。
【００４５】
さらに、本発明のインターフェース装置を制御するためのプログラムを、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）のサーバコンピュータに配置し、ここからユーザが適宜ダウンロードしてインターフェース装置に記憶させてプログラムを更新し、インターフェース装置にこのプログラムを実行させることができる。
【００４６】
【発明の実施の形態】
以下に本発明の一実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本願発明の範囲に含まれる。
【００４７】
（第１実施例）
図１には、本発明のインターフェース装置の実施形態の一例のブロック構成図を示す。
【００４８】
インターフェース装置１０１は、ホスト用インターフェース１０３を介してホストコンピュータ１０２に接続され、ホストコンピュータ１０２から送信されたデータを受信する。
【００４９】
一方、インターフェース装置１０１は、印刷装置用インターフェース１０５を介して印刷装置１０４に接続され、ホストコンピュータ１０２から送信された指令データを印刷装置１０４に送信する。印刷装置１０４では、この指令データの中の印刷指令に基づいて、用紙やフィルムなどの印刷対象に文字や図形の印刷を行う。また、指令データの中の各種制御設定指令に基づいて、印刷装置１０４そのものの制御や設定を行う。
【００５０】
ホスト用インターフェース１０３と、印刷装置用インターフェース１０５では、ＲＳ−２３２規格などのシリアルデータ転送、セントロニクス規格などのパラレルデータ転送、イーサネットの１０Ｂａｓｅ−Ｔ、１００Ｂａｓｅ−Ｔなどのネットワーク接続、さらにＵＳＢなどの新しいデータ転送規格などに対応したものを採用することができる。
【００５１】
ホストコンピュータ１０２や印刷装置１０４の内部のＴＴＬ（Transistor  Transistor Logic）回路とインターフェース装置１０１の内部とが異なる駆動電圧レベルで動作している場合には、ホスト用インターフェース１０３や印刷装置用インターフェース１０５にレベル変換を行うドライバ回路を備えることによって信号レベルを容易に変換することができる。
【００５２】
さらに、既存の規格に基づいたコネクタ形状を採用することができるため、コストの低減を図ることができる。
【００５３】
また、印刷装置用インターフェース１０５は、印刷装置１０４の受信バッファがフルか否かをインターフェース装置１０１に通知する。したがって、ＣＰＵ（Central Processing Unit；中央処理ユニット）１０６は、印刷装置用インターフェース１０５を監視して、印刷装置１０４にデータを送信することができるか否かを検知することができる。この検知には、印刷装置１０４のＡＳＢ機能を用いることができる。また、ビジー信号線が印刷装置用インターフェース１０５に備えられている場合は、これを調べることにより検知ができる。
【００５４】
ＣＰＵ  １０６は、ホスト用インターフェース１０３を監視し、これがデータを受信した場合には、印刷装置１０４に送信できるか否かを検知し、できない場合は、できるようになるまでそのデータをバッファリングする。なお、従来のインターフェース装置においては、このバッファリング機能が提供されていなかった。
【００５５】
指令データのバッファリングには、ＲＡＭ（Random Access Memory）１１３内に確保されたバッファ領域１２０を用いる。ＲＡＭ  １１３は、このほかの一時的な記憶に使用される。
【００５６】
ＲＯＭ（Read Only Memory）１１２は、ＣＰＵ  １０６が実行するプログラムが記憶される。印刷装置１０４の電源が投入され、インターフェース装置１０１に対する電源供給が開始されると、ＣＰＵ  １０６は、ＲＯＭ  １１２からプログラムを読み出して実行を開始し、インターフェース装置１０１を制御する。
【００５７】
電源投入時に、ＣＰＵ  １０６はディップスイッチ１０８の設定を調べ、ホスト用インターフェース１０３や印刷装置用インターフェース１０５で行われる通信のデータ長、パリティチェックの有無、転送速度などを設定する。
【００５８】
動作表示ランプ１１０は、インターフェース装置が動作していることを表示する。また、ホスト用インターフェース１０３や印刷装置用インターフェース１０５の通信状況やＣＰＵ  １０６の処理状況などを色の変化や点滅などで表示することも可能である。
【００５９】
ここで、ホスト用インターフェース１０３は受信部、通知部として機能し、印刷装置用インターフェース１０５は送信部、検知部として機能し、ＣＰＵ  １０６は制御部、判別部として機能し、ＲＡＭ  １１３は記憶部として機能する。
【００６０】
また、ＲＯＭ  １１２は、ＣＰＵ  １０６が実行するプログラムを記憶する情報記録媒体としての役割を果たす。ＲＯＭ  １１２に記憶されるＢＩＯＳ（Basic Input Output System）プログラムは、ホストコンピュータ１０２などから更新することが可能な実施形態をとることができ、この場合、ホストコンピュータ１０２が読取り可能なコンパクトディスク、フロッピーディスク、光磁気ディスク、ハードディスク、ディジタルビデオディスク磁気テープなども、ＣＰＵ  １０６が実行するプログラムを記憶する情報記録媒体としての役割を果たしうる。
【００６１】
なお、本実施形態では、ホスト用インターフェース１０３と、印刷装置用インターフェース１０５と、動作表示ランプ１１０と、ＲＯＭ  １１２と、ＲＡＭ  １１３と、がＣＰＵ  １０６に直接接続される構成をとっているが、これらがバスによって接続される構成を採用することも可能である。
【００６２】
図２は、本発明に係るインターフェース装置の概形を示す説明図である。
【００６３】
インターフェース装置１０１の背面には、ホスト用インターフェース１０３とインターフェース装置１０１の動作表示ランプ１１０が配置されている。インターフェース装置１０１は、印刷装置１０４に備えられた拡張スロットにちょうど収まる大きさに設計されている。このような形状に設計されたインターフェース装置は「印刷装置用拡張モジュール」と呼ばれることがある。
【００６４】
このような大きさに設計されているため、印刷装置１０４にインターフェース装置１０１を装着すると、あたかも印刷装置１０４自体の背面にホスト用インターフェース１０３と動作表示ランプ１１０が配置されているかのように見える。
【００６５】
このように、印刷装置１０４の内部に機器配置スペースの節約と、インターフェース装置１０１に対する不用意な接触や衝突を防止することに役立つ。このほか、オフィスの美観を向上させる点でも役立つ。
【００６６】
（データ送受処理）
以下では、図３を参照しながら、本発明のインターフェース装置のデータ送受処理の実施例について説明する。図３は、本発明のインターフェース装置のデータ送受処理を示すフローチャートである。
【００６７】
まず、ＣＰＵ  １０６は、ホストコンピュータ１０２から送信される指令データがホスト用インターフェース１０３に到来するまで待機する（ステップＳ３０１）。
【００６８】
この待機の際に、ほかの処理に制御を移すコルーチン的な処理形態をとることが可能である。この場合、ホスト用インターフェース１０３がＣＰＵ  １０６に対して受信割り込みを発生することにより、ＣＰＵ  １０６はこれ以降の処理に進むようにすることができる。
【００６９】
ステップＳ３０１において指令データが到来して、当該指令データを受信したら、ＣＰＵ  １０６は、印刷装置１０４が指令データを受信できる状態であるか否かを調べる（ステップＳ３０２）。受信できる状態か否かは、ビジー信号線を直接調べる手法や、ＡＳＢ機能により通知されている印刷装置１０４の状況をＲＡＭ  １１３に記憶することとしてその値を調べる手法などにより、得ることができる。
【００７０】
印刷装置が受信可能でない場合（ステップＳ３０２；Ｎｏ）、ステップＳ３０１において受信したデータをＲＡＭ  １１３内のバッファ領域１２０に記憶する（ステップＳ３０４）。前述のように、ＲＡＭ  １１３には、あらかじめバッファ領域１２０が割り当てられている。バッファ領域１２０は、ＦＩＦＯ（First In First Out）形式のキューのようなバッファとして構成される。したがって、たとえば、リングバッファなどの技法により実現することができる。
【００７１】
このように、印刷装置１０４がデータを受信できない場合には、順次データがバッファ領域１２０に記憶され、蓄積されていくため、しだいに使用できる領域が減っていく。使用できる領域がなくなった状態が「フル」の状態である。
【００７２】
ついでステップＳ３０４の処理によってバッファ領域１２０がフルになったか否かを判別し（ステップＳ３０５）、フルになった場合（ステップＳ３０５；Ｙｅｓ）、バッファフルになった旨をホストコンピュータ１０２に通知して（ステップＳ３０６）、ステップＳ３０１に戻る。この通知は、ＡＳＢと同様の規約に基づいて行ってもよいし、ホスト用インターフェースにビジー信号線がある場合には、この信号線を用いて通知してもよい。
【００７３】
フルになっていない場合（ステップＳ３０５；Ｎｏ）、そのままステップＳ３０１に戻る。あるいは、フルになっていない旨をホストコンピュータ１０２に通知してもよい。
【００７４】
このように、受信したデータをバッファ領域１２０に記憶してからバッファフルか否かを調べてホストコンピュータに通知することにより、受信したデータを記憶できる空き領域がステップＳ３０４において必ず残っていることが保証される。
【００７５】
一方、受信できる場合（ステップＳ３０２；Ｙｅｓ）、ＣＰＵ  １０６は、バッファ領域１２０に記憶されてバッファリングされた指令データがあるか否かを調べ（ステップＳ３０７）、ある場合（ステップＳ３０７；Ｙｅｓ）、印刷装置用インターフェース１０５を介して印刷装置１０４に送信し（ステップＳ３０８）、バッファ領域１２０をクリアしてから（ステップＳ３０９）、ステップＳ３０１において受信したデータを印刷装置１０４に送信し（ステップＳ３０９）、ステップＳ３０１に戻る。
【００７６】
一方、バッファ領域１２０に記憶されてバッファリングされたデータがない場合（ステップＳ３０７；Ｎｏ）、ステップＳ３０９に進む。
【００７７】
なお、ステップＳ３０８において、バッファリングされているデータを印刷装置１０４に送信している途中で、印刷装置１０４の受信バッファがフルになった場合には、バッファ領域に残った未送信のデータに加えてステップＳ３０１において受信したデータをバッファ領域に記憶された新たなデータとすればよい。
【００７８】
（実験結果）
上記のようにインターフェース装置１０１を構成した場合の各諸元の例と実験結果について説明する。
【００７９】
ホスト用インターフェース１０３は、ＲＳ−２３２規格に適合したものとする。
【００８０】
印刷装置用インターフェース１０５は、クロック同期シリアルインターフェースで、半二重型通信のものを用いる。印刷装置用インターフェース１０５では、通信方式の変換を行い、通信速度は１.２５Ｍｂｐｓである。
【００８１】
さらに、データのバッファリング用に、ＲＡＭ  １１３内に４０バイトのバッファ領域を用意する。
【００８２】
従来、ＲＳ−２３２Ｃ規格による通信でホスト装置から印刷装置にデータを送信する場合は、通信速度としては、３８４００ｂｐｓ程度までしか実現できなかった。
【００８３】
一方、上記諸元を用いて本発明を適用すると、現在最も普及している汎用パーソナルコンピュータで使われる最高速度である１１５ｋｂｐｓ〜２３０ｋｂｐｓに、通信速度を向上させることができた。また、さらに高速な通信も可能であることが実験により判明している。
【００８４】
（第２実施例）
本発明の第２実施例は、第１実施例の機能に加え、データの中の指令データに通常コマンドとリアルタイムコマンドの２種類があり、ホストコンピュータから送信されたリアルタイムコマンドは、直ちに印刷装置に送信する機能を備えるものである。したがって、第２実施例の実施形態は、第１実施例の実施形態を基本とするが、さらに、ホスト用インターフェース１０３とＣＰＵ  １０６とが共働して実現するリアルタイムコマンド送信制御部を備える点と、ホスト側へのデータ送信も実行する点が異なる。
【００８５】
以下では、図４を参照しながら、第２実施例のインターフェース装置のデータ送受処理の実施例について説明する。図４は、本発明の第２実施例のインターフェース装置のデータ送受処理を示すフローチャートである。
【００８６】
なお、以下で「印刷装置１０４にデータを送信できる状態にない」とは、「印刷装置１０４は、リアルタイムコマンドでない指令データ（通常コマンド）は受信できないが、リアルタイムコマンドは受信できる状態にある」ことを意味する。
【００８７】
印刷装置は、リアルタイムコマンドを受信すると直ちにこれに対応する処理を実行するのである。
【００８８】
データ送受処理が起動されると、インターフェース装置１０１は、ホスト用インターフェース１０３の処理がデータを受信をすべき状態かを調べる（ステップＳ４０１）。
【００８９】
ホスト用インターフェース１０３がデータを受信すべき状態にない場合（ステップＳ４０１；Ｎｏ）、さらに、インターフェース装置１０１は、印刷装置用インターフェース１０５を介して、印刷装置１０４からのデータを印刷装置に送信すべき状態にあるか否かを調べる（ステップＳ４０２）。
【００９０】
ホスト１０２にデータを送信すべき状態にある場合（ステップＳ４０２；Ｙｅｓ）、印刷装置用インターフェース１０５を介して取得したデータを印刷装置に転送するデータ送信処理を実行し（ステップＳ４０３）、本処理を終了する。
【００９１】
一方、データを送信すべき状態にない場合（ステップＳ４０２；Ｎｏ）、ステップＳ４０１に戻る。
【００９２】
また、ホスト用インターフェース１０３がデータを受信すべき状態にある場合（ステップＳ４０１；Ｙｅｓ）、インターフェース装置１０１は、印刷装置用インターフェース１０５を介して印刷装置１０４にデータを送信できる状態にあるか否かを調べる（ステップＳ４０４）。
【００９３】
送信できる状態にある場合（ステップＳ４０４；Ｙｅｓ）、ＲＡＭ  １１３内のバッファ領域に以前に受信したデータが残っているか調べ（ステップＳ４０５）、残っている場合（ステップＳ４０５；Ｙｅｓ）、当該データを印刷装置用インターフェース１０５を介して印刷装置１０４に送信して（ステップＳ４０６）から、ホスト用インターフェース１０３から受信したデータを、印刷装置用インターフェース１０５を介して印刷装置１０４に転送し（ステップＳ４０７）、本処理を終了する。
【００９４】
一方、ＲＡＭ  １１３内のバッファ領域に以前に受信したデータが残っていない場合（ステップＳ４０５；Ｎｏ）、そのままステップＳ４０７に進む。
【００９５】
また、印刷装置用インターフェース１０５を介して印刷装置１０４にデータを送信できる状態にない場合（ステップＳ４０４）、インターフェース装置１０１は、ホスト用インターフェース１０３を介してデータを受信する（ステップＳ４０８）。
【００９６】
次に、受信したデータにリアルタイムコマンドが含まれているかを調べ（ステップＳ４０９）、含まれていれば（ステップＳ４０９；Ｙｅｓ）、当該リアルタイムコマンドを、印刷装置用インターフェース１０５を介して印刷装置に送信し（ステップＳ４１０）、受信したデータをＲＡＭ  １１３内のバッファ領域に蓄積する（ステップＳ４１１）。
【００９７】
一方、リアルタイムコマンドが含まれていなければ（ステップＳ４０９；Ｎｏ）、受信したデータをＲＡＭ  １１３内のバッファ領域に蓄積する（ステップＳ４１１）。
【００９８】
さらに、続けてデータを受信できる状態にあるか否かを調べ（ステップＳ４１２）、継続するデータがない場合（ステップＳ４１２；Ｎｏ）、本処理を終了する。
【００９９】
継続するデータがある場合（ステップＳ４１２；Ｙｅｓ）、ステップＳ４０９に戻る。
【０１００】
なお、ステップＳ４１１においては、第１実施例と同様に、インターフェース装置１０１のＲＡＭ  １１３のバッファ領域がフルになったか否かを調べ、フルになった場合には、その旨をホストコンピュータに通知するなどの処理を行うことができる。
【０１０１】
また、上記実施形態では、ステップＳ４１１において、リアルタイムコマンドであると否とに関わらずバッファ領域にデータを蓄積するが、すでにリアルタイムコマンドは印刷装置１０４に送信されているので、リアルタイムコマンドについてはバッファ領域に蓄積しない実施形態をとることも可能である。
【０１０２】
（第３実施例）
第２実施例では、インターフェース装置１０１が受信したデータにリアルタイムコマンドが含まれている場合には、それを直ちに印刷装置１０４に送信していた。この場合、リアルタイムコマンド以外のコマンド（以下「通常コマンド」という。）が複数バイトのデータ列からなる場合、送信の途中で、リアルタイムコマンドのデータが割り込むことがありうる。
【０１０３】
リアルタイムコマンドと通常コマンドとが区別できるようなコマンド体系を印刷装置１０４が採用している場合には、第２実施例を採用すれば十分である。たとえば、データはバイト単位（８ビット単位）で送信され、リアルタイムコマンドを表すデータは常に最上位ビットが立っており（１になっており）、通常コマンドを表すデータは常に最上位ビットがクリアされている（０になっている）ようなコマンド体系の場合である。
【０１０４】
しかしながら、既存のコマンド体系との互換性を考慮する場合、第２実施例では不十分な場合がある。既存のコマンド体系では、通常コマンドのデータ列の途中にリアルタイムコマンドが割り込むと、予期しない動作をするものがあるからである。
【０１０５】
たとえば、以下のようなデータ列を順に、ホストコンピュータ１０２からインターフェース装置１０１を介して印刷装置１０４へ送信する場合を考える。ここで、0xは十六進数の値を意味する接頭辞である。また、ある文字のＡＳＣＩＩコードを送信することを、二重引用符で囲むことで表記する。
【０１０６】
「0x1b "t" 0」文字コードテーブルの０番を選択する。最後の０がパラメータである。
【０１０７】
「0x1b "R" 1」国際文字セットの１番を選択する。最後の１がパラメータである。
【０１０８】
「"0123456789"」文字０〜９を順に印刷する。
【０１０９】
「0x0a」改行する。
【０１１０】
「0x10 0x04 1」リアルタイムコマンド。現在の印刷装置１０４のステータスを要求する。
【０１１１】
これを順に、以下のように、ホストコンピュータ１０２からインターフェース装置１０１へ送信したとする。
【０１１２】
0x1b "t" 0 0x1b "R" 1 "0123456789" 0x0a 0x10 0x04 1
インターフェース装置１０１から印刷装置１０４へ順にこのデータを送信するが、印刷装置１０４が0x1b "t" 0 0x1b "R"を受信した段階で、印刷装置１０４の受信バッファが一杯になり、これ以上送信されても受信できない状態になったとすると、第２実施例では、ステップＳ４１０により、リアルタイムコマンド「0x10 0x04 1」が先に送信される。したがって、印刷装置１０４が受信するコマンド列は、以下のようになる。
【０１１３】
0x1b "t" 0 0x1b "R" 0x10 0x04 1 1 "0123456789" 0x0a
この場合、印刷装置１０４は、0x10 0x04 1を受信した時点で直ちにステータスをインターフェース装置１０１に送信する一方で、文字コードテーブル０番を選択した後、国際文字セットの１６（＝0x10）番を選択し、その後解釈できないデータ0x04 1 1をスキップしてから、文字０〜９を印刷し…のように動作する。これは、期待する動作と異なる。
【０１１４】
本実施例では、このような場合であっても正しくコマンドが解釈されるようなインターフェース装置を示す。本実施例では、上記のようなデータがホストコンピュータ１０２から送信された場合、印刷装置１０４は、以下のようなデータを受信するように、インターフェース装置１０１が機能する。
【０１１５】
0x1b "t" 0 0x1b "R" 1 0x10 0x04 1 "0123456789" 0x0a
図５は、本実施例のインターフェース装置で実行されるデータ送受処理の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１１６】
本処理が起動されると、まず、ホストコンピュータから送信されたデータをホスト用インターフェース１０３が受信すべき状態にあるか否かを調べる（ステップＳ５０１）。ない場合（ステップＳ５０１；Ｎｏ）、待機してから（ステップＳ５０２）ステップＳ５０１に戻る。なお、ステップＳ５０２の待機中に、後述する１バイト送信処理が割り込みにより起動されることがある。この１バイト送信処理は、印刷装置１０４がデータを受信できる状態になる（受信バッファに空きができる）ことにより、起動される。待機中に、１バイト送信処理を繰り返し起動してもよい。
【０１１７】
一方、受信すべき状態である場合（ステップＳ５０１；Ｙｅｓ）、インターフェース装置１０１内のＲＡＭ  １１３に確保されたバッファ領域に空きがあるか調べる（ステップＳ５０４）。空きがない場合（ステップＳ５０４；Ｎｏ）、印刷装置１０４がデータを受信できる状態であるか否かを調べ（ステップＳ５０５）、受信できる状態でない場合（ステップＳ５０５；Ｎｏ）、その旨をホスト装置１０２に通知して（ステップＳ５０６）、待機し（ステップＳ５０７）、ステップＳ５０４に戻る。なお、ステップＳ５０７における待機中に後述する１バイト送信処理が割り込みにより起動されることがある。待機中に、１バイト送信処理を繰り返し起動してもよい。
【０１１８】
一方、受信できる状態である場合（ステップＳ５０５；Ｙｅｓ）、後述する１バイト送信処理を実行して（ステップＳ５０８）、ステップＳ５０４に戻る。
【０１１９】
一方、バッファ領域に空きがある場合（ステップＳ５０４；Ｙｅｓ）、ホスト用インターフェース１０３を介して当該データを受信する（ステップＳ５０９）。ついで、当該データの種類が、以下のいずれであるかを調べる（ステップＳ５１０）。
【０１２０】
・通常コマンドの最後のバイト。
・通常コマンドの最後以外のバイト。
・リアルタイムコマンドの先頭バイト。
【０１２１】
通常コマンドの最後以外のバイトである場合（ステップＳ５１０；通常最後以外）、バッファ領域に当該バイトを追加する（ステップＳ５１１）。さらに、ＲＡＭ  １１３に、当該バッファ領域のそれぞれのバイトに対応付けられたビット列からなるフラグ領域をあらかじめ確保しておき、当該フラグ領域の対応するビットを０にクリアして（ステップＳ５１２）、ステップＳ５０１に戻る。
【０１２２】
一方、通常コマンドの最後のバイトである場合（ステップＳ５１０；通常最後）、バッファ領域に当該バイトを追加する（ステップＳ５１３）。さらに、ＲＡＭ  １１３に、当該バッファ領域のそれぞれのバイトに対応付けられたビット列からなるフラグ領域をあらかじめ確保しておき、当該フラグ領域の対応するビットを１にセットして（ステップＳ５１４）、ステップＳ５０１に戻る。
【０１２３】
このような処理を行う場合、以下の第１行のようなデータ列がバッファ領域に蓄積されると、フラグ領域のビット列は、第２行のようになる。
【０１２４】
0x1b "t" 0 0x1b "R" 1 "0123456789" 0x0a
0     0  1 0     0  1  1111111111  1
このビットが１にセットされている場合は、当該ビットに対応するバイトが印刷装置１０４に送信された直後に、リアルタイムコマンドを移動・挿入して送信してもよいことを意味する。
【０１２５】
一方、リアルタイムコマンドの先頭バイトである場合（ステップＳ５１０；ＲＴＣ先頭）、後述するリアルタイムコマンド送受処理を実行して（ステップＳ５１５）、ステップＳ５０１に戻る。
【０１２６】
図６は、本実施例における１バイト送信処理の制御の流れを示すフローチャートである。本処理は、上述の通り、インターフェース装置１０１のバッファ領域に空きがない場合や、印刷装置１０４の受信バッファに空きができた場合に起動される。
【０１２７】
まず、印刷装置１０４がデータを受信できるか否かを調べる（ステップＳ６０１）。受信できない場合（ステップＳ６０１；Ｎｏ）、リターンする。受信できる場合（ステップＳ６０１；Ｙｅｓ）、ＲＡＭ  １１３のバッファ領域から１バイト取得して（ステップＳ６０２）、当該バイトを印刷装置用インターフェース１０５を介して印刷装置１０４に送信する（ステップＳ６０３）。これにより、バッファ領域の空きが１バイト増えることになる。
【０１２８】
ついで、当該バイトに対応するフラグ領域のビットの値を、ＲＡＭ  １１３にあらかじめ用意された挿入可能フラグ領域に記憶する（ステップＳ６０４）。したがって、挿入可能フラグ領域には、ステップＳ６０３によって最後に送信したバイトが、コマンド列の最後のバイトであるか否かが記憶されることになる。
【０１２９】
記憶したら、本処理を終了して、リターンする。
【０１３０】
図７は、本実施例におけるリアルタイムコマンド送受処理の制御の流れを示すフローチャートである。
【０１３１】
まず、挿入可能フラグ領域の値を調べる（ステップＳ７０１）。値が１である場合、すなわち、リアルタイムコマンドを挿入してもよい場合（ステップＳ７０１；１）、リアルタイムコマンドのバイトを印刷装置１０４に送信する（ステップＳ７０２）。なお、リアルタイムコマンドは、印刷装置１０４の受信バッファが一杯の状態であっても、印刷装置１０４は対応する処理が実行できる。
【０１３２】
さらに、ステップＳ７０２にてリアルタイムコマンドの最後のバイトを送信したか否かを調べ（ステップＳ７０３）、送信ずみの場合（ステップＳ７０３；Ｙｅｓ）、本処理を終了してリターンする。
【０１３３】
一方、まだリアルタイムコマンドのデータ列の送信が完了していない場合（ステップＳ７０３；Ｎｏ）、ホストコンピュータから送信されたデータをホスト用インターフェース１０３が受信すべき状態にあるか否かを調べ（ステップＳ７０４）、ない場合（ステップＳ７０４；Ｎｏ）、待機してから（ステップＳ７０５）ステップＳ７０４に戻る。
【０１３４】
一方、受信すべき状態である場合（ステップＳ７０４；Ｙｅｓ）、当該バイトを受信し（ステップＳ７０６）、ステップＳ７０２に進む。
【０１３５】
ステップＳ７０２においては、繰り返しの最初ではステップＳ５０９において受信されたバイトが、以降の繰り返しではステップＳ７０２において受信されたバイトが、それぞれ送信される。
【０１３６】
一方、挿入可能フラグ領域の値が０である場合、すなわち、リアルタイムコマンドを挿入してはならない場合（ステップＳ７０１；０）、前述の１バイト送信処理を実行し（ステップＳ７０７）、ステップＳ７０１に戻る。
【０１３７】
（第４の実施形態）
本実施形態は、上記実施形態と同様に、指令データに通常コマンドとリアルタイムコマンドがある場合の、インターフェース装置の実施例である。本実施例では、上記実施形態と同様に、通常コマンドの途中にリアルタイムコマンドが挿入されてしまうことを防止することができる。
【０１３８】
（概要構成）
図８は、本実施形態におけるインターフェース装置と印刷装置との関係および機能構成を示す模式図である。
【０１３９】
インターフェース装置８０１は、上記実施形態と同様に印刷装置８０２の拡張スロットに挿入され、相互に接続される。
【０１４０】
インターフェース装置８０１は、一時的な記憶領域としてＲＡＭを備えており、そのＲＡＭ内に、受信バッファ８０３、送信バッファ８０４、フラグ領域８０５を確保してある。フラグ領域８０５がセット（非０が記憶）されている場合、最後に受信された指令データがリアルタイムコマンドであったことを意味する。また、受信途中で、リアルタイムコマンドか否かがまだ判明していないときに、その受信途中の指令データ列を一時的に記憶する一時バッファ８３１も確保されている。
【０１４１】
一時バッファ８３１は、コマンドを受信途中の場合に、それまでに受信した指令データのバイト列を一時的に記憶するためのものである。
【０１４２】
ホスト装置８０６から指令データが送信（８１１）されると、その指令データは、受信バッファ８０３に記憶される。また、これに合わせて、フラグ領域８０５の値もセット／クリアされる。受信バッファ８０３に記憶された指令データは、送信バッファ８０４や一時バッファ８３１に適宜コピー（８２１）され、印刷装置８０２に送信（８１３）される。
【０１４３】
一方、印刷装置８０２からは、ビジー／レディ信号がインターフェース装置８０１に送信（８１３）され、インターフェース装置８０１は、この信号を見ながら各種処理を行う。また、インターフェース装置８０１は、ホスト装置８０６へビジー／レディ信号を送信（８１２）する。
【０１４４】
（１バイト受信処理）
図９は、ホスト装置８０６からインターフェース装置８０１への指令データが送信（８１１）の際に起動される１バイト受信処理の流れを示すフローチャートである。本処理は、指令データがインターフェース装置８０１へ到着した際に発生する受信割り込みによって起動される。
【０１４５】
まず、インターフェース装置８０１は、ホスト側インターフェース（図示せず）から指令データを１バイト読み出す（ステップＳ９０１）。
【０１４６】
次に、読み出した指令データを受信バッファに格納する（ステップＳ９０２）。受信バッファへの格納は、ＦＩＦＯ（First In First Out）方式で追加することにより行う。したがって、受信バッファ８０３は、所定の最大長（バッファ長さ）のキューにより実現でき、たとえば、リングバッファによりこれを構成する。
【０１４７】
次に、インターフェース装置８０１は、受信バッファ８０３がフルになったか否かを調べる（ステップＳ９０３）。受信バッファ８０３がフルである場合（ステップＳ９０３；Ｙｅｓ）、ビジー信号をホスト装置８０６へ出力して（ステップＳ９０４）、本処理を終了する。
【０１４８】
一方、フルでない場合（ステップＳ９０３；Ｎｏ）、本処理を直ちに終了する。この場合は、したがって、ビジー／レディ信号の送信（８１２）状態は、従前の状態をそのまま維持することになる。
【０１４９】
（データ処理）
図１０は、受信バッファ８０３から送信バッファ８０４へ指令データをコピー（８２１）する際に、起動される１バイト読出処理の流れを示すフローチャートであり、図１１は、当該１バイト読出処理を用いて指令データのコピー等の処理を行うデータ処理の流れを示すフローチャートである。
【０１５０】
本実施形態では、本データ処理によって、本１バイト読出処理が呼び出される。
【０１５１】
以下、図１０を参照して、１バイト読出処理について説明する。１バイト読出処理が起動されると、まず、インターフェース装置８０１は、受信バッファ８０３の先頭から１バイトを読み出して、インターフェース装置８０１が備えるＣＰＵ（図示せず）のレジスタ等の記憶する（ステップＳ１００１）。前述の通り、受信バッファ８０３はＦＩＦＯ形式のキューとして構成されているため、先頭の１バイトは、受信バッファ８０３に記憶されている指令データのうち、もっとも以前に受信されたものである。
【０１５２】
次に、インターフェース装置８０１は、ステップＳ１００１の後に、受信バッファ８０３がフルか否かを調べる（ステップＳ１００２）。受信バッファ８０３がフルでない場合（ステップＳ１００２；Ｎｏ）、レディ信号をホスト装置８０６へ出力して（ステップＳ１００３）、本処理を終了する。
【０１５３】
一方、フルである場合（ステップＳ１００２；Ｙｅｓ）、本処理を直ちに終了する。この場合は、したがって、ビジー／レディ信号の送信（８１２）状態は、従前の状態をそのまま維持することになる。
【０１５４】
以下、図１１を参照して、データ処理について説明する。なお、本データ処理は、受信バッファ８０３にデータが格納されている場合に起動される。そのタイミングとしては、所定の時間間隔ごとにタイマ割り込み等で起動する形態、他に行うべき処理がない場合に起動する形態、受信バッファ８０３がフルになった場合に起動する形態、および、これらの組み合わせを採用することができ、目的と用途に応じて適当なタイミングを選択することができる。
【０１５５】
データ処理が起動されると、まず、前述の１バイト読出処理を起動する（ステップＳ１１０１）。次に、１バイト読出処理（ステップＳ１１０１）によってレジスタ等に読み出された指令データが、リアルタイムコマンドの先頭バイトであるか否かを調べる（ステップＳ１１０２）。
【０１５６】
上記実施形態と同様のコマンド体系を採用した場合、リアルタイムコマンドの先頭バイトは0x10であるが、この他のリアルタイムコマンドを採用することもできる。また、0x10が、通常コマンドにおいて送信されるデータの一部であることもある。
【０１５７】
リアルタイムコマンドの先頭でない場合（ステップＳ１１０２；Ｎｏ）、当該１バイトを送信バッファ８０４に追加して（ステップＳ１１０３）、本処理を終了する。送信バッファ８０４も受信バッファ８０３と同様に、ＦＩＦＯ形式のキューとして構成される。
【０１５８】
一方、リアルタイムコマンドの先頭である場合（ステップＳ１１０２；Ｙｅｓ）、当該１バイトを一時バッファ８３１に追加する（ステップＳ１１０４）。
【０１５９】
さらに１バイト読出処理を呼び出して（ステップＳ１１０５）、その読み出された指令データ１バイトにより、コマンドが終わったか否かを調べる（ステップＳ１１０６）。終わっていない場合（ステップＳ１１０６；Ｎｏ）、ステップＳ１１０３に戻る。
【０１６０】
一方、コマンドが終わっている場合（ステップＳ１１０６；Ｙｅｓ）これまでに一時バッファ８３１に記憶された指令データ（列）と、ステップＳ１１０４において読み出された指令データとで構成される指令データ列が、リアルタイムコマンドを構成するものであるか否かを調べる（ステップＳ１１０７）。
【０１６１】
リアルタイムコマンドを構成しない場合（ステップＳ１１０７；Ｎｏ）、一時バッファ８３１に記憶された指令データ（列）と、最後に読み出した１バイトの指令データとを、順に送信バッファにコピーし（ステップＳ１１０８）、一時バッファ８３１をクリアして（ステップＳ１１０９）、本処理を終了する。
【０１６２】
一方、リアルタイムコマンドを構成する場合（ステップＳ１１０７；Ｙｅｓ）、読み出した１バイトを一時バッファ８３１に追加して（ステップＳ１１１０）、フラグ領域８０５をセットし（ステップＳ１１１１）、本処理を終了する。
【０１６３】
（送信処理）
図１２は、インターフェース装置８０１が送信バッファ８０４に記憶された指令データ等を印刷装置８０２に送信（８１２）する送信処理の制御の流れを示すフローチャートである。なお、本送信処理は、送信バッファ８０４もしくは一時バッファ８３１にデータが格納されている場合に起動される。そのタイミングとしては、所定の時間間隔ごとにタイマ割り込み等で起動する形態、他に行うべき処理がない場合に起動する形態、送信バッファ８０４がフルになった場合に起動する形態、フラグ領域８０５がセットされていることを検知した場合に起動する形態、および、これらの組み合わせを採用することができ、目的と用途に応じて適当なタイミングを選択することができる。
【０１６４】
以下、本図を参照して説明する。
【０１６５】
送信処理が起動されると、インターフェース装置８０１は、フラグ領域８０５がセットされているか否かを調べる（ステップＳ１２０１）。セットされている場合（ステップＳ１２０１；Ｙｅｓ）、一時バッファ８３１に記憶されたリアルタイムコマンドの指令データ列を印刷装置８０２に送信し（ステップＳ１２０２）、フラグ領域８０５と一時バッファ８３１をクリアして（ステップＳ１２０３）、本処理を終了する。
【０１６６】
なお、この送信の際には、印刷装置８０２のビジー／レディ状態の確認は行わない。リアルタイムコマンドは、印刷装置８０２がビジー状態であっても送信すべきコマンドだからである。
【０１６７】
一方、セットされていない場合（ステップＳ１２０１；Ｎｏ）、送信バッファ８０４から１バイトを読み出し（ステップＳ１２０４）、その１バイトが複数バイトからなる通常コマンドの先頭であるか否かを調べる（ステップＳ１２０５）。
【０１６８】
先頭でない場合や１バイトの通常コマンドである場合（ステップＳ１２０５；Ｎｏ）、読み出した１バイトを送信して（ステップＳ１２０６）、本処理を終了する。
【０１６９】
一方、複数バイトからなる通常コマンドの先頭である場合（ステップＳ１２０５；Ｙｅｓ）は、当該１バイトを一時バッファ８３１に追加して（ステップＳ１２０７）、送信バッファ８０４から１バイトを読み出し（ステップＳ１２０８）、当該１バイトを一時バッファ８３１に追加して（ステップＳ１２０９）、当該１バイトにより、コマンドが終了したか否かを調べる（ステップＳ１２１０）。終了していない場合（ステップＳ１２０９；Ｎｏ）、ステップＳ１２０８に戻る。一方、終了している場合（ステップＳ１２１０；Ｙｅｓ）、一時バッファ８３１に記憶された通常コマンドの指令データ列を印刷装置８０２に送信して（ステップＳ１２１１）、一時バッファ８３１をクリアして（ステップＳ１２１２）、本処理を終了する。
【０１７０】
なお、ステップＳ１２０６およびステップＳ１２１１における送信では、印刷装置８０２からのビジー／レディ信号を調べ、ビジーである場合には、印刷装置８０２がレディ状態になるまで待機する。
【０１７１】
このような処理を行うことにより、リアルタイムコマンドがインターフェース装置８０１にて解析され、送信すべき場合にはフラグ領域８０５がセットされるため、他に送信バッファ８０４に指令データが記憶されていても、それに優先してリアルタイムコマンドが送信される。
【０１７２】
また、通常コマンドのコマンド列を送信している途中では、フラグ領域８０５のチェックは行わないため、リアルタイムコマンドが他のコマンドの途中に混ざってしまうことはなくなる。
【０１７３】
なお、上記の実施例の処理の手順は実施形態の典型例を示したものであり、これを変形してこれと同等の処理をインターフェース装置で実行することができるが、そのような実施形態も本発明の範囲に含まれる。
【０１７４】
【発明の効果】
以上説明したように、本発明によれば、以下の効果を奏する。
【０１７５】
印刷装置の拡張スロットに装着され、ホストコンピュータと接続され、印刷装置のバッファリング状況を監視しながらホストコンピュータが送信したデータを受信し、これを適切にバッファリングして印刷装置に送信するのに好適な印刷装置用インターフェース装置とその制御方法を提供することができる。
【０１７６】
また、インターフェース装置でもバッファリングができない場合には、その旨をホストコンピュータに通知するのに好適な印刷装置用インターフェース装置とその制御方法を提供することができる。
【０１７７】
これにより、ホストコンピュータにおけるデータの送信待機時間を短縮することができ、印刷処理の高速化を図るのに好適な印刷装置用インターフェース装置とその制御方法を提供することができる。
【０１７８】
また、安価なコネクタを利用して印刷装置と通信をすれば、コストの低減を図るのに好適な印刷装置用インターフェース装置とその制御方法を提供することができる。
【０１７９】
また、印刷装置の内部にインターフェース装置を装着することにより、オフィスのスペースを節約するとともに美観を向上するのに好適な印刷装置用インターフェース装置とその制御方法を提供することができる。
【０１８０】
また、印刷装置がリアルタイムコマンドなど、印刷装置に優先して転送すべき指令データに対応している場合には、これを印刷装置に確実に送信し、ホストコンピュータからの指令データの特性に応じてバッファ処理をするのに好適な印刷装置用インターフェース装置とその制御方法を提供することができる。
【０１８１】
さらに、プログラムを記録した情報記録媒体をソフトウェア商品として、インターフェース装置と独立して容易に配布したり販売したりすることができるようになる。本発明の情報記録媒体に記録されたプログラムをインターフェース装置で実行すれば、上記の発明に係るインターフェース装置およびインターフェース装置の制御方法が実現できる。
【図面の簡単な説明】
【図１】  本発明のインターフェース装置の実施形態の一例の概要を示すブロック構成図。
【図２】  本発明のインターフェース装置の概形を示す説明図。
【図３】  本発明のインターフェース装置のデータ送受処理の実施例を示すフローチャート。
【図４】  本発明の第２実施例のインターフェース装置のデータ送受処理の実施例を示すフローチャート。
【図５】  本発明の第３実施例のインターフェース装置のデータ送受処理の実施例を示すフローチャート。
【図６】  本発明の第３実施例のインターフェース装置のデータ送受処理の実施例を示すフローチャート。
【図７】  本発明の第３実施例のインターフェース装置のデータ送受処理の実施例を示すフローチャート。
【図８】  本発明の第４実施例のインターフェース装置等の概要構成を示す模式図。
【図９】  本発明の第４実施例の１バイト受信処理の実施例を示すフローチャート。
【図１０】  本発明の第４実施例の１バイト読出処理の実施例を示すフローチャート。
【図１１】  本発明の第４実施例のデータ処理の実施例を示すフローチャート。
【図１２】  本発明の第４実施例の送信処理の実施例を示すフローチャート。
【符号の説明】
１０１  インターフェース装置
１０２  ホストコンピュータ
１０３  ホスト用インターフェース
１０４  印刷装置
１０５  印刷装置用インターフェース
１０６  ＣＰＵ
１０８  ディップスイッチ
１１０  動作表示ランプ
１１２  ＲＯＭ
１１３  ＲＡＭ
１２０  バッファ領域
８０１  インターフェース装置
８０２  印刷装置
８０３  受信バッファ
８０４  送信バッファ
８０５  フラグ領域
８０６  ホスト装置
８１１  ホスト装置からの指令データの送信
８１２  インターフェース装置からのビジー／レディ信号の送信
８１３  インターフェース装置からの指令データの送信
８１４  印刷装置からのビジー／レディ信号の送信
８２１  バッファ間のコピー
８３１  一時バッファ
【図１】
0004441967.tif 000002
【図２】
0004441967.tif 000003
【図３】
0004441967.tif 000004
【図４】
0004441967.tif 000005
【図５】
0004441967.tif 000006
【図６】
0004441967.tif 000007
【図７】
0004441967.tif 000008
【図８】
0004441967.tif 000009
【図９】
0004441967.tif 000010
【図１０】
0004441967.tif 000011
【図１１】
0004441967.tif 000012
【図１２】
0004441967.tif 000013