(57)【要約】【課題】処理効率の低減を抑制しつつ、バーコードを印刷する。【解決手段】プリンター１１の制御部３０は、バーコードの画像データと画像バッファーＢの同一行に展開されたフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄し、バーコードの画像データを画像バッファーＢに展開し、展開したバーコードの画像データに基づいてバーコードの画像を印刷部３３に印刷させる。【選択図】図１
2015016599.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体に印刷する印刷部と、
画像バッファーに展開した画像データに基づいて、前記印刷部に印刷を実行させる制御部と、を備え、
前記制御部は、
バーコードの画像データと前記画像バッファーの同一行に展開されるフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄して、バーコードの画像データを前記画像バッファーに展開し、展開したバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させることを特徴とする印刷装置。
【請求項２】
前記制御部は、
スペース文字により構成された文字列のフォントデータを破棄して、前記画像バッファーにバーコードの画像データを展開する場合、破棄したフォントデータが展開されていた位置を反映した位置に、バーコードの画像データを展開することを特徴とする請求項１に記載の印刷装置。
【請求項３】
制御装置に接続可能に構成され、
前記制御部は、
前記制御装置から、スペース文字により構成された文字列のフォントデータの展開を指示するコマンドを受信し、このコマンドに基づいて前記画像バッファーにスペース文字により構成された文字列のフォントデータを展開した後、
前記制御装置から、バーコードの画像データの展開を指示するコマンドを受信した場合、前記画像バッファーにおいて、展開したフォントデータに続いて、バーコードの画像データを展開すべき位置を示す位置情報を記憶した後、前記画像バッファーに展開したフォントデータを破棄し、記憶した前記位置情報が示す位置にバーコードの画像データを展開することを特徴とする請求項２に記載の印刷装置。
【請求項４】
前記制御部は、
文字列のフォントデータと、バーコードの画像データとが前記画像バッファーの同一行に展開された状態で、展開された画像データに基づいて前記印刷部に印刷を実行させることを禁止することを特徴とする請求項１から３のいずれかに記載の印刷装置。
【請求項５】
制御装置に接続可能に構成され、
前記制御部は、
前記制御装置から受信した展開指示コマンドに基づいて画像データを前記画像バッファーに展開し、前記制御装置から受信した印刷指示コマンドに基づいて、前記画像バッファーに展開した画像データに基づく画像の印刷を前記印刷部に実行させる一方、
前記制御装置から、
エンコードすべきデータが格納されたデータ部と、前記データ部のデータサイズを示すデータサイズ情報とを含んで構成され、バーコードの画像データの前記画像バッファーへの展開を指示する前記展開指示コマンドを受信した場合、
前記データ部に格納されたデータを順次読み出してエンコードを実行し、前記データサイズ情報が示すデータサイズ分のデータの読み出しが完了する前に、読み出し対象が、前記印刷指示コマンドとなった場合、既に行ったエンコードに基づいて、バーコードの画像データを前記画像バッファーに展開した後、前記印刷指示コマンドを読み出し、当該コマンドに基づいて、展開した画像データに基づくバーコードの画像の印刷を前記印刷部に実行させることを特徴とする請求項１に記載の印刷装置。
【請求項６】
記録媒体に印刷する印刷部を備える印刷装置の制御方法であって、
バーコードの画像データと画像バッファーの同一行に展開されるフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄して、バーコードの画像データを前記画像バッファーに展開し、展開したバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させることを特徴とする印刷装置の制御方法。
【請求項７】
記録媒体に印刷する印刷部を備える印刷装置を制御する制御部により実行されるプログラムであって、
前記制御部に、
バーコードの画像データと画像バッファーの同一行に展開されるフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄させて、バーコードの画像データを前記画像バッファーに展開させ、展開させたバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置に接続可能な印刷装置、当該印刷装置の制御方法、および、当該印刷装置の制御に係るプログラムに関する。
【背景技術】
【０００２】
従来、シート等の記録媒体にバーコードを印刷するバーコード印刷システムが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１５０２１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、バーコードを印刷する印刷装置では、バーコードの印刷に際し、バーコードが後に光学的に読み取られることを踏まえた特別な処理を行うことが想定されるが、その際に、処理効率の低減を抑制したいとするニーズがある。
本発明は、上述した事情に鑑みてなされたものであり、処理効率の低減を抑制しつつ、バーコードを印刷することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、印刷装置であって、記録媒体に印刷する印刷部と、画像バッファーに展開した画像データに基づいて、前記印刷部に印刷を実行させる制御部と、を備え、前記制御部は、バーコードの画像データと前記画像バッファーの同一行に展開されるフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄して、バーコードの画像データを前記画像バッファーに展開し、展開したバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させることを特徴とする。
ここで、バーコードの画像と同一行に印刷される文字列が、スペース文字によって構成されている場合、スペース文字に係る文字列を反映してバーコードの画像を印刷しても、バーコードの画像の読み取りに何ら影響はない。なお、バーコードの画像と同一行にスペース文字の印刷が指示されている場合、これは、バーコードの画像の位置の調整を目的とするものと考えられる。
これを踏まえ、上記構成によれば、印刷装置は、バーコードの画像データと同一行に展開されたフォントデータに係る文字列が、スペース文字により構成されている場合は、印刷を禁止するのではなく、展開したフォントデータを破棄して、バーコードの画像データを前記画像バッファーに展開し、展開したバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させる。このため、バーコードの画像の読み取りに影響がない場合に、不必要にバーコードの画像が印刷されないことが抑制され、処理効率の低減が抑制される。
【０００６】
また、本発明は、前記制御部は、スペース文字により構成された文字列のフォントデータを破棄して、前記画像バッファーにバーコードの画像データを展開する場合、破棄したフォントデータが展開されていた位置を反映した位置に、バーコードの画像データを展開することを特徴とする。
この構成によれば、バーコードの画像の位置調整を目的としてスペース文字の印刷が指示されている場合に、スペース文字の印刷による位置調整を反映した位置に、バーコードの画像を印刷することができる。
【０００７】
また、本発明は、制御装置に接続可能に構成され、前記制御部は、前記制御装置から、スペース文字により構成された文字列のフォントデータの展開を指示するコマンドを受信し、このコマンドに基づいて前記画像バッファーにスペース文字により構成された文字列のフォントデータを展開した後、前記制御装置から、バーコードの画像データの展開を指示するコマンドを受信した場合、前記画像バッファーにおいて、展開したフォントデータに続いて、バーコードの画像データを展開すべき位置を示す位置情報を記憶した後、前記画像バッファーに展開したフォントデータを破棄し、記憶した前記位置情報が示す位置にバーコードの画像データを展開することを特徴とする。
この構成によれば、画像バッファーにおいて、スペース文字のフォントデータを展開すべき位置を反映した位置に、バーコードの画像データを展開することができる。
【０００８】
また、本発明は、前記制御部は、文字列のフォントデータと、バーコードの画像データとが前記画像バッファーの同一行に展開された状態で、展開された画像データに基づいて前記印刷部に印刷を実行させることを禁止する。
ここで、文字と、バーコードの画像とが同一行に印刷された場合、文字がバーコードの画像の読み取りに影響を与える可能性がある。
これを踏まえ、上記構成によれば、印刷装置は、文字列のフォントデータと、バーコードの画像データとが画像バッファーの同一行に展開された状態で、展開された画像データに基づいて印刷部に印刷を実行させることを禁止する。このため、文字列と、バーコードの画像とが同一行に印刷されることがなく、高い精度で読み取りが行われる態様でバーコードを印刷することができる。
【０００９】
また、本発明は、制御装置に接続可能に構成され、前記制御部は、前記制御装置から受信した展開指示コマンドに基づいて画像データを前記画像バッファーに展開し、前記制御装置から受信した印刷指示コマンドに基づいて、前記画像バッファーに展開した画像データに基づく画像の印刷を前記印刷部に実行させる一方、前記制御装置から、エンコードすべきデータが格納されたデータ部と、前記データ部のデータサイズを示すデータサイズ情報とを含んで構成され、バーコードの画像データの前記画像バッファーへの展開を指示する前記展開指示コマンドを受信した場合、前記データ部に格納されたデータを順次読み出してエンコードを実行し、前記データサイズ情報が示すデータサイズ分のデータの読み出しが完了する前に、読み出し対象が、前記印刷指示コマンドとなった場合、既に行ったエンコードに基づいて、バーコードの画像データを前記画像バッファーに展開した後、前記印刷指示コマンドを読み出し、当該コマンドに基づいて、展開した画像データに基づくバーコードの画像の印刷を前記印刷部に実行させることを特徴とする。
この構成によれば、展開指示コマンドにおいて、データサイズ情報が示すデータ部のデータサイズと、データ部の実際のデータサイズとに相違が生じている場合であっても、データ部のデータに基づいて、バーコードの画像を印刷可能である。
【００１０】
また、上記目的を達成するために、本発明は、記録媒体に印刷する印刷部を備える印刷装置の制御方法であって、バーコードの画像データと画像バッファーの同一行に展開されるフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄して、バーコードの画像データを前記画像バッファーに展開し、展開したバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させることを特徴とする。
この制御方法によれば、印刷装置は、バーコードの画像データと同一行に展開されたフォントデータに係る文字列が、スペース文字により構成されている場合は、印刷を禁止するのではなく、展開したフォントデータを破棄して、バーコードの画像データを前記画像バッファーに展開し、展開したバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させる。このため、バーコードの画像の読み取りに影響がない場合に、不必要にバーコードの画像が印刷されないことが抑制され、処理効率の低減が抑制される。
【００１１】
また、上記目的を達成するために、本発明は、記録媒体に印刷する印刷部を備える印刷装置を制御する制御部により実行されるプログラムであって、前記制御部に、バーコードの画像データと画像バッファーの同一行に展開されるフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄させて、バーコードの画像データを前記画像バッファーに展開させ、展開させたバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させることを特徴とする。
このプログラムによれば、印刷装置は、バーコードの画像データと同一行に展開されたフォントデータに係る文字列が、スペース文字により構成されている場合は、印刷を禁止するのではなく、展開したフォントデータを破棄して、バーコードの画像データを前記画像バッファーに展開し、展開したバーコードの画像データに基づいてバーコードの画像を前記印刷部に印刷させる。このため、バーコードの画像の読み取りに影響がない場合に、不必要にバーコードの画像が印刷されないことが抑制され、処理効率の低減が抑制される。
【発明の効果】
【００１２】
本発明によれば、処理効率の低減を抑制しつつ、バーコードを印刷できる、という効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係る印刷システムの機能的構成を示すブロック図である。
【図２】（Ａ）は制御コマンドの内容を示し、（Ｂ）は文字列展開指示コマンドの内容を示し、（Ｃ）は（Ｂ）の文字列展開指示コマンドに基づいて画像データを画像バッファーに展開した様子を示す図であり、（Ｄ）はバーコードの画像データが展開される領域を示す図である。
【図３】（Ａ）は制御コマンドの内容を示し、（Ｂ）はバーコード展開指示コマンドの内容を示し、（Ｃ）は（Ｂ）のバーコード展開指示コマンドに基づいて画像データを画像バッファーに展開した様子を示す図である。
【図４】プリンターの動作を示すフローチャートである。
【図５】（Ａ）はフォントデータ破棄前の画像バッファーの様子を示し、（Ｂ）は破棄後の画像バッファーの様子を示す図である。
【図６】プリンターの動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本実施形態に係る印刷システム１の機能的構成を示すブロック図である。
図１に示すように、印刷システム１は、ホストコンピューター１０と、このホストコンピューター１０（制御装置）の制御の下、記録媒体に画像を印刷するプリンター１１（印刷装置）と、を備えている。
図１に示すように、ホストコンピューター１０は、ホスト制御部１５と、ホスト表示部１６と、ホスト入力部１７と、ホスト側インターフェイス（Ｉ／Ｆ）部１８と、ホスト記憶部１９と、を備えている。
ホスト制御部１５は、ＣＰＵや、ＲＯＭ、ＲＡＭ、その他の周辺回路等を備え、ホストコンピューター１０の各部を制御する。ホスト制御部１５は、アプリケーション実行部２０と、プリンタードライバー実行部２１と、を備えているが、これらについては後述する。ホスト表示部１６は、液晶ディスプレーパネル等の表示パネルを備え、ホスト制御部１５の制御の下、表示パネルに各種画像を表示する。ホスト入力部１７は、各種入力デバイスに接続され、これら入力デバイスに対する操作を検出し、ホスト制御部１５に出力する。ホスト側インターフェイス部１８は、ホスト制御部１５の制御の下、プリンター１１との間で通信規格に準拠した通信を行う。ホスト記憶部１９は、ハードディスクや、ＥＥＰＲＯＭ等の記憶装置を備え、各種データを書き換え可能に記憶する。
【００１５】
一方、プリンター１１は、発熱素子が並べて設けられたライン式のサーマルヘッド２３を備え、このサーマルヘッド２３によって、感熱ロール紙Ｒ（記録媒体）の記録面に熱を与えて画素を形成することにより、画像を記録するサーマルプリンターである。特に、プリンター１１は、感熱ロール紙Ｒに所定の画像を記録した後、所定の位置で感熱ロール紙Ｒを切断することが可能である。
図１に示すように、プリンター１１は、制御部３０と、表示部３１と、入力部３２と、印刷部３３と、記憶部３５と、インターフェイス（Ｉ／Ｆ）部３６と、を備えている。
制御部３０は、ＣＰＵや、ＲＯＭ、ＲＡＭ、その他の周辺回路を備え、プリンター１１の各部を制御する。表示部３１は、プリンター１１の動作状態等の各種画像を表示する液晶パネル等の表示パネルや、ＬＥＤを備え、制御部３０の制御の下、当該表示パネルに各種情報を表示し、また、ＬＥＤを所定の態様で点灯／消灯する。入力部３２は、プリンター１１に設けられた各種操作スイッチに接続され、操作スイッチに対する操作を検出し操作信号として制御部３０に出力する。
印刷部３３は、上述したサーマルヘッド２３のほか、感熱ロール紙Ｒを搬送する搬送機構、感熱ロール紙Ｒを切断する切断機構等を備えている。制御部３０は、ファームウェアを読み出して実行することにより、ホストコンピューター１０から受信した制御コマンドに基づいて、各種センサーの検出値を監視しながら、サーマルヘッド２３や、各種モーターを制御して、感熱ロール紙Ｒに所定の画像を記録し、所定の位置で感熱ロール紙Ｒを切断する。この制御部３０の機能は、ＣＰＵがファームウェアを読み出して実行する等、ハードウェアとソフトウェアとの協働により実現される。
インターフェイス部３６は、制御部３０の制御の下、ホストコンピューター１０との間で通信規格に準拠した通信を行う。記憶部３５は、ＥＥＰＲＯＭや、ハードディスク等の不揮発性メモリーを備え、各種データを書き換え可能に不揮発的に記憶する。記憶部３５には、プリンター１１の動作を制御するためのファームウェアが記憶されている。また、記憶部３５には、フォントテーブル５０、および、変換テーブル５１が記憶されているが、このデータについては後述する。
【００１６】
次に、感熱ロール紙Ｒに「文字列」を印刷する場合の、ホストコンピューター１０、および、プリンター１１の動作について説明する。
以下、文字列「ＡＢＣ」を印刷する場合を例として、ホストコンピューター１０、および、プリンター１１の動作について説明する。
ホストコンピューター１０のホスト制御部１５が備えるアプリケーション実行部２０は、ＣＰＵがホストコンピューター１０にインストールされたアプリケーションを実行することにより、その機能が実現される機能ブロックである。また、プリンタードライバー実行部２１は、ＣＰＵがプリンタードライバーを実行することにより、その機能が実現される機能ブロックである。
文字列「ＡＢＣ」を印刷する場合、まず、アプリケーション実行部２０は、印刷する文字列に関する情報を含むデータを生成し、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ)等を利用して、プリンタードライバー実行部２１に出力する。
プリンタードライバー実行部２１は、アプリケーション実行部２０から入力されたデータに基づいて、プリンター１１のコマンド体系に準拠した制御コマンドを生成し、プリンター１１に送信する。
【００１７】
図２（Ａ）は、文字列（本例では、文字列「ＡＢＣ」。）の印刷に際し、プリンタードライバー実行部２１が生成し、プリンター１１に送信される制御コマンドの内容を模式的に示す図である。
図２（Ａ）に示すように、制御コマンドは、文字列展開指示コマンドＭＣ１と、印刷指示コマンドＭＣ２と、を含んで構成されている。
プリンター１１に送信された制御コマンドは、順次、受信バッファーＪに格納される。受信バッファーＪとは、ＲＡＭ等に形成された、受信データの一時記憶領域である。本例では、文字列展開指示コマンドＭＣ１、印刷指示コマンドＭＣ２の順番に、受信バッファーＪに格納される。
文字列展開指示コマンドＭＣ１とは、文字列を指定すると共に、指定した文字列に対応するフォントデータを画像バッファーＢに展開することを指示するコマンドである。画像バッファーＢとは、ＲＡＭ等に形成されたバッファーであって、感熱ロール紙Ｒに印刷する画像の画像データの一時記憶領域である。
図２（Ｂ）は、文字列展開指示コマンドＭＣ１のデータ構造を、模式的に示す図である。
図２（Ｂ）に示すように、文字列展開指示コマンドＭＣ１は、当該コマンドに対応する命令コードである命令コードＣ１と、印刷対象の文字列が格納される文字列データ部ＤＢと、文字列データ部ＤＢの終了を示す文字列終了データＳＤと、により構成されている。
【００１８】
制御コマンドの受信バッファーＪへの格納が開始されると、プリンター１１の制御部３０は、受信バッファーＪにアクセスし、所定のデータサイズ（例えば、１バイト）ずつ、格納された制御コマンドを読み出す。命令コードＣ１や、文字列データ部ＤＢ、文字列終了データＳＤのデータサイズは、読み出しを行うときの所定のデータサイズの整数倍となっており、制御部３０により、制御コマンドにおけるデータの区切りを反映した読み出しが実行される。
制御部３０により、まず、命令コードＣ１の読み出しが行われる。命令コードＣ１は、以下で説明する方法により、画像バッファーＢに文字列のフォントデータを展開することを指示する命令コードである。
次いで、制御部３０は、文字列データ部ＤＢに格納された文字を順番に読み出す。本例では、説明の便宜のため、１つの文字のデータサイズと、受信バッファーＪからデータを読み出すときのデータサイズとが同じであるものとする。ここで、文字列データ部ＤＢにおいて、文字列を構成する各文字は、所定の文字コード（アスキーコードや、ユニコード等）によって表現されている。従って、制御部３０は、各文字について、各文字の文字コードを、順番に読み出す。
【００１９】
制御部３０は、１つの文字の文字コードを読み出した後、フォントテーブル５０、および、変換テーブル５１に基づいて、文字コードを、対応するフォントデータに変換する。
フォントテーブル５０とは、印刷可能な文字のそれぞれのフォントデータを記憶するテーブルである。フォントデータとは、文字を記録媒体に記録可能な態様で表現する実データのことであり、本実施形態では、ビットマップフォントデータであるものとする。フォントデータとしては、ビットマップフォントデータのほか、スケイラブルフォントデータや、ベクトルフォントデータ、アウトラインフォントデータ等がある。
また、本実施形態では、「文字」とは、言語で使用される、意味を持った文字や、何らかの意味を有する記号だけを指すのではなく、フォントデータに基づいて記録媒体に記録可能な文字の全てを指す。特に、本実施形態では、スペース文字（空白）のフォントデータがフォントテーブル５０に格納されており、スペース文字も文字に該当する。スペース文字は、空白の画像を形成する文字を意味し、いわゆる、「スペース」、「タブ」等の文字を含む。
また、変換テーブル５１は、文字コードのそれぞれについて、文字コードと、フォントテーブル５０において、文字コードが示す文字のフォントデータが格納された記憶領域のアドレスと、を対応付けて記憶するテーブルである。
読み出した文字コードのフォントデータへの変換について詳述すると、制御部３０は、変換テーブル５１を参照し、読み出した文字コードに対応付けられたアドレスを取得する。次いで、制御部３０は、フォントテーブル５０にアクセスし、取得したアドレスの記憶領域に格納されたフォントデータを取得する。
文字コードのフォントデータへの変換後、制御部３０は、フォントデータを画像バッファーＢの所定の位置に展開する。展開は、文字毎に、画像バッファーＢの先頭位置から順番に行われる。
【００２０】
図２（Ｃ）は、本例において、文字列展開指示コマンドＭＣ１に基づいて、文字列のフォントデータを画像バッファーＢに展開した後の、画像バッファーＢの様子を、説明に適した態様で模式的に示す図である。
制御部３０は、文字列データ部ＤＢに格納された文字のそれぞれについて、文字コードの読み出し、文字コードからフォントデータへの変換、フォントデータの画像バッファーＢへの展開を順番に行う。そして、文字列終了データＳＤの読み出しをトリガーとして、命令コードＣ１に基づくフォントデータの展開に係る処理を終了する。
これにより、図２（Ｃ）に示すように、文字列を構成する文字のそれぞれのフォントデータが、順番に、展開された状態となる。
なお、制御部３０は、画像バッファーＢへのフォントデータの展開に際し、フォントデータを展開すべき位置を示す位置情報を管理する。図２（Ｃ）に示すように、デフォルトの位置情報が示す位置は、位置Ｋ１である。１文字目の文字のフォントデータを展開する場合、制御部３０は、位置Ｋ１を起点として、当該位置Ｋ１に対応する座標に、矩形のビットマップフォントデータの頂点（図２（Ｃ）の例では、左上に位置する頂点）が位置するように、フォントデータを展開する。１文字目のフォントデータの展開後、制御部３０は、位置情報が示す位置を位置Ｋ２へと変更する。
以上のようにして、制御部３０は、次に画像データを画像バッファーＢに展開する際の起点となる位置を位置情報として管理する。
【００２１】
一方、印刷指示コマンドＭＣ２は、画像バッファーＢに展開されている画像データに基づく画像の印刷を指示するコマンドである。
制御部３０は、印刷指示コマンドＭＣ２を読み出すと、画像バッファーＢにアクセスし、画像バッファーＢに展開された画像データに基づいて、図示せぬサーマルヘッド２３や、搬送モーターの駆動回路を制御し、駆動回路に適切なタイミングで駆動電流を出力させ、印刷部３３の各種機構を駆動して、印刷部３３に画像の印刷を実行させる。
このように本例では、制御部３０は、文字列展開指示コマンドＭＣ１に基づいて文字列「ＡＢＣ」のフォントデータを画像バッファーＢに展開した後、印刷指示コマンドＭＣ２を読み出し、当該コマンドに基づいて、画像バッファーＢに展開されている画像データに基づいて印刷部３３に画像を印刷させる。この結果、感熱ロール紙Ｒに文字列「ＡＢＣ」が印刷される。
画像の印刷後、画像バッファーＢに展開した画像データは、クリアされる。
【００２２】
次に、感熱ロール紙Ｒに「バーコード」を印刷する場合の、ホストコンピューター１０、および、プリンター１１の動作について説明する。
以下の説明では、プリンター１１が、動作モードＤ１により、バーコードを印刷する場合を例にして、各装置の動作を説明する。本例では、バーコードを印刷するモードとして、以下説明する動作モードＤ１と、後に説明する動作モードＤ２とがあり、ユーザーが、いずれの動作モードで動作させるかを選択できる構成となっている。
【００２３】
バーコードを印刷する場合、ホストコンピューター１０のアプリケーション実行部２０、および、プリンタードライバー実行部２１が協働して制御コマンドを生成し、プリンター１１に送信する。
図３（Ａ）は、バーコードの印刷に際し、プリンタードライバー実行部２１が生成し、プリンター１１に送信される制御コマンドの内容を模式的に示す図である。
図３（Ａ）に示すように、制御コマンドは、バーコード展開指示コマンドＭＣ３と、印刷指示コマンドＭＣ２と、を含んで構成されている。プリンター１１に送信された制御コマンドは、順次、受信バッファーＪに格納される。
バーコード展開指示コマンドＭＣ３とは、バーコードのコードを指定すると共に、指定したコードをエンコードし、バーコードの画像データを画像バッファーＢに展開することを指示するコマンドである。
図３（Ｂ）は、バーコード展開指示コマンドＭＣ３のデータ構造を、模式的に示す図である。
図３（Ｂ）に示すように、バーコード展開指示コマンドＭＣ３は、当該コマンドに対応する命令コードである命令コードＣ２と、コードデータ部ＣＢ（データ部）のデータサイズを示すデータサイズ情報ＤＪと、コード（エンコードすべきデータ）が格納されたコードデータ部ＣＢと、により構成されている。
【００２４】
制御コマンドの受信バッファーＪへの格納が開始されると、制御部３０は、まず、命令コードＣ２の読み出しを行う。命令コードＣ２は、以下で説明する方法により、画像バッファーＢにバーコードの画像データを展開することを指示する命令コードである。
次いで、制御部３０は、データサイズ情報ＤＪを読み出し、コードデータ部ＣＢのデータサイズを認識する。本例では、データサイズ情報ＤＪが示すコードデータ部ＣＢのデータサイズは、「８ｂｙｔｅ」であるものとする。
次いで、制御部３０は、コードデータ部ＣＢに格納されたコードを順番に読み出していき、読み出したコードについて、バーコードの画像データへ変換するためのエンコードを行う。プリンター１１には、エンコードを行う機能を有するエンジンが実装されている。
制御部３０は、コードデータ部ＣＢに格納されたコードについて、所定のデータサイズ分のコードの読み出し、読み出したコード分のエンコードを、順番に行っていく。そして、制御部３０は、コードデータ部ＣＢのデータサイズ（本例では、８ｂｙｔｅ）分のコードについてエンコードが完了したことをトリガーとして、コードのエンコードにより生成したバーコードの画像データを、画像バッファーＢに展開する。以上により、制御部３０は、命令コードＣ２に基づくフォントデータの展開に係る処理を終了する。
これにより、図３（Ｃ）に示すように、画像バッファーＢにバーコードの画像データが展開された状態となる。
画像の印刷後、画像バッファーＢに展開した画像データは、クリアされる。
【００２５】
ところで、バーコードの画像は、感熱ロール紙Ｒに印刷された後、光学的な読み取りが行われるものである。
従って、印刷装置によってバーコードの画像を印刷する場合、バーコードの画像の読み取りが高い精度で行われる態様で、バーコードの画像を印刷したいとするニーズがある。その一方で、上記態様でバーコードを印刷するために、処理効率が低減することを抑制したいとするニーズがある。
以上を踏まえ、本実施形態に係るプリンター１１は、バーコードの印刷に際し、以下の処理を実行する。
【００２６】
図４は、バーコード展開指示コマンドＭＣ３の命令コードＣ２を読み出した後の、プリンター１１の動作を示すフローチャートである。
バーコード展開指示コマンドＭＣ３の命令コードＣ２を読み出した後（ステップＳＡ１）、制御部３０は、画像バッファーＢにフォントデータが展開されている状態であるか否かを判別する（ステップＳＡ２）。
制御部３０がバーコード展開指示コマンドＭＣ３の命令コードＣ２を読み出した時点で、画像バッファーＢにフォントデータが展開されている状態は、以下の場合に発生する。
すなわち、ホストコンピューター１０が、文字列展開指示コマンドＭＣ１を送信した後、印刷指示コマンドＭＣ２を送信することなく、バーコード展開指示コマンドＭＣ３を送信した場合である。
ステップＳＡ２において、画像バッファーＢにフォントデータが展開されていない場合、制御部３０は、ユーザーによって選択されたモード（動作モードＤ１、または、動作モードＤ２）にて、バーコードの画像データを画像バッファーＢに展開する（ステップＳＡ３）。ステップＳＡ３の処理の詳細は省略する。次いで、制御部３０は、処理手順をステップＳＡ４へ移行する。
【００２７】
一方、ステップＳＡ２で、画像バッファーＢに既にフォントデータが展開されていると判別した場合（ステップＳＡ２：ＹＥＳ）、制御部３０は、展開されているフォントデータの全てがスペース文字のフォントデータであるか否かを判別する（ステップＳＡ５）。
展開されているフォントデータに、１つでもスペース文字以外の文字のフォントデータが含まれている場合（ステップＳＡ５：ＮＯ）、制御部３０は、バーコード展開指示コマンドＭＣ３に基づく、バーコードの画像データの展開を停止する（ステップＳＡ６）。
つまり、本実施形態では、制御部３０は、スペース文字以外の文字を含む文字列のフォントデータが既に展開されている場合は、バーコードの画像データの展開を停止する。これにより、制御部３０は、スペース文字以外の文字を含む文字列のフォントデータと、バーコードの画像データとが、画像バッファーＢの同一行に展開された状態で、展開された画像データに基づいて画像を印刷することを禁止する。
【００２８】
文字列のフォントデータと、バーコードの画像データとが、画像バッファーＢの同一行に展開された状態とは、図２（Ｄ）に示すように、フォントデータが展開されていく方向（図２（Ｃ）の行方向ＹＪ１）と直交する列方向（図２（Ｃ）の列方向ＹＪ２）において、フォントデータと、バーコードの画像データとで重なった部分があることを意味する。
すなわち、フォントデータは、列方向ＹＪ２に所定のドット数分の範囲を占めた画像データであり、同様に、バーコードの画像データは、列方向ＹＪ２に所定のドット数分の範囲を占めた画像であるが、各データが同一行に展開された状態とは、フォントデータの列方向ＹＪ２における範囲と、バーコードの画像データの列方向ＹＪ２における範囲とに、重なった部分があることを意味する。
例えば、文字列「ＡＢＣ」に係る文字列展開指示コマンドＭＣ１に基づいて、文字列「ＡＢＣ」のフォントデータを画像バッファーＢに展開すると、図２（Ｃ）の状態となる。このとき、位置情報が示す位置は、Ｋ４である。その後、印刷指示コマンドＭＣ２を実行することなく、バーコード展開指示コマンドＭＣ３に基づいて、バーコードの画像データを展開した場合、図２（Ｄ）に示すように、位置Ｋ４を基点として、バーコードの画像データが展開される。図２（Ｄ）では、バーコードの画像データが展開される位置を斜線で示している。この場合、文字列のフォントデータと、バーコードの画像データとの間で、列方向ＹＪ２に重なった部分が存在する。従って、文字列のフォントデータと、バーコードの画像データとが、画像バッファーＢの同一行に展開された状態である。
【００２９】
このように、本実施形態では、スペース文字以外の文字を含む文字列のフォントデータと、バーコードの画像データとが同一行に展開されることが禁止され、これにより、スペース文字以外の文字を含む文字列のフォントデータと、バーコードの画像データとが、同一行に印刷されることが防止される。
ここで、スペース文字以外の文字と、バーコードの画像とが同一行に印刷された場合、文字がバーコードの画像の読み取りに影響を与える可能性がある。これを踏まえ、本実施形態では、プリンター１１は、文字列のフォントデータと、バーコードの画像データとが画像バッファーＢの同一行に展開された状態で、展開された画像データに基づいて印刷部３３に印刷を実行させることを禁止する。このため、文字列と、バーコードの画像とが同一行に印刷されることがなく、高い精度で読み取りが行われる態様でバーコードを印刷することができる。
【００３０】
ステップＳＡ６の処理後、制御部３０は、予め定められたエラー処理を実行する（ステップＳＡ７）。例えば、制御部３０は、表示部３１を制御して、文字列と、バーコードの画像とを同一行に印刷することを指示された旨、表示パネルに表示し、また、ＬＥＤを所定の態様で点灯／消灯したりすることによりその旨報知する。また例えば、制御部３０は、ホストコンピューター１０に所定のデータを送信し、その旨、ホストコンピューター１０にその旨通知する。また例えば、制御部３０は、バーコードの画像を印刷せずに印刷処理を続行したり、文字列、バーコードの画像の双方を印刷せずに、印刷処理を続行したりする。
【００３１】
一方、ステップＳＡ５において、展開されているフォントデータの全てがスペース文字のフォントデータであると判別した場合（ステップＳＡ５：ＹＥＳ）、制御部３０は、位置情報が示す位置を記憶部３５の所定の記憶領域に記憶する（ステップＳＡ８）。上述したように、位置情報とは、次に画像データを展開するときの起点となる位置を示す情報である。
図５（Ａ）は、スペース文字により構成された文字列のフォントデータが画像バッファーＢに展開された様子を示す図である。図５（Ａ）の例では、３つのスペース文字のフォントデータが、画像バッファーＢに展開されている。この場合、位置情報が示す位置は、位置Ｋ５であり、ステップＳＡ８では、制御部３０は、位置Ｋ５を記憶する。
次いで、制御部３０は、画像バッファーＢをクリアすることにより、既に画像バッファーＢに展開したフォントデータを破棄する（ステップＳＡ９）。
次いで、制御部３０は、動作モードＤ１の場合は、データサイズ情報ＤＪ、および、コードデータ部ＣＢに格納されたコードを、順次、読み出し、上述した方法によりバーコードの画像データを、クリア後の画像バッファーＢに展開する（ステップＳＡ１０）。動作モードＤ２における展開方法については、後述する。
その際、制御部３０は、ステップＳＡ８で記憶した位置（図５（Ａ）の例では、位置Ｋ５）を起点として、バーコードの画像データを展開する。
図５（Ｂ）は、スペース文字に係るフォントデータが、図５（Ａ）の状態で展開されていた場合に、ステップＳＡ１０の処理によって、バーコードの画像データが展開された後の、画像バッファーＢの様子を示す図である。
図５（Ｂ）に示すように、レシートの画像データは、位置Ｋ５を起点として、展開される。これにより、レシートの画像データは、スペース文字のフォントデータが展開されていた位置を反映した位置に展開された状態となる。
【００３２】
このように、本実施形態では、バーコードの画像データを展開する際に、既に画像バッファーＢに展開されているフォントデータに係る文字列（バーコードの画像データと同一行に展開されるフォントデータに係る文字列）が、スペース文字のみのフォントデータである場合、制御部３０は、展開したフォントデータを破棄して、バーコードの画像データを画像バッファーＢに展開する。この結果、後に印刷指示コマンドＭＣ２を読み出したときに、制御部３０は、画像バッファーＢに展開された画像データに基づいて、印刷部３３にバーコードの画像を印刷させる。
ここで、バーコードの画像と同一行に印刷される文字列が、スペース文字によって構成されている場合、スペース文字に係る文字列を、バーコードの画像と同一行に印刷しても、バーコードの画像の読み取りに何ら影響はない。従って、この場合は、バーコードの画像の印刷を実施することにより、処理効率が低減することを防止できる。そして、上記構成によれば、バーコードの画像と同一行に印刷される文字列が、スペース文字によって構成されている場合、フォントデータの破棄等の処理をとおして、バーコードの画像の印刷が実行されるため、処理効率の低減を抑制できる。
【００３３】
さらに、バーコードの画像と同一行にスペース文字の印刷が指示されている場合、これは、スペース文字により、バーコードの画像の位置を調整することを目的とするものと想定される。そして本実施形態によれば、スペース文字のフォントデータの位置が反映されてバーコードの画像データが画像バッファーＢに展開され、これにより、バーコードの画像は、スペース文字の位置を反映した位置に印刷される。
このため、本実施形態によれば、バーコードの画像の位置調整を目的としてスペース文字の印刷が指示されている場合に、スペース文字の印刷による位置調整を反映した位置に、バーコードの画像を印刷することができる。
ステップＳＡ１０の処理後、制御部３０は、処理手順をステップＳＡ４へ移行する。
【００３４】
さて、ステップＳＡ４において、制御部３０は、受信バッファーＪにアクセスし、印刷指示コマンドＭＣ２を読み出し（ステップＳＡ４）、当該コマンドに基づいて、画像バッファーＢに展開した画像データに基づく画像を印刷部３３に印刷させる（ステップＳＡ１１）。
本実施形態では、プリンタードライバーの仕様により、バーコード展開指示コマンドＭＣ３の後に続くコマンドは、印刷指示コマンドＭＣ２とされる。これは、バーコード展開指示コマンドＭＣ３の後に続くコマンドを、文字列展開指示コマンドＭＣ１としても、当該コマンドによってはバーコードの画像の位置調整を行うことはできないからである。すなわち、バーコード展開指示コマンドＭＣ３の後に続くコマンドを印刷指示コマンドＭＣ２とすることにより、バーコードの画像データの展開後、バーコードの印刷が実行され、これにより、バーコードの画像と、文字列とが同一行に印刷されることが防止される。
また、本実施形態では、プリンタードライバーの仕様により、文字列以外の画像（グラフィック画像等）の画像データの展開を指示するコマンドの後に続くコマンドを、バーコード展開指示コマンドＭＣ３とすることが禁止される。これは、バーコードの画像の位置の調整を目的として、同一行にスペース文字以外の画像を印刷することは、想定されていないからである。
【００３５】
次に、動作モードＤ２によってバーコードの画像を印刷する場合のプリンター１１の動作について説明する。
図３（Ｂ）を用いて説明したように、バーコード展開指示コマンドＭＣ３には、データサイズ情報ＤＪが含まれており、コードが格納されたコードデータ部ＣＢのデータサイズは、データサイズ情報ＤＪが示すデータサイズとなっている。
しかしながら、データサイズ情報ＤＪが示すデータサイズと、実際のコードデータ部ＣＢのデータサイズとに相違が生じる場合があり得る。この相違は、例えば、プリンタードライバーの仕様の変更や、バージョンの変更、プログラムの人為的な改変によって起こり得る。
動作モードＤ２は、データサイズ情報ＤＪが示すデータサイズと、実際のコードデータ部ＣＢのデータサイズとに相違が生じている場合であっても、正しいバーコードの画像を印刷することを目的としている。従って、ユーザーは、データサイズ情報ＤＪが示すデータサイズと、実際のコードデータ部ＣＢのデータサイズとに相違が生じる可能性がある場合に、動作モードとして動作モードＤ２を選択する。
【００３６】
図６は、動作モードＤ２におけるプリンター１１の動作を示すフローチャートである。
図６のフローチャートでは、バーコード展開指示コマンドＭＣ３の読み出しを開始した後、プリンター１１の動作を示している。上述したように、プリンタードライバーの仕様により、バーコード展開指示コマンドＭＣ３の後に続くコマンドは、印刷指示コマンドＭＣ２である。
図６に示すように、バーコード展開指示コマンドＭＣ３の命令コードＣ２を読み出した後（ステップＳＢ１）、制御部３０は、データサイズ情報ＤＪを読み出すと共に、当該情報を読み捨てる（ステップＳＢ２）。すなわち、動作モードＤ２では、制御部３０は、コードデータ部ＣＢのデータサイズを認識しない。
図３（Ｂ）に示すように、データサイズ情報ＤＪに続くデータは、コードデータ部ＣＢに格納されたコードである。
次いで、制御部３０は、受信バッファーＪに格納された読み出し対象のデータを参照する（ステップＳＢ３）。
次いで、制御部３０は、参照したデータが、印刷指示コマンドＭＣ２であるか否かを判別する（ステップＳＢ４）。
参照したデータが、印刷指示コマンドＭＣ２ではない場合、換言すれば、参照したデータが、コードデータ部ＣＢに格納されたコードの一部である場合（ステップＳＢ４：ＮＯ）、制御部３０は、コードの読み出しを実行し（ステップＳＢ５）、読み出したコードをエンコードする（ステップＳＢ６）。その後、制御部３０は、処理手順をステップＳＢ３へ移行する。
一方、ステップＳＢ４において、参照したデータが、印刷指示コマンドＭＣ２である場合（ステップＳＢ４：ＹＥＳ）、制御部３０は、コードのエンコードにより生成したバーコードの画像データを、画像バッファーＢに展開する（ステップＳＢ７）。なお、制御部３０は、位置情報が示す位置を起点として画像データの展開を実行する。
次いで、制御部３０は、印刷指示コマンドＭＣ２を読み出し（ステップＳＢ８）、印刷部３３にバーコードの画像の印刷を実行させる（ステップＳＢ９）。
【００３７】
動作モードＤ２では、制御部３０は、データサイズ情報ＤＪが示すコードデータ部ＣＢのサイズにかかわらず、コードの読み出しの開始後、次に読み出し対象となるデータが印刷指示コマンドＭＣ２である場合は、コードの読み出し、エンコードを完了する。そして、制御部３０は、画像バッファーＢに展開した画像データに基づいて、バーコードの画像を印刷させる。このため、バーコード展開指示コマンドＭＣ３のデータ構造、および、当該コマンドの後に続くコマンドが印刷指示コマンドＭＣ２であることを利用して、データサイズ情報ＤＪが示すデータサイズと、実際のコードデータ部ＣＢのデータサイズとに相違がある場合であっても、正しいバーコードの印刷を実行可能である。
【００３８】
なお、上述した動作モードＤ２の説明では、ステップＳＢ２において、制御部３０は、データサイズ情報ＤＪを読み捨て、コードデータ部ＣＢのデータサイズの認識を行っていなかった。しかしながら、実際のコードデータ部ＣＢのデータサイズが、データサイズ情報ＤＪが示すコードデータ部ＣＢのデータサイズを上回らない、という仕様となっている場合は、以下の処理を行ってもよい。すなわち、データサイズ情報ＤＪが示すデータサイズ分のコードの読み出し、エンコードが完了した場合、次の読み出し対象のデータは、印刷指示コマンドＭＣ２である。従って、制御部３０は、データサイズ情報ＤＪが示すデータサイズ分のコードの読み出し、エンコードが完了した場合は、ステップＳＢ３の受信バッファーＪにおける次の読み出し対象のデータを参照することなく、データの読み出し（印刷指示コマンドＭＣ２の読み出し）を行う。次いで、制御部３０は、読み出した印刷指示コマンドＭＣ２に基づいて、印刷部３３に印刷を実行させる。
【００３９】
以上説明したように、本実施形態では、制御部３０は、文字列のフォントデータと、バーコードの画像データとが画像バッファーＢの同一行に展開された状態で、展開された画像データに基づいて印刷部３３に印刷を実行させることを禁止する。その一方、制御部３０は、バーコードの画像データと同一行に展開されたフォントデータに係る文字列が、スペース文字により構成されている場合は、展開したフォントデータを破棄する。次いで、制御部３０は、バーコードの画像データを画像バッファーＢに展開し、展開したバーコードの画像データに基づいてバーコードの画像を印刷部３３に印刷させる。
この構成によれば、文字列と、バーコードの画像とが同一行に印刷されることがなく、高い精度で読み取りが行われる態様でバーコードを印刷することができる。
さらに、この構成によれば、バーコードの画像の読み取りに影響がない場合に、不必要にバーコードの画像が印刷されないことが抑制され、処理効率の低減が抑制される。
【００４０】
また、本実施形態では、制御部３０は、スペース文字のフォントデータを破棄して、画像バッファーＢにバーコードの画像データを展開する場合、破棄したフォントデータが展開されていた位置を反映した位置に、バーコードの画像データを展開する。
より詳細には、制御部３０は、画像バッファーＢにおいて、展開したスペース文字のフォントデータに続いて、バーコードの画像データを展開すべき位置を示す位置情報を記憶した後、画像バッファーＢに展開したフォントデータを破棄する。次いで、制御部３０は、記憶した位置情報が示す位置にバーコードの画像データを展開する。
この構成によれば、バーコードの画像の位置調整を目的としてスペース文字の印刷が指示されている場合に、スペース文字の印刷による位置調整を反映した位置に、バーコードの画像を印刷することができる。
【００４１】
また、本実施形態では、制御部３０は、バーコード展開指示コマンドＭＣ３を受信した場合、コードデータ部ＣＢ（データ部）に格納されたデータを順次読み出してエンコードを実行していくと共に、読み出し対象が、印刷指示コマンドＭＣ２となった場合、データサイズ情報ＤＪが示すコードデータ部ＣＢのデータサイズにかかわらず、既に行ったエンコードに基づいて、バーコードの画像データを画像バッファーＢに展開した後、印刷指示コマンドを読み出し、当該コマンドに基づいて、展開した画像データに基づくバーコードの画像の印刷を印刷部３３に実行させる。
この構成によれば、バーコード展開指示コマンドＭＣ３において、データサイズ情報が示すデータ部のデータサイズと、データ部の実際のデータサイズとに相違が生じている場合であっても、データ部のデータに基づいて、バーコードの画像を印刷可能である。
【００４２】
なお、上述した実施の形態は、あくまでも本発明の一態様を示すものであり、本発明の範囲内で任意に変形および応用が可能である。
上述した実施形態では、制御部３０は、バーコードの画像データの画像バッファーＢへの展開に際し、スペース文字以外の文字を含む文字列のフォントデータが既に展開されている場合は、バーコードの画像データの展開を停止する。これにより、制御部３０は、スペース文字以外の文字を含む文字列のフォントデータと、バーコードの画像データとが、画像バッファーＢの同一行に展開された状態で、展開された画像データに基づいて画像を印刷することを禁止していた。しかしながら、禁止する方法は、実施形態で挙げた例で示した方法に限らない。
また、プリンター１１の印刷方式も、サーマル方式に限らず、インクジェット方式、ドットインパクト方式等であってもよい。
また、図１に示したホストコンピューター１０、および、プリンター１１の各機能部は、ハードウェアとソフトウェアとの協働により実現される機能的構成を示すものであって、具体的な実装形態は特に制限されない。従って、必ずしも各機能部に個別に対応するハードウェアが実装される必要はなく、一つのプロセッサーがプログラムを実行することで複数の機能部の機能を実現する構成とすることも勿論可能である。また、上記実施形態においてソフトウェアで実現されている機能の一部をハードウェアで実現してもよく、あるいは、ハードウェアで実現されている機能の一部をソフトウェアで実現してもよい。その他、プリンター１１の他の各部の具体的な細部構成についても、本発明の趣旨を逸脱しない範囲で任意に変更可能である。
【符号の説明】
【００４３】
１…印刷システム、１０…ホストコンピューター（制御装置）、１１…プリンター（印刷装置）、１５…ホスト制御部、３０…制御部、３５…記憶部、Ｂ…画像バッファー、ＤＪ…データサイズ情報。
【図１】
2015016599.tif 000003
【図２】
2015016599.tif 000004
【図３】
2015016599.tif 000005
【図４】
2015016599.tif 000006
【図５】
2015016599.tif 000007
【図６】
2015016599.tif 000008