JP4635831B2 - プリンタ及びプリンタの制御方法 - Google Patents

プリンタ及びプリンタの制御方法 Download PDF

Info

Publication number
JP4635831B2
JP4635831B2 JP2005324021A JP2005324021A JP4635831B2 JP 4635831 B2 JP4635831 B2 JP 4635831B2 JP 2005324021 A JP2005324021 A JP 2005324021A JP 2005324021 A JP2005324021 A JP 2005324021A JP 4635831 B2 JP4635831 B2 JP 4635831B2
Authority
JP
Japan
Prior art keywords
macro
command
data
buffer
definition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005324021A
Other languages
English (en)
Other versions
JP2007133514A (ja
Inventor
友晴 貴福
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2005324021A priority Critical patent/JP4635831B2/ja
Publication of JP2007133514A publication Critical patent/JP2007133514A/ja
Application granted granted Critical
Publication of JP4635831B2 publication Critical patent/JP4635831B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)

Description

本発明は、特定のデータ列をマクロバッファに記憶し、特定のコマンドを受信したときにマクロバッファ中の特定のデータ列に関する処理を実行するプリンタ及びプリンタの制御方法に関する。
プリンタの中には、複数の特定のデータ列(含むコマンド)をマクロとしてマクロバッファに記憶し、特定のコマンドを受信したときにマクロバッファ中のマクロに関するマクロ処理を実行するものがある。例えば、マクロ中の特定のデータ列として、1行紙送りコマンドと、所定の文字列と、紙送りしつつ用紙カットを行うカットコマンドと、が記憶されていれば、特定のコマンドに応じてマクロとして設定された特定のデータ列を順に実行していくことにより、1行紙送り、所定の文字列印字、及び紙送りしつつ用紙カットが自動的にマクロ処理されることとなる。
ここで、マクロバッファはRAM中の一定の領域に定義されており、所定のデータ量以上のデータを記憶することはできない。したがって、マクロバッファがバッファフルとなり、マクロバッファに記憶可能なデータ量を超えたデータについては、エラー処理を避けるために、読み捨てられているのが実情であった。
ところで、マクロバッファとは異なるが、イメージバッファの記憶容量を越えた場合において、エラー処理を行なうことなく印字可能とする方法が提案されている。この方法では、テキストメモリ内のデータを複数のブロックに区分し、各ブロックを積算して作成されたドットパターンデータ量がイメージバッファの記憶容量を越えている場合にはイメージバッファに記憶可能なブロック数のドットパターンデータを印字するという処理を行うというものである(例えば、特許文献1参照)。
マクロバッファの場合であっても、バッファフルの場合には、何らかの処理を行わなければユーザが望んだマクロ処理を実行することはできない。そのため、従来では、ユーザが定義すると想定されるマクロの総データ量よりも、すなわち実用上よりも多めにマクロバッファの容量を設定することにより、マクロバッファがバッファフルとなる状態を回避しようとしていた。
特開平5−305738号公報
しかしながら、バッファフルを避けるために実用上よりもマクロバッファの容量を多く設定しておくと、全体としてRAMに要求される容量が増加してしまい、RAMの利用効率が低下してしまう。RAMの全容量を増加させない場合には、マクロバッファの割合増加によりRAM中の他の領域を制限してしまうことになり、好ましくない。
また、バッファフルになった時点で、最後に記録されたコマンドが中途半端に記録されてしまうことがあるが、プリンタは、マクロバッファ中のコマンドの終端を認識していないため、中途半端なコマンドが残されたままの状態となってしまっている。この中途半端なコマンドは、マクロコマンドの実行時に、解析が為されるまで無効であるかどうかわからないため、無駄な処理が行われてしまうこととなる。したがって、中途半端なコマンドがバッファに格納されてしまうのは、好ましくない。
本発明は、上記課題を解決するために為されたものであり、マクロバッファの容量を実用上に見合ったサイズとしつつ、適切にマクロコマンドを処理可能なプリンタ及びプリンタの制御方法を提供することを目的とする。
本発明は、以下の構成を備える。
(1) ホストコンピュータから受信したデータを一時保存する受信バッファと、
前記受信バッファに一時保存されたデータを解析するコマンド解析部と、
所定の有効定義域内にマクロを保存するマクロバッファと、
受信バッファまたはマクロバッファからデータを読み出し、前記コマンド解析部に読み出したデータを渡すデータルートと、を備え、
前記データルートは、マクロ定義時、前記コマンド解析部からのデータ読み取りリクエストに応じて、前記受信バッファからデータを読み出すとともに、前記マクロバッファに読み出したデータを書き込みポインタを用いて書き込み、
前記コマンド解析部は、前記マクロバッファに解析可能なデータが書き込まれる毎に、前記解析可能なデータの末尾に次書き込み位置マークを設定することを特徴とするプリンタ。
(2) 前記マクロは、コマンドまたは印刷用の文字列からなり、
前記コマンド解析部は、前記ホストコンピュータからマクロ実行コマンドを受信すると、前記マクロバッファに記憶された前記コマンドまたは印刷用の文字列を順次処理することを特徴とする(1に記載のプリンタ。
(3) 前記コマンド解析部及び前記データルートは、前記ホストコンピュータから送信されたマクロ定義コマンドとマクロ定義終了コマンドの間に受信したコマンドまたは文字列を前記マクロバッファに記憶することを特徴とする(1)または(2)に記載のプリンタ。
(4) 前記コマンド解析部は、前記ホストコンピュータからマクロ定義終了コマンドを受信すると、書き込みポインタの位置に定義領域終端マークを設定することを特徴とする(1)〜(3)の何れか1項に記載のプリンタ。
(5) 前記コマンド解析部は、前記書き込みポインタが有効定義域外に移動した場合、前記次書き込み位置マークの位置に前記書き込みポインタを移動させ、前記移動した書き込みポインタの位置に定義領域終端マークを設定することを特徴とする(1)〜(4)の何れか1項に記載のプリンタ。
(6) 前記コマンド解析部は、前記データルートが、マクロ定義が禁止されたマクロ定義不可コマンドをマクロバッファに書き込んだ場合には、書き込みポインタの位置を前記次書き込み位置マークに戻すことを特徴とする(1)〜(5)の何れか1項に記載のプリンタ。
(7) ホストコンピュータから受信したデータを一時保存する一時保存ステップと、
前記一時保存されたデータを解析し、データを処理する解析処理ステップと、を備え、
前記解析処理ステップでは、前記データがマクロ定義開始コマンドであった場合、マクロ定義処理を実行するとともに、
前記マクロ定義処理においては、一時保存されたデータを解析処理するとともに、マクロバッファに読み出したデータを書き込みポインタを用いて書き込むステップと、
前記マクロバッファに解析可能なデータが書き込まれる毎に、前記解析可能なデータの末尾に次書き込み位置マークを設定するステップと、を実行することを特徴とするプリンタの制御方法。
(8) 前記マクロは、コマンドまたは印刷用の文字列からなり、
前記ホストコンピュータからマクロ実行コマンドを受信すると、前記マクロバッファに記憶された前記コマンドまたは印刷用の文字列を順次処理することを特徴とする(7)に記載のプリンタの制御方法。
(9) 前記ホストコンピュータから送信されたマクロ定義コマンドとマクロ定義終了コマンドの間に受信したコマンドまたは文字列を前記マクロバッファに記憶することを特徴とする(7)または(8)に記載のプリンタの制御方法。
(10) 前記ホストコンピュータからマクロ定義終了コマンドを受信すると、書き込みポインタの位置に定義領域終端マークを設定することを特徴とする(7)〜(9)の何れか1項に記載のプリンタの制御方法。
(11) 前記書き込みポインタが有効定義域外に書き込みポインタが移動した場合、前記次書き込み位置マークの位置に前記書き込みポインタを移動させ、前記移動した書き込みポインタの位置に定義領域終端マークを設定することを特徴とする(7)〜(10)の何れか1項に記載のプリンタの制御方法。
(12) マクロ定義が禁止されたマクロ定義不可コマンドをマクロバッファに書き込んだ場合には、書き込みポインタの位置を前記次書き込み位置マークに戻すことを特徴とする(7)〜(11)の何れか1項に記載のプリンタの制御方法。
本発明によれば、コマンド解析部は、マクロバッファに解析可能なデータが書き込まれる毎に、前記解析可能なデータの末尾に次書き込み位置マークを設定するので、マクロバッファへの書き込み中であっても、マクロとして実行可能なデータを常に確認し続けることが可能となる。即ち、次書き込み位置マークを設定することによって、マクロバッファに実行可能なデータが書き込まれたことを逐一確認することができるため、マクロバッファに書き込まれたデータの信頼性を高めることができる。
また、本発明によれば、コマンド解析部は、ホストコンピュータからマクロ定義終了コマンドを受信すると、書き込みポインタの位置に定義領域終端マークを設定する。このように、本発明によれば、定義領域終端マークを設定するので、マクロ実行時に、マクロの終端がどこであるか確実に判断することができ、マクロバッファに書き込まれているが、マクロの終端以降に書き込まれているデータが実行されてしまうことを未然に防ぐことができる。
また、本発明によれば、コマンド解析部は、書き込みポインタが有効定義域外に書き込みポインタが移動した場合、次書き込み位置マークの位置に前記書き込みポインタを移動させ、前記移動した書き込みポインタの位置に定義領域終端マークを設定する。書き込みポインタが有効定義域外に移動して、データを書き込んだ場合には、次書き込み位置マークを用いて、定義領域終端マークを有効定義域内に設定してやるので、有効定義域内に確実に実行されるマクロコマンドが含まれるように設定してやることができる。これにより、中途半端なコマンドがマクロの有効定義域内に一部残留しても、この中途半端なコマンドが処理されることを未然に防ぐことができる。
また、本発明によれば、コマンド解析部は、データルートがマクロ定義が禁止されたマクロ定義不可コマンドをマクロバッファに書き込んだ場合には、書き込みポインタの位置を前記次書き込み位置マークに戻す。したがって、マクロ定義不可コマンドがマクロバッファに書き込まれても、次書き込み位置マークに書き込みポインタの位置が戻るため、マクロ定義不可コマンドを実行可能なデータから排除することができる。したがって、マクロ定義不可コマンドをマクロバッファに実質的に記憶させないようにすることができ、マクロ定義不可コマンドが実行されることによる誤動作等を未然に防ぐことができる。また、不要なコマンドを記憶させないようにすることにより、実質的に必要なマクロバッファのサイズを小さくすることができる。
以下、本発明にかかるプリンタ及びプリンタの制御方法の一実施形態について、添付図面を参照しながら説明する。
図1は、本発明にかかるプリンタシステムの電気的構成の概要を示すブロック図である。
図1に示すように、本実施形態のプリンタシステム1は、プリンタ10及びプリンタ10と通信可能に接続されてプリンタ10を制御するホストコンピュータ100から構成されている。
プリンタ10は、ドットインパクト方式、サーマル方式、インクジェット方式、電子写真方式等の記録方式により、図示せぬ用紙に画像を記録する画像記録装置(印刷装置)である。
プリンタ10には、CPU12、フラッシュROM14及びRAM20が制御部として設けられているとともに、ホストコンピュータ100との通信を行うインタフェースとして通信インタフェース18が設けられている。また、プリンタ10には、制御部と通信をしつつ各種動作を行う機械的または電気的な機構部として、ユーザの走査を受け付けるボタン等からなる操作部32、用紙の切断を行うカッタ機構34、用紙に対して印刷(画像記録)を行う印刷機構36、用紙を搬送する紙送り機構38、プリンタ10の状態を表示するLEDランプ等からなる表示部40が設けられており、これらはIF部16を介して制御部と通信可能となっている。ここで、CPU12、フラッシュROM14、IF部16、通信インタフェース18及びRAM20は、内部バス15により互いに通信可能に接続されている。
以下、簡単に制御部を構成する各構成要素について説明する。
CPU12は、プリンタ10の、プリンタ10の制御中枢であって、フラッシュROM14内の制御用のファームウェアに応じて、プリンタ10に接続された操作部32、カッタ機構34、印刷機構36、紙送り機構38及び表示部40の制御を行いつつ印刷等の所定の処理を実行する。
フラッシュROM14は、プリンタ10における電気的に書き換え可能な不揮発性メモリである。このフラッシュROM14内部にはプリンタ10の起動時に実行されるファームウェアが記憶されており、このファームウェアを実行することにより、プリンタ10がホストコンピュータ100と通信しつつ動作する。また、フラッシュROM14には、プリンタ10の動作時において参照される各種設定値(動作の有効無効を示すフラグ、モードを示すフラグ等)が記憶されている。
IF(インタフェース)部7は、操作部32、カッタ機構34、印刷機構36、紙送り機構38及び表示部40の制御を行うドライバである。CPU12からの指示は、このIF部7を介して、各部32〜40に伝達され動作制御が行われる。
通信インタフェース18は、ホストコンピュータ100との通信を制御するインタフェースである。ホストコンピュータ100から送信される各種コマンド及び印刷データ、並びにホストコンピュータ100に送信される各種ステータス信号及び各種データは、この通信インタフェース18の制御下において送受信が為される。
RAM20は、プリンタ10における揮発性の記憶メモリであり、例えば、CPU12が各種演算を行ったり、データを展開したりするときのバッファ領域として用いられる。具体的に、RAM20の内部は、受信データを一時的に保存する受信バッファ22、印刷データが展開されるイメージバッファ24、マクロを記憶するマクロバッファ26、各種演算処理に用いられるワークエリア28等の複数の領域に機能毎に分割されている。
次に、マクロバッファ26とこのマクロバッファに記憶されるマクロについて説明する。
マクロバッファ26に記憶されるマクロとは、一または複数のコマンド(印刷データとしての文字列を含む)から構成されているもので、ホストコンピュータ100から送信されるマクロ実行コマンドに応じて読み出され、格納されている順に順次実行されるものである。このようなマクロは、例えば定型の処理を実行するような場合に、ホストコンピュータ100から複数のコマンドを逐一送信せずとも、一つのマクロ実行コマンドを送信することによって複数のコマンドに対応した処理を実行できるため、プリンタ10とホストコンピュータ100との間の通信速度が遅いような場合に、有効に利用することができる。
マクロバッファ26は、例えば、所定のサイズの有効定義域(例えば2048バイト)を有している。この有効定義域は、プリンタの用途・種類やユーザのニーズに応じて適宜製造時に設定することも可能である。
図2は、マクロバッファ内におけるマクロの記憶例を示す模式図である。
図2の例では、先頭アドレスから順に13バイト分文字が隙間なく連続的に記憶されている。このマクロバッファ26は、最初の4バイトの文字「XS V 65 10」で一つのコマンドを表しており、次の1バイトの文字「LF」で一つのコマンドを表しており、また次の4バイトの文字「XS R 70 82」で一つのコマンドを表しており、そして最後の4バイトの文字「XS R 70 90」が一つのコマンドを表している。すなわち、図2に示すマクロバッファ26には、4つのコマンドが記憶されている。
プリンタ10は、このマクロバッファ26内のマクロを実行する場合には、このマクロバッファ26内の文字を1バイトずつ読み取り、意味のあるコマンドであると理解されたところでそのコマンドに対応する処理を実行する。これにより、マクロが実行されることにより、4つのコマンドに対応する処理が連続的に実行されることとなる。
マクロバッファ26へのマクロの設定記憶(以下、“マクロの定義”と呼ぶ)は、ホストコンピュータ100からマクロ定義開始コマンドを受信してから、マクロ定義終了コマンドを受信するまでの間に受信したコマンドまたは文字等のデータをマクロバッファに格納していくことにより実行される。なお、プリンタ10は、マクロ定義時、マクロバッファにデータを格納するとともに、格納したデータに対応する処理を実行するように構成されている。
ここで、本実施形態においては、このマクロの定義に関し以下のような制約がある。
1)マクロバッファ26に格納するデータは、文字単位またはコマンド単位である。
2)プリンタの動作に大きな影響を及ぼすある特定のコマンド(具体的には、ホストか らのプリンタの選択を解除するコマンド)については、マクロとして定義しない。 (マクロバッファ26に記憶させない)
3)マクロ定義中にマクロバッファ26の領域を超えるデータの指定があった場合には 、その時点でマクロ定義を終了する。
4)あるコマンドのコマンドコードを書き込んでいる途中で、マクロバッファ26の領 域を超える場合は、書き込み途中のコマンドに対応するコマンドコードをマクロ定 義から外して、マクロ定義を終了する。
5)マクロ定義中に、マクロの実行コマンド、不揮発性メモリへの書き込み動作を伴う コマンド、大量のデータを扱うコマンド、モードを切り替えるコマンド、バッファ クリアを実行するコマンドを処理した場合には、マクロ定義を中止し、マクロ定義 を未定義とする。
以下、図3に示すブロック図と、図4〜図12に示すフローチャートを参照しながら、プリンタ10におけるマクロの定義及びマクロの実行について詳細に説明する。
図3は、本実施形態のプリンタ10における受信側内部処理の一部を示す機能的ブロック図である。
図3に示すように、プリンタ10では、受信側内部処理を行う機能部として、受信部52と、データルート54と、コマンド解析部56と、を備えている。
受信部52は、ホストコンピュータ100から送信される印刷データまたは各種コマンドを受信する受信手段である。受信部52は、受信した印刷データまたは各種コマンドを受信バッファ22に順次転送する。ここで、受信バッファ22は、例えばリングバッファとして構成されており、転送され書き込まれた順にデータが読み出されるように構成されている。
データルート54は、コマンド解析部56からのリクエストに応じて、受信バッファ22、マクロバッファ26等のバッファからデータを1バイトずつ読み出してコマンド解析部56に受け渡すデータ処理手段である。データルート54は、通常時は、コマンド解析部56のリクエストに応じて受信バッファ22から順次データを読み出すが、マクロ実行時には、コマンド解析部56のリクエストに応じてマクロバッファ26から順次データを読み出す。また、データルート54は、マクロ定義時には、コマンド解析部56からのリクエストに応じて受信バッファ22から順次データを読み出すとともに、マクロバッファ22に読み出したデータを書き込む処理を行う。
コマンド解析部56は、受信バッファ22またはマクロバッファ26に記憶されたデータをデータルート54を介して読み出し、データの内容を解析して内容に応じた処理(コマンドの実行、印刷データの処理)を指示する解析処理部である。コマンド解析部56は、解析結果に応じて、RAM20内のデータを書き換えたり、フラッシュROM14の設定値を書き換えたり、操作部32,カッタ機構34,印刷機構36、紙送り機構38,表示部40等に所定の動作を行わせたりする。
なお、本実施形態では、コマンド解析部56とデータルート54とを分け、データルートが直接受信バッファ22及びマクロバッファ26にアクセスする形態を説明しているが、これに限られず、コマンド解析部56とデータルート54とがバッファ制御部として一体に構成され、このバッファ制御部が受信バッファ22及びマクロバッファ26にアクセスするように構成されていてもよい。本明細書では、コマンド解析部56とデータルート54をまとめて、バッファ制御部と呼ぶこととする。
特に、本実施形態では、コマンド解析部56は、マクロ定義開始コマンドを受信した場合にはマクロの定義を開始し、マクロ実行コマンドを受信した場合にはマクロバッファ26中のマクロの処理を行う。
本実施形態では、直接マクロバッファ26にアクセスしてデータの書き込み/読み出しを行うのはデータルート54である。データルート54は、マクロ実行時には、「読み込みポインタ」を用いて読み込みアドレスを管理する。一方、データルート54は、マクロ定義時には「書き込みポインタ」を用いて書き込みアドレスを管理するとともに、「次書き込み位置マーク」及び「定義領域終端マーク」の2つのマークを用いてマクロバッファを管理する。
まず、各用語の意味を説明する。
「書き込みポインタ」は、次にデータが1バイト書き込まれる位置を示しており、データルート54は、この書き込みポインタの位置を書き込まれる毎に一つインクリメントしていくことにより、書き込み位置を連続的にずらしていく。
一方、「次書き込み位置マーク」は、コマンド解析部56によって解釈可能なひとまとまりの文字列やコマンドの終端を示すマークであり、次の文字列やコマンドが書き込まれる位置を示している。
また、「定義領域終端マーク」は、複数のコマンドや文字列からなるマクロの終端、すなわちマクロバッファ26におけるマクロ定義領域の終端を示すマークである。
以下、書き込みポインタ、次書き込み位置マーク及び定義領域終端マークとデータルート54について、図4〜図7に示すマクロバッファ26の模式図を参照しながら、書き込み処理の詳細について説明する。
まず、図4(a)に示すように、マクロバッファ26にデータが書き込まれていない状態(マクロ未定義の状態)では、書き込みポインタ及び次書き込み位置マークは、それぞれ先頭アドレス(アドレス0)に設定されている。
データルート54がコマンド解析部56の指示に応じて、マクロバッファ26へのデータ書き込みを実行すると、図4(b)にしめすように1バイトずつ書き込みを行いつつ書き込みポインタが一つずつずれていく。そして、図4(c)に示すように、「XS V 65 10」という一つのコマンドが書き込まれたとコマンド解析部56が判断すると、データルート54は、次書き込み位置マークを書き込みポインタの位置(アドレス4)に移動させる。
そして、図5(a)に示すように、アドレス4から「XS V 32 8」というコマンドが書き込まれると、図4(d)と同様に、次書き込み位置マークが書き込みポインタの位置に移動する。そして、これでマクロが終了であれば、図5(b)に示すように、この次書き込み位置マークの位置に定義領域終端マークが設定される。これにより、コマンド解析部56は、定義領域終端マークを参照することにより、マクロ実行時にどこまでマクロが定義されているかを把握することができる。
ここで、マクロバッファ26の有効定義域(ここでは、2048バイト)を超えてマクロが定義されようとした場合の処理について説明する。例えば、図6(a)に示すように、アドレス2044までデータが定義され、残り3バイトのところに4バイト以上のデータが書き込まれようとすると、図6(b)に示すように、3バイト分のデータ「XS V 65」までは書き込まれるが、4バイト目以降を書き込んだ場合は、コマンド解析部56がコマンドと認識するまでに書き込まれたデータの総量が2052バイトを超えた場合、またはコマンド解析部56がコマンドを認識後、データの総量が2048バイトを超えた場合には、図6(c)に示すように書き込みポインタの位置を次書き込み位置マークの位置に移動し、そして、図6(d)に示すように、この移動した書き込みポインタの位置に定義領域終端マークを設定して、マクロ定義を終了する。
また、マクロバッファ26への書き込みが禁止されるプリンタの動作に大きな影響を及ぼすある特定のコマンドがマクロバッファ26に書き込まれようとした場合には、このようなコマンドをマクロバッファ26に書き込ませない。具体的には、図7(a)に示す状態において、書き込みが禁止されている「G ( 4 10」というコマンドを書き込もうとした場合には、図7(b)に示すように一端マクロバッファに書き込まれるが、書き込まれた時点でコマンド解析部56が禁止コマンドであると判断すると、図7(c)に示すように書き込みポインタの位置を次書き込み位置マークの位置に移動させる。そして、次の文字列又はコマンドをこの書き込みポインタの位置から順に書き込んでいくため、図7(d)に示すように、禁止コマンドは上書きされ、この時点で消去される。そして、次のコマンドが書き込まれた時点で、次書き込み位置マークが書き込みポインタの位置に移動して、消去処理が完了する。
なお、禁止コマンドがマクロ中の最後のコマンドであった場合には、書き込みポインタが移動するだけでマクロバッファ26上から消去は為されないが、この書き込みポインタの位置に定義領域終端マークが設定されるため、禁止コマンドはマクロ定義外となり、マクロ実行時にも実行されないこととなる。すなわち、禁止コマンドは実質的にマクロバッファ26に記憶されていないこととなる。
次に、マクロ定義処理及びマクロ実行処理について、図8〜図16を参照しながら、具体的に説明していく。以下の説明では、受信バッファ22にデータがバッファされ、その受信データをコマンド解析部56が読み取って解析を行う説明を中心としてマクロの定義、マクロの実行について説明する。
図8は、コマンド解析部の一般的な処理手順を説明するフローチャートである。
まず、図8に示すように、コマンド解析部56は、データルート54に対し、受信バッファ22からデータを1バイト取得するよう要求する(ステップS11)。データルート54は、リクエストを受けると図9に示す処理を実行して、受信バッファ22から1バイトデータを取得し、コマンド解析部56に送る(この処理については、後述する)。
コマンド解析部56は、1バイト受領すると受領した1バイトを解析する(ステップS12)。ここでの解析とは、既に受領したデータと今回受領したデータとを組み合わせて、意味のあるコマンド(または文字列)であるかどうかを判断する(ステップS13)。ここで、コマンドが判別されなければ(ステップS13:No)、ステップS11に戻り、再度データルートにリクエストをおこなう。一方、コマンドが判別された場合は(ステップS13:Yes)、ステップS14以降に進む。
ステップS14及びステップS18では、このコマンドがマクロ定義開始コマンドであるか、マクロ実行コマンドであるか、またはその他のコマンドであるかを確認する。ここで、マクロ定義開始コマンドであれば、ステップS15に進んでマクロ定義を開始し、マクロ実行コマンドであればステップS19に進んでマクロの実行処理を行い、その他のコマンドであればステップS21に進んでコマンド内容に応じた処理を実行する。
ステップS15において、マクロ定義を開始するとマクロ定義モードに入り(例えば、RAM20中にマクロ定義フラグを立てる)、ステップS16において書き込みポインタ及びマーク位置をマクロバッファ26内の先頭アドレス(アドレス0)に設定し、ステップS17においてマクロ定義処理を実行する。
一方、ステップS19において、マクロ実行処理が開始されると、読み込みポインタをマクロバッファ26内の先頭アドレス(アドレス0)に設定し、ステップS20においてマクロ実行処理を行う。
ステップS17、ステップS20及びステップS21において、マクロ定義開始コマンド、マクロ実行コマンド、またはその他のコマンドに対応する処理が終了すると、コマンド解析部56は、ステップS1に戻って再度受信バッファ22からのデータ取得解析を繰り返す。
以上が、通常時におけるコマンド解析部56の処理ルーチンである。
次に、図8におけるマクロ定義処理について説明する。
図9は、マクロ定義時(マクロ定義モード)におけるコマンド解析部の処理手順を説明するフローチャートである。
マクロ定義モードにおいては、図9に示すように、コマンド解析部56は、データルート54に対し、データを1バイト取得するよう要求する(ステップS31)。データルート54は、リクエストを受けると図9に示す処理を実行し、受信バッファ22から1バイトデータを取得し、コマンド解析部56に送ると同時に、マクロバッファ26に取得した1バイトデータを書き込む(この処理については、後述する)。
コマンド解析部56は、1バイト受領すると受領した1バイトを解析する(ステップS32)。ここでの解析とは、既に受領したデータと今回受領したデータとを組み合わせて、意味のあるコマンド(または文字列)であるかどうかを判断する(ステップS33)。ここで、コマンドが判別されなければ(ステップS33:No)、ステップS31に戻り、再度データルートにリクエストをおこなう。一方、コマンドが判別された場合は(ステップS33:Yes)、ステップS34以降に進む。
ステップS34では、コマンド解析部56は、解析したコマンドがマクロ中断コマンドであるかどうか判断する。ここで、マクロ中断コマンドとは、マクロの実行コマンド、不揮発性メモリへの書き込み動作を伴うコマンド、大量のデータを扱うコマンド、モードを切り替えるコマンド、バッファクリアを実行するコマンドであり、解析したコマンドがこれらのコマンドであれば、ステップS35に進んでマクロ未定義に設定してマクロ定義モードを終了する。
一方、解析したコマンドがマクロ中断コマンドでなければ、ステップS36に進み、マクロ定義終了コマンドであるかどうか確認する。ここで、マクロ定義終了コマンドであれば(ステップS36:Yes)、マクロを定義済みに設定し定義領域終端マークを書き込みポインタの位置に設定し、マクロ定義モードを終了する(ステップS37)。
一方、ステップS36において、マクロ定義終了コマンドでなければ、ステップS38において開始来たコマンドを実行する。
そして、ステップS39において、書き込みポインタの位置を確認し、書き込みポインタが2047バイト目より大きいアドレスに位置していれば、すなわちマクロバッファ26の有効定義域外に書き込みポインタが位置しているかどうか確認する。ここで、書き込みポインタの位置が有効定義域内であれば、図4(c)→図4(d)のように、次書き込み位置マークの位置を書き込みポインタの位置に移動させて、ステップS31に戻り、マクロ定義を継続する(ステップS41)。
一方、書き込みポインタの位置が有効定義域外であれば、図6(b)→図6(d)のように、現在の次書き込み位置マークの位置に書き込みポインタの位置を移動させる。(ステップS40)。そして、ステップS37に移動して、マクロを定義済みに設定し定義領域終端マークを書き込みポインタの位置に設定し、マクロ定義モードを終了する(ステップS37)。
以上が、マクロ定義時(マクロ定義モード)におけるコマンド解析部56の処理ルーチンである。
次に、図8及び図9におけるデータルート54の処理(データルートA)について説明する。
図10は、データルートの処理手順を説明するフローチャートである。本フローチャートは、受信バッファ22からデータを取得するフローであり、この処理をデータルートA処理と呼ぶ
まず、データルート54は、コマンド解析部56より1バイトデータを取得するようにリクエストを受けると(ステップS51)、後述するマクロ実行時でなければ、接続先のバッファ、つまり受信バッファ22から1バイトデータを取得する(ステップS52)。
ここで、データルート54は、マクロ定義フラグを確認し、マクロ定義中であれば(ステップS53:Yes)、取得したデータをマクロバッファ26に書き込むとともに(ステップS54)、コマンド解析部56に取得した1バイトを受け渡して終了する(ステップS55)。
一方、マクロ定義中で無ければ、単にコマンド解析部56に取得した1バイトを受け渡して終了する(ステップS55)。
図11は、データルートによるマクロバッファへのデータ書き込み処理(図10のステップS54の処理)の詳細を示すフローチャートである。
データルート54は、取得した1バイトデータをマクロバッファ26の書き込みポインタが示すアドレスに1バイト書き込み(ステップS61)、そして書き込みポインタに1を加えて、書き込みポインタの位置を次アドレスに移動させる(ステップS62)。
次に、書き込みポインタの位置がチェックされ、書き込みポインタの位置が有効定義域に若干の余裕(ここでは2052アドレス目、たかだか数アドレス)を加えた領域よりも大きい値を示しているかどうか確認される(ステップS63)。ここで、有効定義域に若干の余裕を加えた範囲内に書き込みポインタが存在していれば(ステップS63:No)、マクロバッファへの書き込み処理を終了、すなわち図10のステップS54の処理を終了する。
ここで、有効定義域に若干の余裕を加えた範囲内に書き込みポインタが存在していなければ(ステップS63:Yes)、現在の次書き込み位置マークの位置に書き込みポインタの位置を移動させる。(ステップS64)。そして、ステップS65に移動して、マクロを定義済みに設定し定義領域終端マークを書き込みポインタの位置に設定し、マクロ定義モードを終了する(ステップS65)。
以上が、データルートA処理時におけるデータルート54の処理ルーチンである。
次に、図8のステップS21及び図9のステップS38の処理、コマンド解析部56が解析後に実行するコマンドの実行処理について説明する。
図12は、解析したコマンド処理時の流れを示すフローチャートである。
まず、コマンド解析部56は、コマンドの解析を行うと、解析したコマンドを実行し、その処理を行う(ステップS71)。その後、コマンド解析部56は、マクロ定義中であるかどうか(ステップS72)及び実行したコマンドがマクロ定義不可コマンド(ステップS73)であるかを確認する。何れか一方がNoであれば、そのまま終了するが、双方ともYesであればステップS74に進み、書き込みポインタの位置を次書き込みマークの位置に戻す。すなわち、図7(b)→図7(c)の操作に対応する処理を行い、マクロ定義不可コマンドがマクロバッファ26に書き込まれてしまうことを防ぐ。
次に、図8におけるマクロ実行処理について説明する。
図13は、マクロ実行時(マクロ実行モード)におけるコマンド解析部の初期の処理手順を説明するフローチャートである。
マクロ定義モードにおいて、マクロ実行処理が開始されると、まずコマンド解析部56は、マクロがマクロバッファ26に定義されているかどうかを確認する(ステップS81)。マクロが定義されているかどうかは、マクロバッファ26のデータの有無を確認してもよいし、定義時にRAM20中にフラグを設定し、そのフラグを確認してもよい。
マクロが定義されていれば(ステップS81:Yes)、読み込みポインタをマクロバッファ26の先頭(アドレス0)に設定し(ステップS82)、マクロの実行を行う(ステップS83)。
図14は、マクロの実行時のコマンド解析部の処理を説明するフローチャートである。
図13のステップS83にて、マクロの実行が開始されると、コマンド解析部56は、データルート64にデータをマクロバッファ26から読み取るようにリクエストする(ステップS91)。データルート54は、リクエストを受けると図9に示す処理を実行し、受信バッファ22から1バイトデータを取得し、コマンド解析部56に送る。一方、データがなければ、データ無しをコマンド解析部56に戻り値として返す。
そして、データルート91は、マクロバッファ26から戻り値が来ると、この戻り値が1バイトデータであるか、データ無しを示すデータであるかを確認する(ステップS92)。ここで、戻り値がデータが無しであれば、マクロを全て読み出したとしてマクロ実行処理を終了する(ステップS92:No)。
一方、戻り値がマクロバッファ26から読み出された1バイトデータであれば、コマンド解析部56は、受領した1バイトを解析する(ステップS93)。ここでの解析とは、既に受領したデータと今回受領したデータとを組み合わせて、意味のあるコマンド(または文字列)であるかどうかを判断する(ステップS94)。ここで、コマンドが判別されなければ(ステップS94:No)、ステップS91に戻り、再度データルートにリクエストをおこなう。
一方、コマンドが判別された場合は(ステップS94:Yes)、ステップS34に進み、解析したコマンドを実行する。この処理は、図12に示す処理と同一である。コマンドの実行が為されると、ステップS91に戻り、マクロバッファ26からデータが無くなるまで(ステップS92:Noとなるまで)繰り返される。
図15は、マクロの実行時のデータルートの処理(データルートB)を説明するフローチャートである。本フローチャートは、マクロバッファ26からデータを取得するフローであり、この処理をデータルートB処理と呼ぶ
まず、データルート54は、コマンド解析部56より1バイトデータを取得するようにリクエストを受けると(ステップS101)、マクロ実行時における接続先のバッファ、つまりマクロバッファ26から読み取りを行い1バイトデータを取得する(ステップS52)。そして、読み取った1バイトデータをコマンド解析部に戻り値として渡す。
図16は、データルート56によるマクロバッファの読み取り処理を詳細に示したものである。
まず、データルート54は、読み込みポインタと定義領域終端マークの位置とを比較し、読み込みポインタの位置が定義領域終端マークのアドレス位置と同値またはそれより大きければ、ステップS114に移動し、読み取るべきデータがこれ以上ないと判断して、読み取り処理を終了する。
一方、読み込みポインタの位置が定義領域終端マークの手前であれば、ステップS112に移動し、読み込みポインタ位置の1バイトデータを読み取る。そして、読み込みポインタに1を加えて読み込みポインタの位置を次アドレスに移動させる(ステップS113)。読み取られた、1バイトデータは、図15のステップS103において、コマンド解析部56に渡される。
以上が、データルートB処理時におけるデータルート54の処理ルーチンである。
このように、本実施形態では、次書き込み位置マークと定義領域終端マークを用いて位置マーキングを行うように構成されている。次書き込み位置マークと定義領域終端マークを上述したような処理によって、書き込みポインタ及び読み込みポインタを適宜移動させるように構成することにより、以下のような効果を達成することができる。
1)マクロで実行できないコマンドをマクロバッファに記憶させないようにする
2)マクロバッファが一杯になったらマクロ定義を確定させ、これ以上定義しない。
3)中途半端なコマンド列は、マクロバッファの有効定義域内に含めない。
したがって、マクロバッファに格納記憶されているデータに基づき、プリンタが誤動作してしまう可能性を予め除去し、使い勝手のよいマクロを提供することが可能となる。また、マクロバッファに不要なデータを記憶させないようにすることができるので、マクロバッファの実質的なサイズを小さくすることができ、RAM20全体の有効活用を図ることが可能である。
なお、本実施形態では、RAM20にマクロバッファ26を設けるとしたが、これに限られず、フラッシュROM14等の不揮発性メモリにマクロを定義するように構成してもよい。
本発明にかかるプリンタシステムの電気的構成の概要を示すブロック図である。 マクロバッファ内におけるマクロの記憶例を示す模式図である。 本発明にかかるプリンタにおける受信側内部処理の一部を示す機能的ブロック図である。 マクロバッファへの書き込み処理を示す模式図である。 マクロバッファへの書き込み処理を示す模式図である。 マクロバッファへの書き込み処理を示す模式図である。 マクロバッファへの書き込み処理を示す模式図である。 コマンド解析部の処理を示すフローチャートである。 マクロ定義処理を示すフローチャートである。 データルートA処理を示すフローチャートである。 マクロバッファへの書き込み処理を示すフローチャートである。 解析したコマンドの実行処理を示すフローチャートである。 マクロ実行処理を示すフローチャートである。 マクロ実行処理の詳細を示すフローチャートである。 データルートB処理を示すフローチャートである。 マクロバッファからの読み込み処理を示すフローチャートである。
符号の説明
1 プリンタシステム
10 プリンタ
12 CPU
14 フラッシュROM
16 IF部
18 通信インタフェース
20 RAM
22 受信バッファ
26 マクロバッファ
52 受信部
54 データルート
56 コマンド解析部

