(57)【特許請求の範囲】
【請求項１】
ホストコンピューターに接続可能であり、前記ホストコンピューターから即時処理コマンドを含むコマンドを含む受信データを受信するプリンターであって、
前記ホストコンピューターから受信した前記受信データを格納する受信バッファーと、
前記受信バッファーに格納された前記受信データを、第１の読出ポインターを走査させながら読み取って前記コマンドを検出するコマンド検出部と、
前記受信バッファーに格納された前記受信データを、前記第１の読出ポインターとは別に設けられた第２の読出ポインターを走査させながら読み取って前記即時処理コマンドを検出する即時処理コマンド検出部と、
前記コマンド検出部により検出された前記コマンドを、前記受信バッファーへの前記コマンドの格納順に処理し、前記即時処理コマンド検出部により検出された前記即時処理コマンドを、前記受信バッファーへの格納順に関わらず他のコマンドに優先して処理するコマンド実行部と、
前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知する制御部と、
前記ホストコンピューターにバッファーフル状態を通知した後に受信した前記受信データを格納する即時処理コマンド用バッファーと、を備え、
前記即時処理コマンド検出部は前記第２の読出ポインターを前記受信バッファーで走査させた後に前記即時処理コマンド用バッファーで走査させ、前記即時処理コマンドを検出し、前記コマンド検出部は前記即時処理コマンド用バッファーで前記第１の読出ポインターを走査させないこと、
を特徴とするプリンター。
【請求項２】
前記制御部は、前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知してオフラインに移行し、
前記即時処理コマンド用バッファーに、制御部がオフラインに移行した後に受信した前記受信データを格納すること、
を特徴とする請求項１記載のプリンター。
【請求項３】
前記第２の読出ポインターは前記第１の読出ポインターよりも先行して前記受信バッファーを走査すること、を特徴とする請求項１または２記載のプリンター。
【請求項４】
前記第２の読出ポインターにより検出した前記即時処理コマンドは、前記第１の読出ポインターで検出しても処理を行わないこと、を特徴とする請求項１から３のいずれかに記載のプリンター。
【請求項５】
前記ホストコンピューターから受信した前記受信データを、前記コマンド検出部及び前記即時処理コマンド検出部によりそれぞれ前記コマンドを検出する前に直接前記受信バッファーに格納させる受信制御部を備えること、を特徴とする請求項１から４のいずれかに記載のプリンター。
【請求項６】
前記受信制御部は、前記ホストコンピューターのインターフェイスから受信した前記受信データを直接前記受信バッファーに転送する転送部を備えること、を特徴とする請求項５記載のプリンター。
【請求項７】
ホストコンピューターに接続可能であり、前記ホストコンピューターから即時処理コマンドを含むコマンドを含む受信データを受信するプリンターの制御方法であって、
前記ホストコンピューターから受信した前記受信データを受信バッファーに格納し、
前記受信バッファーに格納された前記受信データを、第１の読出ポインターを走査させながら読み取って前記コマンドを検出し、
前記受信バッファーに格納された前記受信データを、前記第１の読出ポインターとは別に設けられた第２の読出ポインターを走査させながら読み取って前記即時処理コマンドを検出し、
検出した前記コマンドを、前記受信バッファーへの格納順に処理し、検出した前記即時処理コマンドを、前記受信バッファーへの格納順に関わらず他のコマンドに優先して処理し、
前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知した場合に、通知後に受信した前記受信データを即時処理コマンド用バッファーに格納し、
前記第２の読出ポインターを前記受信バッファーで走査させた後に前記即時処理コマンド用バッファーで走査させ、前記即時処理コマンドを検出し、前記コマンド検出部は前記即時処理コマンド用バッファーで前記第１の読出ポインターを走査させないこと、
を特徴とするプリンターの制御方法。
【請求項８】
ホストコンピューターに接続可能であり、前記ホストコンピューターから即時処理コマンドを含むコマンドを含む受信データを受信するプリンターの各部を制御する制御部が実行するプログラムであって、
前記制御部は、前記ホストコンピューターから受信して受信バッファーに格納された前記受信データを、第１の読出ポインターを走査させながら読み取って前記コマンドを検出し、
前記受信バッファーに格納された前記受信データを、前記第１の読出ポインターとは別に設けられた第２の読出ポインターを走査させながら読み取って前記即時処理コマンドを検出し、
検出した前記コマンドを、前記受信バッファーへの格納順に処理し、検出した前記即時処理コマンドを、前記受信バッファーへの格納順に関わらず他のコマンドに優先して処理し、
前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知した場合に、通知後に受信した前記受信データを即時処理コマンド用バッファーに格納し、
前記第２の読出ポインターを前記受信バッファーで走査させた後に前記即時処理コマンド用バッファーで走査させ、前記即時処理コマンドを検出し、前記コマンド検出部は前記即時処理コマンド用バッファーで前記第１の読出ポインターを走査させないこと、
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストコンピューターから送信されるコマンドに従って動作するプリンター、プリンターの制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
従来、上位装置としてのホストコンピューターから送信されるコマンドに従って動作する記録装置が知られている（例えば、特許文献１参照）。このような記録装置がホストコンピューターから受信するコマンドには、通常のコマンドとは別に、記録装置のステータス返送指示やリセット指示のコマンドなど即座に処理することが求められる即時処理コマンド（リアルタイム制御コマンド）がある。例えば特許文献１記載の装置は、ホストコンピューターからデータを受信した時に、受信データ中のコマンド及び即時処理コマンドを検出し、通常のコマンドや通常のコマンドに係るデータは受信バッファーのキューに格納して受信順に実行し、即時処理コマンドは受信順に関わらず即座に実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２６０４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、上記従来の方法では、ホストコンピューターから受信した受信データの全てについてコマンドの検出が行ってからでないと処理が行えないため、例えば多量のデータがまとめて送信された場合等には、コマンドの検出処理がボトルネックとなってスループットの低下を招くおそれがあった。
また、一般的な記録装置においては、用紙等の記録媒体がなくなった場合、記録装置のカバーが開けられた場合、エラーが発生した場合など、記録動作の続行が不適当な場合には、記録動作を停止するとともに、ホストコンピューターとのインターフェイスをオフライン（論理的な切断状態）とすることにより、記録装置およびホストコンピューターから受信したデータの保全及び使用者の安全を確保しようとしている。このような記録装置はオフライン状態では受信データにおけるコマンドの検出を行わないが、この場合、受信データに即時処理コマンドが含まれていても、これを検出できないので、即時処理コマンドへの対応が遅れるという懸念もあった。
本発明は、上述した事情に鑑みてなされたものであり、ホストコンピューターから送信されるコマンドに従って動作し、ホストコンピューターから送信されるコマンドを速やかに検出するとともに、即時処理コマンドを速やかに検出して実行できるプリンター、プリンターの制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、ホストコンピューターに接続可能であり、前記ホストコンピューターから即時処理コマンドを含むコマンドを含む受信データを受信するプリンターであって、前記ホストコンピューターから受信した前記受信データを格納する受信バッファーと、前記受信バッファーに格納された前記受信データを、第１の読出ポインターを走査させながら読み取って前記コマンドを検出するコマンド検出部と、前記受信バッファーに格納された前記受信データを、前記第１の読出ポインターとは別に設けられた第２の読出ポインターを走査させながら読み取って前記即時処理コマンドを検出する即時処理コマンド検出部と、前記コマンド検出部により検出された前記コマンドを、前記受信バッファーへの前記コマンドの格納順に処理し、前記即時処理コマンド検出部により検出された前記即時処理コマンドを、前記受信バッファーへの格納順に関わらず他のコマンドに優先して処理するコマンド実行部と、前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知する制御部と、前記ホストコンピューターにバッファーフル状態を通知した後に受信した前記受信データを格納する即時処理コマンド用バッファーと、を備え、前記即時処理コマンド検出部は前記第２の読出ポインターを前記受信バッファーで走査させた後に前記即時処理コマンド用バッファーで走査させ、前記即時処理コマンドを検出し、前記コマンド検出部は前記即時処理コマンド用バッファーで前記第１の読出ポインターを走査させないこと、を特徴とする。
この構成によれば、ホストコンピューターから受信したコマンドや印刷データを含む受信データが受信バッファーに格納され、この受信バッファーにおいて、コマンド用の第１の読出ポインターと即時処理コマンド用の第２の読出ポインターとをそれぞれ個別に走査させて、通常のコマンドと即時処理コマンドとを別々に検出する。このため、ホストコンピューターからの受信データを受信バッファーに格納してからコマンドの検出を行うので、ホストコンピューターから短時間に大量のデータを受信した場合であっても、全てのデータを確実に受信し、漏れなく解析を行ってコマンドを検出できる。そして、即時処理コマンドを、通常のコマンドとは別の読出ポインターを走査して検出するので、通常のコマンドの実行状態に影響されることなく即時処理コマンドのみを速やかに検出できる。このため、受信データが大量であっても即時処理コマンドに速やかに処理できる。
この場合、第１の読出ポインターは、即時処理コマンド以外のコマンドを検出して処理してもよい。即時処理コマンドは重複して処理されない。第２の読出ポインターで検出した、所定のタイミングでのみ即時処理コマンドを処理することができる。また、第２の読出ポインターで一旦検出して処理された即時実行コマンドを、再度第１の読出ポインターでも検出して処理してもよい。記録装置のステータス返送指示などは重複して処理されてもよいので、第１の読出ポインターと第２の読出ポインターのいずれにおいても、検出して処理することができる。
ここで、通常のコマンドの実行を停止するオフライン状態においても、即時処理コマンドを検出し、処理するようにしてもよい。この場合は、オフライン状態であっても即時処理コマンドに速やかに処理できるという利点がある。
また、コマンド実行部は、通常動作状態においてコマンド検出部が検出したコマンドを実行し、即時処理コマンド検出部が検出した即時処理コマンドは、通常動作状態及びオフライン状態のいずれにおいても処理する構成としてもよい。
また、前記制御部は、前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知してオフラインに移行し、前記即時処理コマンド用バッファーに、制御部がオフラインに移行した後に受信した前記受信データを格納する構成としてもよい。
【０００６】
上記構成において、前記受信バッファーがほぼバッファーフルとなった後に受信した受信データを格納する即時処理コマンド用バッファーを備え、前記前記即時処理コマンド用バッファーでは前記第２の読出ポインターが走査され、前記即時処理コマンド検出部によって即時処理コマンドが検出される構成としてもよい。
この場合、ホストコンピューターからの受信データの容量が多く受信バッファーがバッファーフルまたはバッファーフルに近い状態になった場合であっても、即時処理コマンドを検出して処理できるので、受信データが大量であっても即時処理コマンドに速やかに応答できる。また、バッファーフルの場合は通常、コマンドの検出や実行を行わないオフライン状態となるが、本発明の構成では、通常のコマンドとは別に即時処理コマンドを検出し、実行できるので、即時処理コマンドに速やかに処理できる。記録装置がオフライン状態を通知しても、ホストコンピューターは即時処理コマンドを送信して処理させたいことがある。即時処理コマンドを優先し受信するため、数バイト等、オフライン通知後でも受信できるように、サブ受信バッファーを備えていることが好ましい。
【０００７】
さらに、前記第２の読出ポインターは前記第１の読出ポインターよりも先行して前記受信バッファーを走査するものとしてもよい。
この場合、即時処理コマンドを検出するための読出ポインターが通常のコマンドを検出するための読出ポインターより先行して受信バッファーを走査されるので、通常のコマンドの検出及び実行状態に影響されることなく、即時処理コマンドを速やかに検出できる。また、前記第２の読出ポインターは、前記第１の読出ポインターを追い越すことがないようにしている。
【０００８】
また、上記構成において、受信データを受信バッファーに書き込む書込ポインターの書込位置を加算し、前記第１の読出ポインターの読出位置を減算してカウントするカウンターを備え、このカウンターは前記受信バッファーの受信データ量を示す構成としてもよい。受信バッファーの容量と比較し、バッファーフルを判定することができる。
前記第２の読出ポインターにより検出した前記即時処理コマンドは、前記第１の読出ポインターで検出しても処理を行わないようにしてもよい。重複して処理することがない。
【０００９】
さらに、上記構成において、前記ホストコンピューターから受信した受信データを、前記コマンド検出部及び前記即時処理コマンド検出部によりそれぞれコマンドを検出する前に直接前記受信バッファーに格納させる受信制御部を備えるものとしてもよい。
この場合、受信データが、通常のコマンド及び即時処理コマンドを検出する処理の前に受信バッファーに格納され、この格納された受信バッファー内の受信データに対してそれぞれコマンドの検出が行われるので、ホストコンピューターから短時間に大量のデータを受信した場合であっても、全てのデータを確実に受信し、漏れなく解析を行ってコマンドを検出できる。
【００１０】
また、上記構成において、前記受信制御部は、前記ホストコンピューターのインターフェイスから受信した受信データを直接前記受信バッファーに転送する転送部を備えるものとしてもよい。
この場合、例えばホストコンピューターのＵＳＢインターフェイスからの受信データをＤＭＡ（ダイレクトメモリーアクセス）などにより直接受信バッファーに転送して格納するので、ホストコンピューターとの間でより高速にデータを送受信することができ、かつ、受信データを漏れなく確実に受信バッファーに格納して解析できる。これにより、ホストコンピューターとの間の通信を高速化してスループットの向上を図ることができる。
【００１１】
また、本発明は、ホストコンピューターに接続可能であり、前記ホストコンピューターから即時処理コマンドを含むコマンドを含む受信データを受信するプリンターの制御方法であって、前記ホストコンピューターから受信した前記受信データを受信バッファーに格納し、前記受信バッファーに格納された前記受信データを、第１の読出ポインターを走査させながら読み取って前記コマンドを検出し、前記受信バッファーに格納された前記受信データを、前記第１の読出ポインターとは別に設けられた第２の読出ポインターを走査させながら読み取って前記即時処理コマンドを検出し、検出した前記コマンドを、前記受信バッファーへの格納順に処理し、検出した前記即時処理コマンドを、前記受信バッファーへの格納順に関わらず他のコマンドに優先して処理し、前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知した場合に、通知後に受信した前記受信データを即時処理コマンド用バッファーに格納し、前記第２の読出ポインターを前記受信バッファーで走査させた後に前記即時処理コマンド用バッファーで走査させ、前記即時処理コマンドを検出し、前記コマンド検出部は前記即時処理コマンド用バッファーで前記第１の読出ポインターを走査させないこと、を特徴とする。
この方法によれば、ホストコンピューターから受信した受信データが受信バッファーに格納され、この受信バッファーにおいて、通常のコマンド用の第１の読出ポインターと即時処理コマンド用の第２の読出ポインターとをそれぞれ個別に走査させて、通常のコマンドと即時処理コマンドとを別々に検出するので、ホストコンピューターからの受信データを受信バッファーに格納してからコマンドの検出を行う。これにより、ホストコンピューターから短時間に大量のデータを受信した場合であっても、全てのデータを確実に受信し、漏れなく解析を行ってコマンドを検出でき、通常のコマンドの実行状態に影響されることなく即時処理コマンドを速やかに検出できる。このため、受信データが大量であっても即時処理コマンドに速やかに処理できる。
【００１２】
また、本発明は、ホストコンピューターに接続可能であり、前記ホストコンピューターから即時処理コマンドを含むコマンドを含む受信データを受信するプリンターの各部を制御する制御部が実行するプログラムであって、前記制御部は、前記ホストコンピューターから受信して受信バッファーに格納された前記受信データを、第１の読出ポインターを走査させながら読み取って前記コマンドを検出し、前記受信バッファーに格納された前記受信データを、前記第１の読出ポインターとは別に設けられた第２の読出ポインターを走査させながら読み取って前記即時処理コマンドを検出し、検出した前記コマンドを、前記受信バッファーへの格納順に処理し、検出した前記即時処理コマンドを、前記受信バッファーへの格納順に関わらず他のコマンドに優先して処理し、前記受信バッファーのバッファーフル状態を前記ホストコンピューターに通知した場合に、通知後に受信した前記受信データを即時処理コマンド用バッファーに格納し、前記第２の読出ポインターを前記受信バッファーで走査させた後に前記即時処理コマンド用バッファーで走査させ、前記即時処理コマンドを検出し、前記コマンド検出部は前記即時処理コマンド用バッファーで前記第１の読出ポインターを走査させないこと、を特徴とする。
このプログラムを制御部によって実行することにより、ホストコンピューターから受信した受信データが受信バッファーに格納され、この受信バッファーにおいて、通常のコマンド用の第１の読出ポインターと即時処理コマンド用の第２の読出ポインターとをそれぞれ個別に走査させて、通常のコマンドと即時処理コマンドとを別々に検出するので、ホストコンピューターからの受信データを受信バッファーに格納してからコマンドの検出を行う。これにより、ホストコンピューターから短時間に大量のデータを受信した場合であっても、全てのデータを確実に受信し、漏れなく解析を行ってコマンドを検出でき、通常のコマンドの実行状態に影響されることなく即時処理コマンドを速やかに検出できる。このため、受信データが大量であっても即時処理コマンドに速やかに処理できる。
【発明の効果】
【００１３】
本発明によれば、ホストコンピューターから短時間に大量のデータを受信した場合であっても、全てのデータを確実に受信し、漏れなく解析を行ってコマンドを検出できるとともに、即時処理コマンドを速やかに検出して速やかに処理できる。
【図面の簡単な説明】
【００１４】
【図１】実施形態に係るＰＯＳ端末の概略構成を示す図である。
【図２】プリンターの構成を示すブロック図である。
【図３】プリンターの制御部の機能ブロック図である。
【図４】受信バッファー及びサブ受信バッファーの構成を模式的に示す図である。
【図５】プリンターの動作を示すフローチャートである。
【図６】プリンターの動作の詳細を示すフローチャートである。
【図７】プリンターの動作の詳細を示すフローチャートである。
【図８】ホストコンピューターとプリンターの接続形態の例を示す説明図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明を適用した実施形態に係るＰＯＳ端末１の概略構成を示す図である。
ＰＯＳ端末１は、例えば小売店等の店頭に設置され、売上げ精算を行うレジスターであり、販売時点管理システム（ＰＯＳシステム）を構成する。ＰＯＳ端末１は、売上登録処理及び精算処理を行うホストコンピューター４に、レシート１０１を発行するプリンター２を接続して構成される。ここで、ホストコンピューター４は、プリンター２に対して、外部接続された装置に相当する。また、ホストコンピューター４は、売上登録した情報を収集するＰＯＳサーバー５に、通信回線を介して接続されている。ホストコンピューター４は、売上登録処理及び精算処理の処理内容を表示するディスプレイ４１、売上登録処理時に商品に付されたバーコードを読み取るバーコードスキャナー４２、売上登録キー等の各種キーを備えたキー入力部４３、精算用の現金を収容するキャッシュドロワー４４等を備えている。キャッシュドロワー４４は、後述するようにプリンター２に接続され、プリンター２から入力されるドロワーオープン信号を受信したときに開く構成となっている。
【００１６】
記録装置（記録制御装置）としてのプリンター２は、本体１１に記録媒体としての感熱ロール紙を収容し、印刷部ヘッドによりロール紙に画像を印刷（記録）して、レシート１０１を出力する。プリンター２は、ロール紙を搬送するローラー形状のプラテン（図示略）と、このプラテンに対向配置された印刷ヘッドとを備え、排紙口１４の近傍には、ロール紙を切断するカッターユニット（図示略）が配置されている。本実施形態のプリンター２が備える印刷ヘッドは、例えば、発熱体（図示略）をロール紙の幅方向に、一列または複数列で並べて構成されるラインサーマルヘッドである。各々の発熱体には後述するプリントエンジン２０により個別に通電され、ロール紙の印刷面（記録面）に密着する発熱体によってロール紙に熱エネルギーを与えることによって、ロール紙を発色させる。
印刷ヘッドによって印刷されたロール紙は、本体１１の上面に形成された排紙口１４から外に向けて搬送され、カッターユニットにより切断され、レシート１０１として出力される。レシート１０１には、店名や売り上げた商品名、商品数量、金額、合計金額等の文字、ロゴの画像等が印刷される。
【００１７】
また、図１に示すように、プリンター２の本体１１には開閉可能なカバー１２が設けられる。本体１１には、カバー１２を開くためのレバー１３が設けられ、カバー１２を開くと、ロール紙を収容する空間が露出し、ロール紙の補充や交換が可能になる。また、本体１１には、プリンター２の電源をオン／オフさせる電源スイッチ１６、ロール紙の紙送り動作を指示し、また制御時の所定の条件下で動作モードの切り替え等を指示する操作を行うための紙送りスイッチ１７、及び、プリンター２の動作状態等を表示するためのＬＥＤ表示部１８が設けられている。
プリンター２は、プラテンローラーを回転させてロール紙を搬送する搬送モーター、カッターユニットを駆動してロール紙を切断するカッター駆動モーター、印刷ヘッドを駆動させて、ロール紙に対して文字や画像を記録する。
【００１８】
図２は、プリンター２の回路構成を示すブロック図である。
プリンター２は、実際の印刷を行うプリントエンジン２０と、プリンター２の全体を制御する制御部２１と、制御部２１が実行する基本制御プログラムを記憶したＲＯＭ２２と、制御部２１が実行する制御プログラム２４Ａ及びコマンド２４Ｂ等を記憶したＥＥＰＲＯＭ２４と、ホストコンピューター４から送信されるコマンドの受信制御を行う受信制御部２５と、キャッシュドロワー４４に接続されたインターフェイス部２６と、紙送りスイッチ１７（図１）における操作を検出する入力部２７と、ＬＥＤ表示部１８を制御して各種表示を行わせる表示部２８と、プリンター２の各部の動作状態を監視するステータス監視部３０と、受信制御部２５により受信された受信データを一時的に格納するＲＡＭ等で構成された受信バッファー３１及びサブ受信バッファー３２（即時処理コマンド用バッファー）と、を備えている。
受信制御部２５は、ＵＳＢやＲＳ２３２Ｃインターフェイス等の各種インターフェイスを有し、ホストコンピューター４が備える上記インターフェイスと、有線または無線接続される。
【００１９】
プリントエンジン２０は、制御部２１の制御に従って、ホストコンピューター４から送信された印刷データに基づき、記録媒体としてのロール紙に印刷する文字や画像を作成し、用紙端センサーや用紙残量センサー等の各種センサーの検出値を監視しながら、プリンター２が備える印刷ヘッド、カッター駆動モーター及び搬送モーターを動作させ、ロール紙への印刷を実行する。
このように、プリンター２は、紙や合成樹脂製の記録媒体（ロール紙、カット紙、複写紙等）の印刷面にインクやトナーを付着させ、或いは記録媒体の印刷面に熱を与える印刷ヘッド、記録媒体に対して印刷ヘッドを移動させる印刷ヘッド駆動機構、記録媒体を搬送する搬送機構等を備え、これら印刷ヘッド及び各種機構がプリントエンジン２０によって制御される。
また、プリントエンジン２０は、制御部２１の制御に従って、入力部２７によって紙送りスイッチ１７の操作を検出した場合は搬送モーターを動作させてロール紙を所定量搬送し、プリンター２の動作状態等に合わせて表示部２８を介してＬＥＤ表示部１８の各ＬＥＤの点灯状態を変化させる。
【００２０】
制御部２１は、ＣＰＵや、実行するプログラムやデータ等を一時的に記憶するワークエリアとしてのメモリーを内蔵し、マイクロコンピューターとして機能し、ＲＯＭ２２に記憶された基本制御プログラムや、ＥＥＰＲＯＭ２４に記憶された制御プログラム２４Ａを実行する。
ＲＯＭ２２は、制御部２１によってプリンター２の各部を初期化するとともに、これらの各部を制御するための基本制御プログラム、及び、この基本制御プログラムに係るデータ等を不揮発的に記憶する。
ＥＥＰＲＯＭ２４は、書き換え可能な不揮発性の記憶装置であり、制御プログラム２４Ａ、及びコマンド２４Ｂを含む各種のプログラムやデータを記憶する。
受信制御部２５は、ホストコンピューター４との間で所定の通信プロトコルを実行し、ホストコンピューター４から送信される信号を受信し、受信した信号を復調（デコード）して受信データを生成し、受信バッファー３１及びサブ受信バッファー３２に順次記憶する。受信制御部２５は、例えば、通信ケーブルが接続されるコネクターと通信回路、或いは、無線通信回路とアンテナ等を備えている。
受信バッファー３１は、受信制御部２５が出力した受信データを順次記憶する一時記憶装置である。受信バッファー３１には、受信制御部２５がホストコンピューター４から受信したコマンド、及び、このコマンドに続く印刷データなどのデータが、区別なく、例えば６４ビット毎に格納される。すなわち、受信制御部２５は、ホストコンピューター４から受信した受信データを、コマンドを含むか否かの解析等を行うことなく受信バッファー３１に格納する。
【００２１】
プリンター２が備えるステータス監視部３０には、外部からプリンター２に供給される電源電圧を検出、カバー１２の開閉状態、ロール紙の有無等を検出する各検出部が接続され、これらの検出部における検出状態に基づき、たとえば、プリンター２における電源電圧の異常、用紙補充やインクカートリッジの交換時に開閉されるプリンター２のカバー（図示略）が開いたこと、プリンター２の用紙切れ、紙送りスイッチ１７の操作等のプリンター２における事象（イベント）の発生を示す検出信号を、制御部２１に割り込み信号として出力する。
【００２２】
プリンター２の動作状態には、ホストコンピューター４との通信および印刷等を実行可能なオンライン状態と、必要最小限の動作しか行わないオフライン状態とがある。オフライン状態は、印字動作の続行が不適当な場合には、印字ヘッドを含む印字メカニズムを停止し、且つホストコンピューターとのインターフェイスを論理的な切断状態にして、印字装置および通信データの保全及び使用者の安全を確保しようとする状態であり、受信バッファー３１がいっぱいになったり、カバーが開いていたり、用紙が無くなった等のオフライン要因の発生に伴って、制御部２１はオフライン状態に移行する。通常動作を行っている間はオンライン状態である。オフライン状態で、ステータス監視部３０がオフライン要因が解消したことを検出した場合に、オンライン状態に移行する。
オフライン状態に移行した場合、制御部２１は、ホストコンピューター４に対してオフラインであることを通知し、ホストコンピューター４は、再びオンラインとなったことが通知されるまで、データの送信を停止する。この際、ホストコンピューター４はオフラインの通知を受けても、緊急的にリアルタイム制御コマンドを送信し処理させたいことがある。これに備えて、サブ受信バッファー３２を用意し、オフラインを通知した後でもリアルタイム制御コマンドを優先して受信できるようにしている。
【００２３】
図３は、プリンター２の制御部２１の機能的構成を示すブロック図である。
この図３に示すように、制御部２１は、コマンド検出部２１Ａ、リアルタイム制御コマンド検出部（即時処理コマンド検出部）２１Ｂ、及びコマンド実行部２１Ｃとして機能し、これらの機能は、ＥＥＰＲＯＭ２４に記憶された制御プログラム２４Ａを、制御部２１が実行することで実現される。
上述のように、受信制御部２５は、ホストコンピューター４から受信した受信データを受信バッファー３１に格納させる。受信バッファー３１には受信制御部２５により制御される書込ポインター３１Ａが設けられ、受信制御部２５は書込ポインター３１Ａを移動させながら受信データを書き込む。
コマンド検出部２１Ａは、受信バッファー３１に設けられた読出ポインター３１Ｃ（第１の読出ポインター）を制御し、受信バッファー３１で読出ポインター３１Ｃを走査しながら受信データを読み出し、これらの受信データに含まれるコマンドを検出する。カウンター３１Ｂは、受信データを受信バッファー３１に書き込む書込ポインター３１Ａの書込位置を加算し、読出ポインター３１Ｃの読出位置を減算してカウントする。このカウンター３１Ｂは、受信バッファー３１の受信データ量を示す。受信制御部２５は、カウンター３１Ｂの値と受信バッファー３１の容量とを比較し、バッファーフルを判定しホストコンピューター４にバッファーフルを通知することができる。
【００２４】
図４は、受信バッファー３１及びサブ受信バッファー３２の構成例を模式的に示す図であり、図４Ａは受信バッファー３１の構成例を示し、図４Ｂはサブ受信バッファー３２の構成例を示す。
図４Ａに示すように、受信バッファー３１が例えば４ＫＢ（キロバイト）の容量を持ち、ホストコンピューター４からの受信データＤが６４ビット単位で書き込まれる場合、書込ポインター３１Ａは先頭アドレス（００００）から６４ビットずつ移動され、受信制御部２５による書込が行われる。この書込ポインター３１Ａの後を追って、先頭アドレス（００００）から順に読出ポインター３１Ｃが走査され、既に書き込まれた受信データＤがコマンド検出部２１Ａ（図３）によって読み出され、コマンドの検出が行われる。
コマンド検出部２１Ａが検出したコマンドは、通常動作状態において、すなわち後述するオンライン状態において、コマンド実行部２１Ｃによって検出された順に実行される。コマンド検出部２１Ａは、検出したコマンドをコマンド実行部２１Ｃに引き渡して実行させるとともに、読み出した受信データを受信バッファー３１から消去する。ここで、コマンド検出部２１Ａは、コマンドを消去せずに次回上書きしてもよい。コマンド実行部２１Ｃは、コマンド検出部２１Ａにより検出されたコマンドを、受信バッファー３１における格納順、すなわちコマンド検出部２１Ａが検出した検出順に実行する。このコマンドは、例えば、印刷実行、ロール紙搬送等のコマンドである。
【００２５】
また、受信バッファー３１にはリアルタイム制御コマンド読出ポインター３１Ｄ（第２の読出ポインター）が設けられる。リアルタイム制御コマンド読出ポインター３１Ｄは、リアルタイム制御コマンド検出部２１Ｂがリアルタイム制御コマンドを検出するための読出ポインターであって、先頭アドレス（００００）から順に受信バッファー３１内で走査される。リアルタイム制御コマンド検出部２１Ｂは、受信バッファー３１に設けられたリアルタイム制御コマンド読出ポインター３１Ｄを走査しながら受信データＤ（図４Ａ）を読み出し、これらの受信データＤに含まれるリアルタイム制御コマンドを検出する。
リアルタイム制御コマンド検出部２１Ｂが検出したリアルタイム制御コマンドは、コマンド実行部２１Ｃによって、オフライン状態であるかオンライン状態であるかに関わらず、リアルタイム制御コマンド検出部２１Ｂが検出した順に即座に実行される。リアルタイム制御コマンド（即時処理コマンド）としては、ステータス通知の送信を指示するステータス要求コマンド、受信バッファー３１及びサブ受信バッファー３２の全消去を指示するバッファークリアコマンド、キャッシュドロワー４４の開動作を指示するドロワーオープンコマンド等がある。
【００２６】
図４Ａに示すように、リアルタイム制御コマンド読出ポインター３１Ｄは、読出ポインター３１Ｃよりも先行するように走査される。これは、リアルタイム制御コマンドが、通常のコマンドの処理対象データの中に含まれることがあるためである。すなわち、リアルタイム制御コマンドを含む受信データＤが通常コマンドを伴う場合には、通常コマンドがコマンド検出部２１Ａにより検出された際にコマンド実行部２１Ｃによって実行され、その後に消去されてしまう。このとき、リアルタイム制御コマンドを実行しないまま消去することを防ぐため、リアルタイム制御コマンド読出ポインター３１Ｄは読出ポインター３１Ｃよりも先行する。これにより、リアルタイム制御コマンドが通常のコマンドの処理対象データに含まれていても、この通常のコマンドより先に検出されて実行されるので、漏れなくリアルタイム制御コマンドに応答できるという利点がある。また、リアルタイム制御コマンド読出ポインター３１Ｄは読出ポインター３１Ｃを追い越さないようにしている。
【００２７】
さらに、図３に示すように、受信制御部２５には、受信バッファー３１とともにサブ受信バッファー３２が接続されている。サブ受信バッファー３２は、受信バッファー３１がバッファーフルとなった後に受信データが格納される領域である。サブ受信バッファー３２には、受信制御部２５により制御される書込ポインター３２Ａと、リアルタイム制御コマンド検出部２１Ｂにより制御されるリアルタイム制御コマンド読出ポインター３２Ｂとが設けられており、受信制御部２５は書込ポインター３２Ａを先頭アドレス（００００）から６４ビットずつ移動させ書込を行うが、コマンド検出部２１Ａが通常のコマンドを検出するための読出ポインターは設けられていない。
【００２８】
受信バッファー３１がバッファーフルとなって、ホストコンピューター４に対してバッファーフルが通知された場合には、ホストコンピューター４からのデータ送信は停止されるはずであるが、オフラインを通知した時点で既にホストコンピューター４から送信されていたデータがある場合、ホストコンピューター４が緊急的にリアルタイム制御コマンドを送信し処理をしたい場合には、バッファーフルとなった後に受信制御部２５により受信される。この受信データは受信バッファー３１に格納できないため、プリンター２は、このような受信データを格納するための領域としてサブ受信バッファー３２を備えている。サブ受信バッファー３２に格納される受信データに通常のコマンドが含まれていても、制御部２１は、このコマンドを実行の対象としない。サブ受信バッファー３２内の受信データはバッファーフルとなった後に受信されたデータであり、バッファーフルが解消してから再び受信すればよいからである。一方、サブ受信バッファー３２の受信データにリアルタイム制御コマンドが含まれている場合、このリアルタイム制御コマンドは即座に実行する必要がある。このため、サブ受信バッファー３２には読出ポインターとしてリアルタイム制御コマンド読出ポインター３２Ｂのみが設けられ、リアルタイム制御コマンド検出部２１Ｂがリアルタイム制御コマンドを検出する。そして、サブ受信バッファー３２において検出されたリアルタイム制御コマンドは、受信バッファー３１で検出されたリアルタイム制御コマンドと同様に、コマンド実行部２１Ｃにより即座に実行される。
【００２９】
図５は、プリンター２の動作を示すフローチャートであり、ホストコンピューター４からデータを受信する場合のプリンター２の動作を示す。
プリンター２は、受信制御部２５の機能によってホストコンピューター４から受信制御部２５によってデータを受信すると（ステップＳ１）、受信制御部２５の機能により受信バッファー３１に書込を行う（ステップＳ２）。ここで、制御部２１は受信バッファー３１がいっぱいになっている（バッファーフル）か否かを判別し（ステップＳ３）、バッファーフルであった場合（ステップＳ３；Ｙｅｓ）、ホストコンピューター４に対して受信制御部２５を介してバッファーフル（オフライン）を通知し（ステップＳ４）、受信バッファー３１に書き込めなかった受信データとバッファーフルの通知後に受信した受信データとをサブ受信バッファー３２に書き込む（ステップＳ５）。カウンター３１Ｂの値に基づき、バッファーフルに相当するか、バッファーフルに相当しないか、として判別してもよい。
【００３０】
ここで、制御部２１は、リアルタイム制御コマンド検出部２１Ｂの機能によるリアルタイム制御コマンド検出処理を開始し（ステップＳ６）、かつ、コマンド検出部２１Ａの機能によるコマンド検出処理を開始し（ステップＳ７）、本処理を終了する。
また、受信バッファー３１がバッファーフルでない場合には（ステップＳ３；Ｎｏ）、ステップＳ３からステップＳ６に移行して、リアルタイム制御コマンド検出処理及びコマンド検出処理を実行し、本処理を終了する。
【００３１】
図６は、図５のステップＳ６で開始されるリアルタイム制御コマンド検出処理の詳細を示すフローチャートである。
この図６に示すように、リアルタイム制御コマンド検出処理において、制御部２１は、まず、受信バッファー３１におけるリアルタイム制御コマンド読出ポインター３１Ｄの位置（アドレス）（ＲＴＲＰ）が書込ポインター３１Ａの位置（アドレス）（ＷＰ）に達しているか否かを判別する（ステップＳ１１）。リアルタイム制御コマンド読出ポインター３１Ｄが書込ポインター３１Ａの位置に達していなければ（ステップＳ１１；Ｙｅｓ）、制御部２１は、リアルタイム制御コマンド検出部２１Ｂの機能により受信バッファー３１内の受信データＤを読み出し、リアルタイム制御コマンドを検出する（ステップＳ１２）。ここで、制御部２１は、読み出した受信データＤにリアルタイム制御コマンドがあるか否かを判別し（ステップＳ１３）、リアルタイム制御コマンドがない場合はステップＳ１１に戻り、リアルタイム制御コマンドを検出した場合は、検出したリアルタイム制御コマンドをコマンド実行部２１Ｃにより実行する（ステップＳ１４）。ここで、リアルタイム制御コマンドの実行は制御部２１の割込処理として実行されるので、制御部２１がコマンド実行部２１Ｃの機能により実行している動作があっても、その動作を中断してリアルタイム制御コマンドが実行され、ステータス通知、キャッシュドロワー４４の開動作、受信バッファー３１及びサブ受信バッファー３２のクリア等が実行される。その後、制御部２１は、コマンド実行部２１Ｃが実行したリアルタイム制御コマンドを消去して（ステップＳ１５）、ステップＳ１１に戻る。
【００３２】
また、受信バッファー３１においてリアルタイム制御コマンド読出ポインター３１Ｄの位置が書込ポインター３１Ａの位置に達している場合（ステップＳ１１；Ｎｏ）、制御部２１は、サブ受信バッファー３２における検出動作に移行する（ステップＳ１６）。
制御部２１は、サブ受信バッファー３２のリアルタイム制御コマンド読出ポインター３２Ｂの位置（ＲＴＲＰ）が、書込ポインター３２Ａの位置（ＷＰ）に達しているか否かを判別し（ステップＳ１７）、リアルタイム制御コマンド読出ポインター３２Ｂが書込ポインター３２Ａの位置に達していなければ（ステップＳ１７；Ｙｅｓ）、リアルタイム制御コマンド検出部２１Ｂの機能によりサブ受信バッファー３２内の受信データＤを読み出し、リアルタイム制御コマンドを検出する（ステップＳ１８）。
【００３３】
制御部２１は、読み出した受信データＤにリアルタイム制御コマンドがあるか否かを判別し（ステップＳ１９）、リアルタイム制御コマンドがない場合はステップＳ１７に戻り、リアルタイム制御コマンドを検出した場合は、検出したリアルタイム制御コマンドをコマンド実行部２１Ｃにより実行する（ステップＳ２０）。ここで、リアルタイム制御コマンドの実行は割込処理として実行されるので、制御部２１がコマンド実行部２１Ｃの機能により実行している動作があっても、その動作を中断してリアルタイム制御コマンドが実行され、ステータス通知、キャッシュドロワー４４の開動作、受信バッファー３１及びサブ受信バッファー３２のクリア等が実行される。その後、制御部２１は、コマンド実行部２１Ｃが実行したリアルタイム制御コマンドを消去して（ステップＳ２１）、ステップＳ１７に戻る。
そして、サブ受信バッファー３２においてリアルタイム制御コマンド読出ポインター３１Ｄの位置が書込ポインター３１Ａの位置に達している場合（ステップＳ１７；Ｎｏ）、本処理を終了する。
【００３４】
図７は、図５のステップＳ７で開始されるコマンド検出処理の詳細を示すフローチャートである。
この図７に示すように、コマンド検出処理において、制御部２１は、まず、受信バッファー３１における読出ポインター３１Ｃの位置（アドレス）（ＲＰ）が書込ポインター３１Ａの位置（アドレス）（ＷＰ）に達しているか否かを判別し（ステップＳ３１）、読出ポインター３１Ｃが書込ポインター３１Ａの位置に達していなければ（ステップＳ３１；Ｙｅｓ）、コマンド検出部２１Ａの機能により受信バッファー３１内の受信データＤを読み出し、コマンドを検出する（ステップＳ３２）。制御部２１は、カウンター３１Ｂの値に基づき、判別してもよい。
ここで、制御部２１は、読み出した受信データＤにコマンドがあるか否かを判別し（ステップＳ３３）、コマンドがない場合はステップＳ３１に戻り、コマンドを検出した場合は、検出したコマンドをコマンド実行部２１Ｃにより実行する（ステップＳ３４）。ここで、検出されたコマンドは、受信バッファー３１に格納された順に、コマンド実行部２１Ｃにより実行される。その後、制御部２１は、コマンド実行部２１Ｃが実行したコマンドを消去する（ステップＳ３５）。ここで、制御部２１は、コマンドを消去せず、次回上書きしてもよい。
【００３５】
ここで、制御部２１は、ステータス監視部３０によって、プリンター２にオフライン要因が発生しているか否かを判別する（ステップＳ３６）。オフライン要因が発生していない場合（ステップＳ３６；Ｎｏ）、制御部２１はステップＳ３１に戻り、オフライン要因が発生している場合は（ステップＳ３６；Ｙｅｓ）、ホストコンピューター４に対してオフライン通知を送信し（ステップＳ３７）、コマンド実行部２１Ｃによるコマンドの実行を停止するとともに読出ポインター３１Ｃからの読み出しを停止し（ステップＳ３８）、オフライン要因が解消するまで待機する（ステップＳ３９）。制御部２１は、オフライン要因が解消した場合はステップＳ１１に戻り、オフライン要因が所定時間以内に解消しない場合は（ステップＳ３９；Ｎｏ）、本処理を終了する。
また、受信バッファー３１において読出ポインター３１Ｃが書込ポインター３１Ａの位置に達している場合は（ステップＳ３１；Ｎｏ）、本処理を終了する。
【００３６】
以上のように、本発明を適用した実施形態に係るＰＯＳ端末１によれば、ホストコンピューター４から受信した受信データが受信バッファー３１に格納され、この受信バッファー３１において、通常のコマンド用の読出ポインター３１Ｃとリアルタイム制御コマンド用のリアルタイム制御コマンド読出ポインター３１Ｄとをそれぞれ個別に走査させて、通常のコマンドとリアルタイム制御コマンドとを別々に検出する。このため、ホストコンピューター４からの受信データを受信バッファー３１に格納してからコマンドの検出を行うので、ホストコンピューター４から短時間に大量のデータを受信した場合であっても、全てのデータを確実に受信し、漏れなく解析を行ってコマンドを検出できる。そして、リアルタイム制御コマンドを、通常のコマンドとは別の読出ポインターを走査して検出するので、通常のコマンドの実行状態に影響されることなくリアルタイム制御コマンドを速やかに検出できる。このため、受信データが大量であってもリアルタイム制御コマンドに速やかに応答できる。
ここで、通常のコマンドの実行を停止するオフライン状態においても、リアルタイム制御コマンドを実行するようにしてもよい。この場合は、オフライン状態であってもリアルタイム制御コマンドに速やかに応答できるという利点がある。
【００３７】
また、プリンター２は、受信バッファー３１がバッファーフルとなった後に受信した受信データを格納するサブ受信バッファー３２を備え、サブ受信バッファー３２ではリアルタイム制御コマンド読出ポインター３２Ｂが走査され、リアルタイム制御コマンド検出部２１Ｂによってリアルタイム制御コマンドが検出されるので、受信データの容量が多く受信バッファー３１がバッファーフルになった場合であっても、バッファーフルになった後に受信した受信データからリアルタイム制御コマンドを検出して実行できるので、大量の受信データを受信した場合であってもリアルタイム制御コマンドに速やかに応答できる。また、バッファーフルの場合は通常、コマンドの検出や実行を行わないオフライン状態となるが、本発明の構成では、通常のコマンドとは別にリアルタイム制御コマンドを検出して実行できるので、通常のコマンドの実行状態に影響されることなく、リアルタイム制御コマンドに速やかに応答できる。
【００３８】
さらに、受信制御部２５は、受信データを、コマンド検出部２１Ａ及びリアルタイム制御コマンド検出部２１Ｂによりコマンドを検出する前に直接受信バッファー３１に格納させるので、ホストコンピューター４から短時間に大量のデータを受信した場合であっても、全てのデータを確実に受信し、漏れなく解析を行ってコマンドを検出できる。
さらにまた、受信バッファー３１では、リアルタイム制御コマンド読出ポインター３１Ｄが読出ポインター３１Ｃよりも先行して走査されるので、通常のコマンドの検出及び実行状態に影響されることなくリアルタイム制御コマンドを速やかに検出できる。
また、読出ポインター３１Ｃの読出位置をカウントするカウンター３１Ｂを備え、このカウンター３１Ｂはリアルタイム制御コマンド読出ポインター３１Ｄの走査でカウントアップされないので、通常のコマンドの検出及び実行状態に影響されることなく、かつ、通常のコマンドの検出動作に影響を与えないように、リアルタイム制御コマンドを速やかに検出できる。
【００３９】
ここで、図８を参照して、具体的なホストコンピューター４とプリンター２との接続形態を例に挙げて説明する。図８（Ａ）は、ホストコンピューター４とプリンター２とをＵＳＢ通信インターフェイスにより接続される態様を示し、図８（Ｂ）は、ホストコンピューター４とプリンター２とをＲＳ２３２Ｃシリアル通信インターフェイスにより接続される態様を示す。
【００４０】
図８（Ａ）に示す例では、ホストコンピューター４がＵＳＢコントローラー４Ａを備え、受信制御部２５はＵＳＢコントローラー２５Ａを備えており、ＵＳＢコントローラー４ＡとＵＳＢコントローラー２５Ａとの間で、ＵＳＢコネクションが確立され、データが電送される。ＵＳＢコントローラー４Ａはマスターデバイスとして機能し、ＵＳＢコントローラー２５Ａはスレーブデバイスとして機能する。
ＵＳＢコントローラー４ＡとＵＳＢコントローラー２５Ａとの間では、予め設定されたサイズのパケットとしてデータが送受信される。ＵＳＢコントローラー４Ａ、２５Ａは、ＵＳＢコントローラー４Ａから送信した１または数パケットをＵＳＢコントローラー２５Ａが受信する毎に、ＵＳＢコントローラー２５Ａから受信確認の応答を送信する制御を行うことが可能である他、ＵＳＢコントローラー２５Ａの応答なしにＵＳＢコントローラー４Ａからまとまった数のデータパケットを送信する強制送信動作を行うこともできる。
【００４１】
また、ＵＳＢコントローラー２５Ａ（転送部）は、ＵＳＢコントローラー４Ａから受信した受信データを、制御部２１の制御を介さずに受信バッファー３１やサブ受信バッファー３２に格納するＤＭＡ転送機能を備える。このＤＭＡ転送機能によって、ＵＳＢコントローラー２５Ａと受信バッファー３１やサブ受信バッファー３２との間では高速にデータを送受信でき、スループットの向上を図ることができる。さらに、受信データを漏れなく受信バッファー３１に格納して解析できる。この構成において、上述したように、受信バッファー３１に読出ポインター３１Ｃとは別にリアルタイム制御コマンド読出ポインター３１Ｄを設け、このリアルタイム制御コマンド読出ポインター３１Ｄを走査してリアルタイム制御コマンドを検出し、検出したリアルタイム制御コマンドを読出ポインター３１Ｃにより割込実行するので、リアルタイム制御コマンドに対して迅速かつ確実に応答できる。
さらに、受信バッファー３１がバッファーフルとなった場合であっても、サブ受信バッファー３２に受信データを格納するので、強制送信機能により多量のデータがまとめて送信された場合であっても、漏れなく、リアルタイム制御コマンドを受信して実行できる。
【００４２】
また、図８（Ｂ）に示す例では、ホストコンピューター４がシリアル通信コントローラー４Ｂを備え、受信制御部２５はシリアル通信コントローラー２５Ｂを備えており、シリアル通信コントローラー４Ｂ、２５Ｂ間でシリアル通信ケーブルを介してデータが送信される。シリアル通信コントローラー４Ｂ、２５Ｂ間では様々な通信プロトコルを実行可能であり、例えば、シリアル通信コントローラー４Ｂからデータを送信した後、シリアル通信コントローラー２５Ｂがデータ受信確認を送信したことを確認してから、次のデータがシリアル通信コントローラー４Ｂから送信される手順を実行してもよいし、フロー制御を行わない無手順通信とすることもできる。また、シリアル通信コントローラー２５Ｂの応答を確認せずまとまった量のデータをシリアル通信コントローラー４Ｂから送信する強制送信動作を行うこともできる。
【００４３】
また、シリアル通信コントローラー２５Ｂは、シリアル通信コントローラー４Ｂから受信した受信データを、制御部２１の制御を介さずに受信バッファー３１に格納する。この機能によって、シリアル通信コントローラー４Ｂ、２５Ａ間で強制送信が行われた場合に、応答の送受信によるオーバーヘッドを減らして高速にデータを送受信でき、スループットの向上を図ることができ、さらに、受信データを漏れなく受信バッファー３１に格納して解析できる。この構成において、上述したように、受信バッファー３１に読出ポインター３１Ｃとは別にリアルタイム制御コマンド読出ポインター３１Ｄを設け、このリアルタイム制御コマンド読出ポインター３１Ｄを走査してリアルタイム制御コマンドを検出し、検出したリアルタイム制御コマンドを読出ポインター３１Ｃにより割込実行するので、リアルタイム制御コマンドに対して迅速かつ確実に応答できる。さらに、受信バッファー３１がバッファーフルとなった場合にサブ受信バッファー３２に受信データを格納するので、強制送信機能により多量のデータがまとめて送信された場合であっても、漏れなく、リアルタイム制御コマンドを受信して実行できる。
【００４４】
また、図８（Ａ）に示したようにＵＳＢインターフェイスを介してデータを送受信する場合、ＵＳＢコントローラー２５ＡはＵＳＢコントローラー４Ａから受信した受信データの一部を保持する機能を持っているため、強制送信機能により多量のデータがまとめて送信された場合に一部のデータを保持しておき、受信バッファー３１の容量が回復してから、ＵＳＢコントローラー２５Ａが保持していた受信データを受信バッファー３１に書き込めるが、シリアル通信コントローラー２５Ｂは、このような機能を持たない。本実施形態の構成では、受信バッファー３１に加えてサブ受信バッファー３２を有するので、受信制御部２５自身が受信データを保持する機能を持っていても、持たなくても、漏れなく受信データを格納してリアルタイム制御コマンドを検出及び実行できる。
【００４５】
なお、上記実施形態は本発明を適用した一具体例を示すものであり、本発明はこれに限定されるものではない。例えば、上記実施形態においては、受信バッファー３１とサブ受信バッファー３２とが別体としてプリンター２に設けられた構成を例に挙げて説明したが、本発明はこれに限定されるものではなく、受信バッファー３１とサブ受信バッファー３２とが１つの記憶デバイス上に仮想的に分離して設けられた記憶領域であってもよい。また、図２及び図３に示す各機能部はハードウェアとソフトウェアの協働により任意に実現可能であり、特定のハードウェア構成を示唆するものではない。さらに、上記実施形態では、ＰＯＳ端末１において、レシート１０１を印刷するプリンター２に本発明を適用する場合について説明したが、本発明はこれに限定されるものではなく、独立して機能するプリンターに、各種の通信手段を介してホストコンピューター４を接続した構成が挙げられ、例えば、ＬＡＮを介してプリンター２が複数のホストコンピューター４に接続されていてもよい。また、例えば、ホストコンピューター４と受信制御部２５とが実行する通信プロトコルや通信規格は特に制限されず、任意のものを適用可能である。さらに、上記実施形態では、プリンター２自身が制御部２１、受信制御部２５、受信バッファー３１及びサブ受信バッファー３２を備えた構成を例に挙げて説明したが、例えば、制御部２１、受信制御部２５、受信バッファー３１及びサブ受信バッファー３２を備えた制御装置を、プリンター２に外部接続される別の装置としてもよい。
また、本発明を適用可能な記録装置は、コマンドに従って動作可能なプリンターであれば特に制限されず、インクジェット式プリンター、ドットインパクト式プリンター、レーザープリンター、熱昇華型プリンターのいずれであってもよく、他の方式で文字や画像を形成するプリンターであってもよいし、他の装置に組み込まれるプリンターであってもよい。また、電子媒体に記録するものでもよい。
また、本発明を適用可能なプログラムは、ホストコンピューター４に搭載されるプリンタードライバーに含むものであってもよい。
【符号の説明】
【００４６】
１…ＰＯＳ端末、２…プリンター（記録装置、記録制御装置）、４…ホストコンピューター、２０…プリントエンジン、２１…制御部、２１Ａ…コマンド検出部、２１Ｂ…リアルタイム制御コマンド検出部（即時処理コマンド検出部）、２１Ｃ…コマンド実行部、２４…ＥＥＰＲＯＭ、２４Ａ…制御プログラム（プログラム）、２５…受信制御部、２５Ａ…ＵＳＢコントローラー（転送部）、３１…受信バッファー、３１Ｃ…読出ポインター（第１の読出ポインター）、３１Ｄ…リアルタイム制御コマンド読出ポインター（第２の読出ポインター）、３２…サブ受信バッファー（即時処理コマンド用バッファー）。
【図１】
0005593682.tif 000002
【図２】
0005593682.tif 000003
【図３】
0005593682.tif 000004
【図４】
0005593682.tif 000005
【図５】
0005593682.tif 000006
【図６】
0005593682.tif 000007
【図７】
0005593682.tif 000008
【図８】
0005593682.tif 000009