(57)【要約】【課題】印刷装置に入力されるコマンドが不適切な状態となって場合であっても問題なく印刷を継続できるようにする。【解決手段】プリンター２６は、データ取得部５０及びコマンド解析部５１を備える。データ取得部５０は、印刷するオブジェクトのデータと、オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得する。コマンド解析部５１は、取得された印刷データに含まれるコマンドに基づいて、印刷データの特徴を検出し、検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを変更する。【選択図】図１
2014188804.tif 000002
【特許請求の範囲】
【請求項１】
印刷するオブジェクトのデータと、前記オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得する取得手段と、
前記取得手段により取得された印刷データに含まれるコマンドに基づいて、印刷データの特徴を検出する特徴検出手段と、
前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを変更するコマンド調整手段と、
を備えることを特徴とする印刷制御装置。
【請求項２】
前記特徴検出手段は、印刷データに含まれるコマンドの組み合わせ及びコマンドの並び順の少なくともいずれかに基づき、印刷データの特徴を検出することを特徴とする請求項１記載の印刷制御装置。
【請求項３】
前記コマンド調整手段は、前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを、比較対象の印刷データのコマンドで置き換えることを特徴とする請求項１または２記載の印刷制御装置。
【請求項４】
前記印刷データは、前記オブジェクトのデータとして文字データを含み、前記オブジェクトの印刷形態を定義するコマンドとして文字装飾を定義する装飾コマンドを含み、
前記コマンド調整手段は、前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれる装飾コマンドを変更することを特徴とする請求項１から３のいずれかに記載の印刷制御装置。
【請求項５】
印刷するオブジェクトのデータと、前記オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得する取得手段と、
前記取得手段により取得された印刷データに含まれるコマンドに基づいて、印刷データの特徴を検出する特徴検出手段と、
前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを変更するコマンド調整手段と、
印刷データの特徴が比較対象の印刷データと一致した印刷データ、または、前記コマンド調整手段によってコマンドが変更された印刷データに従って印刷を行う印刷手段と、
を備えることを特徴とする印刷装置。
【請求項６】
印刷するオブジェクトのデータと、前記オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得し、
取得した印刷データに含まれるコマンドに基づいて、印刷データの特徴を検出し、
処理対象の印刷データの特徴が、処理対象の印刷データより前に取得した比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを変更し、
印刷データの特徴が比較対象の印刷データと一致した印刷データ、または、コマンドを変更した印刷データに従って印刷を行うこと、
を特徴とする印刷装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷装置、及び、印刷装置の制御方法に関する。
【背景技術】
【０００２】
従来、他の装置から入力される印刷データに基づいて印刷する印刷装置において、入力されたデータに加えられた変更が正規の変更であるかを判定する装置が知られている（例えば、特許文献１参照）。特許文献１記載の装置は、入力されたデータに変更が加えられている場合に通知を行い、この変更が正規の変更でないと印刷指示者が入力した場合には、第三者による改ざんとして警告を発し、処理を中止する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２１６２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、印刷データに適切でないデータが含まれる要因は、人為的な改ざんに限らない。例えば、印刷データを伝送する過程で通信エラーが発生し、このエラーが原因となってデータの一部の値が変わってしまうことも考えられる。このような場合であっても、印刷を中止してデータの変更が正規の変更か否かを人が判断する必要があった。また、データが変わってしまった結果、印刷装置の動作を定義するコマンドの欠落やコマンドが無意味なデータとなってしまった場合は、印刷結果に大きな影響を与える可能性が高い。このような場合には、印刷を中止する必要があった。しかしながら、データの値が変わる毎に処理が中止されてしまう構成では、通信エラーによって一部の値が変わっただけで印刷装置を含むシステムの動作が停止してしまい、システムの可用性の低下を招くことが懸念される。
本発明は、上述した事情に鑑みてなされたものであり、印刷装置に入力されるコマンドが不適切な状態となって場合であっても問題なく印刷を継続できるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、印刷するオブジェクトのデータと、前記オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得する取得手段と、前記取得手段により取得された印刷データに含まれるコマンドに基づいて、印刷データの特徴を検出する特徴検出手段と、前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを変更するコマンド調整手段と、を備えることを特徴とする。
本発明によれば、印刷データにおけるコマンドの数や位置等を反映した特徴が、それより前に取得した印刷データと異なる場合に、印刷データのコマンドを変更する。このため、通信エラー等が原因でコマンドの欠落やコマンドが無意味なデータに変化する等のコマンドの異常が発生しても、このコマンドの異常を補正して、印刷の中断やオペレーターによる作業を要することなく正常に印刷を実行できる。
【０００６】
上記構成において、前記特徴検出手段は、印刷データに含まれるコマンドの組み合わせ及びコマンドの並び順の少なくともいずれかに基づき、印刷データの特徴を検出してもよい。
この場合、印刷データにおけるコマンドの組み合わせ、及び／またはコマンドの並び順に基づいて印刷データの特徴を検出するので、印刷形態に影響するコマンドの異常を確実に検出し、コマンドの異常を補正して望ましい印刷結果を得ることができる。
【０００７】
また、上記構成において、前記コマンド調整手段は、前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを、比較対象の印刷データのコマンドで置き換えてもよい。
この場合、コマンドの異常が発生した印刷データに対し、それより前に取得された印刷データのコマンドに置き換えを行うので、コマンドの異常を適切に補正できる。
【０００８】
また、上記構成において、前記印刷データは、前記オブジェクトのデータとして文字データを含み、前記オブジェクトの印刷形態を定義するコマンドとして文字装飾を定義する装飾コマンドを含み、前記コマンド調整手段は、前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれる装飾コマンドを変更する構成としてもよい。
この場合、印刷データに含まれるコマンドの異常により、文字装飾が意図しない状態となって印刷されることを防止し、コマンドを補正して適切な文字装飾が施された印刷結果を得ることができる。
【０００９】
また、上記目的を達成するために、本発明の印刷装置は、印刷するオブジェクトのデータと、前記オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得する取得手段と、前記取得手段により取得された印刷データに含まれるコマンドに基づいて、印刷データの特徴を検出する特徴検出手段と、前記特徴検出手段によって検出された処理対象の印刷データの特徴が、処理対象の印刷データより前に前記取得手段により取得された比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを変更するコマンド調整手段と、印刷データの特徴が比較対象の印刷データと一致した印刷データ、または、前記コマンド調整手段によってコマンドが変更された印刷データに従って印刷を行う印刷手段と、を備えることを特徴とする。
本発明によれば、印刷データにおけるコマンドの数や位置等を反映した特徴が、それより前に取得した印刷データと異なる場合に、印刷データのコマンドを変更する。このため、通信エラー等が原因でコマンドの欠落やコマンドが無意味なデータに変化する等のコマンドの異常が発生しても、このコマンドの異常を補正して、印刷の中断やオペレーターによる作業を要することなく正常に印刷を実行できる。
【００１０】
また、上記目的を達成するために、本発明の印刷装置の制御方法は、印刷するオブジェクトのデータと、前記オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得し、取得した印刷データに含まれるコマンドに基づいて、印刷データの特徴を検出し、処理対象の印刷データの特徴が、処理対象の印刷データより前に取得した比較対象の印刷データの特徴と異なる場合に、処理対象の印刷データに含まれるコマンドを変更し、印刷データの特徴が比較対象の印刷データと一致した印刷データ、または、コマンドを変更した印刷データに従って印刷を行うこと、を特徴とする。
本発明によれば、印刷データにおけるコマンドの数や位置等を反映した特徴が、それより前に取得した印刷データと異なる場合に、印刷データのコマンドを変更する。このため、通信エラー等が原因でコマンドの欠落やコマンドが無意味なデータに変化する等のコマンドの異常が発生しても、このコマンドの異常を補正して、印刷の中断やオペレーターによる作業を要することなく正常に印刷を実行できる。
【００１１】
また、本発明を、上記印刷装置と、上記印刷装置に対して印刷するオブジェクトのデータと、パラメーターによってオブジェクトの印刷形態を定義するコマンドとを出力するホストコンピューターとを備えた印刷システムとして構成してもよい。
【発明の効果】
【００１２】
本発明によれば、通信エラー等が原因でオブジェクトの印刷形態を定義するコマンドの異常が発生しても、コマンドを適切に補正して、印刷の中断やオペレーターによる作業を要することなく正常に印刷を実行できる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るＰＯＳシステムの機能的構成を示すブロック図である。
【図２】ＰＯＳシステムが印刷するレシートと印刷データの例を示す図である。
【図３】ＰＯＳシステムで印刷されるレシートの別の例を示す図である。
【図４】プリンターの動作を示すフローチャートである。
【図５】プリンターの動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明を適用した実施形態に係るＰＯＳシステム１０の機能的構成を示すブロック図である。
ＰＯＳシステム１０（印刷システム）は、スーパーマーケットやコンビニエンスストア等の店舗に適用され、店舗に来店した顧客の代金の支払いに応じてレシートを発行するシステムである。ＰＯＳシステム１０は、ホストコンピューター１１と、プリンター２６（印刷装置）とを備えている。ホストコンピューター１１は、ＰＯＳレジスター端末として機能し、商品のバーコードを読み取るバーコードリーダー、現金を収容するキャッシュドロワー、クレジットカードを読み取るカードリーダー等を備えているが、ここでは図示しない。
【００１５】
また、ホストコンピューター１１は、通信回線を介して図示しないＰＯＳサーバーに接続されている。ＰＯＳサーバーは、ＰＯＳシステム１０が接地された店舗で販売している商品の商品コード、名称、金額等のレシートの発行のために必要となるデータをデータベースに記憶する。ホストコンピューター１１は、商品販売登録処理を実行する際に、必要に応じてＰＯＳサーバーのデータベースを参照して、データをＰＯＳサーバーから取得する。
【００１６】
ホストコンピューター１１は、ホスト側制御部２８と、ホスト側表示部２９と、ホスト側入力部３０と、Ｉ／Ｆ（インターフェイス）３１と、ホスト側記憶部３２と、を備えている。
ホスト側制御部２８は、ホストコンピューター１１の各部を中枢的に制御するものであり、ＣＰＵや、ＲＯＭ、ＲＡＭ、その他の周辺回路等を備えている。
ホスト側表示部２９は、液晶表示パネル等の表示パネルを備え、ホスト側制御部２８の制御に従って、表示パネルに各種情報を表示する。
ホスト側入力部３０は、キーボードや、マウス、バーコードリーダー、カードリーダー等の入力デバイスに接続され、これら入力デバイスの出力信号をホスト側制御部２８に出力する。
Ｉ／Ｆ３１（Ｉ／Ｆ）は、ホスト側制御部２８の制御に従って、プリンター２６との間で通信規格に準拠した通信を行う。
ホスト側記憶部３２は、ＥＥＰＲＯＭ等の不揮発性メモリーを備え、上述したプリンタードライバーや、その他のプログラム、各種データを書き換え可能に記憶する。
【００１７】
プリンター２６は、印刷媒体としての感熱ロール紙を搬送し、感熱ロール紙の記録面に熱を与えて文字や画像を印刷するサーマルプリンターである。プリンター２６は、印刷後の感熱ロール紙をカッターユニット３８によって所定の位置で切断して、レシートを発行する。プリンター２６は、プリンター側制御部４０と、プリンター側表示部４１と、プリンター側入力部４２と、プリントエンジン４３と、Ｉ／Ｆ（インターフェイス）４５と、を備える。プリンター２６の制御機能は印刷制御装置に対応する。
プリンター側制御部４０は、プリンター２６を中枢的に制御するものであり、ＣＰＵやＲＯＭ、ＲＡＭ、その他の周辺回路等を備える。プリンター側表示部４１は、プリンター２６の動作状態等の各種情報を表示する液晶表示パネル等の表示パネルを備え、プリンター側制御部４０の制御に従って、当該表示パネルに各種情報を表示する。また、プリンター側表示部４１は、ＬＥＤインジケーターを備えている。このＬＥＤインジケーターがプリンター側制御部４０の制御によって点灯、消灯または点滅して、プリンター２６の状態を報知する。プリンター側入力部４２は、プリンター２６に設けられた操作スイッチに接続される。プリンター側入力部４２は操作スイッチに対する操作を検出し、検出した操作を示す操作信号をプリンター側制御部４０に出力する。
プリンター側制御部４０は、後述するファームウェアを実行することにより、データ取得部５０、コマンド解析部５１（特徴検出手段、コマンド調整手段）、及び印刷制御部５５として機能する。これらの各部については後述する。
【００１８】
プリントエンジン４３は、プリンター側制御部４０の制御に従って、サーマルヘッド３７、搬送モーター（図示略）、カッター駆動モーター（図示略）を動作させて、ロール紙に文字や画像を印刷し、レシートを発行する。また、プリントエンジン４３は、印刷動作中に用紙端センサーや用紙残量センサー等の各種センサーの検出値を監視する。本実施形態では、プリントエンジン４３と印刷制御部５５とが協働して印刷手段として機能する。
【００１９】
Ｉ／Ｆ４５は、プリンター側制御部４０の制御に従って、プリンター２６との間で通信規格に準拠した通信を行う。本実施形態では、プリンター側制御部４０と、Ｉ／Ｆ４５とが協働して取得手段として機能する。
【００２０】
プリンター２６は、データを記憶する受信バッファー６１、メモリー６２、及び記憶部６３（記憶手段）を備える。
受信バッファー６１は、ホストコンピューター１１から送信されたコマンドやデータを、受信順に、一時的に記憶する揮発性メモリーである。メモリー６２は、プリンター側制御部４０が処理するコマンドやデータを一時的に記憶する揮発性メモリーである。また、記憶部６３は、プログラムやデータを不揮発的に記憶する。記憶部６３は、プリンター側制御部４０が実行するプリンター２６のファームウェアを記憶しており、プリンター側制御部４０は記憶部６３からファームウェアを読み出して実行することにより、プリンター２６の各部を制御する。また、記憶部６３は、ホストコンピューター１１から送信されたレシートの印刷データである参照印刷データ６３Ａを記憶する。参照印刷データ６３Ａについては後述する。
【００２１】
プリンター２６は、ニアエンドセンサー５６を備えている。ニアエンドセンサー５６は、プリンター２６に収容されたロール紙について、ロール紙の残量が所定の閾値を下回ったこと（以下、「ロール紙のニアエンド」という。）を検出する。例えば、ニアエンドセンサー５６は、ロール紙の残量が所定の閾値を上回っている間はオフとなり、下回るとオンとなる透過型の光センサーである。プリンター２６は、カッター位置検出センサー５７を備えている。カッター位置検出センサー５７は、カッターユニット３８における可動刃が待機位置に位置しているか否かを検出する。カッター位置検出センサー５７は、例えば、可動刃が当該待機位置に位置している場合にオフ、位置していない場合にオンとなる透過型の光センサーである。
【００２２】
図２は、ＰＯＳシステム１０が印刷するレシート及び印刷データの例を示す図である。図２（Ａ）は印刷データＤの例を示し、図２（Ｂ）は図２（Ａ）の印刷データＤに従って印刷されるレシートＲの例を示す。
図２（Ａ）に示す印刷データＤは、印刷される文字のデータ（テキストデータ）と、印刷形態を指定するコマンドとによって構成され、コマンドはパラメーターを伴っている。印刷データＤは、複数のブロックＤ１〜Ｄ３で構成される。この図２（Ａ）及び（Ｂ）には、印刷されるオブジェクトとして文字を含む例を示すが、印刷されるオブジェクトに画像を含ませることも可能である。
【００２３】
本実施形態のＰＯＳシステム１０で使用されるコマンドは、大別して、レシートの形態（形）に関するコマンド、印刷するデータ、及び、文字装飾に関するコマンドがある。
レシートの印刷形態に関するコマンドとしては、例えば、「ＥＳＣ  “ａ”」コマンド、「ＥＳＣ  “＄”」コマンド、「ＧＳ  “Ｖ”  “Ａ”  ０」コマンドが挙げられる。「ＥＳＣ  “ａ”」コマンドは、文字の印刷位置の右揃え、左揃え、中央揃えを指定する。「ＥＳＣ  “＄”」コマンドは、印刷位置を絶対位置で指定する。また、「ＬＦ」コマンドは改行を指示し、「ＧＳ  “Ｖ”  “Ａ”  ０」コマンドは紙送りとカッターユニット３８によるカットを指示する。
印刷する文字のデータは、ＡＳＣＩＩコードを示す「“”」が付されて送信される。また、文字装飾を指定するコマンドとしては、例えば、強調文字印刷、縦倍印刷、横倍印刷を指定する「ＥＳＣ  “！”」コマンド、白黒反転を指定する「ＧＳ  “Ｂ”」コマンドが挙げられる。
【００２４】
コマンド「ＥＳＣ  “ａ”  ｎ」（ｎはパラメーターを示す）は、パラメーターにより文字の印刷位置の右揃え、左揃え、中央揃えを指定する。例えば、コマンド「ＥＳＣ  “ａ”  １」は、印刷位置の中央揃えを指定する。コマンド「ＥＳＣ  “ａ”  ｎ」のパラメーターの範囲は、プリンター２６における印刷位置の指定方法の数により決定される。本実施形態では、右揃え、左揃え、中央揃えの３通りに対応して、パラメーターとして設定可能な値の適正範囲は０〜２である。
コマンド「ＥＳＣ  “＄”  ｎ」（ｎはパラメーターを示す）は、パラメーターにより文字の印刷位置を絶対位置で指定する。例えば、コマンド「ＥＳＣ  “＄”  ０ｘＢ８  ０ｘ０１」は、桁方向（図中横方向）の印刷開始位置を０ｘＢ８  ０ｘ０１の位置に指定する。コマンド「ＥＳＣ  “＄”  ｎ」のパラメーターの範囲は、プリンター２６におけるロール紙のサイズ、解像度等により決定される。
コマンド「ＥＳＣ  “！”  ｎ」（ｎはパラメーターを示す）はパラメーターにより強調文字印刷、縦倍印刷、横倍印刷の有無を指示する。例えば、コマンド「ＥＳＣ  “！”  ５６」は、縦５倍、横６倍の文字サイズを指定する。また、コマンド「ＥＳＣ  “！”  ０」は、強調文字印刷、縦倍、横倍の設定の解除を指示する。コマンド「ＥＳＣ  “！”  ｎ」のパラメーターの範囲は、プリンター２６で印刷可能な文字サイズにより決定される。本実施形態では、パラメーターとして設定可能な値の適正範囲は０〜９９である。
コマンド「ＧＳ  “Ｂ”  ｎ」（ｎはパラメーターを示す）はパラメーターにより文字の白黒反転の実行と解除を指示する。例えば、コマンド「ＧＳ  “Ｂ”  １」は、白黒反転の実行を設定し、コマンド「ＧＳ  “Ｂ”  ０」は白黒反転の設定の解除を指示する。コマンド「ＧＳ  “Ｂ”  ｎ」のパラメーターの範囲は、白黒反転の実行／解除の２通りあればよいので、本実施形態ではパラメーターとして設定可能な値の適正範囲は０〜１である。
なお、これらのコマンドの種類及びパラメーターはあくまで一例を示すものであって、プリンター２６の仕様に応じて任意に変更可能である。
【００２５】
図２（Ａ）の印刷データＤに従ってプリントエンジン４３が印刷出力するレシートＲは、図２（Ｂ）に示す形態となる。レシートＲの上部には、コマンド「“ＡＡＡ  Ｍａｒｔ”」により指定された文字「ＡＡＡ  Ｍａｒｔ」が印刷される。この文字の文字サイズはコマンド「ＥＳＣ  “！”  ５６」により設定された縦５倍、横６倍であり、コマンド「ＧＳ  “Ｂ”  １」に従って白黒反転されている。また、文字「ＡＡＡ  Ｍａｒｔ」の印刷位置は、コマンド「ＥＳＣ  “ａ”  １」に従って中央揃えになっている。
【００２６】
このように、プリンター２６は、ホストコンピューター１１が送信する印刷データＤに含まれるコマンドとパラメーターにより指定された印刷形態で、印刷データＤに含まれるデータを印刷する。
また、コマンド解析部５１は、図２（Ａ）に示す印刷データＤを複数のブロックＤ１〜Ｄ４に分割する。図２（Ａ）の例では、図２（Ｂ）のレシートＲの上部に位置する店舗名のロゴの印刷に関するデータを、ブロックＤ１とする。また、店舗の住所、電話番号、レシートＲの発行日時の印刷に関するデータを、ブロックＤ２とする。販売された商品名、商品区分、各商品の価格、合計金額、税額等の印刷に関するデータを、ブロックＤ３とする。また、レシートＲの紙送りとカットを指示するコマンドを含むデータを、ブロックＤ４とする。
【００２７】
ところで、一般に、一つのＰＯＳシステムで印刷されるレシートは同じ形態である。ブロックＤ１は店舗名のロゴのデータであるから一つの店舗内では全てのレシートＲに共通である。ブロックＤ２は、レシートＲの発行日時のデータを除き、一つの店舗内では全てのレシートＲに共通である。ブロックＤ４はレシートＲのカットを指示するコマンドであり、全ての印刷データＤに含まれる。
また、ブロックＤ３は、販売された商品名、商品の価格、合計金額、税額、合計支払金額を含むため、データはレシートＲ毎に異なる。しかしながら、文字サイズ、印刷位置（右揃え、左揃え）、文字装飾等の印刷形態は共通である。
従って、ＰＯＳシステム１０が印刷する複数のレシートＲの印刷データＤは、同じようにブロックに分割することができる。また、複数の印刷データＤにおいて対応するブロック間では、少なくとも印刷形態に関するコマンドは共通している。ここで、印刷形態に関するコマンドとは、例えば、文字サイズ、印刷位置（右揃え、左揃え）、文字装飾に関するコマンドを含む。文字装飾に関するコマンドとは、例えば、強調、拡大(縦倍角、横倍角)の指定コマンド及びその解除コマンドを含む。この他、例えば白黒反転を指定するコマンド及びその解除コマンド、太字印刷の指定コマンド及びその解除コマンド、文字に対するアンダーバー付加を指示するコマンド及びその解除コマンド等が文字装飾に関するコマンドに含まれる。
【００２８】
つまり、ある印刷データＤに含まれる印刷形態に関するコマンドが、他の印刷データＤとは異なっている場合、コマンドが正常でない可能性がある。例えば、ホストコンピューター１１からプリンター２６に伝送される過程で、通信エラーによりデータの欠落や変換が発生して、コマンドを構成するデータが変化した可能性がある。この場合、コマンドが別のコマンドに変わったり、コマンドのパラメーターの値が変化したり、コマンドとして認識されない無意味なデータ列となってしまったりする。
【００２９】
そこで、コマンド解析部５１は、データ取得部５０により取得された印刷データＤを、それ以前に取得された印刷データＤである参照印刷データ６３Ａ（比較対象の印刷データ）と、含まれるコマンドのパターンを比較する。コマンドのパターンとは、少なくとも印刷形態に関するコマンドについて、コマンドの種類、コマンドの並び順、コマンドのパラメーターの値から求められる情報である。
例えば、図２（Ａ）の印刷データＤのブロックＤ１には、印刷形態に関するコマンドとして次の６つのコマンドが含まれる。
・印刷位置を指定するコマンド「ＥＳＣ  "ａ"  １」。
・強調、拡大(縦倍角、横倍角)を指定するコマンド「ＥＳＣ  “！”  ｎ」（パラメーターｎの値は「５６」）。
・白黒反転を指定するコマンド「ＧＳ  “Ｂ”  １」。
・白黒反転の解除を指定するコマンド「ＧＳ  “Ｂ”  ０」。
・強調、拡大(縦倍角、横倍角)の解除を指定するコマンド「ＥＳＣ  “！”  ０」。
・印刷位置の左揃えを指定するコマンド「ＥＳＣ  "ａ"  ０」。
コマンド解析部５１は、ブロックＤ１のコマンドのパターンとして、上記６つのコマンドの種類と並び順を検出する。この場合に検出されるコマンドのパターンは、［ＥＳＣ  "ａ"、 ＥＳＣ  “！”、ＧＳ  “Ｂ”、ＧＳ  “Ｂ”、ＥＳＣ  “！”、ＥＳＣ  "ａ"］と表記できる。また、コマンド解析部５１は、上記６つのコマンドの種類と数をパターンとして検出してもよい。この場合に検出されるコマンドのパターンは、［ＥＳＣ  "ａ"が２、ＥＳＣ  “！”が２、ＧＳ  “Ｂ”が２］となる。或いは、コマンド解析部５１は、上記６つのコマンドの種類のみをパターンとして検出してもよい。この場合に検出されるコマンドのパターンは、［ＥＳＣ  "ａ"、ＥＳＣ  “！”、ＧＳ  “Ｂ”］となる。また、コマンド解析部５１は、これらのパターンを数値化してもよい。例えばコマンドの種類と並び順、コマンドの種類と数、或いはコマンドの種類からなるパターン毎に、番号や符号が割り当てられていてもよい。
【００３０】
コマンドのパターンを、印刷形態に関するコマンドに限定すれば、全てのレシートＲの印刷データＤにおいてブロックＤ１、Ｄ２のパターンは同一である。また、印刷形態に関するコマンドのうち、文字装飾コマンドの種類に限定してコマンドのパターンを求めれば、ブロックＤ３のパターンは全てのレシートＲの印刷データＤで共通である。
【００３１】
図３（Ａ）及び（Ｂ）は、ＰＯＳシステム１０が印刷するレシートの別の例を示す図である。図３（Ｂ）に示すレシートＲ２は、図３（Ａ）に示すレシートＲ１の次に印刷されるレシートの例である。
通常、一つのＰＯＳシステムで印刷されるレシートは同じ形態である。
レシートＲ１は、店舗名のロゴが印刷された領域Ｒ１１、店舗の住所、電話番号、レシートＲ１の発行日時が印刷された領域Ｒ１２、及び、販売された商品名、商品の価格、合計金額、税額、合計支払金額が印刷された領域Ｒ１３に分割できる。これらの領域は、上述したブロックＤ１〜Ｄ３に対応している。
一方、レシートＲ２も同様に、店舗名のロゴが印刷された領域Ｒ２１、店舗の住所、電話番号、レシートＲ１の発行日時が印刷された領域Ｒ２２、及び、販売された商品名、商品の価格、合計金額、税額、合計支払金額が印刷された領域Ｒ２３に分割できる。これらの領域は、上述したブロックＤ１〜Ｄ３に対応している。
【００３２】
図３（Ｂ）には、レシートＲ２がレシートＲ１と異なる部分を下線で示す。レシートＲ１とレシートＲ２とを比較すると、領域Ｒ１１と領域Ｒ２１は共通である。また、領域Ｒ１２と領域Ｒ２２とに含まれる日時が相違するが、上記のように印刷形態は共通である。領域Ｒ１３と領域Ｒ２３では、商品名、金額、行数が異なっているが、印刷形態は共通である。
【００３３】
このように、ＰＯＳシステム１０が印刷するレシートＲの印刷データＤをブロックに分割した場合、どの印刷データＤも、同じようにブロックに分割できると期待してよい。つまり、処理対象のコマンドを含む印刷データＤと、参照印刷データ６３Ａとして記憶された印刷データとが、同じように複数のブロックに分割されていると期待できる。
そして、複数の印刷データＤのブロック毎に、コマンドのパターンを比較し、コマンドのパターンが異なる印刷データＤがあれば、コマンドの異常があったものといえる。従って、コマンドのパターンに基づいてコマンドの異常を検出できる。なお、コマンド解析部５１がコマンドのパターンを求める際に、コマンドの種類だけでなくコマンドが伴うパラメーターの値をパターンに反映させることもできる。パラメーターが反映されたパターンを利用すれば、パターンが詳細になるため、より厳密にコマンドの異常を検出できる。一方、パラメーターが反映されていないパターンも、コマンドの異常を検出する精度は実用的なレベルである。また、汎用性が高いので、様々なレシートＲの異常を検出できるとともに、誤検出を抑制できる。
【００３４】
図４は、ＰＯＳシステム１０の動作を示すフローチャートであり、詳細にはプリンター２６の動作を示す。
プリンター側制御部４０が備えるデータ取得部５０は、ホストコンピューター１１から印刷データが送信されるまで待機する（ステップＳ１０１）。ホストコンピューター１１から印刷データが送信されると、この印刷データはＩ／Ｆ４５により受信されて受信バッファー６１に記憶される。データ取得部５０は、受信バッファー６１に印刷データが記憶されたことを検出すると（ステップＳ１０１；Ｙｅｓ）、受信バッファー６１から印刷データＤを読み出してメモリー６２に格納する（ステップＳ１０２）。
【００３５】
コマンド解析部５１は、メモリー６２に格納された印刷データに含まれるコマンドを検索し、この印刷データを複数のブロックに分割する（ステップＳ１０３）。このステップＳ１０３の処理は後述する。
次に、コマンド解析部５１は、例えば印刷データの先頭から、一つのブロックを処理対象のブロックとして選択する（ステップＳ１０４）。コマンド解析部５１は、選択したブロックに含まれる印刷形態に関するコマンドを抽出する（ステップＳ１０５）。本実施形態では、印刷形態に関するコマンドとして、特に文字装飾コマンドを抽出する。続いて、コマンド解析部５１は、記憶部６３に記憶された参照印刷データ６３Ａを読み出し、この参照印刷データ６３Ａにおいて処理対象のブロックに対応するブロックから、印刷形態に関するコマンドのうち文字装飾コマンドを抽出する（ステップＳ１０６）。
【００３６】
参照印刷データ６３Ａは、以前にプリンター２６が受信して印刷した印刷データである。プリンター側制御部４０は、印刷制御部５５が印刷データに従ってレシートを印刷した場合に、この印刷データを参照印刷データ６３Ａとして記憶させる。参照印刷データ６３Ａは、例えば、過去に印刷した印刷データのうち最も新しい印刷データである。また、参照印刷データ６３Ａとして複数の印刷データを記憶してもよい。この場合、プリンター側制御部４０は、印刷を実行した順に複数の参照印刷データ６３Ａを記憶させる。この場合には、コマンド解析部５１は印刷を実行した順に複数の参照印刷データ６３Ａを読み出してもよいし、全ての参照印刷データ６３Ａをまとめて読み出してもよい。プリンター側制御部４０は、印刷データに基づいて印刷制御部５５が印刷を実行する毎に、参照印刷データ６３Ａを上書きする。
【００３７】
コマンド解析部５１は、処理対象のブロック及び参照印刷データ６３Ａのブロックについて、コマンドのパターンを検出する（ステップＳ１０７）。ここで、コマンド解析部５１は、ステップＳ１０５で抽出した文字装飾コマンドに基づき処理対象のブロックのコマンドのパターンを求める。さらに、コマンド解析部５１は、ステップＳ１０６で抽出した文字装飾コマンドに基づき、参照印刷データ６３Ａのブロックのコマンドのパターンを求める。
そして、コマンド解析部５１は、処理対象のブロックのコマンドのパターンと、参照印刷データ６３Ａのコマンドのパターンとを比較し、一致するか否かを判別する（ステップＳ１０８）。
【００３８】
コマンドのパターンが一致しない場合（ステップＳ１０８；Ｎｏ）、コマンド解析部５１は、処理対象のブロックに含まれる文字装飾コマンドを、参照印刷データ６３Ａの文字装飾コマンドに置き換える処理を行う（ステップＳ１０９）。すなわち、ステップＳ１０５で抽出した文字装飾コマンドを、ステップＳ１０６で抽出した文字装飾コマンドに置き換えて、印刷データＤを更新する。
【００３９】
その後、プリンター側制御部４０は、ステップＳ１０３で分割した全てのブロックが、処理対象のブロックとして選択され処理されたか否かを判別する（ステップＳ１１０）。
また、コマンドのパターンが一致した場合（ステップＳ１０８；Ｙｅｓ）、プリンター側制御部４０はステップＳ１０９の処理を行わずにステップＳ１１０に移行する。
【００４０】
未処理のブロックがある場合（ステップＳ１１０；Ｎｏ）、プリンター側制御部４０はステップＳ１０４に移行して別のブロックを選択する。また、全てのブロックが処理済みの場合（ステップＳ１１０；Ｙｅｓ）、印刷制御部５５は、正しいコマンドを含む印刷データに基づいて、プリントエンジン４３により印刷する（ステップＳ１１１）。すなわち、印刷制御部５５は、ステップＳ１０９でコマンドが置き換えられた印刷データ、または、ステップＳ１０８でコマンドのパターンが参照印刷データ６３Ａと一致した印刷データに基づき印刷を行う。また、プリンター側制御部４０は、印刷制御部５５が印刷に用いた印刷データを、参照印刷データ６３Ａとして新たに記憶させる。
【００４１】
図５は、ＰＯＳシステム１０の動作を示すフローチャートであり、詳細にはプリンター２６が印刷データをブロックに分割する動作を示す。この図５の動作は、図４のステップＳ１０３に相当する。
コマンド解析部５１は、印刷データにおける処理開始位置を決定する（ステップＳ１２１）。通常、処理開始位置は印刷データの先頭である。コマンド解析部５１は、ステップＳ１２１で決定した処理開始位置から順に、ブロックの区切りとなるデータ、コマンドまたはコマンドの組み合わせを検出する（ステップＳ１２２）。例えば、オブジェクトのデータを伴う「“”」と改行コマンド「ＬＦ」との組み合わせや、紙送りとカットを指示するコマンド「ＧＳ  “Ｖ”  “Ａ”  ０」を検出する。ステップＳ１２２で、コマンド解析部５１は印刷データの末尾までコマンドの検出を行う。コマンド解析部５１は、ステップＳ１２２で検出したコマンドをブロックの境界として、ブロックを区切る（ステップＳ１２３）。ここで、コマンド解析部５１は、ステップＳ１２２で複数のコマンドを検出した場合、各コマンドの後をブロックの境界とする。なお、このステップＳ１２３で印刷データが分割されない場合、すなわちステップＳ１２２でコマンドが検出されなかった場合には、エラーとして本処理を終了してもよい。
【００４２】
次に、コマンド解析部５１は、ステップＳ１２３で分割したブロックのうち処理対象のブロックを選択する（ステップＳ１２４）。コマンド解析部５１は、例えば印刷データの先頭のブロックを処理対象のブロックとして選択する。
コマンド解析部５１は、処理対象のブロック、及び処理対象のブロックの次に位置するブロックの各々について、文字装飾コマンドに基づきコマンドのパターンを検出する（ステップＳ１２５）。この処理は、図４のステップＳ１０５〜Ｓ１０７と同様であるが、例えばパラメーターを反映させず文字装飾コマンドの種類のみに基づいてパターンを求めてもよい。この場合にはパターンの汎用性・普遍性が高いので、印刷データにおけるブロックの区切りを合理的な数に抑えることができる。つまり、印刷データが多数の細かいブロックに分割されてしまう事態を防止できる。
そして、コマンド解析部５１は、処理対象のブロックのコマンドのパターンと次のブロックのコマンドのパターンとを比較し、一致するか否かを判別する（ステップＳ１２６）。
【００４３】
コマンドのパターンが一致した場合（ステップＳ１２６；Ｙｅｓ）、コマンド解析部５１は、処理対象のブロックと次のブロックとをつなげて一つのブロックとする（ステップＳ１２７）。これにより、ステップＳ１２５〜Ｓ１２６で次のブロックとして処理されたブロックは、処理対象のブロックに吸収され統合される。
その後、コマンド解析部５１は、ステップＳ１２３で分割された全てのブロックが処理対象のブロックとして選択されたか否かを判別する（ステップＳ１２８）。より具体的には、ステップＳ１２８に移行した時点で選択されている処理対象のブロックが、印刷データの最後のブロックである場合に、全てのブロックが処理されたと判定する。
処理対象のブロックとして選択されていないブロックがある場合（ステップＳ１２８；Ｎｏ）、コマンド解析部５１はステップＳ１２５に戻る。その後、コマンド解析部５１は、現在選択中の処理対象のブロックと、次のブロックとに対してコマンドのパターンを求める処理を行う。
また、全てのブロックが処理済みの場合（ステップＳ１２８；Ｙｅｓ）、コマンド解析部５１は、処理中の印刷データにおけるブロックの区切りを確定して、図４のステップＳ１０４に移行する。
【００４４】
一方、コマンドのパターンが一致しない場合（ステップＳ１２６；Ｎｏ）、コマンド解析部５１は、処理対象のブロックと次のブロックとの区切りを確定する（ステップＳ１２９）。そして、コマンド解析部５１は、次のブロックとして処理していたブロックを処理対象のブロックとして設定し（ステップＳ１３０）、ステップＳ１２８に移行する。
【００４５】
以上説明したように、本発明を適用したＰＯＳシステム１０が備えるプリンター２６は、プリンター側制御部４０の機能として実現されるデータ取得部５０と、コマンド解析部５１とを備える。データ取得部５０は、Ｉ／Ｆ４５を制御して、印刷するオブジェクトのデータと、オブジェクトの印刷形態を定義するコマンドとを含む印刷データを取得する。コマンド解析部５１は、印刷データの特徴としてコマンドのパターンを検出する。また、コマンド解析部５１は、印刷データのコマンドのパターンが、処理対象の印刷データより前に取得された参照印刷データ６３Ａのコマンドのパターンと異なる場合に、処理対象の印刷データに含まれるコマンドを変更する。つまり、印刷データにおけるコマンドのパターンが、それより前に取得した印刷データと異なる場合に、印刷データのコマンドを変更する。このため、通信エラー等が原因でコマンドの欠落やコマンドが無意味なデータに変化する等のコマンドの異常が発生しても、このコマンドの異常を正確に検出することができる。そして、異常が生じたコマンドを補正して、印刷の中断やオペレーターによる作業を要することなく正常に印刷を実行できる。
【００４６】
コマンド解析部５１は、印刷データに含まれるコマンドの組み合わせ及びコマンドの並び順の少なくともいずれかに基づき、コマンドのパターンを検出する。このため、印刷形態に影響するコマンドの異常を確実に検出し、コマンドの異常を補正して望ましい印刷結果を得ることができる。
さらに、コマンド解析部５１は、処理対象の印刷データのパターンが、参照印刷データ６３Ａのパターンと異なる場合に、処理対象の印刷データに含まれるコマンドを参照印刷データ６３Ａのコマンドで置き換える。このため、コマンドの異常が発生した印刷データに対し、それより前に取得された印刷データのコマンドに置き換えを行うので、コマンドの異常を適切に補正できる。
さらに、コマンド解析部５１は、文字装飾コマンドに基づいて印刷データのコマンドのパターンを求め、このパターンを参照印刷データ６３Ａのパターンと比較する。このため、印刷データに含まれるコマンドの異常によって、文字装飾が意図しない状態となって印刷されることを防止し、適切な文字装飾が施された印刷結果を得ることができる。
また、コマンド解析部５１は、印刷データを複数のブロックに分割し、ブロック毎に、処理対象の印刷データのパターンと参照印刷データ６３Ａのパターンとを比較する。このため、印刷データＤにおけるコマンドの異常をより確実に、かつ速やかに検出できる。
【００４７】
なお、上記実施形態では、パラメーターの適正範囲は、プリンター２６の仕様に応じてコマンドの種類毎に定められ、記憶部６３に記憶されているものとして説明したが、本発明はこの例に限定されない。レシートＲにおけるコマンドの位置や機能に対応して、パラメーターの適正な値の範囲が定められてもよい。
さらに、上記実施形態では、適正範囲内の値でないパラメーターを、同種のコマンドのパラメーターを用いて変更する例を説明した。この実施形態では、同種のコマンドとは、コマンドを用いて設定可能な印刷形態のうち、同じ印刷形態を設定するコマンドである。より好ましくは、同一のコマンドである。例えば、コマンド「ＥＳＣ  “！”  ｐ」のパラメーターｐが適正範囲内の値でない場合、コマンド解析部５１は、パラメーターｐを、参照印刷データ６３Ａ中のコマンド「ＥＳＣ  “！”  ｐ´」のパラメーターｐ´に変更する。本発明はこの例に限定されず、処理対象のコマンドと同種のコマンドを、レシートＲにおけるコマンドの位置や機能の共通性をも加味して選択し、パラメーターの値の変更に用いてもよい。以下、変形例として説明する。
【００４８】
なお、上記実施形態は本発明の一実施態様を示すものであり、本発明の範囲内で任意に変形および応用が可能である。
例えば、上述した実施形態及び変形例では、店舗に設置されるＰＯＳシステム１０と、このＰＯＳシステム１０においてレシートを印刷するプリンター２６を例に挙げて説明したが、本発明はこれに限定されるものではない。コマンドを含む印刷データに基づいて印刷を行うプリンターであれば、本発明を適用できる。また、プリンターはサーマルプリンターに限定されず、インクジェット式プリンター、ドットインパクト式プリンター、レーザープリンターにおいても勿論適用可能である。
また、図１に示す各機能ブロックはハードウェアとソフトウェアの協働により任意に実現可能であり、特定のハードウェア構成を示唆するものではない。
また例えば、プリンター２６のプリンター側制御部４０の機能を、プリンター２６に外部接続される別の装置に持たせるようにしてもよい。また、外部接続される記憶媒体に記憶させたプログラムを実行することにより、図３で示した各フローチャートの各ステップを実行するようにしてもよい。その他の細部構成についても任意に変更可能である。
【符号の説明】
【００４９】
１０…ＰＯＳシステム、１１…ホストコンピューター、２６…プリンター（印刷装置）、４０…プリンター側制御部、４３…プリントエンジン（印刷手段）、５０…データ取得部（取得手段）、５１…コマンド解析部（特徴検出手段、コマンド調整手段）、５５…印刷制御部（印刷手段）、６３…記憶部（記憶手段）、６３Ａ…参照印刷データ、Ｄ…印刷データ。
【図１】
2014188804.tif 000003
【図２】
2014188804.tif 000004
【図３】
2014188804.tif 000005
【図４】
2014188804.tif 000006
【図５】
2014188804.tif 000007