Claims (12)

  1. ホストコンピュータから受信したデータを一時保存する受信バッファと、
    前記受信バッファに一時保存されたデータを解析するコマンド解析部と、
    所定の有効定義域内にマクロを保存するマクロバッファと、
    受信バッファまたはマクロバッファからデータを読み出し、前記コマンド解析部に読み出したデータを渡すデータルートと、を備え、
    前記データルートは、マクロ定義時、前記コマンド解析部からのデータ読み取りリクエストに応じて、前記受信バッファからデータを読み出すとともに、前記マクロバッファに読み出したデータを書き込みポインタを用いて書き込み、
    前記コマンド解析部は、前記マクロバッファに解析可能なデータが書き込まれる毎に、前記解析可能なデータの末尾に次書き込み位置マークを設定することを特徴とするプリンタ。
  2. 前記マクロは、コマンドまたは印刷用の文字列からなり、
    前記コマンド解析部は、前記ホストコンピュータからマクロ実行コマンドを受信すると、前記マクロバッファに記憶された前記コマンドまたは印刷用の文字列を順次処理することを特徴とする請求項1に記載のプリンタ。
  3. 前記コマンド解析部及び前記データルートは、前記ホストコンピュータから送信されたマクロ定義コマンドとマクロ定義終了コマンドの間に受信したコマンドまたは文字列を前記マクロバッファに記憶することを特徴とする請求項1または2に記載のプリンタ。
  4. 前記コマンド解析部は、前記ホストコンピュータからマクロ定義終了コマンドを受信すると、書き込みポインタの位置に定義領域終端マークを設定することを特徴とする請求項1〜3の何れか1項に記載のプリンタ。
  5. 前記コマンド解析部は、前記書き込みポインタが有効定義域外に移動した場合、前記次書き込み位置マークの位置に前記書き込みポインタを移動させ、前記移動した書き込みポインタの位置に定義領域終端マークを設定することを特徴とする請求項1〜4の何れか1項に記載のプリンタ。
  6. 前記コマンド解析部は、前記データルートが、マクロ定義が禁止されたマクロ定義不可コマンドをマクロバッファに書き込んだ場合には、書き込みポインタの位置を前記次書き込み位置マークに戻すことを特徴とする請求項1〜5の何れか1項に記載のプリンタ。
  7. ホストコンピュータから受信したデータを一時保存する一時保存ステップと、
    前記一時保存されたデータを解析し、データを処理する解析処理ステップと、を備え、
    前記解析処理ステップでは、前記データがマクロ定義開始コマンドであった場合、マクロ定義処理を実行するとともに、
    前記マクロ定義処理においては、一時保存されたデータを解析処理するとともに、マクロバッファに読み出したデータを書き込みポインタを用いて書き込むステップと、
    前記マクロバッファに解析可能なデータが書き込まれる毎に、前記解析可能なデータの末尾に次書き込み位置マークを設定するステップと、を実行することを特徴とするプリンタの制御方法。
  8. 前記マクロは、コマンドまたは印刷用の文字列からなり、
    前記ホストコンピュータからマクロ実行コマンドを受信すると、前記マクロバッファに記憶された前記コマンドまたは印刷用の文字列を順次処理することを特徴とする請求項7に記載のプリンタの制御方法。
  9. 前記ホストコンピュータから送信されたマクロ定義コマンドとマクロ定義終了コマンドの間に受信したコマンドまたは文字列を前記マクロバッファに記憶することを特徴とする請求項7または8に記載のプリンタの制御方法。
  10. 前記ホストコンピュータからマクロ定義終了コマンドを受信すると、書き込みポインタの位置に定義領域終端マークを設定することを特徴とする請求項7〜9の何れか1項に記載のプリンタの制御方法。
  11. 前記書き込みポインタが有効定義域外に書き込みポインタが移動した場合、前記次書き込み位置マークの位置に前記書き込みポインタを移動させ、前記移動した書き込みポインタの位置に定義領域終端マークを設定することを特徴とする請求項7〜10の何れか1項に記載のプリンタの制御方法。
  12. マクロ定義が禁止されたマクロ定義不可コマンドをマクロバッファに書き込んだ場合には、書き込みポインタの位置を前記次書き込み位置マークに戻すことを特徴とする請求項7〜11の何れか1項に記載のプリンタの制御方法。

