(57)【要約】【課題】接続するホスト装置とプリンタとの組み合わせを変更する場合に必要となるエミュレーションプログラムの開発を、より少ない工数で効率的に行うことができるようにする。【解決手段】ホスト装置のプリンタドライバ１２で生成された元のコマンドデータを、プリンタに依存しない特定のコマンド体系から成る中間のコマンドデータに変換する第１の変換部３１と、第１の変換部３１により生成された中間のコマンドデータを、ホスト装置に接続されるプリンタに対応したコマンド体系から成る目的のコマンドデータに変換する第２の変換部３２とを備え、第１の変換部３１に対応したエミュレーションプログラムの開発と、第２の変換部３２に対応したエミュレーションプログラムの開発とを分けて効率的に行うことができるようにする。【選択図】図４
2017049654.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置で生成された元のコマンドデータを、プリンタに依存しない特定のコマンド体系から成る中間のコマンドデータに変換する第１の変換部と、
上記第１の変換部により生成された上記中間のコマンドデータを、上記ホスト装置に接続されるプリンタに対応したコマンド体系から成る目的のコマンドデータに変換する第２の変換部とを備えたことを特徴とするエミュレーション装置。
【請求項２】
上記第１の変換部に対応したモジュールプログラムおよび上記第２の変換部に対応したモジュールプログラムを登録して実装可能なプラットフォームを有し、上記モジュールプログラムを上記プラットフォームにプラグインにより登録または削除可能に構成したことを特徴とする請求項１に記載のエミュレーション装置。
【請求項３】
上記第１の変換部は、上記元のコマンドデータに含まれる複数のコマンドの１つ１つを、上記特定のコマンド体系で表されるコマンドに逐次変換することにより、上記中間のコマンドデータを生成することを特徴とする請求項１に記載のエミュレーション装置。
【請求項４】
上記第２の変換部は、上記中間のコマンドデータに含まれる複数のコマンドの１つ１つを、上記ホスト装置に接続されるプリンタに対応したコマンド体系で表されるコマンドに逐次変換することにより、上記目的のコマンドデータを生成することを特徴とする請求項３に記載のエミュレーション装置。
【請求項５】
ホスト装置で生成された元のコマンドデータを、プリンタに依存しない特定のコマンド体系から成る中間のコマンドデータに変換する第１の変換手段、および
上記第１の変換手段により生成された上記中間のコマンドデータを、上記ホスト装置に接続されるプリンタに対応したコマンド体系から成る目的のコマンドデータに変換する第２の変換手段
としてコンピュータを機能させるためのコンピュータ読み取り可能なエミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト装置からプリンタに出力する印刷データのコマンド体系の変換を行うエミュレーション装置およびエミュレーションプログラムに関するものである。
【背景技術】
【０００２】
従来、ホスト装置のアプリケーションで編集した文書や画像をプリンタから印刷するシステムが多く用いられている。一般に、文書や画像は、アプリケーション固有の形式のファイルで保存され、オペレーティングシステム上で動作するプリンタドライバを介して、プリンタが解釈できる形式の印刷データに変換されて印刷される。
【０００３】
この印刷データへの変換にエミュレータ（エミュレーションドライバ）が用いられる場合もある。エミュレーションとは、データの意味を定義付けた各種コマンド体系のうち、ホスト装置が対応するコマンド体系をプリンタが解釈できるコマンド体系に変換することを意味する。一般に、１つのエミュレータは、ある特定の機種のプリンタをターゲットとしてコマンド体系の変換を行うものとして作られる。したがって、ホスト装置に接続するプリンタを変える場合は、変更後のプリンタに合わせてエミュレーションの記述を変更する必要がある。
【０００４】
従来、ホスト装置に接続するプリンタを変える場合に、ホスト装置のアプリケーション側の仕様や設定に変更を加えることなく、変更前のプリンタと同様の印刷出力を変更後のプリンタにおいて得られるようにした技術が提案されている（例えば、特許文献１参照）。
【０００５】
特許文献１に記載の印刷システムでは、プリンタＡのプリンタドライバがインストールされたホスト装置に接続されているプリンタＡを別のプリンタＢに変える場合、ランゲージモニタプログラムおよび印刷データ変換プログラムをホスト装置に追加インストールする。そして、これらのプログラムを用いて、プリンタドライバにより生成されたプリンタＡに対応した印刷データをいったん中間データ（ラスタ画像データ）に変換した後、当該中間データをプリンタＢに対応した印刷データに更に変換するようにしている。
【０００６】
特許文献１に記載の印刷システムによれば、追加インストールされたランゲージモニタプログラムおよび印刷データ変換プログラム（以下、これらをエミュレーションプログラムという）によって、プリンタＡに対応した印刷データがプリンタＢに対応した印刷データに変換されるので、ホスト装置のアプリケーション側に変更を加えることなく、変更前のプリンタＡと同様の印刷出力を変更後のプリンタＢにおいて再現することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４６２７６８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１に記載の技術では、ホスト装置に接続するプリンタの種類数に応じて多数のエミュレーションプログラムが必要になるという問題があった。例えば、ホスト装置に接続するプリンタをプリンタＡからプリンタＣに変更する場合は、プリンタＡに対応した印刷データをプリンタＣに対応した印刷データに変換するためのエミュレーションプログラムを別途作成する必要がある。また、ホスト装置にプリンタＤを接続する場合は、プリンタＡに対応した印刷データからプリンタＤに対応した印刷データに変換するためのエミュレーションプログラムが必要となる。
【０００９】
さらに、例えばプリンタＢに対応するプリンタドライバがホスト装置にインストールされている場合は、当該ホスト装置に接続するプリンタの種類に応じて、プリンタＢ→プリンタＡ、プリンタＢ→プリンタＣ、プリンタＢ→プリンタＤ、・・・といった多数のエミュレーションプログラムを作成する必要がある。このように、作成すべきエミュレーションプログラムが多数に上り、そのための開発に多くの時間とコストがかかるという問題があった。
【００１０】
本発明は、このような問題を解決するために成されたものであり、接続するホスト装置とプリンタとの組み合わせを変更する場合に必要となるエミュレーションプログラムの開発を、より少ない工数で効率的に行うことができるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
上記した課題を解決するために、本発明では、ホスト装置で生成された元のコマンドデータを、プリンタに依存しない特定のコマンド体系から成る中間のコマンドデータに変換する第１の変換部と、第１の変換部により生成された中間のコマンドデータを、ホスト装置に接続されるプリンタに対応したコマンド体系から成る目的のコマンドデータに変換する第２の変換部とを備える。
【発明の効果】
【００１２】
上記のように構成した本発明によれば、元のコマンドデータを中間のコマンドデータに変換する第１の変換部に対応したエミュレーションプログラムの開発と、中間のコマンドデータを目的のコマンドデータに変換する第２の変換部に対応したエミュレーションプログラムの開発とを分けて行うことが可能となる。しかも、中間のコマンドデータは、プリンタに依存しない特定のコマンド体系から成るため、第１の変換部に対応したエミュレーションプログラムを開発する際には、第２の変換部のことは全く意識しなくてもよい。同様に、第２の変換部に対応したエミュレーションプログラムを開発する際には、第１の変換部のことは全く意識しなくてもよい。
【００１３】
そして、あるプリンタＸのコマンド体系（元のコマンドデータ）に対応して作成された第１の変換部と、あるプリンタＹのコマンド体系（目的のコマンドデータ）に対応して作成された第２の変換部とを任意に組み合わせて適用すれば、プリンタＸに対応したコマンドデータをプリンタＹに対応したコマンドデータに変換することができる。このとき、プリンタＸ対応のコマンドデータ→プリンタＹ対応のコマンドデータという変換の組み合わせが新しいものであったとしても、第１の変換部、第２の変換部の少なくとも一方のエミュレーションプログラムが別の組み合わせで既に作成済みであれば、その作成済みのエミュレーションプログラムを新たに作成する必要はない。
【００１４】
以上のことから、本発明によれば、接続するホスト装置とプリンタとの組み合わせを変更する場合（ホスト装置に接続するプリンタを変更する場合や、プリンタに接続するホスト装置を変更する場合など）に必要となるエミュレーションプログラムの開発を、より少ない工数で効率的に行うことができるようになる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態のエミュレーション装置を備えた印刷システムの全体の概略構成を示す図である。
【図２】本実施形態による印刷システムのハードウェア構成を示す図である。
【図３】本実施形態によるホスト装置が記憶している各種プログラムおよび当該各種プログラムによる概略の動作例を示す図である。
【図４】本実施形態のエミュレータが備える機能構成例を示すブロック図である。
【図５】第１の変換部による動作の具体例を説明するための図である。
【図６】第２の変換部による動作の具体例を説明するための図である。
【図７】第２の変換部による動作の他の具体例を説明するための図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態のエミュレーション装置を備えた印刷システムの全体の概略構成を示す図である。例えば、図１（ａ）に示すように、本実施形態による印刷システムは、ホスト装置１０およびプリンタ２０を備えて構成されている。
【００１７】
ホスト装置１０とプリンタ２０との間は、シリアルケーブルあるいはＥｔｈｅｒｎｅｔ（登録商標）などの有線のインタフェースケーブルによって接続されている。あるいは、ホスト装置１０とプリンタ２０との間をＢｌｕｅｔｏｏｔｈ（登録商標）あるいはＷｉ−Ｆｉなどの無線通信ネットワークを介して接続するようにしてもよい。
【００１８】
図１（ａ）に示す構成において、本実施形態のエミュレーション装置は、ホスト装置１０が備えている。なお、図１（ｂ）に示すように、プリンタ２０に対してインタフェースカード２０Ａを着脱可能に構成し、インタフェースカード２０Ａが本実施形態によるエミュレーション装置の機能を備えるようにしてもよい。あるいは、図１（ｃ）に示すように、ホスト装置１０に対してインタフェースカード１０Ａを着脱可能に構成し、インタフェースカード１０Ａが本実施形態によるエミュレーション装置の機能を備えるようにしてもよい。
【００１９】
図２は、本実施形態による印刷システムのハードウェア構成を示す図である。なお、図２は、図１（ａ）のように印刷システムを構成した場合のハードウェア構成例を示している。
【００２０】
図２に示すように、ホスト装置１０は、そのハードウェア構成として、ＣＰＵ１０１、Ｉ／Ｆ１０２、液晶ディスプレイ等の表示部１０３、タッチパネル等の入力部１０４、ＲＯＭ１０５、ＲＡＭ１０６およびハードディスク１０７を備えている。ＣＰＵ１０１は、ハードディスク１０７に記憶されたプログラムに従って、ホスト装置１０の動作を制御する。特に、本実施形態では、ＣＰＵ１０１は、アプリケーションプログラムによって生成された文書や画像等のデータを、プリンタ２０が理解できるコマンド体系の印刷データに変換し、変換した印刷データをＩ／Ｆ１０２からプリンタ２０に出力する。
【００２１】
また、プリンタ２０は、そのハードウェア構成として、ＣＰＵ２０１、Ｉ／Ｆ２０２、印刷部２０３、ＲＯＭ２０４およびＲＡＭ２０５を備えている。ＣＰＵ２０１は、ＲＯＭ２０４またはＲＡＭ２０５に記憶されたプログラムに従って、プリンタ２０の動作を制御する。特に、本実施形態では、ホスト装置１０から送られてきた印刷データをＩ／Ｆ２０２にて受信し、当該印刷データで示されるコマンドに従って印刷部２０３により印刷を実行する。
【００２２】
図３は、ホスト装置１０のハードディスク１０７が記憶している各種プログラムおよび当該各種プログラムによる概略の動作例を示す図である。図３に示すように、ホスト装置１０のハードディスク１０７は、アプリケーションプログラム（以下、単にアプリケーションと略す）１１、プリンタドライバ１２、エミュレーションプログラム（以下、エミュレータという）１３およびポートドライバ１４を記憶している。
【００２３】
なお、印刷システムを図１（ｂ）のように構成する場合、ホスト装置１０がアプリケーション１１、プリンタドライバ１２およびポートドライバ１４を備え、プリンタ２０に挿入されたインタフェースカード２０Ａがエミュレータ１３を備える構成とする。この場合、プリンタドライバ１２によって生成された印刷データは、ポートドライバ１４を介してプリンタ２０に送信され、エミュレータ１３に供給される。
【００２４】
また、印刷システムを図１（ｃ）のように構成する場合、例えば、ホスト装置１０がアプリケーション１１、プリンタドライバ１２およびポートドライバ１４を備え、ホスト装置１０に挿入されたインタフェースカード１０Ａがエミュレータ１３を備える構成とすることが可能である。あるいは、ホスト装置１０がアプリケーション１１およびポートドライバ１４を備え、インタフェースカード１０Ａがプリンタドライバ１２およびエミュレータ１３を備える構成とすることも可能である。あるいは、ポートドライバ１４もインタフェースカード１０Ａが備えるようにしてもよい。
【００２５】
印刷システムを図１（ａ）のように構成する場合、エミュレータ１３を備えるホスト装置１０は、本発明のエミュレーション装置に相当する。また、印刷システムを図１（ｃ）のように構成し、ホスト装置１０がエミュレータ１３を備える場合も、ホスト装置１０が本発明のエミュレーション装置に相当する。
【００２６】
これらの場合、エミュレータ１３（本発明のエミュレーションプログラム）を例えばＣＤ−ＲＯＭのような記録媒体に記録し、当該プログラムをホスト装置１０に読み込ませることによって、ホスト装置１０をエミュレーション装置として構築することが可能である。エミュレーションプログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、磁気テープ、光ディスク、光磁気ディスク、ＤＶＤ、不揮発性メモリカード等を用いることができる。また、エミュレーションプログラムをインターネット等のネットワークを介してホスト装置１０にダウンロードするようにしてもよい。
【００２７】
一方、図１（ｂ）の構成において、インタフェースカード２０Ａがエミュレータ１３を備える場合、または、図１（ｃ）の構成において、インタフェースカード１０Ａがエミュレータ１３を備える場合は、当該インタフェースカード１０Ａ，２０Ａが本発明のエミュレーション装置に相当する。この場合、エミュレータ１３（本発明のエミュレーションプログラム）は、例えば、インタフェースカード１０Ａ，２０Ａ内にあらかじめインストールされている。図１（ｃ）の構成の場合は、記録媒体またはインターネット等のネットワークを介してホスト装置１０にダウンロードしたエミュレーションプログラムをインタフェースカード１０Ａ内に記録するようにしてもよい。
【００２８】
本実施形態では、アプリケーション１１の一例としてＰＯＳアプリケーションを用い、レシート画像の印刷を行うものとする。この場合、アプリケーション１１は、レシート画像を生成し、そのレシート画像と共に印刷指示をプリンタドライバ１２に出力する。プリンタドライバ１２は、ある機種のプリンタ２０に対応したものであり、当該プリンタ２０が理解できるコマンド体系に基づくコマンドデータから成る印刷データを生成して出力する。なお、プリンタドライバ１２が生成する印刷データのコマンド体系を「第１のコマンド体系」とする。
【００２９】
すなわち、プリンタドライバ１２は、アプリケーション１１から供給されるレシート画像を、プリンタ２０の機種に対応した第１のコマンド体系による印刷データ（デバイスに依存したコマンドデータ）に変換する。具体的には、プリンタドライバ１２は、第１のコマンド体系に従って、プリンタ２０において紙媒体にレシート画像を形成させるためのコマンドデータや、プリンタ２０の印刷部２０３を制御するためのコマンドデータ（例えば、紙媒体のフィードやカット等を指示するコマンドデータ）を生成する。
【００３０】
プリンタドライバ１２によって生成された印刷データは、エミュレータ１３に供給される。エミュレータ１３は、プリンタドライバ１２から供給された印刷データ（元のコマンドデータ）を、任意のコマンド体系から成る印刷データ（目的のコマンドデータ）に変換する。ここで、任意のコマンド体系は、第１のコマンド体系であってもよいし、それ以外の第２のコマンド体系であってもよい。
【００３１】
本実施形態において、エミュレータ１３は、第１のコマンド体系から成る元のコマンドデータを、デバイス（プリンタ２０）に依存しないコマンド体系から成る中間のコマンドデータにいったん変換する。そして、エミュレータ１３は、変換した中間のコマンドデータを、第１のコマンド体系または第２のコマンド体系から成る目的のコマンドデータにさらに変換する。
【００３２】
ここで、プリンタドライバ１２に対応したプリンタ２０がホスト装置１０に接続されている場合、エミュレータ１３は、プリンタドライバ１２から供給された元のコマンドデータを、中間のコマンドデータにいったん変換した後、第１のコマンド体系から成る目的のコマンドデータに変換する。
【００３３】
一方、ホスト装置１０に接続するプリンタ２０を変更した場合には、エミュレータ１３は、プリンタドライバ１２から供給された元のコマンドデータを、中間のコマンドデータにいったん変換した後、変更後のプリンタ２０に対応する第２のコマンド体系から成る目的のコマンドデータに変換する。この場合は、変更後のプリンタ２０に対応したエミュレータ１３を用意する必要がある。本実施形態では、この新たなエミュレータ１３の開発を効率的に行うことができるようにしている。なお、その詳細については後述する。
【００３４】
エミュレータ１３により生成された印刷データ（目的のコマンドデータ）は、ポートドライバ１４を介してプリンタ２０に送信される。このとき、ポートドライバ１４は、エミュレータ１３により生成された目的のコマンドデータを、アプリケーション１１により指定されたポートを介してプリンタ２０に送信する。
【００３５】
なお、上記のように、プリンタドライバ１２に対応したプリンタ２０がホスト装置１０に接続されている場合、元のコマンドデータおよび目的のコマンドデータは、何れも第１のコマンド体系となる。この場合でも、プリンタドライバ１２からコマンドデータを直接プリンタ２０に出力せずに、エミュレータ１３を介してコマンドデータを出力することにより、以下のようなメリットを得ることができる。
【００３６】
第１に、多種多様なプリンタ接続が可能となる。すなわち、エミュレータ１３の仕組みを導入することにより、同一のコマンド体系のプリンタを含む各種エミュレーション対応プリンタを自由に接続することができるようになる。第２に、同一コマンド体系のプリンタ間での互換性を確保することができる。例えば、同じコマンド体系のプリンタであっても、コマンド仕様に変更があると、旧仕様のコマンドに対応したプリンタを新仕様のコマンドに対応のプリンタに置き換えた場合は、コマンド変換が必要となるが、エミュレータ１３を用いることで容易に置き換えが可能となる。
【００３７】
図４は、図３に示した本実施形態のエミュレータ１３が備える機能構成例を示すブロック図である。図４に示すように、本実施形態のエミュレータ１３は、その機能構成として、第１の変換部３１および第２の変換部３２を備えている。第１の変換部３１および第２の変換部３２は何れも、モジュール化されたプログラムによって実現される機能構成である。
【００３８】
エミュレータ１３は、第１の変換部３１および第２の変換部３２に対応したモジュールプログラムを登録して実装可能なプラットフォーム３０を有しており、各モジュールプログラムをプラグインによってプラットフォーム３０に登録または削除することが可能に構成されている。なお、プリンタドライバ１２やポートドライバ１４もモジュールプログラムで構成し、エミュレータ１３と同じプラットフォーム３０にプラグインによって登録または削除することを可能に構成してもよい。
【００３９】
第１の変換部３１は、プリンタドライバ１２により生成された第１のコマンド体系から成る元のコマンドデータ（以下、元データと略すことがある）を、プリンタ２０に依存しない特定のコマンド体系から成る中間のコマンドデータ（以下、中間データと略すことがある）に変換する。ここで、第１の変換部３１は、元のコマンドデータに含まれる複数のコマンドの１つ１つを、特定のコマンド体系で表されるコマンドに逐次変換することにより、中間のコマンドデータを生成する。
【００４０】
また、第２の変換部３２は、第１の変換部３１により生成された中間のコマンドデータを、ホスト装置１０に接続されるプリンタ２０に対応したコマンド体系から成る目的のコマンドデータ（以下、目的データと略すことがある）に変換する。ここで、第２の変換部３２は、中間のコマンドデータに含まれる複数のコマンドの１つ１つを、プリンタ２０に対応したコマンド体系で表されるコマンドに逐次変換することにより、目的のコマンドデータを生成する。
【００４１】
図５は、第１の変換部３１による動作の具体例を説明するための図である。図５（ａ）は、プリンタドライバ１２により生成された第１のコマンド体系から成る元データ（デバイスに依存したコマンドデータ）の一例を示している。また、図５（ｂ）は、第１の変換部３１により変換された特定のコマンド体系から成る中間データ（デバイスに依存しないコマンドデータ）の一例を示している。
【００４２】
図５（ａ）のように、元データは、
＜ESC＞＠＜ESC＞i22Title＜ESC＞i00＜CR＞＜LF＞Hello World＜CR＞＜LF＞＜ESC＞d2
というデータであり、複数のコマンドが順に配列されたものとなっている。
【００４３】
ここで、各コマンドの機能は以下の通りである。
・＜ESC＞＠：プリンタ初期化
・＜ESC＞i22：縦３倍、横３倍の拡大文字指定
ｉに続く数字が縦方向の拡大倍率を指定するものであり、例えば“０”＝１倍〜“３”＝４倍を指定することが可能である。更にその後に続く数字が横方向の拡大倍率を指定するものであり、例えば“０”＝１倍〜“３”＝４倍を指定することが可能である。
・Title：印刷する文字列
この例では、“Title”の文字列が縦３倍、横３倍に拡大して印字されることになる。
・＜ESC＞i00：縦１倍、横１倍の拡大文字指定
・＜CR＞＜LF＞：印字改行
・Hello World：印刷する文字列
この例では、“Hello World”の文字列が縦１倍、横１倍の通常サイズで印字されることになる。
・＜CR＞＜LF＞：印字改行
・＜ESC＞d2：用紙のフィードおよびカット
これは、用紙をカッター位置までフィードしてカットすることを意味する。
【００４４】
以上に示した元データの各コマンドは、第１の変換部３１によって、図５（ｂ）に示す中間データの各コマンドにそれぞれ変換される。変換された中間データの各コマンドは、元データの各コマンドと機能は同じであるが、表現形式が異なっている。図５（ｂ）に示すように、中間データの個々のコマンドは、コマンドのタイプを表すデータ“type”と、パラメータの値を表すデータ“value”との組み合わせで構成される。この特定のコマンド体系による表現形式は、デバイスに依存しないものとなっている。元データの各コマンドと中間データの各コマンドとの対応関係は、以下の通りである。
【００４５】
・＜ESC＞＠
→type：initialize          value：
・＜ESC＞i22
→type：magnify height      value：2
type：magnify width       value：2
中間データでは、縦方向の拡大倍率と横方向の拡大倍率とを別々のコマンドとして分けて記述する。
・Title
→type：text                value：Title
・＜ESC＞i00
→type：magnify height      value：0
type：magnify width       value：0
・＜CR＞＜LF＞
→newline                   value：0
・Hello World
→type：text                value：Hello World
・＜CR＞＜LF＞
→newline                   value：0
・＜ESC＞d2
→type：feed                value：cutter
type：cut                 value：100%
中間データでは、フィードとカットとを別々のコマンドとして分けて記述する。
【００４６】
図６は、第２の変換部３２による動作の具体例を説明するための図である。図６（ａ）は、第１の変換部３１により生成された特定のコマンド体系から成る中間データ（図５（ｂ）に示したものと同じ）を示している。また、図６（ｂ）は、第２の変換部３２により変換された目的データの一例を示している。図６（ｂ）では、目的データのコマンド体系の一例として、元データと同じ第１のコマンド体系を示している。
【００４７】
例えば、プリンタ２０の機種に対応したプリンタドライバ１２がホスト装置１０にインストールされていて、そのプリンタ２０をホスト装置１０にそのまま接続して使用する場合は、第１のコマンド体系から成る元データを中間データにいったん変換し、それを更に第１のコマンド体系から成る目的データに変換することになる。この場合における中間データの各コマンドと目的データの各コマンドとの対応関係は、以下の通りである。
【００４８】
・type：initialize            value：
→＜ESC＞＠：プリンタ初期化
・type：magnify height        value：2
→＜ESC＞h2：縦３倍の拡大文字指定
・type：magnify width         value：2
→＜ESC＞w2：横３倍の拡大文字指定
・type：text                  value：Title
→Title：印刷する文字列
・type：magnify height        value：0
→＜ESC＞h0：縦１倍の拡大文字指定
・type：magnify width         value：0
→＜ESC＞w0：横１倍の拡大文字指定
・newline                     value：0
→＜CR＞＜LF＞：印字改行
・type：text                  value：Hello World
→Hello World：印刷する文字列
・newline                     value：0
→＜CR＞＜LF＞：印字改行
・type：feed                  value：cutter
→＜ESC＞j：用紙をカッター位置までフィード
・type：cut                   value：100%
→＜ESC＞d0：用紙をカット
【００４９】
なお、図５（ａ）に示した元のコマンドデータと、図６（ｂ）に示した目的のコマンドデータとは共に第１のコマンド体系によるものであるが、一部コマンドの内容が変わっている。これは、元データから中間データに変換する際に、１つのコマンドを２つに分けて記述した後、中間データから目的データに変換する際に、上記のように分けられた２つのコマンドをそれぞれ元データのコマンド体系に変換したからである。コマンドが一部相違しているものの、どちらのコマンドデータに基づいて印刷を実行しても、印刷結果は全く同じものとなる。
【００５０】
図７は、第２の変換部３２による動作の他の具体例を説明するための図である。図７（ａ）は、第１の変換部３１により生成された特定のコマンド体系から成る中間データ（図５（ｂ）に示したものと同じ）を示している。また、図７（ｂ）は、第２の変換部３２により変換された目的データの一例を示している。図７（ｂ）では、目的データの一例として、第１のコマンド体系とは異なる第２のコマンド体系（ＨＴＭＬ形式のコマンド体系）を示している。
【００５１】
例えば、第１のコマンド体系に対応したプリンタドライバ１２がインストールされているホスト装置１０において、接続するプリンタ２０を変更した場合は、変更後のプリンタ２０に対応する第２の変換部３２のモジュールプログラムをプラグインによりプラットフォーム３０に登録することにより、第２の変換部３２を差し替える。そして、プラットフォーム３０に元々登録されている第１の変換部３１により変換された中間データを、上記のように新たに登録した第２の変換部３２によって第２のコマンド体系（ＨＴＭＬ形式のコマンド体系）から成る目的データに変換する。この場合における中間データの各コマンドと目的データの各コマンドとの対応関係は、以下の通りである。
【００５２】
・type：initialize            value：
→<html><body>：プリンタ初期化
・type：magnify height        value：2
type：magnify width         value：2
→<h1>：タイトル指定
中間データの拡大文字指定に関する２つのコマンドによりタイトル開始の書式と認識し、<h1>のタグを生成する。
・type：text                  value：Title
→Title：印刷する文字列
・type：magnify height        value：0
type：magnify width         value：0
→</h1>：タイトル指定解除
中間データの拡大文字指定に関する２つのコマンドによりタイトル終了の書式と認識し、</h1>のタグを生成する。
・newline                     value：0
→<p>：印字改行
・type：text                  value：Hello World
→Hello World：印刷する文字列
・newline                     value：0
→</p>：印字改行
・type：feed                  value：cutter
type：cut                   value：100%
→</body></html>
feed とcutによりドキュメントの終了と認識し、</body></html>のタグを生成する。
【００５３】
以上詳しく説明したように、本実施形態によれば、元データを中間データに変換する第１の変換部３１に対応したモジュールプログラムの開発と、中間データを目的データに変換する第２の変換部３２に対応したモジュールプログラムの開発とを分けて行うことが可能となる。しかも、中間のコマンドデータは、プリンタ２０に依存しない特定のコマンド体系から成るため、第１の変換部３１に対応したモジュールプログラムを開発する際には、第２の変換部３２のことは全く意識しなくてもよい。同様に、第２の変換部３２に対応したモジュールプログラムを開発する際には、第１の変換部３１のことは全く意識しなくてもよい。
【００５４】
そして、元データのコマンド体系に対応して作成された第１の変換部３１と、目的データのコマンド体系に対応して作成された第２の変換部３２とを任意に組み合わせてプラットフォーム３０に登録すれば、第１のコマンド体系による元のコマンドデータを第２のコマンド体系に対応した目的のコマンドデータに変換することができる。
【００５５】
このとき、第１のコマンド体系→第２のコマンド体系という変換の組み合わせが新しいものであったとしても、第１のコマンド体系に対応した第１の変換部３１のモジュールプログラムまたは第２のコマンド体系に対応した第２の変換部３２のモジュールプログラムが別の組み合わせで既に作成済みであれば、第１の変換部３１または第２の変換部３２に対応したモジュールプログラムを新たに作成する必要はない。
【００５６】
例えば、図６および図７で例示したように、ホスト装置１０に接続するプリンタ２０を変更した場合、第２の変換部３２に対応するモジュールプログラムを新たにプラットフォーム３０に登録すればよく、第１の変換部３１のモジュールプログラムはそのまま利用することができる。
【００５７】
また、図面による例示はしていないが、プリンタ２０に接続するホスト装置１０を変更する場合、すなわち、第１のコマンド体系とは異なるコマンド体系に対応したプリンタドライバ１２がインストールされたホスト装置１０にプリンタ２０を接続する場合は、第１の変換部３１に対応するモジュールプログラムを新たにプラットフォーム３０に登録すればよく、第２の変換部３２のモジュールプログラムはそのまま利用することができる。
【００５８】
さらに言えば、接続するホスト装置１０とプリンタ２０との組み合わせを変更した場合、その組み合わせが新しいものであれば、従来はその新しい組み合わせに係るエミュレーションプログラムを新たに開発する必要があった。これに対して、本実施形態によれば、第１のコマンド体系と第２のコマンド体系との組み合わせが新しいものであっても、第１のコマンド体系に対応する第１の変換部３１のモジュールプログラムと第２のコマンド体系に対応する第２の変換部３２のモジュールプログラムとが個別に作成済みであれば、それらを組み合わせてプラットフォーム３０に登録するだけでよく、エミュレーションプログラムの新たな開発は全く不要である。
【００５９】
以上のことから、本実施形態によれば、ホスト装置１０に接続するプリンタ２０を変更する場合や、プリンタ２０に接続するホスト装置１０を変更する場合などに必要となるエミュレーションプログラムの開発を、より少ない工数で効率的に行うことができるようになる。
【００６０】
なお、上記実施形態では、コマンドのタイプを表すデータ“type”と、パラメータの値を表すデータ“value”との組み合わせによって中間のコマンドデータを記述する例について説明したが、表現形式はこれに限定されない。要は、特定のデバイスに依存しない表現形式で、所定のルールに従ってコマンドの内容を意味づけできる形式のコマンド体系であれば適用することが可能である。
【００６１】
また、上記実施形態では、ホスト装置１０に接続するプリンタ２０を変更する場合や、プリンタ２０に接続するホスト装置１０を変更する場合を例に挙げて、第１の変換部３１または第２の変換部３２を変更して適用する例について説明したが、このようなケースに限定されない。例えば、複数のコマンド体系に対応可能なプリンタ２０において、使用するコマンド体系を切り替えるようなケースにも本発明を適用することが可能である。また、複数のコマンド体系に対応したプリンタドライバ１２がインストールされているホスト装置１０において、使用するプリンタドライバ１２を切り替えるようなケースにも本発明を適用することが可能である。
【００６２】
また、上記実施形態では、プラットフォーム３０に登録する第１の変換部３１または第２の変換部３２を差し替える形で適用する例について説明したが、本発明はこれに限定されない。例えば、複数種類のコマンド体系に対応した第１の変換部３１をプラットフォーム３０に登録しておき、何れか１つを任意に選択して適用できるようにしてもよい。同様に、複数種類のコマンド体系に対応した第２の変換部３２をプラットフォーム３０に登録しておき、何れか１つを任意に選択して適用できるようにしてもよい。
【００６３】
また、上記実施形態では、図５〜図７において、テキスト文字を印字するといった極めてシンプルな例を説明したが、印刷例はこれに限定されない。例えば、テキスト文字の他に、所定の画像やバーコードといったテンプレートによる構成要素を挿入したドキュメントを印刷することも可能である。この場合、中間データにおいてテンプレートは、例えば以下のように記述する。ここで、“value”の値は、テンプレートの画像の格納場所を示すアドレスである。
type：template1       value：Address
【００６４】
また、テンプレート内に差込印刷するフィールドがある場合は、例えば以下のように記述することが可能である。
type：template1       value：Address
type：field1          value：MILK
type：field2          value：$8.99
この例では、“template1”で表されるテンプレート内の２つのフィールドに、“MILK”および“$8.99”という値を差し込んで印刷することを意味している。
【００６５】
また、上記実施形態では、ホスト装置１０にインストールされているアプリケーション１１がＰＯＳアプリケーションで、プリンタ２０がレシート画像を印刷するものである例について説明したが、本発明はこれに限定されない。すなわち、アプリケーション１１は任意のものを適用することが可能であり、プリンタ２０も任意のものを適用することが可能である。
【００６６】
また、上記実施形態では、第２の変換部３２により変換された目的のコマンドデータに従って、プリンタ２０によって紙媒体に印刷を実行する例について説明したが、本発明はこれに限定されない。例えば、印刷出力イメージをＰＤＦ（Portable Document Format）のファイルに出力するようにしてもよい。この場合、目的のコマンドデータに対応する第２のコマンド体系は、印刷イメージをＰＤＦファイルに出力するためのコマンド体系となる。
【００６７】
また、上記実施形態では、ホスト装置１０にインストールされているプリンタドライバ１２とは別にエミュレータ１３を備える構成について説明したが、本発明はこれに限定されない。例えば、エミュレータ１３がプリンタドライバ１２の中にビルトインされた構成としてもよい。
【００６８】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６９】
１０  ホスト装置
１０Ａ  インタフェースカード
１１  アプリケーション
１２  プリンタドライバ
１３  エミュレータ
１４  ポートドライバ
２０  プリンタ
３０  プラットフォーム
３１  第１の変換部
３２  第２の変換部
【図１】
2017049654.tif 000003
【図２】
2017049654.tif 000004
【図３】
2017049654.tif 000005
【図４】
2017049654.tif 000006
【図５】
2017049654.tif 000007
【図６】
2017049654.tif 000008
【図７】
2017049654.tif 000009