(57)【特許請求の範囲】
【請求項１】
（ａ）情報処理装置から送信された通常処理を行うための通常コマンドまたはリアルタイム処理コマンドを受信する受信工程と、
（ｂ）前記受信工程において、前記リアルタイム処理コマンドを受信した場合、前記通常コマンドの通常処理に優先して、前記リアルタイム処理コマンドに対応するリアルタイム処理を実行する工程と、
を有する印刷装置の制御方法において、
（ｃ）前記通常コマンド乃至リアルタイム処理コマンドのいずれか一方のコマンドとして用意されたリアルタイム処理禁止コマンドを受信すると、前記リアルタイム処理を禁止する設定を行う工程と、
（ｄ）（ｃ）の工程後、前記通常コマンドの内、バイナリデータを含むイメージデータまたはフォント登録データを受信してイメージ印刷処理またはフォント登録処理を行う工程と、
を有することを特徴とする印刷装置の制御方法。
【請求項２】
さらに、
（ｅ）（ｄ）の工程後、前記通常コマンドとして用意されたリアルタイム処理許可コマンドを受信すると、前記リアルタイム処理を許可する設定を行う工程を有し、
（ｆ）（ｅ）の工程後、前記リアルタイム処理を実行可能とする
ことを特徴とする印刷装置の制御方法。
【請求項３】
（ｇ）前記リアルタイム処理禁止コマンドまたは前記リアルタイム処理許可コマンドは、１乃至複数のリアルタイム処理コマンドを指定するパラメータを備え、前記パラメータに基づき、特定のリアルタイム処理コマンドに対応するリアルタイム処理を禁止または許可する
ことを特徴とする請求項１または２記載の印刷装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、印刷装置、情報処理装置、これらの制御方法、および、情報記録媒体に関する。特に、画像用のバイナリデータやフォント登録バイナリデータなどのバイナリデータと、リアルタイム処理コマンドを意味するデータ列とを区別して処理する印刷装置、情報処理装置、これらの制御方法、および、これらを実現するプログラムを記録した情報記録媒体に関する。
【０００２】
【従来の技術】
印刷装置（プリンタ）は、紙などの印刷体に文字や図形を印刷するための装置として広く普及している。このようなプリンタは情報処理装置（ホストコンピュータ）に接続され、ホストコンピュータは、文字や図形を印刷するためのデータ列や、プリンタ自体を制御するためのデータ列をプリンタに送信する。
ホストコンピュータがプリンタに送信するデータは、ビット列として見ることもバイト列として見ることもできる。特に、プリンタにおいては、８ビット（１バイト）単位でコマンド体系を構築し、いずれのコマンドも、８の倍数のビット数、すなわち、あるバイト数のデータによって構築することが多い。又、コマンドは、上記バイト列であるコマンドシンボルと、必要に応じてこれに付随するバイト列のパラメータと、更に必要に応じて付加されるデータとからなる。
【０００３】
文字を印刷するためのデータ列としては、ＡＳＣＩＩコードと同じバイト値を使用する一方で、画像の印刷やユーザ定義フォントの定義では、バイト列により白黒を表す手法が使用されている。また、画像においては、画像の各点の色を各バイトに含まれる複数のビットによって表す手法もある。
【０００４】
プリンタのインターフェース部が１バイトもしくは数バイトのデータを受信すると、受信割り込みが発生し、受信割り込み処理が起動される。受信割り込み処理では、以下の処理を行う。
（１）受信したデータにリアルタイム処理コマンドが含まれるか否かを判別し、含まれている場合には、そのリアルタイム処理コマンドに対応する処理を直ちに実行する。（この技術的内容については、公開公報：特開平０９−１６４７４４を参照）
（２）受信したデータをＲＡＭ（Random Access Memory）で構成される受信バッファに記憶する。
【０００５】
これらの受信割り込み処理が所定の範囲で終了したら、通常処理に戻る。一般的には、キャリッジリターンを受信するか、受信バッファが満杯（フル）になるまで連続的に実行される。通常処理では、受信バッファに記憶されたデータ列を解釈して、ＲＡＭに用意されたプリントバッファに印刷イメージを展開する。この作業は、受信したデータの順に実行されるいわゆるＦＩＦＯ処理である。これに対して、上記リアルタイム処理コマンドは、ＦＩＦＯ処理のルールを無視して実行されるコマンドである。
【０００６】
印刷イメージは、印刷領域のどの部分を白くし、どの部分を黒くするか、すなわち、どのように印刷ヘッドを駆動するかを１と０のビット値で表現するのが一般的である。１行文の印刷イメージが展開できたら、プリントバッファの内容にしたがって印刷ヘッドを駆動し、紙などの印刷体に文字や図形を印刷する。
【０００７】
リアルタイム処理コマンドに相当するデータ列が受信バッファに入っていても、すでに受信割り込み処理においてこれに対応する処理の実施が行われているため、通常処理においては単に読み飛ばされる。
【０００８】
【発明が解決しようとする課題】
しかしながら、画像用のバイナリデータやフォント登録用のデータといったバイナリデータを印刷装置に送信するためのデータ列定義の中に偶然リアルタイム処理コマンドと同じデータ列が現われることがある。本来リアルタイム処理コマンドと解釈すべきでない場合であっても、上記のように受信割り込み処理において、リアルタイム処理コマンドに対応する処理が実行されてしまう、という可能性があった。
【０００９】
すなわち、ホストコンピュータが意図しないタイミングで意図しないリアルタイム処理コマンドの処理が実行されるため、例えば、ホストコンピュータ側で受信の準備がされていなかったりして、プリンタとの整合性がとれなくなったりしてしまう、という可能性があった。
【００１０】
このため、リアルタイム処理コマンドのデータ列と同じデータ列を含むようなバイナリデータのデータ列を、リアルタイム処理コマンドとは区別してホストコンピュータからプリンタに送信したいという要望が生じていた。
【００１１】
本発明は、以上のような問題を解決するためになされたもので、イメージデータやフォント登録データなどのバイナリデータと、リアルタイム処理コマンドを意味するデータ列とを区別して処理する印刷装置、情報処理装置、これらの制御方法、および、これらを実現するプログラムを記録した情報記録媒体を提供することを目的とする。
【００１２】
【課題を解決するための手段】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１３】
本発明の印刷装置は、情報処理装置に接続され、所定のコマンド及び、データ等からなるデータ列を受信し、印刷及び前記コマンドに対応する所定の処理を実行する印刷装置において、前記情報処理装置から送信された通常処理コマンド、当該通常処理コマンドに優先して実行されるリアルタイム処理コマンドの１つまたはそれらの組み合わせを含むデータ列を受信する受信処理部と、前記受信処理部により受信されたデータ列に含まれる通常処理コマンドに応じて、通常処理を実行する通常処理部と、前記受信処理部により受信されたデータ列にリアルタイム処理コマンドが含まれる場合は、そのリアルタイム処理コマンドに応じて、リアルタイム処理を実行するリアルタイム処理部と、当該リアルタイム処理部に、前記リアルタイム処理の実行を許可するかどうかを指示する指示部とを有することを特徴とする。
【００１４】
このように、リアルタイム処理コマンドの実行を許可するかどうかを指示する指示部が設けられているため、特定のコマンド（たとえば、イメージ印刷コマンドやフォント登録コマンド）のデータ列が送信される前に予めリアルタイム処理コマンドの実行を禁止するようにできる。故に、通常コマンドのパラメータ内に偶然含まれるデータ列によりリアルタイム処理が実行されることはなくなる。
【００１５】
プリンタ側でリアルタイム処理コマンドの実行を禁止するためには、情報処理装置からリアルタイム処理コマンドの実行の禁止するコマンドを送信できるようにして、印刷装置側では、前記受信処理部が前記リアルタイム処理禁止コマンドのデータ列を受信した時に、リアルタイム処理コマンドの実行を無効にすればよい。
【００１６】
また、再びプリンタ側でリアルタイム処理コマンドの実行を許可するためには、情報処理装置から、リアルタイム処理コマンドの実行の許可するコマンドを送信して、プリンタ側で、リアルタイム処理コマンドの実行を許可するようにすればよい。
【００１７】
また、コマンドによらず、カウンタ等を用いて、リアルタイム処理禁止コマンドのデータ列を受信してから経過した時間が、所定の時間を超える場合に、前記指示部を前記リアルタイム処理コマンドの実行を許可する状態に戻すようにしてもよい。
【００１８】
また、リアルタイム処理禁止コマンドのデータ列を受信してから前記受信処理部が受信したデータ列の長さが所定の長さを超える場合に、前記指示部を前記リアルタイム処理コマンドの実行を許可する状態に戻すようにしてもよい。また、前記所定の長さは、前記リアルタイム処理禁止コマンドによって指定されるようにしてもよい。
【００１９】
前記リアルタイム処理許可コマンド及びリアルタイム処理禁止コマンドは、複数のリアルタイム処理コマンドの各々について、許可もしくは禁止が指定可能なリアルタイム処理許可・禁止コマンドとして用意してもよい。この場合、当該リアルタイム処理許可・禁止コマンドに、１乃至複数のリアルタイム処理コマンドを指定するパラメータと、指定されたリアルタイム処理コマンドの各々の許可もしくは禁止を指定するパラメータとを備えるようにすればよい。これにより、リアルタイム処理コマンドごとに、その実行の許可あるいは禁止を設定することができる。
【００２０】
また、印刷装置に、リアルタイム処理禁止コマンドもしくはリアルタイム処理許可・禁止コマンドの受信を示すステータス情報を格納するステータス格納部と、前記情報処理装置からリアルタイム処理禁止コマンドを受信した後、ステータス要求コマンドを受信した時、少なくとも前記リアルタイム処理禁止コマンドの受信を示すステータス情報を送信する応答処理部とをを備えるようにしてもよい。
【００２１】
プリンタ側でリアルタイム処理コマンドの実行を禁止するためには、リアルタイム処理禁止コマンドを用いる替わりに、印刷装置に、前記受信処理部が、前記通常処理コマンドの内、バイナリデータを扱う所定のコマンド処理コマンドを受信した時、リアルタイム処理コマンドの実行を禁止するようにしてもよい。
【００２２】
この場合、印刷装置が、ビットマップ処理コマンドを受信すると、リアルタイムコマンドを禁止するように設定されるため、リアルタイム処理禁止コマンドをホスト側で用意する必要がないという利点がある。また、この場合、前記受信処理部が、前記バイナリデータ処理コマンドに付随するバイナリデータを示すデータ列の受信を終了した後、再び前記リアルタイム処理コマンドの実行を許可する状態に設定するようにすれば、リアルタイム処理許可コマンドも用意する必要はない。
【００２３】
本発明の印刷装置の制御方法、情報処理装置、その情報処理装置から印刷装置にデータ列を送信する方法も、上記と同様の事項により特定されるものであり、それぞれ同様の作用効果を奏するものである。また、本発明のコンピュータ読み取り可能な記録媒体も、コンピュータによって上記の各印刷装置、情報処理装置の制御方法を実現するためのコンピュータプログラムを格納するものであり、それぞれ上記と同様の作用効果を奏するものである。
【００２４】
【発明の実施の形態】
以下に本発明の一実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本願発明の範囲に含まれる。
【００２５】
（印刷装置の概要）
図１には、本発明の印刷装置（プリンタ）の実施例のブロック構成図を示す。プリンタ１０１は、インターフェース１０２を介して情報処理装置であるホストコンピュータ１２０に接続されていて、ＣＰＵ  １０３、ＲＡＭ  １０４、ＲＯＭ  １０５、不揮発メモリ１０６、印刷機構１０７を主な構成要素としている。
【００２６】
ホストコンピュータ１２０が送信したデータ列をインターフェース１０２が受信すると、ＣＰＵ（Central Processing Unit ；中央処理ユニット）１０３に対して受信割り込みを発行する。ＣＰＵ  １０３は、受信割り込みによって受信割り込み処理を起動し、受信割り込み処理では、受信したデータ列にリアルタイム処理コマンドが含まれていると判断すると、これに対応する前述のようなリアルタイム処理を実行する。さらに、受信割り込み処理では、ＲＡＭ  １０４に設けられた受信バッファ１１１に受信したデータ列を記憶する。受信割り込み処理が終了すると、ＣＰＵ  １０３の制御は通常処理に戻る。
【００２７】
通常処理では、ＣＰＵ  １０３は、ＲＡＭ  １０４の受信バッファ１１１に記憶されたデータ列を印刷コマンドやプリンタ設定コマンドとして解釈し、フォントを記憶するＲＯＭ（Read Only Memory）１０５からフォント形状を取得したり、イメージデータを生成したりして、ＲＡＭ  １０４内に設けられたプリントバッファ１１２に印刷イメージを展開する。
【００２８】
さらに、プリントバッファ１１２に展開された印刷イメージが所定の量、たとえば１行に達した場合などに、当該印刷イメージにしたがって印刷機構１０７を駆動して、紙などの印刷媒体に文字や図形を印刷する。
【００２９】
また、受信バッファ１１１に記憶されたデータ列がフォント定義コマンドである場合には、ＲＡＭ  １０４内に、当該フォントの定義を記憶する。不揮発メモリ１０６はＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）やフラッシュメモリであり、フォント定義コマンドにしたがって、不揮発性メモリ１０６の内容を更新することが可能である。またこの不揮発性メモリには、印刷装置の状態を記憶しておくステータス情報格納部となるステータス領域１１６が設置されていて、ホストコンピュータ１２０からのステータス要求コマンドに応答してこの領域の情報がホストコンピュータ１２０に送信される。
【００３０】
また、ＲＡＭ  １０４には受信割り込み処理で使用する現在のモードを記憶する領域１１３がある。これにより、リアルタイム処理コマンドの途中を受信しているのか、それともそれ以外のデータを受信しているのかがわかる。このほか、現在リアルタイム処理が禁止されているか否かを記憶したり各種のプリンタの状態（ステータス）を記憶する指示部の一種のフラグ領域１１４（指示部）がある。フラグ領域１１４は、電源が切断された場合、情報も消失するため、ＣＰＵ  １０３の処理の時に一時的に使用される領域である。
【００３１】
ここで、ＣＰＵ  １０３はインターフェース１０２、ＲＡＭ  １０４、後述する各処理が記述された制御プログラムが格納されたＲＯＭ  １０５等と共働して受信処理部、リアルタイム処理部、通常処理部及びフラグ設定処理部として機能し、印刷機構１０７は、ＣＰＵ  １０３等と共働して印刷処理部として、それぞれ機能する。また、ＲＯＭ  １０５はプログラムを記録した情報記録媒体として機能する。
【００３２】
なお、ここで、プリンタによっては、電源が切られても印刷装置の状態を記憶する必要がないものもあり、不揮発性メモリは必ずしも必要なものではない。即ち、不揮発性メモリを搭載していないプリンタについても本発明を適用することができる。
【００３３】
（印刷装置の受信割り込み処理の第１実施例）
図２は、本発明の印刷装置の受信割り込み処理の流れの実施例を示すフローチャートである。この受信割り込み処理は、ホストコンピュータ１２０が送信するデータ列をプリンタ１０１のインターフェース１０２が受信する際に起動される。なお、以下では、インターフェース１０２が１バイトのデータを受信するごとに受信割り込みが発生する実施形態について説明するが、受信割り込みが１以上の任意のバイト数のデータを受信するごとに起動される場合であっても同様の処理が可能であり、当該実施形態も本発明の範囲に含まれる。
【００３４】
なお、本実施例では、以下のバイナリデータ処理コマンドが通常コマンドとして用意されている。
【００３５】
・ESC * m nL nH d1...dk で定義される所定のデータ量のバイナリデータであるビットマップデータを送信する時に用いる。これによりプリンタは画像印刷を実行する。（尚、ｍは固定値、 nL、nHは格納データ数、 d1...dkはビットマップデータをそれぞれ指定する。）
・ESC & s n m a d1...dk: 所定のデータ量のフォント登録データを送信する時に用いる。（尚、ｓ、ａは各々縦方向、横方向のフォントのサイズ、ｎは開始文字コード、ｍは終了文字コード、 d1...dkは、フォント定義データをそれぞれ指定する。）FSg1 m a1 a2 a3 a4 nL nH d1...dk: ユーザ定義不揮発性メモリへのデータの書き込み時に用いる。（尚、各パラメータは、ｍ＝０に固定、a1−a4はデータの格納開始アドレス、nL、nHは格納データ数をそれぞれ指定する。）
なお、本実施例では、リアルタイム処理コマンドとして、以下のコマンドが用意されている。
・「DLE   EOT   NUL 」プリンタの状態をリアルタイムにホストコンピュータに送信する。
・「DLE   EOT   BEL 」プリンタのインクの状態をリアルタイムにホストコンピュータに送信する。
・「DLE   EOT   BS」ＭＩＣＲ（Magnetic Ink Character Recognition）機能に関するステータスの状態をリアルタイムにホストコンピュータに送信する。
・「DLE   ENQ 」プリンタに対するリアルタイム要求。
・「DLE   DC4   SOH 」指定パルスをリアルタイムに出力する。
・「DLE   DC4   STX 」プリンタの電源をオフにする。
・「DLE   DC4   BS」プリンタの受信バッファをクリアする。
・このほか、当該プリンタがレジスタとして利用されている場合には、銭箱を開けるなどの処理をリアルタイム処理コマンドにより指示できるようにすることがある。この場合は、新たなリアルタイム処理コマンドを用意すればよい。
【００３６】
更に、本実施例では、以下のリアルタイム処理禁止コマンドが「リアルタイム処理コマンド」として用意されている。
・「DLE   EOT   EOT 」これ以降は所定時間（たとえば１秒）リアルタイム処理コマンドの処理を禁止する。
【００３７】
上述のように、本処理は、ホストコンピュータ１２０が送信するデータをプリンタ１０１のインターフェース１０２が受信する際に起動される。
起動されたら、まず、ＣＰＵ  １０３は、インターフェース１０２が受信した１バイトのデータをＲＡＭ  １０４内の受信バッファ１１１に記憶する（ステップＳ２０１）。受信バッファ１１１は、リングバッファとして構成するのが一般的である。
【００３８】
次に、ＲＡＭ  １０４のフラグ領域１１４を調べ、現在リアルタイム処理が禁止されているか否かを判別する（ステップＳ２０２）。
【００３９】
禁止されていない場合（ステップＳ２０２；Ｎｏ）、モード領域１１３に記憶された現在の受信割り込みモードを調べる（ステップＳ２０３）。受信割り込みモードの値によって、現在リアルタイム処理コマンドの途中を受信しているのか否かが示される。
【００４０】
さらに、ステップＳ２０１において受信されたデータの値に応じてＲＡＭ  １０４のモード領域１１３に記憶される受信割り込みモードの値を図３に示す状態遷移図にしたがって更新するとともに、必要があれば処理を実施し（ステップＳ２０４）、本割り込み処理を終了する。
【００４１】
図３は、受信割り込みにおける状態遷移を示す説明図である。この状態遷移図は、前述のリアルタイム処理コマンドのデータ列の体系から決まるものである。
【００４２】
モードＡは、現在はリアルタイム処理コマンド以外のコマンドを解釈していることを意味するモードである。モードＡにいる場合に、ステップＳ２０１において受信したデータの値がリアルタイム処理コマンドの１バイト目を示す値（DLE） である場合には、モードＢに移行する。
【００４３】
モードＢは、現在はリアルタイム処理コマンドの１バイト目（DLE ）を受信していることを意味するモードである。モードＢにいるときに、ステップＳ２０１において受信したデータの値に応じて、以下のように遷移する。
・EOT である場合は、モードＣに移行する。
・ENQ である場合は、プリンタのリアルタイム要求に対応する処理を実行して、モードＡに移行する。
・DC4 である場合は、モードＤに移行する。
・これ以外である場合は、受信しているデータ列はリアルタイム処理コマンドのデータ列ではないことになるので、モードＡに移行する。
モードＣは、現在はDLE   EOT で始まるリアルタイム処理コマンドを受信中であることを意味するモードである。モードＣにいるときに、ステップＳ２０１において受信したデータの値に応じて、以下のように遷移する。
・NUL である場合は、プリンタ１０１の状態をホストコンピュータ１２０にリアルタイム送信し、モードＡに移行する。
・BEL である場合は、プリンタ１０１の印刷機構１０７に含まれるインクの状態をホストコンピュータ１２０にリアルタイム送信し、モードＡに移行する。
・BSである場合は、プリンタ１０１のＭＩＣＲに関係するステータスの状態をホストコンピュータ１２０にリアルタイム送信し、モードＡに移行する。
・EOT である場合は、ＲＡＭ  １０４のフラグ領域１１４に「リアルタイム処理禁止」を設定する。さらに、『フラグ領域１１４「リアルタイム処理許可」に設定する処理』が現在から所定時間（たとえば１秒）後にタイマ割り込みにより実行されるように、タイマ割り込み処理の設定を行う。その後で、モードＡに移行する。
・これ以外である場合は、受信しているデータ列はリアルタイム処理コマンドのデータ列ではないことになるので、モードＡに移行する。
【００４４】
モードＤは、現在はDLE   DC4 で始まるリアルタイム処理コマンドを受信中であることを意味するモードである。モードＤにいるときに、ステップＳ２０１において受信したデータの値に応じて、以下のように遷移する。
・SOH である場合は、指定パルスのリアルタイム出力を実行し、モードＡに移行する。
・STX である場合は、プリンタの電源をオフにする。
・BSである場合は、ＲＡＭ  １０４に配置された受信バッファ１１１とプリントバッファ１１２をクリアしてモードＡに移行する。
・これ以外である場合は、受信しているデータ列はリアルタイム処理コマンドのデータ列ではないことになるので、モードＡに移行する。
一方、フラグ領域１１４を調べた結果、現在リアルタイム処理が禁止されている場合（ステップＳ２０２；Ｙｅｓ）、受信割り込み処理を終了する。
【００４５】
このように、受信割り込みごとに、リアルタイム処理が禁止されているか否かをチェックすることになるが、これに必要な時間は数マイクロ秒のオーダーである。このように比較的簡単な状態遷移の処理なので、受信割り込み処理に必要な時間を短時間ですませることができる。
【００４６】
（印刷装置の通常処理の第１実施例）
通常処理は、プリンタ１０１が受信したデータを解釈して印刷する処理である。図４は、プリンタ１０１の通常処理の制御の流れを示すフローチャートである。通常処理を行っている途中であっても、図２、図３で示した受信割り込み処理が割り込みによって起動されることがありうる。
【００４７】
なお、ＣＰＵ  １０３は受信バッファ１１１に処理していないデータが残っている間は、当該データを取得し、残っていない場合は、待機して前述の受信割り込み処理により受信バッファ１１１にデータが記憶されるのを待つ。このようなコルーチン的な処理が実行されるが、以下の説明では、簡単のため、上記の処理を１回行って１バイトのデータを受信バッファ１１１から取得する場合と、複数回行って複数バイトのデータを受信バッファ１１１から取得する場合とを合わせて、「受信バッファからデータを取得」と称することとする。
【００４８】
また、本実施例では、リアルタイム処理を許可するコマンドを通常処理コマンドとして用意している。
【００４９】
まず、ＣＰＵ  １０３は、受信バッファ１１１からデータを取得し（ステップＳ４０１）、そのデータの種類を調べる（ステップＳ４０２）。
【００５０】
このデータがリアルタイム処理許可コマンドである場合（ステップＳ４０２；ＲＴＣ許可）、ＲＡＭ  １０４内のフラグ領域１１４に、「リアルタイム処理許可」を設定し（ステップＳ４０３）、ステップＳ４０１に戻る。
【００５１】
一方、このデータがこれ以外の通常処理コマンドである場合（ステップＳ４０２；通常）、当該コマンドに対応付けられた処理を実行し（ステップＳ４０４）、処理の継続があれば（ステップ４０５；Ｙｅｓ）、ステップＳ４０１に戻る。この処理には、文字や図形の印刷、画像の印刷、フォント登録などの処理が含まれる。
【００５２】
また、このデータがリアルタイム処理コマンドである場合（ステップＳ４０２；ＲＴＣ）、処理の継続があれば（ステップ４０５；Ｙｅｓ）、ステップＳ４０１に戻る。受信割り込み処理において、リアルタイム処理コマンドに対応付けられた処理がすでに実行されているからである。
【００５３】
このように受信割り込み処理と通常処理とを構成しておくと、リアルタイム処理コマンドのデータ列と同じデータ列をパラメータとして含む通常コマンド（たとえば、イメージ印刷コマンドやフォント登録コマンド）のデータ列を情報処理装置がプリンタに対して送信したい場合、まずリアルタイム処理禁止コマンドを送信し、ついで当該通常コマンドを送信し、さらにリアルタイム処理許可コマンドを送信すれば、通常コマンドのパラメータ内に偶然含まれるデータ列によりリアルタイム処理が実行されることはなくなる。
【００５４】
（情報処理装置の第１実施例）
図５には、本発明の情報処理装置（ホストコンピュータ）の実施例のブロック構成図を示す。
【００５５】
本発明の情報処理装置１２０はＣＰＵ  ５０１によって制御される。情報処理装置１２０に電源が投入されると、ＣＰＵ  ５０１はＲＯＭ  ５０２内の所定の場所に記憶されたＩＰＬ（Initial Program Loader）を実行し、処理を開始し、さらに、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ（Compact Disk ROM）などの不揮発性記憶装置５０３に記憶されたプログラムを実行することができる。プログラムの実行の際には、ＲＡＭ  ５０４を一時的な記憶装置として用いる。
【００５６】
文字や図形を印刷するアプリケーションプログラムを実行する際には、印刷コマンドのデータ列をインターフェース５０５を介してプリンタに送信する。
【００５７】
さらに、情報処理装置１２０は、図示しないキーボードやマウスなどの入力装置、図示しないディスプレイなどの表示装置を備えることができる。
【００５８】
ここで、ＣＰＵ  ５０１はインターフェース５０５、ＲＡＭ  ５０４、後述する各処理が記述された制御プログラムが格納されたＲＯＭ５０２等と共働して、通常処理コマンド、リアルタイム処理コマンド、リアルタイム処理禁止、許可コマンドを送信する送信部として機能する。
【００５９】
また、不揮発性記憶装置５０３は、プログラムを記録した情報記録媒体として機能する。又、図示しない、ＣＤ−ＲＯＭドライブ、フロッピードライブなどの装置を有し、情報を記録した記録媒体から所定のプログラムをインストールできる様に構成されている。
【００６０】
図６は、画像印刷やフォント登録などの処理において、通常コマンドのデータ列をプリンタに送る送信処理の流れを示すフローチャートである。この送信処理は、アプリケーションプログラムがオペレーティングシステムに対して印刷要求を送ることなどにより起動される。また、この送信処理は一般的にプリンタドライバーと呼ばれるプログラムによって実行され、このプログラムは、フロッピーディスクなどの記憶媒体から、ホストコンピュータにインストールされて用いられる。
【００６１】
まず、ＣＰＵ  ５０１は、送信したい通常コマンドのデータ列がリアルタイム処理コマンドのデータ列と同じデータ列を含むか否かを調べる（ステップＳ６０１）。
含まない場合（ステップＳ６０１；Ｎｏ）、当該通常コマンドのデータ列を送信し（ステップＳ６０２）、本処理を終了する。
含む場合（ステップＳ６０１；Ｙｅｓ）、リアルタイム処理禁止コマンドを送信し（ステップＳ６０３）、ついで当該通常コマンドのデータ列を送信し（ステップＳ６０４）、さらにリアルタイム処理許可コマンドを送信して（ステップＳ６０５）、本処理を終了する。
【００６２】
なお、この処理に加えて、以下のような処理を行うことができる。たとえば、画像を印刷する場合、その通常コマンドが所定の時間（たとえば１秒）以内にプリンタで処理できる量か否かを判別する。処理できる量の場合は、ステップＳ６０３〜ステップＳ６０５の処理と同じ処理を行う。
【００６３】
所定時間内で処理できない量の場合は、当該通常コマンドを解釈し、複数の通常コマンドに分割する。さらに、それぞれの通常コマンドについてまず、ステップＳ６０３〜ステップＳ６０５の処理と同じ処理を行って画像の一部を印刷し、さらに、リアルタイム処理が必要かどうかをチェックし、必要であれば当該リアルタイム処理コマンドを送信する、という処理を繰り返す。
【００６４】
このような処理を行うことにより、リアルタイム処理が必要な場合の待ち時間が最大でも上記所定の時間（１秒）で済むことになる。
【００６５】
なお、その通常コマンドが所定の時間以内にプリンタで処理できる量か否かを判別するために、単純に通常コマンドのデータ量を、予め定めた値と比較して判別しても良い。
【００６６】
（印刷装置の受信割り込み処理の第２実施例）
図７は、印刷装置の受信割り込み処理の第２実施例の流れを示すフローチャートである。本実施例では、ＲＡＭ  １０４内にカウント領域を設ける。また、リアルタイム禁止コマンドは以下のコマンドシンボル３バイト＋パラメータ２バイトの５バイトで構成される。
・「DLE   EOT   EOT   ｎ  ｍ」
これは、「以降に続く（ｎ*２５６＋ｍ）バイトについてリアルタイム処理を禁止する」という意味を持つ。
【００６７】
本実施例の受信割り込み処理が起動されたら、まず、ＣＰＵ  １０３は、インターフェース１０２が受信した１バイトのデータをＲＡＭ  １０４内の受信バッファ１１１に記憶する（ステップＳ７０１）。受信バッファ１１１は、リングバッファとして構成するのが一般的である。
【００６８】
次に、ＲＡＭ  １０４のフラグ領域１１４を調べ、現在リアルタイム処理が禁止されているか否かを判別する（ステップＳ７０２）。
【００６９】
禁止されていない場合（ステップＳ７０２；Ｎｏ）、モード領域１１３に記憶された現在の受信割り込みモードを調べる（ステップＳ７０３）。受信割り込みモードの値によって、現在リアルタイム処理コマンドの途中を受信しているのか否かが示される。
【００７０】
さらに、ステップＳ７０１において受信されたデータの値に応じてＲＡＭ  １０４のモード領域１１３に記憶される受信割り込みモードの値を図８に示す状態遷移図にしたがって更新するとともに、必要があれば処理を実施し（ステップＳ７０４）、本割り込み処理を終了する。
【００７１】
図８に示す状態遷移図は、図３に示す状態遷移図と大部分は同様であるが、モードＣにおいてEOT を受信した場合の処理が異なる。
すなわち、モードＣにおいてEOT を受信すると、モードＸに移行する。
モードＸにおいて、バイト値n を受信すると、値n*256 をＲＡＭ  １０４内のカウント領域１１５に代入し、モードＹに移行する。
【００７２】
モードＹにおいて、バイト値m を受信すると、値m をＲＡＭ  １０４内のカウント領域１１５に加算し、フラグ領域１１４に「リアルタイム処理禁止」を設定し、モードＡに移行する。
【００７３】
一方、ステップＳ７０２において、リアルタイム処理が禁止されていると判別された場合（ステップＳ７０２；Ｙｅｓ）、カウント領域１１５に記憶された値を１減らし（ステップＳ７０５）、カウント領域１１５に記憶された値が０より大きいか否かを調べ（ステップＳ７０６）、０より大きい場合（ステップＳ７０６；Ｙｅｓ）は、本割り込み処理を終了する。０以下の場合（ステップＳ７０６；Ｎｏ）、フラグ領域１１４に「リアルタイム処理許可」を設定し（ステップＳ７０７）、本割り込み処理を終了する。
【００７４】
このように、本実施例では、リアルタイム処理禁止コマンドにおいて、「これ以降○○バイトについてはリアルタイム処理を禁止する」というパラメータ設定ができるため、リアルタイム処理許可コマンドを用意する必要はない。一方、情報処理装置においては、リアルタイム処理コマンドのデータ列と同じデータ列をパラメータとして含む通常コマンドのデータ列送信したい場合、まず当該通常コマンドの長さをパラメータとして含むリアルタイム処理禁止コマンドを送信し、ついで当該通常コマンドを送信すればよい。
【００７５】
上記、プリンタのステータスを記憶したフラグ領域は、一般的に電源が切断されても記憶状態に保つ必要のあるものはフラッシュメモリ等に設けられ、そうでないものはＲＡＭ内に設置される。又、リアルタイム処理コマンドを禁止するかどうかのフラグは、電源が切断されても記憶しておく必要はない。
【００７６】
通常使用の時、イメージデータの印刷がほとんど必要が無く、フォント登録作業の時にのみこのリアルタイム処理コマンドを禁止したいばあいは、ディップスイッチなどのハードウエア要素で代用することもできる。この場合、ディップスイッチが上記指示部となる。
【００７７】
（印刷装置の受信割り込み処理の第３実施例）
複数のリアルタイム処理コマンドの内、実際にはバイナリデータを送信中に実行されても問題が無い物も含まれている。又、バイナリデータの送信時に、そのバイナリデータが、ＰＯＳを設置している店舗のロゴなどある場合、あらかじめリアルタイム処理コマンドと紛らわしいデータは作成していないことがあり、このような場合アプリケーションからステータス要求があった場合などは、このためのリアルタイム処理コマンド送信しても問題がない。この場合はリアルタイム処理コマンドのそれぞれに対応して、禁止、あるいは許可を設定することができるように以下のコマンドを通常コマンドで定義する。
・ＧＳ（Ｄ  ｍｎ  （”GS(D”はコマンドシンボルであり、ｍｎはパラメータで、ｍがコマンドの指定、ｎが許可あるいは禁止の指定を表し、どのコマンド禁止するか、あるいは許可するかを指定できる）
上記コマンドを受信した場合、フラグ領域１１４の指示部に、それぞれのコマンド毎に許可、あるいは禁止が設定され記憶される。例えば、リアルタイム処理コマンドの内、禁止・許可処理を設定したい物が、８個以内であれば、設定するかどうかを、パラメータｍで指定する。１０００、００１１であれば、１番目と、７，８番目に割り当てられたコマンドが、許可・禁止の対象となる。さらに、パラメータｎで、１０００、００１０と指定された場合、１が許可、０が禁止であれば、１番目と７番目に割り当てられたコマンドが許可に、８番目が禁止に設定されるといった様に設定できる。
【００７８】
図９は、本発明の印刷装置の受信割り込み処理の流れの第３の実施例を示すフローチャートである。本実施例では、上記したように、リアルタイム処理の禁止または許可は、コマンド設定が可能な通常コマンドとして用意している。図９の受信割り込み処理の機能は、データを受信し、これを受信バッファ１１１に格納し、同時に受信しながらリアルタイム処理コマンドが含まれていないかどうか解析するもので、ＣＰＵ  １０３を主要素とする受信処理部が実行する。
【００７９】
本実施例の受信割り込み処理が起動されたら、まず、ＣＰＵ  １０３は、インターフェース１０２が受信した１バイトのデータをＲＡＭ  １０４内の受信バッファ１１１に記憶する（ステップＳ９０１）。受信バッファ１１１は、リングバッファとして構成するのが一般的である。
【００８０】
次に、モード領域１１３に記憶された現在の受信割り込みモードを調べる（ステップＳ９０２）。受信割り込みモードの値によって、現在リアルタイム処理コマンドの途中を受信しているのか否かが示される。
【００８１】
さらに、ステップＳ９０１において受信されたデータの値に応じてＲＡＭ １０４のモード領域１１３に記憶される受信割り込みモードの値を図３に示す状態遷移図にしたがって更新する（ステップ９０３）。モードの更新にあたり、コマンド処理を行う必要があるか判断する（ステップ９０４）。コマンド処理を行う必要があれば（ステップ９０４：Ｙｅｓ）、ＲＡＭ  １０４のフラグ領域１１４を調べ、現在、実行しようとしたコマンドのリアルタイム処理が禁止されているか否かを判別し、（ステップＳ９０５） 禁止されていない場合（ステップＳ９０５；Ｎｏ）は、リアルタイム処理コマンドに対応する処理を実施し（ステップＳ９０６）、禁止されている場合（ステップＳ９０５；Ｙｅｓ）はコマンド処理を実施せず本割り込み処理を終了する。
このように、リアルタイム処理コマンドのデータ列を受信するごとに、リアルタイム処理が禁止されているか否かをチェックすることになるが、これに必要な時間は数マイクロ秒のオーダーである。このように比較的簡単な状態遷移の処理なので、受信割り込み処理に必要な時間を短時間ですませることができる。
上記処理は、受信割り込みにおける状態遷移を示す説明図である図３に沿って同様に実行されるが、以下の点で細部が異なる。
【００８２】
１、モードＣにいるときに EOTを受信すると、モードＡに移行するという処理を行なわない。
【００８３】
２、本実施例３ではそれぞれのコマンド個別にリアルタイム処理を禁止あるいは許可でき、禁止されているコマンドは、コマンドの処理を実行しないでモードを遷移する。
【００８４】
（印刷装置の通常処理の第２実施例）
通常処理とは、プリンタ１０１が受信したデータを入力した順に読み出し実行するＦＩＦＯ処理である。図１０は、プリンタ１０１の通常処理の第２の実施例の制御の流れを示すフローチャートである。通常処理を行っている途中であっても、前述の受信割り込み処理が割り込みによって起動されることがありうる。
【００８５】
なお、ＣＰＵ  １０３は受信バッファ１１１に処理していないデータが残っている間は、当該データを取得し、残っていない場合は、待機して前述の受信割り込み処理により受信バッファ１１１にデータが記憶されるのを待つ。このようなコルーチン的な処理が実行されるが、以下の説明では、簡単のため、上記の処理を１回行って１バイトのデータを受信バッファ１１１から取得する場合と、複数回行って複数バイトのデータを受信バッファ１１１から取得する場合とを合わせて、「受信バッファからデータを取得」と称することとする。
【００８６】
また、本実施例では、リアルタイム処理を禁止するコマンドと許可するコマンドをリアルタイムコマンド許可・禁止コマンドという１つのコマンドとし、通常処理コマンドとして用意している。
【００８７】
まず、ＣＰＵ  １０３は、受信バッファ１１１からデータを取得し（ステップＳ１００１）、そのデータの種類を調べる（ステップＳ１００２）。
【００８８】
このデータがリアルタイム処理許可・禁止コマンドである場合（ステップＳ１００２；ＲＴＣ許可）、ＲＡＭ  １０４内のフラグ領域１１４に、リアルタイム処理コマンドごとに「リアルタイム処理許可」または「リアルタイム処理禁止」を設定し（ステップＳ１００３）、処理を継続するかチェック（ステップＳ１００５）し、継続なら（ステップＳ１００５：Ｙｅｓ）、ステップＳ１００１に戻る。
【００８９】
一方、このデータがこれ以外の通常処理コマンドである場合（ステップＳ１００２；通常）、当該コマンドに対応付けられた処理を実行し（ステップＳ１００４）、ステップＳ１００５を経て、ステップＳ１００１に戻る。この処理には、文字や図形の印刷、画像の印刷、フォント登録などの処理が含まれる。
【００９０】
また、このデータがリアルタイム処理コマンドである場合（ステップＳ１００２；ＲＴＣ）、ステップＳ１００１に戻る。受信割り込み処理において、リアルタイム処理コマンドに対応付けられた処理がすでに実行されているからである。
【００９１】
このように受信割り込み処理と通常処理とを構成しておくと、リアルタイム処理コマンドのデータ列と同じデータ列をパラメータとして含む通常コマンド（たとえば、イメージ印刷コマンドやフォント登録コマンド）のデータ列を情報処理装置がプリンタに対して送信したい場合、まずリアルタイム処理禁止コマンドを送信し、ついで当該通常コマンドを送信し、さらにリアルタイム処理許可コマンドを送信すれば、通常コマンドのパラメータ内に偶然含まれるデータ列によりリアルタイム処理が実行されることはなくなる。
【００９２】
（情報処理装置の第２実施例）
図１１は、図５で示した本発明の情報処理装置（ホストコンピュータ）の実施例のブロック図に基づき、画像印刷やフォント登録などの処理において、通常コマンドのデータ列をプリンタに送る送信処理の流れを示すフローチャートである。この送信処理は、アプリケーションプログラムがオペレーティングシステムに対して印刷要求を送ることなどにより起動される。また、この送信処理は一般的にプリンタドライバーと呼ばれるプログラムによって実行され、このプログラムは、フロッピーディスクなどの記憶媒体から、ホストコンピュータにインストールされて用いられる。
まず、ＣＰＵ  ５０１は、送信したい通常コマンドのデータ列がリアルタイム処理コマンドのデータ列と同じデータ列を含む可能性があるコマンドか否かを調べる（ステップＳ１１０１）。例えば、この送信しようとしているコマンドが、バイナリデータを送信するバイナリデータ処理コマンドであるかどうかである。
【００９３】
バイナリデータ処理コマンドでない場合（ステップＳ１１０１；Ｎｏ）、当該通常コマンドのデータ列を送信し（ステップＳ１１０２）、本処理を終了する。
含む場合（ステップＳ１１０１；Ｙｅｓ）、リアルタイム処理許可・禁止コマンドをコマンドを禁止する設定で送信し（ステップＳ１１０３）、さらに印刷装置１０１が搭載している通常コマンドのうちから、プリンタ情報を送信するステータスデータ送信コマンドを送信する（ステップＳ１１０４）。ＣＰＵ  ５０１は、印字装置１０１からステータスが送信されてくるのを待ち（ステップＳ１１０５）、ステータスを受信すると、ついで当該通常コマンドのデータ列を送信し（ステップＳ１１０６）、さらにリアルタイム処理許可コマンドを送信して（ステップＳ１１０７）、本処理を終了する。
上記のステップＳ１１０４でステータス要求コマンドを実行し、ステップＳ１１０５で受信を待つ処理は、以下のような理由による。
【００９４】
印刷装置１０１がコマンドを受信してから、リアルタイム処理許可・禁止コマンドが実行されるまでに時間差が発生する可能性がある。例えば、リアルタイム処理を禁止するコマンドを送信して、連続して、偶然にリアルタイム処理コマンドと同じデータ列が送信されると、禁止されるべきコマンドが実行されてしまう。そこで、印刷装置１０１に装置自体のステータスをメモリに格納しておき、ホストコンピュータの要求に基づいてこのステータスを送信する機能が搭載されているので、この機能を用いることによりリアルタイム処理禁止あるいは許可の設定が実行されたかどうかを検証することができる。
【００９５】
印刷装置１０１側では、リアルタイム処理コマンドの禁止・あるいは許可を受信すると、フラッシュＲＯＭ  １０７のステータス領域１１７のフラグを更新する。ステップＳ１１０４で、ホストコンピュータの要求に応じてこのフラグを含むステータスを送信することにより、ホストコンピュータに当該処理が実行されたことが通知される。このようにすると、リアルタイム処理許可・禁止コマンドが確実に実行されたことを確認することができる。このリアルタイム処理禁止・許可ステータスを送信するためのコマンドは専用コマンドであっても良いし、ステータスデータの内容に依存しないので、他のステータスデータと一緒に送信する汎用コマンドでも良い。
【００９６】
また、本実施例では、リアルタイム処理コマンドごとに処理の禁止または許可を設定できるようにしているので、プリンタの電源をオフするコマンドといった、通常動作中は実行しないコマンドは、常時禁止状態としておき、実際に電源をオフする直前に許可することにより、ステップＳ１２０１で行っているような、送信したい通常コマンドのデータ列がリアルタイム処理コマンドのデータ列と同じデータ列を含むか否かを調べる処理を簡略化することができる。
【００９７】
（印刷装置の受信割り込み処理の第４実施例）
図１２は、本発明の印刷装置の受信割り込み処理の流れの他の実施例を示すフローチャートである。本例の受信割り込み処理は、図２に示した実施例と同様に、ホストコンピュータ１２０が送信するデータ列をプリンタ１０１のインターフェース１０２（図１に示す）が受信する際に起動されるものであり、以下重複する部分については説明を省略する。
【００９８】
なお、本実施例では、図２に示した実施例と同様に、ESC * （ビットマップデータを印刷するコマンド）、ESC &  （フォント登録データを送信するコマンド）、FSg1（不揮発性メモリへのデータの書き込みコマンド）が容易されている。本実施例のプリンタでは、上記コマンドを受信した場合、実質的にリアルタイム処理禁止コマンドとして処理することになる。
【００９９】
また、以下に説明するリアルタイム処理コマンド、ビットマップ処理コマンドを解析する処理では、受信データ１バイトを受信バッファに格納するとともに、その格納された１バイト分のデータに加え、先にあった受信割り込み処理で受信バッファに記憶されている２バイトあるいは数バイトを合わせ、実質的にコマンドの解析に必要なバイト分のデータ列を解析する。
【０１００】
受信起動されると、まず、ＣＰＵ  １０３は、インターフェース１０２が受信した１バイトのデータをＲＡＭ  １０４内の受信バッファ１１１に記憶する（ステップＳ２０１０）。受信バッファ１１１は、リングバッファとして構成するのが一般的である。
【０１０１】
次に、ＲＡＭ  １０４のフラグ領域１１４を調べ、現在リアルタイム処理が禁止されているか否かを判別する（ステップＳ２０２０）。それまでにビットマップデータ処理コマンドを受信していない場合、フラグ領域のリアルタイムコマンドの処理を許可するかどうかを示す指示部は、イニシャル状態となっていて、リアルタイム処理コマンドでは、所定の処理が実行されることになる。
【０１０２】
禁止されていない場合（ステップＳ２０２０；Ｎｏ）、リアルタイム処理コマンドかどうか解析される（ステップＳ２０３０）。ここで、リアルタイム処理コマンドであると判定された場合は、所定のリアルタイム処理が実行され（ステップＳ２１００）、本割り込み処理を終了する。
【０１０３】
禁止されている場合はこの処理をとばし、また、ステップＳ２０３０でリアルタイム処理コマンドでないと判定された場合は、ビットマップ処理コマンドであるか解析される（ステップＳ２０４０）。ここで、ビットマップ処理コマンドを受信したと判定された場合（ステップＳ２０４０でＹｅｓ）、 ＲＡＭ１０４内のフラグ領域１１４に、「リアルタイム処理禁止」を設定する（ステップＳ２１２０）。
【０１０４】
次に、ビットマップ処理の終了かどうかを解析し（ステップＳ２０５０）、終了であればフラグ領域１１４をリセットし、リアルタイム処理の許可を指示する設定をする（ステップＳ２１１０）。この解析は、ビットマップデータの送信時には、データの長さを示すパラメータが付属しているのでこのパラメータに従ってデータ長をチェックすることによって実行される。
【０１０５】
以上の処理によって、リアルタイムコマンドを受け付けてこれを処理する場合と、このコマンドを禁止してビットマップデータの処理での誤作動を防止する場合とに、矛盾無く対応することができる。
【０１０６】
図１３は、受信割り込みにおける状態遷移を示す説明図である。この状態遷移図は、前述のリアルタイム処理コマンド、ビットマップ処理コマンドのデータ列の体系から決まるものであり、説明図では、１バイト毎の状態遷移を示している。
【０１０７】
モードＡは、現在はリアルタイム処理コマンド及びビットマップ処理コマンド以外のコマンドを解釈していることを意味するモードである。なお、モードＢ、Ｃ、Ｄのモードの内容、またこれらモードの間Ａ−Ｂ、Ｂ−Ｃ、Ｃ−Ａ、Ｂ−Ｄ、Ｄ−Ａを遷移する条件については、図３に示した実施例と同様であるので、説明を省略する。
【０１０８】
モードｅ１は、現在はビットマップ処理コマンドESC *、 ESC &（ビットマップデータを印刷するコマンド）の１バイト目（ESC ）を受信していることを意味するモードである。モードＡにいる場合に、受信したデータの値がESC である場合には、モードｅ１に移行する。そして、モードｅ１にいるときに、次に受信したデータの値が、*、&である場合は、後述するモードＥに移行し、それら以外である場合は、モードＡに移行する。
【０１０９】
モードｅ２は、現在はビットマップ処理コマンドFSg1 m （ビットマップデータを不揮発性メモリに書き込むコマンド）の１バイト目（FS ）を受信していることを意味するモードである。モードＡにいる場合に、受信したデータの値がFSである場合には、モードｅ１に移行する。
【０１１０】
モードｅ３は、ビットマップ処理コマンドFSg1 mの２バイト目（g ）を受信していることを意味するモードである。モードｅ２にいる場合に、受信したデータの値がg である場合には、モードｅ３に移行し、それら以外である場合は、モードＡに移行する。そして、モードｅ３にいるときに、次に受信したデータの値が1  である場合は、後述するモードＥに移行し、それ以外である場合は、モードＡに移行する。
【０１１１】
モードＥは、現在はビットマップ処理コマンドESC *、 ESC &、 FSg1 mを処理中であることを意味する。このモードでは、 ＲＡＭ  １０４内のフラグ領域１１４に、「リアルタイム処理禁止」が設定される。
【０１１２】
また、ビットマップ処理コマンドESC *、 ESC &、 FSg1 mでは、パラメータで以降送信されるビットマップデータのデータ長が定義されているため、モードｅ１、ｅ３からモードＥに移行した後、引き続き ESC *、 ESC &、 FSg1 mで送信されるビットマップのデータ長を示すデータ列を受信することになる。モードＥでは、受信したその値をＲＡＭ  １０４内のカウント領域１１５にセットし、以降１バイト受信する毎に、その値を減算する。
【０１１３】
そのカウント値が０に達した時、つまりバイナリーデータの受信が終了したら、フラグ領域１１４に「リアルタイム処理許可」を設定し、モードＥから、モードＡに移行する。
このように、本実施例では、印刷装置が、ビットマップ処理コマンドを受信すると、リアルタイムコマンドを禁止するように設定され、ビットマップ処理コマンドの受信が終了すると、再びリアルコマンド処理を許可するように設定されるため、リアルタイム処理禁止、許可コマンドを用意する必要はない。
【０１１４】
一方、情報処理装置においては、ビットマップ処理コマンドのデータ列に、リアルタイム処理コマンドのデータ列と同じデータ列が含まれていても、これを意識して前もってリアルタイム処理禁止コマンドを送信する必要がなく、ビットマップデータをより簡便に印刷装置に送信することが可能である。
【０１１５】
（印刷装置の通常処理の第３実施例）
本実施例の通常処理は、プリンタ１０１が受信して、受信バッファに格納されたデータをＦＩＦＯ形式で解釈して印刷する処理である。図１４は、プリンタ１０１の通常処理の制御の流れを示すフローチャートである。通常処理を行っている途中であっても、図１２、１３を用いて示した受信割り込み処理が割り込みによって起動されることがありうる。
【０１１６】
なお、ＣＰＵ  １０３は受信バッファ１１１に処理していないデータが残っている間は、当該データを取得し、残っていない場合は、待機して前述の受信割り込み処理により受信バッファ１１１にデータが記憶されるのを待つ。このようなコルーチン的な処理が実行されるが、以下の説明では、簡単のため、上記の処理を１回行って１バイトのデータを受信バッファ１１１から取得する場合と、複数回行って複数バイトのデータを受信バッファ１１１から取得する場合とを合わせて、「受信バッファからデータを取得」と称することとする。
【０１１７】
まず、ＣＰＵ  １０３は、受信バッファ１１１からデータを取得し（ステップＳ４０１０）、そのデータの種類を調べる（ステップＳ４０２０）。
【０１１８】
このデータがビットマップデータの処理コマンド以外の通常処理コマンドである場合（ステップＳ４０２０；その他）、リアルタイムコマンドのデータ列は既に実行されているため、取り除き（ステップＳ４２００）、当該コマンドに対応付けられた処理を実行し（ステップＳ４２１０）、継続データがあれば（ステップＳ４１３０でＹｅｓ）、ステップＳ４０１０に戻る。
【０１１９】
通常処理には、文字や図形の印刷、画像の印刷、フォント登録、あるいは不揮発メモリへの所定のデータの格納などの処理が含まれる。
【０１２０】
ステップ４０２０で画像印刷と判断されると、イメージの大きさのパラメータの取得（ステップＳ４０３０）後、これに引き続くバイナリデータ部を取得し（ステップ４０４０）、プリントバッファに展開し（Ｓ４０５０）、印刷がキャンセルされていないかを確認し（ステップＳ４０６０）、Ｙｅｓなら印刷機構を駆動し印刷を実行し（ステップＳ４０７０）、印刷終了後プリントバッファをクリアする。
【０１２１】
又、フォント登録コマンドの場合は、フォント情報を取得し（ステップ４１００）、これに引き続くバイナリデータを取得し（Ｓ４１１０）、これを所定のメモリエリアに登録する（ステップＳ４１２０）。それぞれの処理が、終了すると、更にデータが無いか確認し（ステップＳ４１３０）、なければ終了へ、あればステップＳ４０１０に戻って処理を継続する。
【０１２２】
このように受信割り込み処理と通常処理とを構成しておくと、リアルタイム処理コマンドのデータ列と同じデータ列をパラメータとして含む可能性のある通常コマンド（たとえば、画像印刷コマンドやフォント登録コマンド）のデータ列を情報処理装置がプリンタに対して送信したい場合、このようなコマンドを実質的にリアルタイム処理禁止コマンドの性格を有するものとして取り扱いこのコマンドで定義づけられたデータの終了時にリアルタイム処理許可コマンドを送信すれば、通常コマンドのパラメータ内に偶然含まれるデータ列によりリアルタイム処理が実行されることはなくなる。
【０１２３】
上記いずれの実施例においても、データを受信する受信・解析処理、リアルタイム処理コマンドを実行するリアルタイム処理、通常コマンドを実行する通常処理、フラグを設定する設定処理はＣＰＵ、ＲＡＭ、ＣＰＵを作動するプログラムを格納したＲＯＭを有する印刷装置の制御回路内で実行され、それぞれ対応するプログラムと、ハードウエアとのセットにより、受信処理部、リアルタイム処理部、通常処理部、指示部、設定部を構成している。これらの処理部のそれぞれの一部、あるいは全ては、ゲートアレイ、又はＤＳＰなどのハードウエアで代用することも可能である。
【０１２４】
これらの処理部のプログラムはＲＯＭに格納されるのが一般的であるが、これらのプログラムを、フロッピーディスクあるいは、ＣＤ−ＲＯＭなどの磁気あるいは光ディスク媒体や更には、ＷＥＢなどのサイトに格納し、プリンタにセットアップすることも可能である。
【０１２５】
【発明の効果】
以上説明したように、本発明によれば、以下の効果を奏する。
まず、画像用のバイナリデータやフォント登録用のバイナリデータなどのバイナリデータと、リアルタイム処理コマンドを意味するデータ列とを区別して処理する印刷装置、情報処理装置、これらの制御方法を提供することができる。
【０１２６】
特に、リアルタイム処理コマンドのデータ列と同じバイトパターンを含む可能性のある通常コマンドのデータ列であっても、ユーザはそれを意識せずに、容易に処理させることができる印刷装置、情報処理装置、これらの制御方法を提供することができる。
【０１２７】
リアルタイム処理コマンドのそれぞれについて、その実行を禁止あるいは許可を設定できるため、ステータス要求などの緊急性の高いコマンド処理は、常に実行可能になるため、情報処理装置側の機能を損なうことなく、且つ確実な印刷処理を可能とした。
【図面の簡単な説明】
【図１】本発明の印刷装置の実施例の概要を示すブロック構成図。
【図２】本発明の印刷装置の受信割り込み処理の流れの第１実施例を示すフローチャート。
【図３】本発明の印刷装置の受信割り込みの第１実施例における状態遷移を示す説明図。
【図４】本発明の印刷装置の通常処理の流れの実施例を示すフローチャート。
【図５】本発明の情報処理装置の実施例の概要を示すブロック構成図。
【図６】本発明の情報処理装置で実行される送信処理の流れの実施例を示すフローチャート。
【図７】本発明の印刷装置の受信割り込み処理の流れの第２実施例を示すフローチャート。
【図８】本発明の印刷装置の受信割り込みの第２実施例における状態遷移を示す説明図。
【図９】本発明の印刷装置の受信割り込み処理の流れの第３実施例を示すフローチャート。
【図１０】本発明の印刷装置の通常処理の流れの実施例を示すフローチャート。
【図１１】本発明の情報処理装置で実行される送信処理の流れの実施例を示すフローチャート。
【図１２】本発明の印刷装置の受信割り込み処理の流れの第４実施例を示すフローチャート。
【図１３】本発明の印刷装置の受信割り込みの第４実施例における状態遷移を示す説明図。
【図１４】本発明の印刷装置の通常処理の流れの実施例を示すフローチャート。
【符号の説明】
１０１  プリンタ
１０２  インターフェース
１０３  ＣＰＵ
１０４  ＲＡＭ
１０５  ＲＯＭ
１０７  印刷機構
１１１  受信バッファ
１１２  プリントバッファ
１１３  モード領域
１１４  フラグ領域
１２０  ホストコンピュータ
５０１  ＣＰＵ
５０２  ＲＯＭ
５０３  不揮発性記憶装置
５０４  ＲＡＭ
５０５  インターフェース
【図１】
0004496594.tif 000002
【図２】
0004496594.tif 000003
【図３】
0004496594.tif 000004
【図４】
0004496594.tif 000005
【図５】
0004496594.tif 000006
【図６】
0004496594.tif 000007
【図７】
0004496594.tif 000008
【図８】
0004496594.tif 000009
【図９】
0004496594.tif 000010
【図１０】
0004496594.tif 000011
【図１１】
0004496594.tif 000012
【図１２】
0004496594.tif 000013
【図１３】
0004496594.tif 000014
【図１４】
0004496594.tif 000015