JP2005324021A 2005-11-08 2005-11-08 プリンタ及びプリンタの制御方法 Expired - Fee Related JP4635831B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005324021A JP4635831B2 (ja) 2005-11-08 2005-11-08 プリンタ及びプリンタの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005324021A JP4635831B2 (ja) 2005-11-08 2005-11-08 プリンタ及びプリンタの制御方法

Publications (2)

Publication Number Publication Date
JP2007133514A JP2007133514A (ja) 2007-05-31
JP4635831B2 true JP4635831B2 (ja) 2011-02-23

Family

ID=38155138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005324021A Expired - Fee Related JP4635831B2 (ja) 2005-11-08 2005-11-08 プリンタ及びプリンタの制御方法

Country Status (1)

Country Link
JP (1) JP4635831B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019168944A (ja) * 2018-03-23 2019-10-03 大日本印刷株式会社 電子情報記憶媒体、icカード、コマンド群実行方法及び、コマンド群実行プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185697A (ja) * 1997-09-04 1999-03-30 Fujitsu Ltd 操作情報管理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185697A (ja) * 1997-09-04 1999-03-30 Fujitsu Ltd 操作情報管理方法

Also Published As

Publication number Publication date
JP2007133514A (ja) 2007-05-31

Similar Documents

Publication Publication Date Title
US6985257B2 (en) Job processing apparatus
EP0955575B1 (en) Printer, control method therefor and recording medium
JP2615137B2 (ja) 印字装置
KR100772342B1 (ko) 시스템, 비트맵 데이터의 송신 제어 방법, 리얼 타임 커맨드의 송신 제어 방법
US20080244123A1 (en) Storage Medium
JP4635831B2 (ja) プリンタ及びプリンタの制御方法
JP2009101608A (ja) プリンター
US7395357B2 (en) Information processing apparatus and computer readable medium
JP4239392B2 (ja) 印刷装置、印刷システムおよび印刷方法
JP3610141B2 (ja) 情報処理装置および印刷装置および印刷システムおよび印刷システムのデータ処理方法および制御方法
KR100334102B1 (ko) 프린터의 이력 관리방법
JP2003114807A (ja) 電子機器及び本体制御プログラムの書き換え方法
JP4400097B2 (ja) 印刷装置、印刷制御方法、プログラム及び記録媒体
JP3129679B2 (ja) プリンタ
JP3812216B2 (ja) 印刷装置の制御方法
JP3760525B2 (ja) 印刷装置及びその制御方法
JP4496594B2 (ja) 印刷装置の制御方法
JP3711431B2 (ja) 印刷装置、印刷装置の制御方法、および、情報記録媒体
JP2005085121A (ja) フラッシュメモリのデータ更新方法、データ更新プログラム、情報処理装置、及び情報処理システム
JP3043525B2 (ja) 印刷装置及び印刷制御方法
JP2007115060A (ja) 情報処理装置及び情報処理装置の制御方法
KR100565792B1 (ko) 프린터의 폰트 데이터 저장방법
JP4943724B2 (ja) 画像形成装置及び画像形成システム
JP4722626B2 (ja) 印刷システム、印刷システムの制御方法及びプログラム
JP4830710B2 (ja) 記憶装置の選定を行う印刷装置、記憶装置の選定方法、および、コンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101007

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101026

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101108

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4635831

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313532

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees