以下、添付の図面を参照し、本発明に係る印刷システムSYについて説明する。通常、タブレット端末やスマートフォンから印刷を行う場合、端末のOSに準拠した印刷アプリケーションや印刷ドライバーを、OS毎に準備する必要がある。これに対し、本発明の印刷システムSYでは、印刷ドライバーに相当するXML(Extensible Markup Language) Webサービスプリント機能(印刷制御装置)を印刷装置に搭載しているため、OSに依存することなく印刷を行うことができる。つまり、ホスト側に、専用の印刷ドライバーをインストールすることなく、Webブラウザーを用いて印刷装置を動作させるができる。以下、XML Webサービスプリント機能を搭載した印刷装置を「インテリジェント機能付き印刷装置」と称する。これに対し、XML Webサービスプリント機能を搭載していない印刷装置を、単に「印刷装置」と称する。
[全体構成]
図1〜図4を参照し、各実施形態の説明に先立ち、印刷システムSYの全体構成から説明する。図1は、印刷システムSYのシステム構成図である。印刷システムSYは、Webアプリケーションサーバー10と、複数台のホスト20ホストa、ホストb)と、印刷制御装置31と、複数台の印刷装置32(印刷装置A、印刷装置B)と、から成る。なお、印刷制御装置31と1台の印刷装置32(印刷装置A)は、インテリジェント機能付き印刷装置30として印刷システムSY内に組み込まれている。したがって、印刷装置Aと印刷装置Bは、親機−子機の関係となる。
Webアプリケーションサーバー10とホスト20は、インターネット等のネットワークを介して接続される。また、ホスト20と印刷制御装置31は、有線/無線LAN等のネットワークを介して接続される。なお、ホスト20は、例えば小売店のレジカウンターに設置されるPOS(Point Of Sales)端末である。また、インテリジェント機能付き印刷装置30および印刷装置32は、例えば会計レシートを発行するレシートプリンター、または厨房に設置されるキッチンプリンターである。
続いて、図2および図3を参照し、Webアプリケーションサーバー10、ホスト20およびインテリジェント機能付き印刷装置30の制御構成について説明する。図2(a)は、Webアプリケーションサーバー10の制御構成を示す図である。Webアプリケーションサーバー10は、制御部11、通信部12および記憶部13の他、一般的なコンピューターに搭載される不図示のハードウェア構成を有している。制御部11は、CPU(Central Processing Unit)、ROM(Read Only Memory)およびRAM(Random Access Memory)等により構成される。記憶部13は、例えばHDD(Hard Disk Drive)であり、HTTPサーバー15およびWebアプリケーション16を記憶している。
通信部12は、ホスト20(Webブラウザー27)と通信を行なうためのインターフェースである。このWebアプリケーションサーバー10とホスト20との通信は、HTTPサーバー15によりHTTP(Hypertext Transfer Protocol)に基づいて行なわれる。すなわち、Webアプリケーションサーバー10は、ホスト20(Webブラウザー27)からのHTTPリクエストを受け付け、このHTTPリクエストに含まれるURL(Uniform Resource Locator)に基づいて、Webアプリケーション16が提供するWebページ40(図1参照)をホスト20に送信する。
このWebページ40には、Webページ40自体を制御するためのページ制御スクリプト(JavaScript(登録商標))や、印刷制御を行うための印刷制御スクリプト(JavaScript(登録商標))などが組み込まれている。ホスト20は、Webブラウザー27において(Webページ40の内部で)印刷制御スクリプトを実行することにより、印刷処理を行う。
図2(b)は、ホスト20の制御構成を示す図である。ホスト20は、制御部21、表示部22、通信部23、記憶部24および操作部25を備えている。制御部21は、CPU等を有し、ホスト20全体を制御する。
表示部22は、Webブラウザー27上に、当該Webブラウザー27により取得(ダウンロード)したWebページ40を表示したり、Webブラウザー27の操作に伴う各種通知画面や各種設定画面を表示する。操作部25は、Webブラウザー27で表示したWebページ40において、印刷指示等の各種操作を行うために用いられる。例えば、ホスト20がPOS端末であり、Webアプリケーション16がPOSアプリケーションである場合、Webページ40として、バーコード読取結果(購入商品の商品名、単価、数量等)や、会計結果を表示する。また、ホスト20に設けられた「会計キー」の押下(操作部25の操作)により、印刷指示が行われる。なお、表示部22と操作部25は、別々のハードウェアとして構成しても良いし、タッチパネルとして一体に構成しても良い。
通信部23は、Webアプリケーションサーバー10および印刷制御装置31と通信を行なうためのインターフェースである。上述のとおり、ホスト20は、Webブラウザー27を用いて、Webアプリケーションサーバー10および印刷制御装置31と通信を行う。
記憶部24は、例えばHDDであり、Webブラウザー27を記憶している。本実施形態では、Webブラウザー27として、プラグインモジュールをサポートしない単機能ブラウザ(標準のブラウザ)を用いる。制御部21は、このWebブラウザー27により、通信部23を介してWebアプリケーションサーバー10にアクセスし、Webアプリケーション16が提供するWebページ40を取得する。
また、Webページ40には、上述のとおり、ページ制御スクリプトおよび印刷制御スクリプトが組み込まれている。Webブラウザー27が、Webページ40に組み込まれたページ制御スクリプトによりユーザーの印刷指示操作を受付けると、同じくWebページ40に組み込まれた印刷制御スクリプトを実行して、XML言語で記述した印刷データを生成し、印刷制御装置31に送信する。
なお、ホスト20は、Webブラウザー27が動作するコンピューターであれば良く、POS端末、タブレット端末、スマートフォンおよびパーソナルコンピューターなど、その種類を問わない。また、上述のとおりドライバーレスの構成であるため、OSの種類も問わない。したがって、異なるプラットフォーム上で動作する複数台のホスト20を、同じ印刷システムSY内で混在させることができる。
図3は、インテリジェント機能付き印刷装置30の制御構成を示す図である。上述のとおり、インテリジェント機能付き印刷装置30は、印刷制御装置31と印刷装置32を組み合わせたものである。また、本実施形態の印刷制御装置31は、インターフェースボードとして、印刷装置32に着脱可能に装着される。なお、印刷制御装置31を別体の制御ボックスとして、印刷装置32に外付け(接続)する構成でも良い。
印刷制御装置31は、制御部41、ボード側インターフェース42、記憶部43および通信部44を備えている。制御部41は、CPU等を有し、印刷制御装置31全体を制御する。ボード側インターフェース42は、印刷装置32(印刷装置側インターフェース55)との通信を行う。記憶部43は、例えば不揮発性メモリー(フラッシュROM等)であり、HTTPサーバー46および印刷装置リスト47を記憶している。印刷装置リスト47は、各印刷装置32の印刷装置情報57を列記したものである。印刷制御装置31は、接続されている各印刷装置32(印刷装置A、印刷装置B)と通信し、機種名、搭載文字、カラーモード、画像形式等を含む印刷装置情報57を取得して、印刷装置リスト47に格納する。
通信部44は、ホスト20および他の印刷装置32(印刷装置B)との通信を行うものであり、LANインターフェースおよびUSBインターフェース等のインターフェース群から成る。印刷制御装置31とホスト20(Webブラウザー27)との通信は、HTTPサーバー46によりHTTPに基づいて行われる。すなわち、ホスト20から、印刷制御装置31に一意に割り当てられたサービスエンドポイントアドレス(http://x.x.x.x/などのURL)に対して印刷データが送信されると、印刷制御装置31は当該印刷データを受信する。
印刷制御装置31は、受信した印刷データ(XML文書)を、印刷装置32用の印刷制御コマンド(ESC/POS(登録商標)コマンド)に変換し、各印刷装置32に送信する。印刷制御コマンドは、例えばESC(xn・・・)の形式であり、「n」によりデータ長を示している。また、サービスエンドポイントアドレスには、印刷を実行させる印刷装置32の印刷装置ID(印刷装置指定情報)も含まれている。印刷制御装置31は、当該印刷装置IDにより指定された印刷装置32を出力先として、印刷制御コマンドを送信する。なお、印刷制御装置31は、ホスト20のWebブラウザー27上で動作する印刷制御スクリプトから、クロスドメイン(クロスオリジン)通信の要求を受信した場合、これを許可する応答(XML文書)を行う。
印刷装置32は、制御部51、記憶部52、印刷機構53、バッファー54および印刷装置側インターフェース55を備えている。制御部51は、CPU等を有し、印刷装置32全体を制御する。記憶部52は、印刷装置情報57(印刷装置32自身の機種名、搭載文字、カラーモード、画像形式等)を記憶している。印刷機構53は、印刷ヘッド、用紙送り機構、用紙切断機構などを含み、制御部51の制御下で印刷動作を行う。なお、印刷方式は、インクジェット方式やレーザー方式など、その種類を問わない。
バッファー54は、受信データ(印刷制御コマンド)を一時的に格納しておくための受信バッファーである。印刷機構53は、バッファー54に格納されているデータを順次読み出して印刷を行う。印刷装置側インターフェース55は、印刷制御装置31(ボード側インターフェース42)との通信を行う。印刷装置32は、当該印刷装置側インターフェース55を介して印刷制御装置31から印刷制御コマンドを受信し、これに基づいて印刷を行う。また、その印刷結果を、印刷装置側インターフェース55を介して、印刷制御装置31に出力する。さらに、印刷装置32は、印刷制御コマンドとして状態取得コマンドが送信された場合、自装置内の状態(ステータス)を検出し、印刷制御装置31に送信する。印刷制御装置31は、これら印刷結果やステータス(コマンドレスポンス)を、XML文書に変換して、ホスト20に返信する。
次に、図4を参照し、印刷制御装置31の実装レイヤーについて説明する。印刷制御装置31の実装レイヤーは、下位相から、ハードウェア、OS、Webサーバー(HTTPサーバー46)、が順に積層され、さらに最上位層として、複数の印刷Webサービス(XML Webサービスプリント機能)およびデバイス登録Webアプリケーションが積層されている。
ここで、印刷Webサービスは、XML文書から印刷制御コマンドへの変換など、本実施形態の主要部を為す機能である。この印刷Webサービスを複数備えたことで、複数台のホスト20から印刷データを受信し、複数の印刷装置32に対して印刷を実行させたり、各印刷装置32の印刷結果を印刷データの送信元となる各ホスト20に返信させたりなど、複数の処理を並行して実行することができる。例えば、同図の例では、印刷Webサービスを10プロセス設けているため、10個のプロセス(スレッド)を同時処理可能である。但し、1台の印刷装置32に対して複数の印刷データが送信された場合は、印刷権を獲得した順(印刷ポートを確保した順)に処理を行う。
また、デバイス登録Webアプリケーションは、印刷装置32のプリンターID、機種名およびポート情報(IPアドレス)を登録するためのアプリケーションである。これらの情報は、HTTPサーバー46によって提供される設定ページ(Webページ)をWebブラウザー27によって表示させ、ユーザーが操作部25を用いて入力を行うことにより登録される。また、登録されたこれらの情報は、印刷装置リスト47(図3参照)に格納される。
[第1実施形態]
次に、図5ないし図7を参照し、本発明の第1実施形態について説明する。第1実施形態では、ホスト20と印刷装置32が多:1または多:多の構成でも、1:1接続が前提となる印刷制御コマンド(ESC/POS(登録商標)コマンド)を用いて印刷装置32を制御することを課題とする。そこで、当該課題を解決するための構成について主に説明する。
図5は、第1実施形態に係る印刷システムSY1の機能ブロック図である。同図に示すように、ホスト20は、主な機能構成として、ブラウザー制御部71、印刷データ生成部72、印刷データ送信部73、応答受信部74、印刷装置情報表示部75および印刷装置指定部76を備えている。
ブラウザー制御部71は、Webブラウザー27を動作させる。印刷データ生成部72は、Webブラウザー27上で動作する印刷制御スクリプトを用いて、XML言語で記述した印刷データを生成する。印刷データ送信部73は、生成した印刷データに印刷装置IDを付加して、印刷制御装置31に送信する。なお、印刷装置IDは、後述する印刷装置指定部76の指定結果に基づいて付加される。
応答受信部74は、印刷制御装置31から、印刷装置32の印刷結果およびステータスを、XML文書として受信する。印刷装置情報表示部75は、印刷制御装置31から通知された各印刷装置32の印刷装置情報57を、表示部22に表示する。印刷装置指定部76は、印刷装置情報57に基づいて、印刷対象となる印刷装置32を指定する。つまりユーザーは、表示された印刷装置情報57を参照して、所望の印刷装置32を決定し、操作部25を用いて指定する。
印刷制御装置31は、主な機能構成として、印刷データ受信部81、コマンド生成部82、コマンド送信部83、応答取得部84、応答返信部85、印刷中止処理部86、印刷装置情報取得部87、印刷装置情報記憶部88および印刷装置情報通知部89を備えている。
印刷データ受信部81は、ホスト20から、XML言語で記述された印刷データを受信する。コマンド生成部82は、印刷指示コマンドや印刷前コマンド等の印刷制御コマンドを生成する。前者の印刷指示コマンドは、ホスト20から送信された印刷データに基づくコマンドであり、後者の印刷前コマンドは、印刷指示コマンドの生成前に、印刷装置32の状態確認のために生成されるコマンドである。コマンド送信部83は、生成された印刷制御コマンドを、印刷装置32に対して送信する。
図6(a)は、第1実施形態に係る印刷指示コマンドのコマンド列を示す図である。同図に示すように、印刷指示コマンドは、印刷データの前後に、それぞれ初期化コマンドと状態取得コマンドを付加したものである。
ここで、初期化コマンドは、ダミーデータ(NULデータ)、設定初期化コマンドおよびASBステータス有効コマンド(有効コマンド)を含む。ダミーデータは、印刷装置32のバッファー54の容量を超える所定長さ以上の空白ファイルである。これにより、直前の印刷中止処理によって途切れたコマンドを補完し、印刷装置32に処理させることができる。また、設定初期化コマンドは、印刷装置32の設定を初期化するためのコマンドである。なお、ダミーデータは、設定初期化コマンドよりも前に付加されることが好ましい。
また、ASBステータス有効コマンドは、印刷装置32が主体となってステータスを返信するASB(Auto Status Back)ステータスを有効にするためのコマンドである。印刷装置32は、ASBステータスが有効の場合、自身の状態が変化(カバー開閉/用紙なし/印刷完了など)したことを示すASBステータスを自動的に送信する。これにより、印刷制御装置31は、印刷中における印刷装置32のステータスの変化を把握できる。なお、印刷装置32のASBステータスは、初期化コマンドの受信後、ASBステータス無効コマンドの受信後または印刷装置32の電源ON直後の初期状態において「無効」となる。
一方、図6(b)は、印刷前コマンドのコマンド列を示す図である。印刷前コマンドは、ホスト20から印刷データが送信されたとき、印刷指示コマンドの生成に先立って、印刷装置32の状態を確認するために生成されるコマンドである。そのコマンド列は、空印刷データを示す印刷制御コマンドの後に状態取得コマンドを付加したものである。ここで、状態取得コマンドとは、印刷装置32の状態を取得するためのコマンドであり、ステータス送信コマンドまたはプロセスIDレスポンスコマンド(直前の印刷処理が完了した時点で指定したIDを返すコマンド)を指す。なお、印刷装置32の状態とは、印刷装置の用紙の有無、オンライン/オフライン、インク/トナー残量、バッテリー残量などのステータス情報を指す。このように、印刷データに基づく印刷指示コマンドの送信前に、印刷前コマンドを送信することで、印刷装置32が印刷不可能な状態の場合、印刷中止処理を容易に行うことができる。
図5の説明に戻る。応答取得部84は、印刷前コマンドの送信後、当該印刷前コマンドに含まれる状態取得コマンドに基づき、印刷装置32から当該状態取得コマンドに対する応答を取得する。また、応答取得部84は、印刷指示コマンドの送信後、当該印刷指示コマンドに含まれるASBステータス有効コマンドに基づき、印刷指示コマンドの送信から状態取得コマンドに対する応答を受信するまでの間、印刷装置32から自動的に送信されるASBステータスを取得する。また、印刷処理後、印刷指示コマンドに含まれる状態取得コマンドに基づき、印刷装置32から当該状態取得コマンドに対する応答を取得する。応答返信部85は、応答に基づく印刷結果を、印刷データの送信元となるホスト20に返信する。ここで、印刷結果とは、印刷成功/印刷失敗を示すXML文書を指す。なお、印刷結果に代えて、応答内容(印刷装置32の状態)を示すXML文書を返信しても良い。また、応答返信部85は、ASBステータス有効コマンドに対する応答(印刷指示コマンドの送信から状態取得コマンドに対する応答を受信するまでの、最新のステータスを示すXML文書をホスト20に返信する。
印刷中止処理部86は、応答取得部84により取得した応答から、印刷装置32が印刷不可能な状態であると判定した場合、応答取得部84による応答取得がタイムアウトした場合、ホスト20が指定した印刷装置32が存在しない場合などに印刷中止処理を行う。印刷中止処理には、印刷中止を印刷データの送信元となるホスト20に通知する処理の他、必要に応じて、印刷装置32への印刷指示コマンドの送信を中止する処理、印刷装置32のバッファー54をクリアにするためのリアルタイムコマンドであるバッファークリアコマンドを印刷装置32に送信する処理、を行う。ここで、リアルタイムコマンドとは、印刷装置32に対し即時実行を指令するコマンドを指す。
印刷装置情報取得部87は、接続されている各印刷装置32(印刷装置A、印刷装置B)から、各印刷装置32の印刷装置情報57を取得する。当該印刷装置情報57の取得は、定期的に行っても良いし、電源ON時やホスト20からの情報取得指令があったときに取得しても良い。印刷装置情報記憶部88は、取得した各印刷装置32の印刷装置情報57を、印刷装置リスト47として記憶する。また、印刷装置情報通知部89は、ホスト20に対し、印刷装置リスト47を提供する(各印刷装置32の印刷装置情報57を通知する)。なお、印刷装置リスト47の提供は、印刷装置情報57を取得する度に行っても良いし、電源ON時やホスト20からの通知指令があったときに行っても良い。
一方、印刷装置32は、主な機能構成として、コマンド受信部91、印刷部92、応答送信部93および印刷装置側記憶部94を備えている。コマンド受信部91は、印刷制御装置31から印刷指示コマンドや印刷前コマンドなど、ESC/POS(登録商標)コマンドを受信する。印刷部92は、受信したコマンドに基づいて、印刷用紙に印刷を行う。応答送信部93は、印刷制御装置31に対し、印刷指示コマンドや印刷前コマンドに対する応答を返信する。印刷装置側記憶部94は、記憶部52(図3参照)に相当し、自身の印刷装置情報57を記憶する。
次に、図7のフローチャートを参照し、第1実施形態に係る印刷制御の流れについて説明する。印刷制御装置31は、ホスト20から印刷データを受信すると(S01)、印刷前コマンドを生成して、印刷装置32のステータスを確認する(S02)。その結果から、印刷装置32が印刷可能ではないと判定した場合(S03:No)、ホスト20に対し、ステータスを返信する(S04)。また、印刷装置32が印刷可能と判定した場合は(S03:Yes)、コマンド列(印刷指示コマンド)を生成し(S05)、印刷装置32へ送信する(S06)。
その後、印刷装置32からASBステータスやレスポンス(応答)を受信すると(S07)、印刷中止またはタイムアウトを判定し(S08)、「No」と判定した場合は、さらに印刷完了したか否かを判定する(S09)。印刷完了していない場合は(S09:No)、S07に戻り、印刷完了した場合は(S09:Yes)、ホスト20に対しステータスおよび印刷結果を返信する(S04)。また、S08で「Yes」と判定した場合は、印刷装置32へバッファークリアコマンドを送信し(S10)、ホスト20に対し、ステータスおよび印刷結果を返信する(S04,印刷中止を通知する)。
以上説明したとおり、第1実施形態によれば、ホスト20から送信された印刷データの前に初期化コマンドを付加するため、ホスト20:印刷装置32が1:1で接続されていることが前提のESC/POS(登録商標)コマンドを用いて、多:1または多:多のネットワーク環境下で印刷装置32を制御できる。つまり、ホストaからの印刷指令に基づく前回の印刷が正常終了していない場合でも、続くホストbからの印刷指令に基づく印刷指示コマンドの前に初期化コマンドを付加するため、当該印刷指示コマンドを正常に処理させることができる。また、ホストaからの指令により印刷装置32の設定変更が行なわれていた場合も、同じく初期化コマンドを付加することにより印刷装置32を初期化状態に戻すため、続くホストbからの印刷指令に基づく印刷指示コマンドを正常に解釈させることができる。このように、従来のコマンド体系を維持しつつ、既存の印刷装置32を複数のホスト20で共有することができる。
また、ホスト20は、Webブラウザー27上で動作するスクリプトを用いて印刷データを生成するため、印刷装置ドライバーやプラグインを必要としない。また、ホスト20のプラットフォームを問わないため、スマートフォンやタブレット端末など、各種OSで動作するホスト20を、同じ印刷システムSY内で混在させることができる。
なお、上記の第1実施形態では、Webブラウザー27として標準ブラウザーを使用し、印刷制御スクリプトを用いて印刷データを生成したが、プラグインやリッチインターネットアプリケーションを用いて印刷データを生成しても良い。
また、図7に示したフローチャートのS01の後、XMLスキーマ(マークアップスキーマ)により、印刷データの妥当性を検証しても良い(妥当性検証部)。この場合、印刷データが妥当と判定した場合は、S02に進み、妥当でないと判定した場合は、S04またはS10に進んで、印刷中止処理を行うことが好ましい。この構成によれば、マークアップスキーマを用いることにより、印刷データの妥当性を検証した上で、印刷処理を行うことができる。
また、上記の第1実施形態では、印刷データをXML言語で記述したが、印刷装置32のコマンド(ESC/POS(登録商標)コマンド)で記述しても良い。この場合、印刷制御装置31におけるコマンド変換は不要である。また、ホスト20に返信する印刷結果も、XML文書ではなく、コマンドレスポンスとなる。このため、ホスト20側で、レスポンスデータを解析し、印刷結果やステータスを抽出する必要がある。但し、印刷制御装置31で解析を行い、XML言語やCSV言語で印刷結果やステータスを記述してからホスト20に通知する構成でも良い。
[第2実施形態]
次に、図8および図9を参照し、本発明の第2実施形態について説明する。上記の第1実施形態では、ホスト20から送信された印刷データの受信に伴ってステータス等の応答を返信したが、本実施形態では、印刷データの受信によらず、ステータス等の応答を返信することを特徴とする。以下、第1実施形態と異なる点のみ説明する。なお、本実施形態において、第1実施形態と同様の構成部分については同様の符号を付し、詳細な説明を省略する。また、第1実施形態と同様の構成部分について適用される変形例は、本実施形態についても同様に適用される。
図8は、第2実施形態に係る印刷システムSY2の機能ブロック図である。同図に示すように、本実施形態は、第1実施形態の機能構成と比較して、ホスト20内に、空印刷データ生成部101および空印刷データ送信部102を追加した構成となっている。
空印刷データ生成部101は、Webブラウザー27上で動作する印刷制御スクリプトを用いて、空印刷データを生成する。また、空印刷データ送信部102は、印刷制御装置31に対し、生成した空印刷データを、HTTPにより送信する。ここで、空印刷データとは、印刷装置32のステータス要求のために生成される空印刷要求である。例えば、ユーザーにより(操作部25により)、印刷装置32のステータス取得指示操作が行われた場合に、空印刷データを生成・送信する。取得したステータスは、ホスト20の表示部22に表示される。
一方、印刷制御装置31のコマンド生成部82は、ホスト20から送信された空印刷データに基づいて、空印刷コマンドを生成する。図9は、空印刷コマンドのコマンド列を示す図である。同図に示すように、空印刷コマンドは、空印刷データの前後に、それぞれ初期化コマンドと状態取得コマンドを付加したものである。初期化コマンドに、ダミーデータ、設定初期化コマンドおよびASBステータス取得コマンドが含まれる点は、第1実施形態と同様である。また、コマンド送信部83は、生成された当該空印刷コマンドを印刷装置32に送信し、応答取得部84は、空印刷コマンドに対する応答を取得する。また、応答返信部85は、空印刷コマンドに対する応答を、ホスト20に返信する。
なお、空印刷データ送信部102による空印刷データの送信は、対象となる印刷装置32を指定しても良いが、全ての印刷装置32を対象として一括送信しても良い。この場合、空印刷データに、接続されている全ての印刷装置32の印刷装置ID(印刷装置指定情報)を付加して送信しても良いし、印刷装置IDを付加しない構成としても良い。後者の場合、印刷制御装置31は、接続されている(通信可能な)全ての印刷装置32に対し、空印刷データに基づいて生成した空印刷コマンドを一斉送信する。
また、第2実施形態に係る印刷制御の流れは、図7に示した第1実施形態のフローチャートにおけるS01にて、ホスト20から、「空印刷データ」を受信する点以外は、同フローチャートの流れと同様であるため、説明を省略する。
以上説明したとおり、第2実施形態によれば、印刷制御装置31により、ホスト20から送信された空印刷データに状態取得コマンドを付加して空印刷コマンドを生成し、印刷装置32に送信するため、印刷装置32からの応答に基づいて、印刷装置32のステータスをホスト20に通知することができる。つまり、印刷を実行する場合と同様の仕組みで、印刷装置32のステータスをホスト20に返すことができる。
なお、上記の第2実施形態では、ホスト20が、ユーザーによるステータス取得指示操作をトリガーとして、空印刷データを送信したが、ホスト20の電源ON時や所定アプリケーションの起動時など、予め定められたタイミングで空印刷データを送信しても良い。また、定期的に空印刷データを送信することで、ホスト20が、印刷装置32のステータスを常に把握することができる。
[第3実施形態]
次に、図10ないし図15を参照し、本発明の第3実施形態について説明する。第3実施形態は、上述のとおりドライバーレスのプラットフォーム上で動作するホスト20を用いた場合でも、アプリケーションプログラマーが、印刷装置32の文字コード体系を意識することなく印刷プログラムを作成することを課題とする。以下、第1,2実施形態と異なる点のみ説明する。
図10は、第3実施形態に係る印刷システムSY3の機能ブロック図である。同図に示すように、本実施形態は、第1実施形態の機能構成と比較して、印刷制御装置31内に、文字コード変換部111を追加した構成となっている。文字コード変換部111は、Unicodeなどの汎用文字コード(第1の文字コード)を、印刷装置32用の文字コード(第2の文字コード)に変換する。ここで、「印刷装置32用の文字コード」とは、印刷装置32に搭載されたフォントデータ(ドットマトリクスフォントデータ、ビットマップフォントデータ、スケイラブルフォントデータなど)に対応する文字コードを指す。これに対し、「Unicode」は、1文字ごとに一意のコードが割り当てられた文字コードである。これら「Unicode」と「印刷装置32用の文字コード」が1:1ではなく1:多の関係となる場合があるため、文字コード変換部111によるコード変換が必要となる。詳細については、後述する。
第3実施形態では、図11(a)に示すように、印刷装置32によってその仕様および搭載文字が異なることを想定している。例えば、「印刷装置A」が「日本語仕様」の場合、その印刷装置32に搭載されている搭載文字は、英数字、国際文字および日本語であり、使用する文字コードは、例えば漢字モード(Shift_JIS)である。
また、第3実施形態では、ホスト20が、言語属性を付加した汎用文字コードを1個以上含む印刷データを生成・送信する(印刷データ生成部72、印刷データ送信部73)。特に図示しないが、ホスト20側では、Webブラウザー27によって表示される所定のフォーム上で、印刷文字列の入力、対象言語およびフォント種類の指定が可能となっており、これらの入力に基づいて、印刷データ(XML印刷ドキュメント)を生成する。また、文字コード変換部111は、汎用文字コードを、言語属性に対応する文字コードに変換する。さらに、コマンド生成部82は、文字コード変換部111の変換結果を用いて印刷指示コマンドを生成する。
図12は、第3実施形態に係る印刷指示コマンドのコマンド列を示す図である。同図に示すように、コマンド生成部82は、「言語属性に基づいて変換した文字コード(印刷装置32用の文字コード)」の前に、印刷装置32の文字コードを言語属性に対応して切り替えるための「文字コード切り替えコマンド」を付加した印刷指示コマンドを生成する。なお、第1実施形態と同様に、コマンド列の前に初期化コマンドを付加したり、コマンド列の後に状態取得コマンドを付加したりしても良い(図6(a)参照)。
ここで、「文字コード切り替えコマンド」は、「文字コードテーブル切り替えコマンド」、「国際文字セット切り替えコマンド」および「漢字モード切り替えコマンド」を含む概念であり、例えばANKモード(ANK仕様に対応するモード)において、文字コード80〜FFの文字の切り替えを行うことができる。ここで、「文字コードテーブル」とは、「印刷装置32用の文字コード」が複数個格納されているテーブルを指す。したがって、文字コードテーブルを示す情報と、文字コードテーブルにおける格納位置を示す情報により、印刷装置32用の文字コードを一意に指定することができる。「文字コードテーブル切り替えコマンド」とは、その文字コードテーブルを切り替えるためのコマンドである。
また、「国際文字セット切り替えコマンド」とは、ANKモードにおいて、文字コード20H〜7EHの文字の切り替えを行うコマンドである。英語の「\」と日本語の「¥」、英語の「\」と韓国語のウォン記号、英語の「$」と中国語の「¥」など、同じ文字コードに異なる文字を割り当てている文字を対象としており、「文字コードテーブル切り替えコマンド」と共に用いる。また、「漢字モード切り替えコマンド」とは、ANKモードから漢字モードにするコマンドと、漢字モードを解除してANKモードにするコマンドである。なお、各印刷装置32は、日本語、韓国語、中国語の国際文字セットの共存ができないものとする。
図11(b)は、各言語属性と、文字コード切り替えコマンドの対応を示している。なお、言語属性「ja」、「ko」、「zn−cn」、「zn−tw」、「en」は、それぞれ印刷装置32の仕様「日本語仕様」、「韓国語使用」、「簡体字中国語仕様」、「繁体字中国語仕様」、「ANKモード」にそれぞれ対応している。例えば、印刷データに言語属性「ja」が付加された汎用文字コード「漢字」が含まれる場合、文字コード変換部111は、この「漢字」を、日本語仕様の文字コードに変換する。また、コマンド生成部82は、印刷装置32の文字コードを、漢字モード、文字コードテーブル=カタカナ、日本語文字セット=日本、文字=Shift_JISへ変換するための文字コード切り替えコマンドを付加する。
ところで、印刷制御装置31は、各印刷装置32の印刷装置情報57の一覧である印刷装置リスト47を記憶している(図3参照)。そこで、文字コード変換部111は、印刷装置リスト47を参照し、汎用文字コードに付加された言語属性が、印刷装置ID(印刷装置指定情報)によって指定された印刷装置32の機種または搭載文字に対応している場合のみ、その汎用文字コードの変換を行う、言い換えれば、指定された言語属性と印刷装置32の仕様が対応していない場合、その言語属性が付加された汎用文字コードの変換を行わない。これにより、機種や搭載文字の異なる複数の印刷装置32に対して、同じ印刷データを送信した場合でも、各印刷装置32の仕様に応じて、異なる印刷結果を得ることができる。この点については、図14にて後述する。
一方、印刷データ生成部72は、必要に応じて、言語属性の付加を省略することができる。文字コード変換部111は、ホスト20から送信された印刷データに、言語属性が付加されていない汎用文字コードが含まれる場合、当該汎用文字コードの直前に変換した言語属性に基づいて変換を行う。つまり、直前に変換した言語属性を、揮発性または不揮発性の記憶領域に記憶しておく。またこの場合、コマンド生成部82は、文字コード切り替えコマンドの付加を省略する。これにより、印刷データ生成部72は、同じ言語属性の文字コードを続けて印刷する場合、言語属性の付加を省略することができる。また、言語属性が付加されていない場合、コマンド生成部82は、文字コード切り替えコマンドの付加を省略するため、印刷装置32に送信する印刷指示コマンドのデータ量をも減らすことができる。
なお、汎用文字コードに言語属性が付加されていない場合、直前に変換した言語属性ではなく、デフォルトの言語属性(例えば、言語属性「en」=ANKモード)に基づいて、汎用文字コードを変換しても良い。また、直前に変換した言語属性が存在しない場合のみ(電源ON後、最初の印刷を行う場合など)、デフォルトの言語属性に基づいて変換を行うようにしても良い。
図13は、第3実施形態に係る印刷データの一例を示す図である。同図に示すように、印刷データ生成部72は、印刷データを、XML言語(マークアップ言語)で記述する。また、言語属性を、要素の属性として記述し、汎用文字コードを、要素の内容として記述する。図14は、図13の印刷データに基づく印刷結果を示す図である。例えば、図14(a)は、図13の印刷データを、日本語仕様の印刷装置32を用いて印刷した場合の印刷結果を示している。つまり、図13に示した汎用文字コードC1〜C10のうち、日本語仕様の印刷装置32がサポートする搭載文字に対応した汎用文字コードC1〜C7が印刷対象となっている。同様に、図14(b)は、韓国語仕様の印刷装置32を用いて印刷した場合の印刷結果を示しており、韓国語仕様の印刷装置32に対応した汎用文字コードC1〜C6,C8が印刷対象となっている。また、図14(c)は、ANKモードの印刷装置32を用いて印刷した場合の印刷結果を示しており、ANK仕様の印刷装置32に対応した汎用文字コードC1〜C6が印刷対象となっている。
次に、図15のフローチャートを参照し、第3実施形態に係る印刷制御の流れについて説明する。印刷制御装置31は、ホスト20から印刷データを受信すると(S21)、その中に含まれる言語属性と汎用文字コードの組み合わせを取得する(S22)。その後、言語属性に基づいて、汎用文字コードを印刷装置32用の文字コードに変換し(S23)、コマンド列(印刷指示コマンド)を生成する(S24)。最後に、生成したコマンド列を、印刷装置32に送信する(S25)。
以上説明したとおり、第3実施形態によれば、ホスト20から、言語属性が付加された汎用文字コードを含む印刷データを受信し、汎用文字コードを、言語属性に対応する文字コードに変換し、文字コード切り替えコマンドを付加して印刷装置32に送信するため、アプリケーションプログラマーが、印刷装置32の文字コード体系を意識する必要がない。例えば、Unicode文字の場合、1の汎用文字コードに対して、印刷装置32用の文字コードが複数存在する場合があるが、言語属性が付加されているため、正しい文字コードに変換することができる。
また、印刷制御装置31で文字コードの変換を行うため、接続される複数の印刷装置32の機種や搭載文字を問わない。このため、子機として複数の機種を混在させることができる。例えば、レジカウンターに設置された印刷装置32(レシートプリンター)は、日本語で印刷し、厨房に設置された印刷装置32(キッチンプリンター)は、中国語で印刷する、などの構成が可能である。さらに、印刷装置32の入れ替えの際に、異なる機種へ変更させることも可能である。
なお、第3実施形態の構成は、印刷ドライバーを必要とすることなく文字コードの変換を行うことができるため、ドライバーレスのプラットフォーム上で動作するホスト20を用いた場合に好適である。つまり、本実施形態のように、Webブラウザー27の印刷制御スクリプトを用いる構成の他、Webブラウザー27のプラグインを用いる構成、組み込み機器およびタブレット端末などドライバーの概念が存在しない電子機器をホスト20として用いた構成に適している。
また、上記の第3実施形態では、汎用文字コードに付加された言語属性が、指定された印刷装置32の搭載文字に対応していない場合、その汎用文字コードを無視するものとしたが、その汎用文字コードを含む印刷データ全体の印刷を中止しても良い。この場合、図13のように、多種類の言語属性が含まれる印刷データが送信されると、図11(a)に示した全ての仕様の印刷装置32で印刷不可となる。また、印刷を中止した場合、その旨をホスト20に通知することが好ましい。
[第4実施形態]
次に、図16ないし図23を参照し、本発明の第4実施形態について説明する。第4実施形態は、上述のとおりドライバーレスのプラットフォーム上で動作するホスト20を用いた場合でも、アプリケーションプログラマーが、印刷装置32のコマンド体系(カラーモードや画像形式の違い)を意識することなく画像印刷プログラムを作成することを課題とする。以下、第1〜3実施形態と異なる点のみ説明する。
図16は、第4実施形態に係る印刷システムSY4の機能ブロック図である。同図に示すように、本実施形態は、第1実施形態の機能構成と比較して、印刷制御装置31内に、妥当性判定部121を追加した構成となっている。妥当性判定部121は、ホスト20から送信された画像データの妥当性を判定する。
第4実施形態では、各印刷装置32が特定のコマンドに対応していることを想定している。例えば、印刷装置Aは、ビットイメージコマンドのみ対応し、印刷装置Bは、モノクロ画像印刷コマンドのみに対応している、などの状況が考えられる。ここで、印刷装置32のコマンド体系について簡単に説明する。画像印刷時に用いられる印刷制御コマンドには、「モノクロ画像印刷コマンド」、「グレースケール印刷コマンド」、「カラー画像印刷コマンド」などのカラーコマンドや、「ラスターグラフィックスコマンド」、「ビットイメージコマンド」などの画像形式コマンドがある。カラーコマンドは、印刷装置32のカラーモードに応じて使い分けられる。また、画像形式コマンドは、図17に示すように、データの並び順序の違いによって使い分けられる。「ラスターグラフィックスコマンド」は、図17(a)に示すように、データの並び方向が走査方向であり、「ビットイメージコマンド」は、図17(b)に示すように、縦方向が1行分に相当する。
なお、各印刷装置32がサポートするコマンド(カラーモードおよび画像形式)については、印刷制御装置31の印刷装置リスト47に記憶されている。このため、画像形式については、印刷制御装置31が、指定された印刷装置32がサポートする画像形式に応じて、適宜コマンド変換(「ラスターグラフィックスコマンド」から「ビットイメージコマンド」への変換、またはその逆変換)を行う。
また、第4実施形態では、ホスト20が、カラーモードおよび画像サイズを指定する属性が付加された画像データを含む印刷データを生成・送信する(印刷データ生成部72、印刷データ送信部73)。なお、画像データは、バイナリー形式且つbase64方式でエンコードされる。
特に図示しないが、ホスト20側では、Webブラウザー27によって表示される所定のフォーム上で、画像ファイルの指定、カラーモードの指定および色指定が可能となっており、これらの入力に基づいて、印刷データ(XML印刷ドキュメント)を生成する。なお、「画像ファイルの指定」により、結果的に画像サイズ(画像の幅および高さを示す情報)が指定されたこととなるが、画像ファイルと画像サイズを個別に指定し、画像サイズに応じて画像ファイルを拡大/縮小する構成でも良い。また、「色指定」とは、カラーモードの一種であり、例えば黒と赤の2色対応の印刷装置32で、モノクロ画像を黒・赤いずれの色で印刷するかを指定するものである。
妥当性判定部121は、画像データに含まれるカラーモードおよび画像サイズを指定する属性に基づいて、画像データの妥当性を判定する。ここで、カラーモードとは、画像の色情報の管理方法を示すものであり、モノクロ2階調、グレースケール、RGB、CMYKなどがある。また、カラーモードごとに、1画素あたりのデータ量が決まっており、例えば、モノクロ2階調では1ビット、グレースケール(16階調)では4ビット、グレースケール(256階調)では8ビット、RGBでは24ビット、CMYKでは32ビットである。
妥当性判定部121は、画像データのデータ量が、カラーモードに応じた1画素(1ドット)あたりのデータ量と、画像サイズとの乗算値に等しい場合、画像データが妥当であると判定する。例えば、256階調グレースケール(8ビット/画素)のラスターグラフィックスの場合、幅×高さバイトのデータ長が必要となる。つまり、幅5×高さ5の場合、25バイトのデータ長が必要となる。また、16階調グレースケール(4ビット/画素)のラスターグラフィックスで、1ラインごとにバイト単位に揃えるパディングを行う場合、(幅+1)/2×高さバイト(但し、除算結果の小数点以下は切り捨てる)のデータ長が必要となる。つまり、幅5×高さ5の場合、パディングで幅6×高さ5に揃えて、6/2×5=15バイトのデータ長が必要となる。さらに、モノクロ2階調(1ビット/画素)のラスターグラフィックスで、1ラインごとにバイト単位に揃えるパディングを行う場合、(幅+7)/8×高さバイト(但し、除算結果の小数点以下は切り捨てる)のデータ長が必要となる。つまり、幅5×高さ5の場合、パディングで幅8×高さ5に揃えて、8/8×5=5バイトのデータ長が必要となる。
一方、第4実施形態のコマンド生成部82は、妥当性判定部121により、画像データが妥当と判定された場合、当該画像データを、カラーモードに対応した印刷装置32用の制御コマンドに変換し、画像印刷コマンドを生成する。コマンド送信部83は、生成された画像印刷コマンドを、印刷装置32に送信する。
また、本実施形態のコマンド生成部82は、以下の処理も行う。例えば、画像印刷コマンドのデータ長が所定長さを超える場合、画像データを分割して、複数の画像印刷コマンドを生成する。これにより、画像印刷コマンドのデータ長が制限されるため、印刷中止処理を容易に行うことができる。また、複数の画像印刷コマンドを生成した場合、各画像印刷コマンドのそれぞれの前に、印刷位置を垂直方向(レシートの紙送り方向=ラスターグラフィックスコマンドの副走査方向)に移動させるための印刷位置移動コマンドを付加する。これにより、印刷装置32の印刷モードがページモードの場合(画像印刷によって印刷位置が移動しない印刷モードの場合)でも、垂直方向の印刷位置を揃えることができる。さらに、コマンド生成部82は、コマンド列の先頭に(画像印刷コマンドの前に)、印刷装置32のバッファー54の容量を超える所定長さ以上のダミーデータを含む初期化コマンドを付加する。これにより、直前の印刷中止処理によって途切れたコマンドを補完し、印刷装置32に処理させることができる。その他、コマンド生成部82は、指定されたカラーモードに応じて、例えばカラー用/グレースケール用の画像データをモノクロに変換するなど、適宜画像変換を行う。
ここで、印刷装置32の印刷モードについて説明する。本実施形態の印刷装置32は、印刷モードとして、「ノーマルモード」および「ページモード」を備えている。「ノーマルモード」とは、1行単位で印刷するモードであり、文字サイズや画像の高さに合わせて改行量を調整する。また、「行の先頭の状態(印刷位置が左端にあり、行バッファーが空の状態)」で動作する機能を有しており、印刷開始時や改行直後は、この状態となる。一方、「ページモード」とは、印刷領域を設定して印刷データを展開し、一括印刷するモードである。指定した印刷位置に文字や画像を展開し、「行の先頭の状態」の制約はない。なお、「ページモード」を指定する場合は、画像印刷コマンドの前にページモード開始コマンドを付加し、画像印刷コマンドの後にページモード終了コマンドを付加する。また、上述の「印刷位置移動コマンド」は、印刷装置32が「ページモード」に設定されている場合のみ有効となる。
次に、図18ないし図20を参照し、カラーモードおよび印刷モードによって異なる画像印刷コマンドのコマンド列について説明する。図18は、モノクロ印刷の場合の画像印刷コマンドを示している。図18(a)に示すように、「ノーマルモード・分割なし」の場合(画像印刷コマンドのデータ長が所定長さを超えない場合)は、画像印刷コマンドの前に初期化コマンドが付加された構成となる。なお、初期化コマンドは、第1実施形態と同様である(図6(a)参照)。また、第1実施形態と同様に、画像印刷コマンドの後に状態取得コマンドを付加しても良い。
また、図18(b)に示すように、「ノーマルモード・分割あり」の場合は、初期化コマンドの後に複数の画像印刷コマンドが続く構成となる。また、図18(c)に示すように、「ページモード・分割なし」の場合は、初期化コマンドの後にページモード開始コマンド、画像印刷コマンド、ページモード終了コマンドと続く構成となる。さらに、図18(d)に示すように、「ページモード・分割あり」の場合は、初期化コマンドの後にページモード開始コマンド、その後、分割数分の印刷位置移動コマンドおよび画像印刷コマンド、ページモード終了コマンドと続く構成となる。
図19は、グレースケール印刷の場合の画像印刷コマンドを示している。グレースケール印刷の場合は、50%、25%、12.5%、6.25%と、各階調を指定した画像印刷コマンドを含む構成となる。その他、印刷モード・分割の有無に応じたコマンド列の構成は、同図に示すとおりである。また、図20は、カラー印刷の場合の画像印刷コマンドを示している。カラー印刷の場合は、Y(イエロー)、M(マゼンタ)、C(シアン)、K(ブラック)と各カラーを指定した画像印刷コマンドを含む構成となる。その他、印刷モード・分割の有無に応じたコマンド列の構成は、同図に示すとおりである。
図21は、第4実施形態に係る印刷データの一例を示す図である。同図に示すように、印刷データ生成部72は、印刷データを、XML言語(マークアップ言語)で記述すると共に、画像サイズおよびカラーモードを要素の属性として記述し、画像データ(AAAA・・・AAAA)を要素の内容として記述する。なお、同図において、カラーモードの指定がない画像データD1は、Webブラウザー27によって表示される所定のフォーム上でカラーモードが指定されなかった場合のプログラム例を示している。本実施形態では、カラーモードが指定されなかった場合、デフォルト設定値である「モノクロ印刷」が指定されたものとして処理する。
図22(b),(c)は、図21の印刷データの印刷結果を示している。なお、上述の画像データ(AAAA・・・AAAA)は、図22(a)に示す画像ファイルを示しているものとする。図22(b)に示すように、印刷装置32が「モノクロ印刷コマンド」に対応している場合、画像データD1,D2に基づく画像が印刷される。また、図22(c)に示すように、印刷装置32が「モノクロ印刷コマンド」および「4ビットグレースケールコマンド」に対応している場合、画像データD1,D2,D3に基づく画像が印刷される。この場合、画像データD3に基づく画像は、グレースケールで印刷される。このように、図21に示した画像データD1〜D6のうち、印刷装置32のカラーモードに対応する画像データのみが印刷対象となり、他の画像データは無視される。
次に、図23のフローチャートを参照し、第4実施形態に係る印刷制御の流れについて説明する。印刷制御装置31は、ホスト20から印刷データを受信すると(S31)、その中に含まれる画像属性(カラーモード属性および画像サイズ属性)と画像データの組み合わせを取得する(S32)。取得したこれらの組み合わせに基づいて、印刷データに含まれる各画像データの妥当性を判定する(S33)。画像データの妥当性は、上述のとおり、画像データのデータ量が、カラーモードに応じた1画素あたりのデータ量と、画像サイズとの乗算値に等しいか否かに応じて判定する。妥当でないと判定した場合は(S34:No)、コマンド列を生成することなく、処理を終了する。なお、S34の判定前に、マークアップスキーマによる印刷データの判定を行っても良い。
また、画像データが妥当であると判定した場合は(S34:Yes)、画像印刷コマンドのデータ長が所定長さを超えるか否かを判別する(S35)。所定長さを超えない場合は(S35:No)、画像印刷コマンドの前に初期化コマンドを付加してコマンド列(印刷指示コマンド)を生成する(S36)。一方、画像印刷コマンドのデータ長が所定長さを超える場合は(S35:Yes)、画像データを分割してコマンド列を生成し、初期化コマンドを先頭に、且つ各画像印刷コマンドの前に印刷位置移動コマンドを付加してコマンド列(印刷指示コマンド)を生成する(S37)。その後(S36,S37の後)、生成したコマンド列を印刷装置32に送信する(S38)。
以上説明したとおり、第4実施形態によれば、印刷制御装置31により、カラーモードおよび画像サイズを指定する属性が付加された画像データを、カラーモードに対応した印刷装置32用の制御コマンドに変換するため、ドライバーレスのプラットフォーム上で動作するホスト20を用いた場合でも、カラーモードや画像形式によって異なるコマンドの違いを印刷制御装置31で吸収することができる。これにより、アプリケーションプログラマーは、印刷装置32のコマンド体系を意識することなく画像を印刷させることができる。また、印刷制御装置31でカラーモードや画像形式の違いを吸収できるため、複数の印刷装置32として、コマンド体系の異なる複数の機種を混在させることができる。また、印刷装置32の入れ替えの際も、異なる機種への変更が可能である。
また、画像印刷コマンドの生成前に、カラーモードおよび画像サイズに基づいて画像データの妥当性を判定するため、不正な画像データを排除し、信頼性の高い印刷結果を得ることができる。また、マークアップ言語を用いることにより、カラーモードによるコマンドの違いをはじめ、画像印刷コマンドの分割、ページモードにおける印刷位置の移動、初期化コマンドなどを隠蔽することができる。
また、画像印刷コマンドのデータ長が所定長さを超える場合、画像データを分割して複数の画像印刷コマンドを生成するため、印刷装置32が印刷不可能な状態である場合など、印刷中止処理を行う場合、その処理を容易に行うことができる。例えば、画像印刷コマンドが、データ長を示す情報と、コマンド本体と、から成る場合、長大なコマンドの送信を始めた後に印刷を中止すると、そのコマンドを終了させるために(指定したデータ長分の印刷を実行させるために)、ダミーデータを送信し続ける必要があり、その分の時間と印刷用紙が無駄になるが、画像データを分割することで、その無駄を抑えることができる。
なお、第4実施形態の構成は、ホスト20に印刷ドライバーを必要としないため、第3実施形態と同様に、ドライバーレスのプラットフォーム上で動作するホスト20を用いた場合に好適である。また、上記の第4実施形態では、指定されたカラーモードが、指定された印刷装置32のコマンド体系に対応していない場合、そのカラーモードが付加された画像データを無視するものとしたが、画像データを含む印刷データ全体の印刷を中止しても良い。
以上、4つの実施形態を示したが、各実施形態を組み合わせても良い。例えば、第3実施形態および第4実施形態で示した文字列および画像の印刷指示コマンドの生成前に、印刷前コマンドを生成し、印刷装置32のステータスを確認した上で、印刷を実行しても良い。また、ステータス確認により印刷装置32が印刷不可能と判定した場合、第1実施形態で示したバッファークリアコマンドの送信を含む印刷中止処理を行っても良い。さらに、第1実施形態で示したように、印刷実行に伴って印刷装置32のステータスを取得すると共に、第2実施形態で示したように、定期的または所定のトリガーで空印刷データを送信することにより、印刷処理を伴わないステータス取得を行っても良い。
また、図24に示すように、システム構成を変形させても良い。例えば、図24(a)は、印刷制御装置31と印刷装置32とを一体化したインテリジェント機能付き印刷装置30に、複数台の印刷装置32(インテリジェント機能が搭載されていない印刷装置)を接続したシステム構成を示している。このように、インテリジェント機能付き印刷装置30に接続する印刷装置32の数(子機の数)は任意である。また、第3実施形態および第4実施形態で、このようなシステム構成を採用した場合も、機種、搭載文字、カラーモード等が異なる印刷装置32を混在させることができる。さらに、印刷装置32の入れ替えの際も、異なる機種、搭載文字、カラーモードへの変更が可能である。
また、図24(b)は、複数の印刷制御装置31で複数の印刷装置32を共有した場合のシステム構成を示す図である。このように、印刷制御装置31を冗長化して印刷装置32を共有することで、堅牢な印刷システムSYを構築することができる。なお、図24(b)のシステム構成において、「印刷制御装置ア」と「印刷装置A」および/または「印刷制御装置イ」と「印刷装置B」を、それぞれ1台のインテリジェント機能付き印刷装置30で実現することも可能である。
また、上記の各実施形態に示した印刷システムSY(SY1〜SY4)の各構成要素をプログラムとして提供することが可能である。また、そのプログラムを各種記録媒体(CD−ROM、フラッシュメモリー等)に格納して提供することも可能である。すなわち、コンピューターを印刷システムSYの各部として機能させるためのプログラム、またはコンピューターに印刷システムSYの各処理工程を実行させるためのプログラム、並びにそれらを記録した記録媒体も、本発明の権利範囲に含まれる。
また、上記の各実施形態では、印刷装置32としてレシートプリンターを例示したが、レシートプリンター以外の印刷装置にも、本発明を適用可能である。また、印刷装置32以外に、ステータス取得、文字コード変換、画像変換を必要とする種々のデバイスに本発明を適用しても良い。また、上記の実施形態では、スクリプトの一例として、JavaScript(登録商標)を例示したが、これ以外の各種プログラミング言語を用いた場合でも本発明を適用可能である。その他、本発明の要旨を逸脱しない範囲で、適宜変更が可能である。