以下に添付図面を参照して、この発明にかかるプリンタの好適な実施の形態を詳細に説明する。
(印刷システムのシステム構成)
まず、この発明にかかる実施の形態の印刷システムのシステム構成について説明する。図1は、この発明にかかる実施の形態の印刷システムのシステム構成を示す説明図である。
図1において、この発明にかかる実施の形態の印刷システム100は、サーバであるプリンタ110と、プリンタ110に対して各種の要求を出力するクライアント120と、によって構成される。クライアント120は、たとえば、汎用的なパーソナルコンピュータやタブレット端末などのコンピュータ装置によって実現することができる。
クライアント120は、印刷プログラムなどを記憶する記憶装置121と、印刷プログラムを実行するプログラム実行装置122と、プリンタ110との間で通信をおこなう通信制御部123と、を備えている。記憶装置121は、クライアント120を実現するパーソナルコンピュータが備えるハードディスクやタブレット端末が備えるSSD(Solid State Drive)におけるフラッシュメモリや印刷プログラムを外部ネットワークに配置することができるクラウドサーバなどによって実現することができる。
プログラム実行装置122は、CPU(Central Processing Unit)、ブートプログラムなどのプログラムを記憶するメモリ、およびプログラム実行装置122に対するデータの入出力回路などによって実現することができる(いずれも図示を省略する)。通信制御部123は、アナログ回路の要素とデジタル回路の要素を備えた混合信号回路などからなる通信回路によって実現することができる。
プリンタ110は、クライアント120との間で通信をおこなう通信制御部111を備えている。通信制御部111は、クライアント120が備える通信制御部123と同様に、アナログ回路の要素とデジタル回路の要素を備えた混合信号回路などからなる通信回路によって実現することができる。この実施の形態においては、通信制御部111によって、この発明にかかる通信手段が実現される。
通信制御部111は、クライアント120との間で通信をおこなうことにより、たとえば、クライアント120から送信される従来コマンドやXMLコマンドを受信する。従来コマンドやXMLコマンドについては後述する。また、通信制御部111は、クライアント120との間で通信をおこなうことにより、たとえば、プリンタ110において発生したエラーなどをクライアント120に通知してもよい。
また、プリンタ110は、印字ヘッド制御部112、紙送りモータ制御部113、印刷制御部114、従来コマンド構文解析部115、および、XMLコマンド構文解析部116を備えている。プリンタ110は、図示を省略する印字ヘッドを備えており、印字ヘッド制御部112は、当該印字ヘッドを駆動制御する。印字ヘッドは、たとえば、サーマル方式による印字をおこなうサーマルヘッドによって実現することができる。サーマルヘッドは、基板上に一列に配置された複数の発熱抵抗体を備えている。印字ヘッド制御部112は、従来コマンドやXMLコマンドに基づいて、サーマルヘッドが備える複数の発熱抵抗体を選択的に発熱させることにより感熱発色性の記録媒体(感熱紙)を発色させることによって印字をおこなう。
印字ヘッドは、サーマルヘッドによって実現するものに限らない。印字ヘッドは、サーマルヘッドに代えて、感圧発色性を有する記録媒体に対してワイヤーの先端を打ち当てることにより感圧方式による印字をおこなうインパクトヘッドによって実現してもよい。あるいは、印字ヘッドは、記録媒体に対してインク滴を吐出させることによって印字をおこなうインクジェットヘッドによって実現してもよい。
また、プリンタ110は、図示を省略する紙送りモータを備えており、紙送りモータ制御部113は、当該紙送りモータを駆動制御する。紙送りモータには図示を省略する紙送りローラが連結されており、従来コマンドやXMLコマンドに基づいて紙送りモータを所定方向に回転駆動して紙送りローラを所定方向に回転させることによって、紙などの記録媒体を所定方向に搬送する。紙送りモータは、正回転方向および逆回転方向に回転可能であって、紙送りモータ制御部113は、紙送りモータを選択的に正回転または逆回転させることにより、記録媒体を順方向または逆方向に搬送する。
印刷制御部114は、印字ヘッド制御部112や紙送りモータ制御部113を制御する。印刷制御部114は、印字ヘッド制御部112が制御する印字ヘッドと紙送りモータ制御部113が制御する紙送りモータとの動作の同期をとる。これにより、印字ヘッドによる印字にあわせて所定方向に紙送りをおこない、従来コマンドやXMLコマンドに基づく情報を記録媒体に印字することができる。
この実施の形態においては、印字ヘッド制御部112が制御する各部、および、紙送りモータおよび紙送りモータ制御部113によって、この発明にかかる印刷機構を実現することができる。また、この実施の形態においては、印字ヘッド制御部112や紙送りモータ制御部113を制御する印刷制御部114によって、この発明にかかる印刷制御手段を実現することができる。
印刷制御部114は、従来コマンド構文解析部115およびXMLコマンド構文解析部116によって制御される。印刷制御部114は、従来コマンド構文解析部115による印刷制御部114の制御、および、XMLコマンド構文解析部116による印刷制御部114の制御のいずれか一方を選択的に受け付けるために、印刷制御部114と、従来コマンド構文解析部115およびXMLコマンド構文解析部116のいずれか一方の構文解析部と、を選択的に接続するように接続状態を切り替えるスイッチ117を備えている。
スイッチ117は、待機状態である「制御開始可能」と、「制御中」と、の2つの状態を取りうる。スイッチ117は、「制御開始可能」状態である場合に、従来コマンド構文解析部115およびXMLコマンド構文解析部116からの制御開始指示を受け付けることができる。スイッチ117は、「制御開始可能」状態である場合に、従来コマンド構文解析部115またはXMLコマンド構文解析部116からの制御開始指示を受け付けると、「制御中」状態に切り替わる。
「制御開始可能」状態であるスイッチ117に対して制御開始指示を出力した従来コマンド構文解析部115またはXMLコマンド構文解析部116は、スイッチ117の制御権をもつ。スイッチ117は、「制御中」状態である場合は、制御権をもつ構文解析部(従来コマンド構文解析部115またはXMLコマンド構文解析部116)から制御終了指示を受け付けた場合に、「制御開始可能」状態に切り替わる。これにより、スイッチ117は、ふたたび、従来コマンド構文解析部115およびXMLコマンド構文解析部116からの制御開始指示を受け付けることができる状態に切り替わる。
このように、印刷制御部114は、「制御開始可能」状態であるスイッチ117に対して制御開始指示を出力した従来コマンド構文解析部115またはXMLコマンド構文解析部116によって、排他的に制御することができる。このようなスイッチ117の排他的制御により、スイッチ117が「制御中」状態である場合、すなわち、制御権をもつ構文解析部(従来コマンド構文解析部115またはXMLコマンド構文解析部116)によって占有されている状態の印刷制御部114は、当該制御権をもつ構文解析部から制御終了指示を受け付けるまで、あらたな制御開始指示を受け付けない。この実施の形態においては、スイッチ117によって、この発明にかかる切替手段が実現される。
(従来コマンドの解析手順)
つぎに、従来コマンドの解析手順について説明する。図2は、従来コマンドの解析手順を示す説明図である。図2において、従来コマンド構文解析部115は、通信制御部111がクライアント120から従来コマンドを受信した場合に、当該従来コマンドを解析する。
従来コマンドは、印刷動作にかかる各種の処理や印刷動作完了後の後処理など、印刷制御部114の制御にかかる一連のコマンドを含んでおり、各プリンタの製造者などによって開発されたプリンタ専用の記述言語によって記述されている。具体的に、従来コマンドは、通信制御部111による通信の開始を指示する通信開始指示(コマンド)と、当該通信開始指示によって開始された通信の終了を指示する通信終了指示(コマンド)と、印刷機構の印刷動作に関する印刷指示(コマンド)と、を含んでいる。
プリンタ110において、従来コマンドにおける通信開始指示と印刷指示と通信終了指示とは、一連のシーケンスとして処理される。このため、従来コマンドを受信している間、通信制御部111は、従来コマンドの受信に占有され、従来コマンド構文解析部115は、従来コマンドを一連のシーケンスとして処理する。この実施の形態においては、従来コマンドによって、この発明にかかる一連のコマンドを含む印刷要求が実現される。
通信制御部111は、従来コマンドを受信すると、当該従来コマンドに含まれる通信開始指示に基づいて制御開始指示を生成し、生成した制御開始指示を、従来コマンド構文解析部115を介して印刷制御部114に出力する。制御開始指示は、スイッチ117が「制御開始可能」状態である場合に、当該スイッチ117を介して印刷制御部114に受け付けられる。これにより、スイッチ117が「制御開始可能」状態から「制御中」状態に切り替わり、従来コマンド構文解析部115が印刷制御部114の制御権をもち、印刷制御部114を制御することができる。従来コマンド構文解析部115は、制御開始指示を出力した時点においてスイッチ117が「制御中」状態である場合、生成した各種の指示を所定のメモリにスプールしてもよい。
つぎに、通信制御部111は、従来コマンドに含まれる印刷指示に基づくコマンドを従来コマンド構文解析部115に送信する。従来コマンドに含まれる印刷指示は、印刷出力する出力内容(文字や図形など)を示す印刷データと、当該印刷データの印刷出力を指示するコマンドと、を含んでいる。
印刷データは、具体的には、たとえば、小売店において買い物をした顧客に対して当該小売店から発行するレシートを最終的な印刷結果とする場合、当該レシートに印刷される「店舗のロゴ」、「店舗の所在地、連絡先(代表電話番号など)」および「取引内容(購入品名、単価・小計額・預かり金額・釣り銭額などの金額明細)」などのように、当該レシートに印刷されるすべての文字や画像によって実現される。
従来コマンドにおいて、印刷指示は、先入れ先出し(FIFO:First In First Out)の形態で構成されている。従来コマンド構文解析部115は、印刷指示を一旦キューに格納した後、当該印刷指示の末尾に記述されるコマンドに基づいて、ラスター画像(画素を縦横に配列したビットマップ画像)に変換し、変換により得られたラスター画像と当該ラスター画像の印刷出力を指示するコマンドとを含む印刷指示を生成し、生成した印刷指示を印刷制御部114に対して送信する。
これにより、従来コマンド構文解析部115による従来コマンドの解析が実現される。具体的には、従来コマンド構文解析部115は、たとえば、RIP(Raster Image Processor)により実現することができる。RIPは、専用のハードウエア回路によって実現してもよく、ソフトウエア(ソフトウエアRIP)によって実現してもよい。
印刷制御部114は、従来コマンド構文解析部115から送信された印刷指示に基づいて印字ヘッド制御部112や紙送りモータ制御部113を制御し、当該印刷指示に含まれるラスター画像を記録媒体に印刷する印刷動作をおこなう。具体的には、印刷制御部114は、印字ヘッド制御部112が制御する印字ヘッドと紙送りモータ制御部113が制御する紙送りモータとの動作の同期をとりながら印字ヘッド制御部112や紙送りモータ制御部113を制御することにより、印字ヘッドによる印字にあわせて所定方向に紙送りをおこない、印刷指示に含まれるラスター画像を記録媒体に印刷する印刷動作をおこなう。
その後、通信制御部111は、従来コマンドに含まれる通信終了指示に基づいて制御終了指示を生成し、生成した制御終了指示を、従来コマンド構文解析部115を介して印刷制御部114に出力する。これにより、スイッチ117が「制御中」状態から「制御開始可能」状態に切り替わり、従来コマンド構文解析部115がもつ印刷制御部114の制御権がなくなる。
(XMLコマンドの解析手順)
つぎに、XMLコマンドの解析手順について説明する。図3は、XMLコマンドの解析手順を示す説明図である。図3において、通信制御部111がクライアント120からXMLコマンドを受信した場合、XMLコマンド構文解析部116は当該XMLコマンドを解析する。
XMLコマンドは最終的な印刷結果を得るためのクライアント120からプリンタ110への要求であって、1つの印刷結果はプリンタ110において複数のXMLコマンドを実行することによって得られる。複数のXMLコマンドは、それぞれ、クライアント120から受信した要求に応じた印刷の開始を要求する印刷要求開始、当該印刷要求開始に応じて開始された印刷の終了を要求する印刷要求終了、または、印刷機構による印刷動作を要求する印刷要求のいずれかを示す。クライアント120は、1つの印刷結果を得るための複数のXMLコマンドを、印刷要求開始を示すXMLコマンド、印刷要求を示すXMLコマンド、印刷要求終了を示すXMLコマンドの順に送信する。
XMLコマンドは、印刷制御部114の制御に関するコマンドを含む所定の構造化形式のデータ、すなわち、構造化文書によって構成されている。具体的には、XMLコマンドは、たとえば、印刷要求開始、印刷要求終了、印刷要求を、HTTPのプロトコルにしたがって記述したXMLデータ(XML文書)によって構成することができる。このプロトコルは、HTTPに限るものではない。プロトコルは、HTTPに代えて、XMLデータを伝送することができる公知の各種のプロトコル(ソケット通信など)や伝送路(USBなど)を用いることができる。
XMLデータ(XML文書)によって構成された、印刷要求開始を示すXMLコマンドは、XMLコマンド構文解析部116から印刷制御部114に対して印刷の開始を要求するコマンドを実現する。XMLデータ(XML文書)によって構成された、印刷要求終了を示すXMLコマンドは、XMLコマンド構文解析部116から印刷制御部114に対して印刷の終了を要求するコマンドを実現する。XMLデータ(XML文書)によって構成された、印刷要求を示すXMLコマンドは、印刷出力する出力内容を示す文字や図形に関する情報や、文字や図形の位置に関する情報などを含んでおり、これらの情報に基づく印刷動作の実行を要求するコマンドを実現する。
1つの印刷結果を得るための印刷要求は、1つに限るものではなく、1つの印刷結果に要求される最終的な出力内容を複数に分割することにより得られる断片的な出力内容のそれぞれを示すプリントデータや、プリントデータが示す断片的な出力内容のそれぞれの記録媒体への印刷を指示するコマンドによって構成される、複数の印刷要求であってもよい。
具体的には、たとえば、小売店において買い物をした顧客に対して当該小売店から発行するレシートを1つの印刷結果として得る場合、当該レシートに印刷される「店舗のロゴ」、「店舗の所在地、連絡先(代表電話番号など)」、「取引内容(購入品名、単価・小計額・預かり金額・釣り銭額などの金額明細)」などのそれぞれを、断片的な出力内容とすることができる。
この場合、上記のレシートを発行するために、プリンタ110は、「店舗のロゴ」を示すプリントデータと当該プリントデータが示す「店舗のロゴ」の記録媒体への印刷を指示するコマンドとによって構成される印刷要求、「店舗の所在地、連絡先」を示すプリントデータと当該プリントデータが示す「店舗の所在地、連絡先」の記録媒体への印刷を指示するコマンドとによって構成される印刷要求、「取引内容」を示すプリントデータと当該プリントデータが示す「取引内容」の記録媒体への印刷を指示するコマンドとによって構成される印刷要求の3つの印刷要求のそれぞれを含む3つのXMLコマンドをクライアント120から受信する。
XMLコマンド構文解析部116は、通信制御部111が受信したXML形式のXMLコマンドを読み込み、読み込んだXMLコマンドがXMLの文法規則に合致しているか否かをチェックする。XMLコマンド構文解析部116は、チェックをおこなった結果、XMLの文法規則に合致していると判断したXMLコマンドに基づいて、印刷制御部114を制御する。XMLコマンド構文解析部116は、さらに、厳密なチェックとして、そのXMLコマンドのデータ構造を規定するDTDファイルなどを参照して、データ構造の検証をおこなってもよい。
上述したように、XMLコマンドは、「印刷要求開始を示すXMLコマンド」、「印刷要求を示すXMLコマンド」、「印刷要求終了を示すXMLコマンド」の順番で順次送信される。このため、XMLコマンド構文解析部116は、通信制御部111が印刷要求開始を示すXMLコマンドを受信すると、当該印刷要求開始に基づいて制御開始指示を生成し、生成した制御開始指示を印刷制御部114に対して出力する。この実施の形態においては、印刷要求開始に基づく制御開始指示によって、この発明にかかる印刷の開始を要求するコマンドに基づく制御開始指示が実現される。
この制御開始指示は、スイッチ117が「制御開始可能」状態である場合に、当該スイッチ117を介して印刷制御部114に受け付けられる。これにより、スイッチ117が「制御開始可能」状態から「制御中」状態に切り替わり、XMLコマンド構文解析部116が印刷制御部114の制御権をもつ。XMLコマンド構文解析部116は、制御開始指示を出力した時点においてスイッチ117が「制御中」状態である場合、XMLコマンドまたは当該XMLコマンドの解析結果を、所定のメモリにスプールしてもよい。また、前記スプールしたコマンドについては、スイッチ117が「制御開始可能」状態になったタイミングで、制御を開始してもよい。
つぎに、XMLコマンド構文解析部116は、印刷要求を示すXMLコマンドに基づいて、当該XMLコマンドに含まれるプリントデータが示す断片的な出力内容の印刷出力を指示する印刷指示を生成する。印刷要求を示すXMLコマンドが複数存在する場合、XMLコマンド構文解析部116は、各XMLコマンドに含まれるプリントデータが示す断片的な出力内容の印刷出力を指示する印刷指示を生成する。
XMLコマンド構文解析部116は、XML形式によって記述されているプリントデータが示す文字や図形をラスター画像に変換し、変換により得られたラスター画像と当該ラスター画像の印刷出力を指示するコマンドとを含む印刷指示を生成する。これにより、XMLコマンド構文解析部116によるXMLコマンドの解析が実現される。
印刷要求を示すXMLコマンドが複数存在する場合、XMLコマンド構文解析部116は、各印刷要求を受信するごとに、当該印刷要求に基づいて指示を生成する。XMLコマンド構文解析部116は、印刷要求終了を示すXMLコマンドを受信するまで、印刷要求を示すXMLコマンドを受信するごとに、印刷指示を生成する。そして、XMLコマンド構文解析部116は、印刷指示を生成するごとに、生成した印刷指示を印刷制御部114に対して送信する。
印刷制御部114は、XMLコマンド構文解析部116から送信された印刷指示に基づいて印字ヘッド制御部112や紙送りモータ制御部113を制御し、当該印刷指示に含まれるラスター画像を記録媒体に印刷する印刷動作をおこなう。
その後、XMLコマンド構文解析部116は、通信制御部111が印刷要求終了を示すXMLコマンドを受信すると、当該印刷要求終了に基づいて制御終了指示を生成し、生成した制御終了指示を印刷制御部114に対して出力する。この実施の形態においては、印刷要求終了に基づいて制御終了指示によって、この発明にかかる印刷の終了を要求するコマンドに基づく制御終了指示が実現される。これにより、スイッチ117が「制御中」状態から「制御開始可能」状態に切り替わり、XMLコマンド構文解析部116がもつ印刷制御部114の制御権がなくなる。
プリンタ110においては、クライアント120から送信された情報を受信すると、受信した情報の解析を従来コマンド構文解析部115およびXMLコマンド構文解析部116の双方においておこなう。そして、正常に解析がおこなわれた構文解析部(従来コマンド構文解析部115またはXMLコマンド構文解析部116)から印刷制御部114に対して、制御開始指示を出力する。これにより、制御開始指示を出力した構文解析部が印刷制御部114の制御権をもつ。
(従来のプリンタの一例)
つぎに、従来のプリンタの一例について説明する。図4は、従来のプリンタを備えた従来の印刷システムのシステム構成を示す説明図である。図4において、従来の印刷システムは、従来のプリンタ410と、プリンタ410に対して各種の要求を出力するクライアント420と、によって構成される。
クライアント420は、印刷プログラムを記憶する記憶装置421と、印刷プログラムの実行にしたがってプリンタ410との間で通信をおこなう通信制御部422と、を備えている。プリンタ410は、クライアント420との間で通信をおこなう通信制御部411、クライアント420から送信される従来コマンドを解析する従来コマンド構文解析部412、クライアント420から送信されるXMLデータを解析するXMLコマンド構文解析部413、および、プリンタ410が備える各部を制御するプリンタ制御部414を備えている。
従来コマンド構文解析部412およびXMLコマンド構文解析部413は、それぞれ、プリンタ制御部414を制御する。従来コマンド構文解析部412は、クライアント420から送信される従来コマンドに基づいてプリンタ制御部414を制御する間、当該プリンタ制御部414を一時的に占用する。XMLコマンド構文解析部413は、クライアント420から送信されるXMLデータに基づいてプリンタ制御部414を制御する間、当該プリンタ制御部414を一時的に占用する。
図5は、従来のプリンタ410によるXMLデータの解析手順を示す説明図である。図5において、XMLコマンド構文解析部413によるプリンタ制御部414の一時的な占用は、クライアント420から受信したXMLデータ単位でおこなわれる。XMLコマンド構文解析部413は、1つの印刷結果を得るために、複数のXMLデータに基づいてプリンタ制御部414を制御する場合がある。
この場合、XMLコマンド構文解析部413は、プリンタ制御部414に対して、XMLデータごとに、印刷動作に先立って制御開始指示を出力し、印刷動作の完了後に制御終了指示を出力する。プリンタ制御部414は、制御開始指示を受け付けた場合にXMLコマンド構文解析部413によって占用され、制御終了指示を受け付けた場合にXMLコマンド構文解析部413による占用から解放される。このように、従来のプリンタ410においては、XMLデータ単位でプリンタ制御部414の占用と解放とが繰り返される。
図6は、従来のプリンタ410における問題点を示す説明図である。上述したように、プリンタ制御部414は、制御開始指示を受け付けた場合にXMLコマンド構文解析部413によって占用され、制御終了指示を受け付けた場合にXMLコマンド構文解析部413による占用から解放される。このため、XMLコマンド構文解析部413によるプリンタ制御部414の制御によって1つの(一連の)印刷結果を得るために、複数のXMLデータに基づいてプリンタ制御部414を制御する場合、図6に示すように、先に受信したXMLデータに基づくプリンタ制御部414の制御が完了してから(UNLOCK状態になってから)、後にXMLデータを受信するまでに、先に受信したXMLデータと後に受信するXMLデータとの間に、従来コマンドが割り込むことが想定される。
従来コマンドが割り込むと、XMLデータを送信したクライアント420側では一連の印刷物として得たい印刷物の間に、従来コマンドに基づく印刷物が挿入されてしまう。このため、本来目的としていた態様での印刷物が得られなくなってしまう。
(プリンタ110の処理手順)
つぎに、プリンタ110の処理手順の一例について説明する。図7は、プリンタ110の処理手順の一例を示すフローチャートである。図7のフローチャートにおいて、まず、通信制御部111において、従来コマンドを受信したか否かを判断する(ステップS701)。ステップS701において、従来コマンドを受信した場合(ステップS701:Yes)、従来コマンド構文解析部115において、受信した従来コマンドの構文を解析する(ステップS702)。
つぎに、ステップS702における解析結果に基づいて、通信制御部111から従来コマンド構文解析部115を介して、印刷制御部114に対して制御開始指示を出力する(ステップS703)。ステップS703においては、ステップS702における解析結果に基づいて、従来コマンドに含まれる通信開始指示に基づく制御開始指示を生成し、生成した制御開始指示を通信制御部111から従来コマンド構文解析部115を介して、印刷制御部114に対して出力する。これにより、従来コマンド構文解析部115が印刷制御部114の制御権をもつ。
つぎに、ステップS702における解析結果に基づいて、従来コマンド構文解析部115から印刷制御部114に対して印刷指示を出力する(ステップS704)。ステップS704において、従来コマンド構文解析部115から出力された印刷指示を受け付けた印刷制御部114は、当該印刷指示に基づいて印字ヘッド制御部112や紙送りモータ制御部113を制御し、当該印刷指示に含まれるラスター画像を記録媒体に印刷する印刷動作をおこなう。
つぎに、印刷指示の出力を完了したか否かを判断する(ステップS705)。ステップS705においては、従来コマンドに含まれる複数の印刷指示における印刷データがそれぞれ示す文字や図形のラスター画像を、すべて印刷したか否かを判断する。ステップS705において、印刷指示の出力を完了していない場合(ステップS705:No)、ステップS704へ戻り、ステップS702における解析結果に基づいて、従来コマンド構文解析部115から印刷制御部114に対して、まだ出力していない印刷データを含む印刷指示を出力する。
一方、ステップS705において、印刷指示の出力を完了した場合(ステップS705:Yes)、ステップS702における解析結果に基づいて、通信制御部111から従来コマンド構文解析部115を介して、印刷制御部114に対して制御終了指示を出力して(ステップS706)、一連の処理を終了する。ステップS706においては、ステップS702における解析結果に基づいて、従来コマンドに含まれる通信終了指示に基づく制御終了指示を生成し、生成した制御終了指示を通信制御部111から従来コマンド構文解析部115を介して、印刷制御部114に対して出力する。これにより、スイッチ117が「制御中」状態から「制御開始可能」状態に切り替わり、従来コマンド構文解析部115がもつ印刷制御部114の制御権がなくなって、印刷制御部114は、従来コマンド構文解析部115またはXMLコマンド構文解析部116による制御を待機する。
ステップS701において、従来コマンドを受信していない場合(ステップS701:No)、XMLコマンドを受信したか否かを判断する(ステップS707)。そして、従来コマンドを受信しておらず、XMLコマンドも受信していない場合(ステップS707:No)、ステップS701へ戻る。
ステップS707において、XMLコマンドを受信した場合(ステップS707:Yes)、XMLコマンド構文解析部116において、受信したXMLコマンドの構文を解析する(ステップS708)。そして、ステップS708における解析結果に基づいて、受信したXMLコマンドが印刷要求終了である(印刷要求終了を示す)か否かを判断する(ステップS709)。
ステップS709において、ステップS707:Yesにおいて受信したXMLコマンドが印刷要求終了である場合(ステップS709:Yes)、ステップS716へ移行する。一方、ステップS709において、ステップS707:Yesにおいて受信したXMLコマンドが印刷要求終了ではない場合(ステップS709:No)、ステップS708における解析結果に基づいて、受信したXMLコマンドが印刷要求開始であるか否かを判断する(ステップS710)。
ステップS710において、ステップS707:Yesにおいて受信したXMLコマンドが印刷要求開始である場合(ステップS710:Yes)、通信制御部111からXMLコマンド構文解析部116を介して、印刷制御部114に対して制御開始指示を出力する(ステップS711)。ステップS711においては、ステップS708における解析結果に基づいて、XMLコマンドが示す印刷要求開始に基づく制御開始指示を生成し、生成した制御開始指示を、通信制御部111からXMLコマンド構文解析部116を介して、印刷制御部114に対して出力する。これにより、XMLコマンド構文解析部116が印刷制御部114の制御権をもつ。そして、ステップS714へ移行する。
一方、ステップS710において、ステップS707:Yesにおいて受信したXMLコマンドが印刷要求開始ではない場合(ステップS710:No)、ステップS708における解析結果に基づいて、受信したXMLコマンドが印刷要求であるか否かを判断する(ステップS712)。ステップS712において、ステップS707:Yesにおいて受信したXMLコマンドが、印刷要求終了ではなく、印刷要求開始でもなく、印刷要求でもない場合(ステップS712:No)、所定のエラー処理をおこなう。
所定のエラー処理は、たとえば、プリンタ110において、エラーの発生を示す警告音を発したり、エラーの発生を示すランプを点灯させたりする処理によって実現することができる。また、所定のエラー処理は、たとえば、ステップS707:Yesにおいて受信したXMLコマンドの送信元に対してエラーメッセージを送信する処理によって実現してもよい。
ステップS712において、ステップS707:Yesにおいて受信したXMLコマンドが印刷要求である場合(ステップS712:Yes)、ステップS708における解析結果に基づいて、XMLコマンド構文解析部116から印刷制御部114に対して印刷指示を出力して(ステップS713)、ステップS714へ移行する。ステップS713において、XMLコマンド構文解析部116から出力された印刷指示を受け付けた印刷制御部114は、当該印刷指示に基づいて印字ヘッド制御部112や紙送りモータ制御部113を制御し、当該印刷指示に含まれるラスター画像を記録媒体に印刷する印刷動作をおこなう。
ステップS714においては、XMLコマンドを受信したか否かを判断し(ステップS714)、XMLコマンドを受信した場合(ステップS714:Yes)、ステップS709へ戻る。そして、ステップS714:Yesにおいて受信したXMLコマンドが、印刷要求終了であるか否かを判断する。
一方、ステップS714において、XMLコマンドを受信していない場合(ステップS714:No)、印刷制御部114に対して、プリンタ110において最後に受信したXMLコマンドに基づく指示を出力してから所定時間が経過したか否かを判断する(ステップS715)。所定時間は、プリンタ110の設計者などによって任意に設定される時間であって、たとえば、「1秒」とすることができる。ステップS414においては、たとえば、印刷制御部114に対して、最後に受信したXMLコマンドに基づく指示(制御開始指示、制御終了指示あるいは印刷指示)を出力してから、1秒が経過したか否かを判断する。
ステップS715において、所定時間が経過していない場合(ステップS715:No)、ステップS714へ戻り、XMLコマンドを受信したか否かを判断する。一方、ステップS715において、所定時間が経過した場合(ステップS715:Yes)、ステップS716へ移行する。
ステップS716においては、ステップS708における解析結果に基づいて、通信制御部111からXMLコマンド構文解析部116を介して、印刷制御部114に対して制御終了指示を出力して(ステップS716)、一連の処理を終了する。ステップS716においては、ステップS708における解析結果に基づいて、XMLコマンドが示す印刷要求終了に基づく制御終了指示を生成し、生成した制御開始指示を、通信制御部111からXMLコマンド構文解析部116を介して、印刷制御部114に対して出力する。
これにより、スイッチ117が「制御中」状態から「制御開始可能」状態に切り替わり、XMLコマンド構文解析部116がもつ印刷制御部114の制御権がなくなって、印刷制御部114は、従来コマンド構文解析部115またはXMLコマンド構文解析部116による制御を待機する。このように、印刷制御部114に対して、プリンタ110において最後に受信したXMLコマンドに基づく指示を出力してから所定時間が経過した場合、すなわち、印刷制御部114に対して、プリンタ110において最後に受信したXMLコマンドに基づく指示を出力した後、XMLコマンドを受信しないまま所定時間が経過した場合は、XMLコマンド構文解析部116による印刷制御部114の占用状態が強制的に解除される。
以上説明したように、この発明にかかる実施の形態のプリンタ110は、印刷制御手段を実現する印刷制御部114と、通信手段を実現する通信制御部111と、第1の解析手段を実現する従来コマンド構文解析部115と、第2の解析手段を実現するXMLコマンド構文解析部116と、切替手段を実現するスイッチ117と、を備えている。
印刷制御部114は、記録媒体に対する印刷動作をおこなう印刷機構を制御する。通信制御部111は、外部装置であるクライアント120との間で通信をおこなう。従来コマンド構文解析部115は、通信制御部111によるクライアント120との通信結果に基づいて、印刷制御部114の制御にかかる一連のコマンドを含む印刷要求である従来コマンドを解析し、当該従来コマンドに含まれる一連のコマンドに基づいて印刷制御部114をシーケンス制御する。XMLコマンド構文解析部116は、通信制御部111によるクライアント120との通信結果に基づいて、印刷制御部114の制御に関するコマンドを含む所定の構造化文書を解析し、当該構造化文書に含まれるコマンドに基づいて前記印刷制御手段を制御する。
スイッチ117は、印刷制御部114において、従来コマンド構文解析部115およびXMLコマンド構文解析部116による制御を待機する待機状態である「制御開始可能」状態と、従来コマンド構文解析部115およびXMLコマンド構文解析部116のいずれか一方による制御を受け付ける「制御中」状態と、を選択的に切り替える。また、スイッチ117は、「制御開始可能」状態において、XMLコマンド構文解析部116から印刷の開始を要求するコマンドに基づく制御開始指示が出力された場合、XMLコマンド構文解析部116と印刷制御部114とを接続する「制御中」状態に切り替える。一方、スイッチ117は、「制御中」状態において、XMLコマンド構文解析部116から印刷の終了を要求するコマンドに基づく制御終了指示が出力された場合、XMLコマンド構文解析部116と印刷制御部114との接続を解放し待機状態に切り替える。
この発明にかかる実施の形態のプリンタ110によれば、XMLコマンドに基づく印刷動作を可能とすることにより、たとえば、レシートを印刷する場合に、「ショップロゴ」、「金額明細」、「クーポン券」などの任意の単位で印刷を指示することができる。これにより、印刷内容の一部に変更がある場合、該当するXMLコマンドを変更するだけでよく、複数のクライアント120が接続されることによって構築される印刷システム100の構築や管理の容易化を図ることができる。
また、この発明にかかる実施の形態のプリンタ110によれば、XMLコマンドに基づく制御開始指示に基づいて印刷を開始した場合は、印刷制御部114に対して印刷の終了を要求する制御終了指示が発行されるまでの間、XMLコマンド構文解析部116によって印刷制御部114を占用することができるので、たとえば、それぞれが「ショップロゴ」、「金額明細」、「クーポン券」などを示す複数のXMLコマンドに基づいて1枚のレシートを印刷する途中で、他のクライアント120から送信された印刷要求に基づく印刷が割り込むことを防止し、所望する印刷物を得ることができる。
このように、この発明にかかる実施の形態のプリンタ110によれば、従来コマンドに基づくシーケンス制御による印刷態様とXMLコマンドに含まれるコマンドに基づく制御に基づく印刷態様との複数の印刷態様を備えることによりプリンタ110の汎用性の向上を図るとともに、XMLコマンドに含まれるコマンドに基づく制御に基づく印刷態様を実現することによる意図しない割り込みが発生することを防止し、所望する印刷物を得ることができる。
具体的には、たとえば、弁当の製造および販売をおこなう店舗において、顧客から注文を受け付けた弁当を、会計時にレシートとともに発行する引換券に印刷した順番待ちの番号(受付番号)によって区別する運用をおこなっている場合、レシートの印刷と引換券の印刷との間に、別のレシートや引換券の印刷が割り込んでしまうと、レシートと、当該レシートに続けて発行される引換券と、が同一の注文にかかるものではなくなってしまう。
このような場合、レシートと引換券との対応付けが困難になり、顧客が注文して支払いをおこなった弁当と、当該顧客に渡された引換券に印刷された受付番号によって識別される弁当と、が異なってしまうなどの混乱を生じ、店舗の信用が低下してしまう。このような不具合を防止するために、レシートと引換券との対応関係を確認する作業や、製造した弁当を顧客に渡す際に当該弁当の内容を顧客とともに確認する作業をおこなうと、顧客に対して弁当を迅速に提供することができなくなり、顧客に不満を与えたり、売り上げを伸ばすことができなくなってしまう。
一方で、同一の注文にかかるレシートと引換券と切れ目のない一続きのシートとして発行すると、店員がレシートと引換券とを切り離す作業をおこなわなくてはならず、顧客に対して弁当を迅速に提供することができなくなり、顧客に不満を与えたり、売り上げを伸ばすことができなくなってしまう。
これに対し、この発明にかかる実施の形態のプリンタ110によれば、制御開始指示を発行してから制御終了指示を発行するまでの間、XMLコマンド構文解析部116によって印刷制御部114を占用(独占)することができるので、同一の注文にかかる、それぞれが独立したレシートと引換券とを連続して発行することができる。これにより、印刷システム100の構築や管理の容易化を図るとともに、プリンタ110を使用する現場におけるプリンタ110の良好な使い勝手を確保することができる。
また、この発明にかかる実施の形態のプリンタ110は、スイッチ117が、XMLコマンド構文解析部116からXMLコマンドに含まれるコマンドに基づく指示が出力されてから所定時間経過するまでに前記制御終了指示が出力されない場合、XMLコマンド構文解析部116と印刷制御部114との接続を解放し待機状態に切り替えるようにしたことを特徴としている。
この発明にかかる実施の形態のプリンタ110によれば、クライアント120からXMLコマンドを受信しない状態が所定時間継続した場合は、XMLコマンド構文解析部116の制御権を強制的に解放し「制御開始可能」状態に切り替えることにより、XMLコマンド構文解析部116で障害が発生した場合、XMLコマンド構文解析部116の制御権にかかるクライアント120との間における通信障害が生じた場合、意図せずにクライアント120の電源が遮断された場合などに、以降の印刷ができなくなることを防止できる。