(57)【要約】【課題】パソコンから転送されたファイルに基づいて印刷を行う印刷装置において、記憶領域へのファイル書き込みが完了する前に印刷処理が開始される不具合を防止する。【解決手段】印刷装置は、ＵＳＢケーブルを介してパソコンと接続されており、パソコンからＷｒｉｔｅコマンドを受信すると、パソコンから転送される印刷ファイルを印刷装置のＳＲＡＭに設けられた印刷ファイル領域に記憶する。そして、印刷ファイル領域への最終書き込みから一定時間が経過し（Ｓ１０１：ＹＥＳ）、さらにＲＤＥ領域にてこの印刷ファイルに対応するファイル名およびファイルサイズが発見されると（Ｓ１０３：ＹＥＳ、Ｓ１０５：ＹＥＳ）、印刷ファイルの書き込みが完了したものとみなしてリングバッファ処理を実行する（Ｓ１０７）。【選択図】図１２
2010082924.tif 000002
【特許請求の範囲】
【請求項１】
外部端末と通信を行う通信手段と、
前記通信手段にて前記外部端末から受信されたデータを記憶する記憶手段と、
前記記憶手段に対するデータの書き込みおよび読み出しを制御するとともに、前記通信手段による通信が実行される場合、前記記憶手段を、一まとまりの印刷データが含まれる印刷ファイルを一単位として書き込み可能な外部記憶装置として、前記外部端末に認識させる制御手段と、
前記制御手段により前記印刷ファイルの書き込みが実行される場合、前記記憶手段に対する前記印刷ファイルの書き込みが完了したか否かを判断する書込完了判断手段と、
前記書込完了判断手段により前記印刷ファイルの書き込みが完了したと判断されると、前記記憶手段に記憶された前記印刷ファイルに含まれる前記印刷データに基づいて印刷を実行する印刷手段と
を備えたことを特徴とする印刷装置。
【請求項２】
前記書込完了判断手段は、前記通信手段にて前記印刷ファイルの書き込みを指示する書込コマンドが受信された場合、前記外部端末から前記印刷装置への前記印刷ファイルの転送が完了した時点から起算して、前記通信手段にて他の前記書込コマンドを受信することなく所定時間が経過すると、前記印刷ファイルの書き込みが完了したと判断することを特徴とする請求項１に記載の印刷装置。
【請求項３】
前記記憶手段は、前記記憶手段に記憶されているファイルと併せて、前記ファイルを識別するためのファイル名をファイル情報として記憶しており、
前記書込完了判断手段は、所定タイミングで前記記憶手段にて前記ファイル名を検索し、前記印刷ファイルであることを示すファイル名を発見すると、前記印刷ファイルの書き込みが完了したと判断することを特徴とする請求項１または２に記載の印刷装置。
【請求項４】
前記記憶手段は、前記記憶手段に記憶されているファイルと併せて、前記ファイルのデータ量を示すファイルサイズをファイル情報として記憶しており、
前記書込完了判断手段は、所定タイミングで前記記憶手段にて前記ファイルサイズを検索し、前記一単位として予め定められた規定データ量を示すファイルサイズを発見すると、前記印刷ファイルの書き込みが完了したと判断することを特徴とする請求項１〜３のいずれかに記載の印刷装置。
【請求項５】
前記制御手段は、前記通信手段にて前記印刷ファイルが受信されると、前記印刷ファイルを前記記憶手段における所定領域に書き込むものであって、
前記書込完了判断手段は、
前記記憶手段における所定領域の先頭位置に対してデータの書き込みが行われると、前記印刷ファイルの転送が開始されたと判断して特定フラグをＯＮにセットし、
前記印刷装置から前記外部端末に前記書込コマンドに対する応答コマンドが送信されると、前記印刷ファイルの転送が完了したと判断して前記特定フラグをＯＦＦにセットし、
前記特定フラグがＯＦＦにセットされた時点から起算して、前記所定時間が経過したか否かを判断することを特徴とする請求項２に記載の印刷装置。
【請求項６】
前記記憶手段は、前記ファイルを記憶する第１の領域と、前記ファイル情報を記憶する第２の領域とを有しており、
前記書込完了判断手段は、前記所定タイミングとして前記第２の領域に対する前記ファイル情報の書き込みがあったときに前記記憶手段を検索することを特徴とする請求項３または４に記載の印刷装置。
【請求項７】
前記通信手段は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介して前記外部端末と通信を行うためのＵＳＢポートであって、
前記制御手段は、ＵＳＢデバイスドライバとしてマスストレージクラスドライバを使用することにより、前記記憶手段を前記外部記憶装置として前記外部端末に認識させることを特徴とする請求項１〜６のいずれかに記載の印刷装置。
【請求項８】
前記記憶手段は、プログラムの実行ファイルをさらに記憶しており、
前記制御手段は、前記通信手段にて前記実行ファイルを前記外部端末に送信することにより、前記外部端末において前記プログラムの稼動を可能とすることを特徴とする請求項１〜７のいずれかに記載の印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部端末と接続される印刷装置に関し、詳細には、外部端末から書き込まれる印刷ファイルに基づいて印刷を行う印刷装置に関する。
【背景技術】
【０００２】
従来、印刷装置および外部端末が接続される印刷システムにおいて、双方を接続するインターフェースとしてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が広く使用されている。そして、例えば、各種編集物を作成するためのプログラムであるエディタが稼動される外部端末（例えば、パソコン）が、通信制御の主導権を司るＵＳＢホストとされる。一方、外部端末からの指示により印刷処理を実行する印刷装置が、ＵＳＢホストによる通信制御に従って動作するＵＳＢデバイスとされる。
【０００３】
ここで、外部端末がパソコンである場合には、一般のオペレーティングシステム（ＯＳ）に、ＵＳＢホストとして機能させるためのＵＳＢコントローラを標準装備している。一方、印刷装置も、ＵＳＢデバイスとして機能させるためのＵＳＢコントローラを装備しているが、ＵＳＢデバイスには通信規約で定められたいくつかのデバイスクラスがある。ＵＳＢデバイスが通信規約で定められたいずれかのデバイスクラスで機能する限り、ＵＳＢホストはＵＳＢデバイスと正常に通信可能である。
【０００４】
そして、パソコンをＵＳＢマスストレージクラスに対応する印刷装置にＵＳＢで接続して、パソコンが印刷装置を記憶デバイスとして認識するようにした印刷システムが知られている。この印刷装置では、ＵＳＢホストであるパソコンとＵＳＢデバイスである印刷装置との間で、ファイル単位でのアクセスが可能となる。そのため、例えば、印刷装置のメモリに記憶されているファイルを、パソコンのハードディスクに容易にコピーすることができる（例えば、特許文献１参照）。
【特許文献１】特開２００６−８２２５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、パソコンをＵＳＢマスストレージクラスに対応する印刷装置に接続した印刷システムでは、ファイル管理の主体はあくまでＵＳＢホストとして機能するパソコン側にある。そのため、パソコンのエディタで作成された編集物のファイルが印刷装置に転送されてメモリに書き込まれる場合、ＵＳＢデバイスとして機能する印刷装置側では、メモリに対するファイルの書き込みが完了したか否かを認識することができない。すると、印刷装置がメモリに書き込まれるファイルに基づいて印刷処理を行う場合に、メモリへのファイル書込みが完了していない段階で印刷処理を開始すると、適正な印刷動作を実行できない印刷エラーが生じたり、印刷画像に文字化けや画像欠損を生じたりする問題があった。
【０００６】
なお、特許文献１に記載の印刷システムでは、プリンタからパソコンに転送保存されるファイルの保存状況および保存結果の確認を、パソコンのみならずプリンタでも行えるようにしている。これは、ファイル管理の主体であるＵＳＢホスト側のパソコンが、ＵＳＢデバイス側であるプリンタにファイル保存中の状態を表示するようにしたにすぎない。そのため、かかる従来技術では、ファイル管理の主体でないＵＳＢデバイス側であるプリンタで、パソコンから転送されたファイルの書き込みが完了したか否かを把握することができず、上記のような問題を解決することはできない。
【０００７】
本発明は、上記問題点を解決するためになされたものであり、外部端末により外部記憶装置として認識される印刷装置において、パソコンから転送されたファイルの記憶領域への書き込みが完了する前に、このファイルに基づいて印刷処理が開始されるという不具合の発生を防止することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に係る発明の印刷装置は、外部端末と通信を行う通信手段と、前記通信手段にて前記外部端末から受信されたデータを記憶する記憶手段と、前記記憶手段に対するデータの書き込みおよび読み出しを制御するとともに、前記通信手段による通信が実行される場合、前記記憶手段を、一まとまりの印刷データが含まれる印刷ファイルを一単位として書き込み可能な外部記憶装置として、前記外部端末に認識させる制御手段と、前記制御手段により前記印刷ファイルの書き込みが実行される場合、前記記憶手段に対する前記印刷ファイルの書き込みが完了したか否かを判断する書込完了判断手段と、前記書込完了判断手段により前記印刷ファイルの書き込みが完了したと判断されると、前記記憶手段に記憶された前記印刷ファイルに含まれる前記印刷データに基づいて印刷を実行する印刷手段とを備えたことを特徴とする。
【０００９】
また、請求項２に係る発明の印刷装置は、請求項１に記載の発明の構成に加えて、前記書込完了判断手段は、前記通信手段にて前記印刷ファイルの書き込みを指示する書込コマンドが受信された場合、前記外部端末から前記印刷装置への前記印刷ファイルの転送が完了した時点から起算して、前記通信手段にて他の前記書込コマンドを受信することなく所定時間が経過すると、前記印刷ファイルの書き込みが完了したと判断することを特徴とする。
【００１０】
また、請求項３に係る発明の印刷装置は、請求項１または２に記載の発明の構成に加えて、前記記憶手段は、前記記憶手段に記憶されているファイルと併せて、前記ファイルを識別するためのファイル名をファイル情報として記憶しており、前記書込完了判断手段は、所定タイミングで前記記憶手段にて前記ファイル名を検索し、前記印刷ファイルであることを示すファイル名を発見すると、前記印刷ファイルの書き込みが完了したと判断することを特徴とする。
【００１１】
また、請求項４に係る発明の印刷装置は、請求項１〜３のいずれかに記載の発明の構成に加えて、前記記憶手段は、前記記憶手段に記憶されているファイルと併せて、前記ファイルのデータ量を示すファイルサイズをファイル情報として記憶しており、前記書込完了判断手段は、所定タイミングで前記記憶手段にて前記ファイルサイズを検索し、前記一単位として予め定められた規定データ量を示すファイルサイズを発見すると、前記印刷ファイルの書き込みが完了したと判断することを特徴とする。
【００１２】
また、請求項５に係る発明の印刷装置は、請求項２に記載の発明の構成に加えて、前記制御手段は、前記通信手段にて前記印刷ファイルが受信されると、前記印刷ファイルを前記記憶手段における所定領域に書き込むものであって、前記書込完了判断手段は、前記記憶手段における所定領域の先頭位置に対してデータの書き込みが行われると、前記印刷ファイルの転送が開始されたと判断して特定フラグをＯＮにセットし、前記印刷装置から前記外部端末に前記書込コマンドに対する応答コマンドが送信されると、前記印刷ファイルの転送が完了したと判断して前記特定フラグをＯＦＦにセットし、前記特定フラグがＯＦＦにセットされた時点から起算して、前記所定時間が経過したか否かを判断することを特徴とする。
【００１３】
また、請求項６に係る発明の印刷装置は、請求項３または４に記載の発明の構成に加えて、前記記憶手段は、前記ファイルを記憶する第１の領域と、前記ファイル情報を記憶する第２の領域とを有しており、前記書込完了判断手段は、前記所定タイミングとして前記第２の領域に対する前記ファイル情報の書き込みがあったときに前記記憶手段を検索することを特徴とする。
【００１４】
また、請求項７に係る発明の印刷装置は、請求項１〜６のいずれかに記載の発明の構成に加えて、前記通信手段は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を介して前記外部端末と通信を行うためのＵＳＢポートであって、前記制御手段は、ＵＳＢデバイスドライバとしてマスストレージクラスドライバを使用することにより、前記記憶手段を前記外部記憶装置として前記外部端末に認識させることを特徴とする。
【００１５】
また、請求項８に係る発明の印刷装置は、請求項１〜７のいずれかに記載の発明の構成に加えて、前記記憶手段は、プログラムの実行ファイルをさらに記憶しており、前記制御手段は、前記通信手段にて前記実行ファイルを前記外部端末に送信することにより、前記外部端末において前記プログラムの稼動を可能とすることを特徴とする。
【発明の効果】
【００１６】
請求項１に係る発明の印刷装置によれば、印刷装置を外部記憶装置として認識する外部端末から印刷ファイルが書き込まれると、記憶手段への印刷ファイルの書き込みが完了したか否かが判断されるので、ファイル管理の主体でない印刷装置側で印刷ファイルの書き込みが完了したことを認識できる。これにより、印刷ファイルの書き込み途中で印刷動作を開始することを防止して、適正な印刷動作を実行できない印刷エラーや印刷画像での文字化けや画像欠損などを抑制することができる。
【００１７】
また、請求項２に係る発明の印刷装置によれば、印刷ファイルの転送が完了した時点から他の書込コマンドを受信することなく所定時間が経過すると、記憶手段への印刷ファイルの書き込みが完了したと判断する。すなわち、印刷装置では一の印刷ファイルについて複数回の書込コマンドを受信する場合があるため、印刷ファイルの転送完了時から所定時間経過するまでに他の書込コマンドを受信しなければ、この印刷ファイルについて更なる書込コマンドを受信することがなくファイル書き込みが完了したものとみなす。これにより、ファイル管理の主体でない印刷装置側で、印刷ファイルの書き込みが完了したか否かを、外部端末から送信される書込コマンドを基準として正確に特定することができる。
【００１８】
また、請求項３に係る発明の印刷装置によれば、所定タイミングで記憶手段を検索して印刷ファイルを示すファイル名を発見すると、記憶手段への印刷ファイルの書き込みが完了したと判断する。すなわち、記憶手段への印刷ファイルの書き込みが完了すると、記憶手段に記憶されているファイル情報にこの印刷ファイルを示すファイル名が記憶される。そのため、所定タイミングでファイル情報を検索して、印刷ファイルを示すファイル名を発見するとファイル書き込みが完了したものとみなす。これにより、ファイル管理の主体でない印刷装置側で、印刷ファイルの書き込みが完了したか否かを、ファイル名の検索という簡易な制御だけで正確に特定することができる。
【００１９】
また、請求項４に係る発明の印刷装置によれば、所定タイミングで記憶手段を検索して規定データ量を示すファイルサイズを発見すると、記憶手段への印刷ファイルの書き込みが完了したと判断する。すなわち、記憶手段への印刷ファイルの書き込みが完了すると、記憶手段に記憶されているファイル情報にこの印刷ファイルが有する規定データ量のファイルサイズが記憶される。そのため、所定タイミングでファイル情報を検索して、規定データ量のファイルサイズを発見するとファイル書き込みが完了したものとみなす。これにより、ファイル管理の主体でない印刷装置側で、印刷ファイルの書き込みが完了したか否かを、ファイルサイズの検索という簡易な制御だけで正確に特定することができる。
【００２０】
また、請求項５に係る発明の印刷装置によれば、印刷ファイルが書き込まれる所定領域先頭位置に対してデータの書き込みが行われると特定フラグをＯＮにセットし、外部端末に応答コマンドが送信されると特定フラグをＯＦＦにセットし、特定フラグがＯＦＦにセットされた時点から経過時間をカウントする。これにより、ファイル管理の主体でない印刷装置側で、印刷ファイルの転送開始および転送完了を正確に把握でき、誤ったタイミングで経過時間のカウントを開始する不具合を防止することができる。特に、最新の書込コマンド（すなわち、最新の所定領域への書き込み）に基づいて印刷ファイルが転送完了した時点からの経過時間をカウントすることで、一の印刷ファイルについて複数回の書込コマンドを受信した場合でもファイル書き込みの完了を正確に特定することができる。
【００２１】
また、請求項６に係る発明の印刷装置によれば、ファイルを記憶する第１の領域とファイル情報を記憶する第２の領域とを有し、所定のタイミングとして第２の領域にファイル情報の書き込みがあったときに記憶手段を検索する。これによれば、第２の領域にファイル情報が書き込まれたときは、第１の領域に印刷ファイルが書き込まれた可能性が高いため、第２の領域にアクセスがあったときを契機としてファイル情報を検索することで、不要なファイル検索を抑制して処理の迅速化を図ることができる。
【００２２】
また、請求項７に係る発明の印刷装置によれば、汎用的なインターフェースであるＵＳＢを使用して印刷装置および外部端末を接続する。また、印刷装置ではマスストレージクラスドライバを使用することで、外部端末として汎用的なＰＣなどに、印刷装置を外部記憶装置として認識させる。従って、ユーザによる煩わしい設定作業を要することなく、ユーザの使用利便性を向上させることができるとともに本発明を簡易に実現することができる。
【００２３】
また、請求項８に係る発明の印刷装置によれば、記憶手段にプログラムの実行ファイルをさらに記憶しているので、このプログラムを外部端末から起動して動作させることが可能となる。これにより、予め外部端末にプログラムをインストールしておく必要がなくなるので、印刷ファイルの編集作業時等においてユーザの使用利便性が向上する。
【発明を実施するための最良の形態】
【００２４】
以下、本発明を具体化した印刷装置の実施の形態について、図面を参照して説明する。なお、これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものであり、記載されている装置の構成、各種処理のフローチャートなどは、特に特定的な記載がない限り、それのみに限定する趣旨ではなく、単なる説明例である。
【００２５】
なお、本実施形態では、印刷装置での印刷処理に使用するために編集プログラム（例えば、エディタ）などで作成された１つのファイルを「印刷ファイル」と称し、この印刷ファイルに含まれる複数のデータを「印刷データ」と称して、両者を文言上区別して説明する。また、「印刷データ」は、印刷装置での印刷処理に必要な最小単位のデータであるものとする。
【００２６】
はじめに、図１を参照し、本発明の印刷装置１０およびパソコン２０が接続された印刷システム１について説明する。図１は、印刷システム１を示す模式図である。
【００２７】
図１に示すように、印刷システム１は、印刷装置１０とパソコン２０とがＵＳＢケーブル１１を介して接続された構成を有している。印刷装置１０は、印字テープに印刷を行う所謂ラベルプリンタである。パソコン２０は、本体２２、ディスプレイ２１、キーボード２３、マウス２４等を備えたデスクトップコンピュータである。そしてパソコン２０は、印刷装置１０に対して印刷処理の実行を指示する、印刷システム１のＵＳＢホストとして位置づけられる。
【００２８】
次に、印刷装置１０の電気的構成について、図２を参照して説明する。図２は、印刷装置１０の電気的構成を示す模式図である。
【００２９】
図２に示すように、印刷装置１０は、装置全体の制御を司るＣＰＵ３１、制御プログラム等を記憶し、書き換え可能であり、ＣＰＵ３１が制御プログラムを実行する場合において発生する一時的なデータ等が記憶される揮発性記憶素子であるＳＲＡＭ３３、電源を切ってもデータが消えない不揮発性記憶素子であるＦｌａｓｈＲＯＭ３４、および、印刷装置１０のパラメータ情報や履歴情報等が記憶される不揮発性記憶素子であるＥＥＰＲＯＭ３５を備えている。そして、ＣＰＵ３１によりＳＲＡＭ３３、ＦｌａｓｈＲＯＭ３４、およびＥＥＰＲＯＭ３５に記憶されている情報が参照可能となるように、双方間はバスを介して接続している。
【００３０】
また、印刷装置１０は、入出力インターフェース３６を備えている。入出力インターフェース３６は、ＣＰＵ３１と、ＣＰＵ３１に接続される各種デバイス（操作キー３７、ディスプレイコントローラ（ＬＣＤＣ）３８、駆動回路４３、駆動回路４４、ＵＳＢコントローラ４２）との間に挿入される。そして、入出力信号間の電圧変換処理、インピーダンス変換処理、タイミング調整処理等を行うことにより、ＣＰＵ３１から各種デバイスに対して出力される信号を各種デバイスにて認識可能となると共に、各種デバイスよりＣＰＵ３１に対して送信される信号をＣＰＵ３１にて認識可能となる。
【００３１】
また、印刷装置１０は、操作キー３７を備えている。操作キー３７は、ユーザの操作により、印刷装置１０に対して所望する様々な動作を起こさせるために設けられている。そして、ユーザにより操作キー３７を操作された場合における操作内容をＣＰＵ３１にて認識することが可能となるように、操作キー３７と入出力インターフェース３６とは電気的に接続している。
【００３２】
また、印刷装置１０は、ディスプレイコントローラ（以下、「ＬＣＤＣ３８」という。）、および液晶ディスプレイ（以下、「ＬＣＤ３９」という。）を備えている。ＬＣＤＣ３８は、表示データを記憶する表示用ＲＡＭ（図示外）を備えており、ＬＣＤ３９を制御して表示データを表示させるために、ＬＣＤ３９と電気的に接続している。また、ＬＣＤＣ３８は、ＣＰＵ３１より制御可能となるように、入出力インターフェース３６と電気的に接続している。
【００３３】
また、印刷装置１０は、サーマルヘッド４０と、サーマルヘッド４０を制御可能な駆動回路４３とを備えている。サーマルヘッド４０は、インクリボン（図示外）に熱を加えることにより印字テープにインクを転写することが可能なデバイスである。駆動回路４３は、サーマルヘッド４０を制御して印字テープに印刷させることが可能となるように、サーマルヘッド４０と電気的に接続している。駆動回路４３は、ＣＰＵ３１より制御可能となるように、入出力インターフェース３６と電気的に接続している。
【００３４】
また、印刷装置１０は、テープ送りローラ４１と、テープ送りローラ４１を制御可能な駆動回路４４とを備えている。テープ送りローラ４１は、サーマルヘッド４０によるインク転写時において印字テープを送出するために設けられている。駆動回路４４は、サーマルヘッド４０による印字テープへの印字時に、テープ送りローラ４１を制御して印字テープを送出させることが可能となるように、テープ送りローラ４１と電気的に接続している。駆動回路４４は、ＣＰＵ３１により制御可能となるように、入出力インターフェース３６と電気的に接続している。
【００３５】
また、印刷装置１０は、ＵＳＢコントローラ４２を備えている。ＵＳＢコントローラ４２は、パソコン２０とＵＳＢケーブル１１を介して接続した状態で、パソコン２０と通信を行うことが可能となるように、電圧変換処理およびインピーダンス変換処理を行うためのコントローラデバイスである。そして、ＵＳＢケーブル１１を介してパソコン２０から受信した信号をＣＰＵ３１にて認識可能とするために、または、ＣＰＵ３１により送信された信号をＵＳＢケーブル１１を介してパソコン２０に送信することが可能となるように、ＵＳＢコントローラ４２と入出力インターフェース３６とは電気的に接続している。
【００３６】
次に、印刷装置１０が備える記憶素子であるＦｌａｓｈＲＯＭ３４およびＳＲＡＭ３３の各記憶領域について、図３および図４を参照して説明する。図３は、ＦｌａｓｈＲＯＭ３４の記憶領域を示す模式図である。図４は、ＳＲＡＭ３３の記憶領域を示す模式図である。
【００３７】
図３を参照し、ＦｌａｓｈＲＯＭ３４の記憶領域について説明する。ＦｌａｓｈＲＯＭ３４には、制御プログラム領域５１が設けられている。制御プログラム領域５１には、ＣＰＵ３１が各種デバイスを制御して処理を実行する場合に駆動する制御プログラムが記憶されている。制御プログラムは、ＣＰＵ３１が各種処理を実行する場合において、ＣＰＵ３１より読み出される。また、制御プログラム領域５１には、アプリケーションプログラム領域５２、ＵＳＢデバイスドライバ領域５３およびその他の領域が設けられている。
【００３８】
アプリケーションプログラム領域５２には、ＣＰＵ３１が実行する制御プログラムのうち、上位レベルの制御プログラム（ファイル操作（書き込みや読み出し等）、ファイルの内容に基づく判断、各種ドライバプログラムへの命令等）が記憶されている。このような上位レベルの制御プログラムには、印刷装置１０の動作全般を司るメインプログラムも含まれる。
【００３９】
ＵＳＢデバイスドライバ領域５３には、ＵＳＢケーブル１１を介した通信のプロトコル制御を実行するＵＳＢデバイスドライバ５７が記憶されている。具体的には、ＵＳＢデバイスドライバ５７として、プリンタクラスドライバ５８とマスストレージクラスドライバ５９とが記憶されている。印刷装置１０がＵＳＢケーブル１１を介してパソコン２０と通信を行う場合、必要に応じていずれかのＵＳＢデバイスドライバ５７がＣＰＵ３１より読み出されて使用される。
【００４０】
ＣＰＵ３１により、ＵＳＢデバイスドライバ５７としてプリンタクラスドライバ５８が使用される場合には、印刷装置１０はパソコン２０により印刷デバイスとして認識される。これにより、従来の一般的な印刷装置の使用方法と同様に、パソコン２０から印刷装置１０に対して印刷データを送信することによって、印刷装置１０にて印字テープに印刷を行うことが可能となる。以下、印刷デバイスとして認識されるような駆動状態を「印刷デバイス状態」という。
【００４１】
ＣＰＵ３１により、ＵＳＢデバイスドライバ５７としてマスストレージクラスドライバ５９が使用される場合には、印刷装置１０はパソコン２０により記憶デバイスとして認識される。これにより、印刷装置１０内の特定の記憶領域（後述するディスク領域９０およびディスク領域１０１）がパソコン２０の記憶領域として使用可能となる。以下、記憶デバイスとして認識されるような駆動状態を「記憶デバイス状態」という。
【００４２】
また、ＦｌａｓｈＲＯＭ３４には、ディスク領域９０が設けられている。ディスク領域９０は、印刷装置１０がパソコン２０により記憶デバイスとして認識された状態において、パソコン２０の記憶領域として使用可能となるように設定されている。本実施形態では、ディスク領域９０上のファイルやディレクトリの管理を行うためのファイルシステムとして、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅｓ）が採用されている。そのため、ディスク領域９０には、ＭＢＲ領域９１、ＢＰＢ領域９２、ＦＡＴ領域９３、ＲＤＥ領域９４およびＤＡＴＡ領域９５が設けられている。
【００４３】
ＭＢＲ（Ｍａｓｔｅｒ  Ｂｏｏｔ  Ｒｅｃｏｒｄ）領域９１には、ディスク領域９０における各パーティションのファイルシステムタイプ（本実施形態ではＦＡＴ１２）、および、ＢＰＢ領域９２の先頭セクタが記憶されている。
【００４４】
ＢＰＢ（ＢＩＯＳ  Ｐａｒａｍｅｔｅｒ  Ｂｌｏｃｋ）領域９２には、ＦＡＴ構成情報として、最小記録単位（物理フォーマット）である１セクタのバイト数（本実施形態では５１２バイト）や、実際のファイルの読み書き単位である１クラスタのセクタ数（本実施形態では１セクタ）などの物理的な属性が記憶される。
【００４５】
ＦＡＴ領域９３には、ＤＡＴＡ領域９５にそれぞれ分散配置されている複数のデータの並び（すなわち、ファイルのデータ位置（クラスタ））を管理するテーブルであり、ＦＡＴを構成する各セクタに次のクラスタ情報をそれぞれ記録することで連続したデータ領域を示す構造を有する。なお、ＦＡＴ領域９３は、同じ内容を持つ２つのＦＡＴを備えており、ＦＡＴを二重化することで信頼性の向上を図っている。
【００４６】
ＲＤＥ（Ｒｏｏｔ  Ｄｅｒｅｃｔｏｒｙ  Ｅｎｔｒｙ）領域９４には、ディスク領域９０に記憶されているファイルの属性情報であるファイル情報データ（ファイル名、最初のクラスタ位置、更新日時、ファイルサイズ等）が記憶されている。なお、ＲＤＥ領域９４に記憶されるファイル情報データの大きさは、１ファイルあたり３２バイトである。
【００４７】
ＤＡＴＡ領域９５は、各種ファイルの実データがクラスタ単位で記憶される領域である。本実施形態では、ＤＡＴＡ領域９５に、編集プログラム実行ファイル領域９６、ステータスファイル領域９７、印刷ファイル領域９８およびブランクファイル領域９９が設けられている。編集プログラム実行ファイル領域９６は、印刷ファイルを編集するためのプログラムの実行ファイル（以下、編集プログラム実行ファイルと称する。）を記憶する領域である。ステータスファイル領域９７は、印刷装置１０に関するステータス（例えば、機種コード、国別コード、エラー情報、メディア情報など）を示す各種データを含むステータスファイルを記憶する領域である。印刷ファイル領域９８は、一まとまりの印刷データや印刷開始コマンドデータを含んだ印刷ファイルを記憶する領域である。ただし、ＦｌａｓｈＲＯＭ３４のステータスファイル領域９７および印刷ファイル領域９８に記憶されているステータスファイルおよび印刷ファイルは、後述するようにＳＲＡＭ３３にコピーされてステータスファイル領域１０５および印刷ファイル領域１０６（図４参照）の記憶領域を確保するためのダミーファイルである。
【００４８】
なお、ＤＡＴＡ領域９５において、上記ファイル領域９６、９７、９８以外の領域は、無意味なデータ列（例えば、０）で構成されたブランクファイルが隙間なく記憶されるブランクファイル領域である。そのため、ファイルシステムでは、ＤＡＴＡ領域９５に他のファイルを記憶可能な空き領域が存在しないように認識される。
【００４９】
次に、図４を参照し、ＳＲＡＭ３３の記憶領域について説明する。ＳＲＡＭ３３には、ディスク領域１０１およびローカル領域１０７が設けられている。ディスク領域１０１は、ＦｌａｓｈＲＯＭ３４から読み出された各種データを一時的に記憶するための領域である。ローカル領域１０７は、ＣＰＵ３１にて各種処理が実行される場合において必要となる情報を記憶するための領域である。
【００５０】
ディスク領域１０１は、ＦＡＴ領域１０２、ＲＤＥ領域１０３およびＤＡＴＡ領域１０４を有している。ここで、印刷装置１０の電源がＯＮ状態に操作されると、後述する初期化処理（図７のＳ１１参照）において、ＣＰＵ３１はファイルシステムの一部をＳＲＡＭ３３に展開する。このとき、ＦｌａｓｈＲＯＭ３４のＦＡＴ領域９３、ＲＤＥ領域９４およびＤＡＴＡ領域９５がコピーされて、ＳＲＡＭ３３のＦＡＴ領域１０２、ＲＤＥ領域１０３およびＤＡＴＡ領域１０４が形成される。なお、ＳＲＡＭ３３のＤＡＴＡ領域１０４には、ＦｌａｓｈＲＯＭ３４のＤＡＴＡ領域９５のうちでステータスファイル領域９７および印刷ファイル領域９８がコピーされて、ステータスファイル領域１０５および印刷ファイル領域１０６が形成される。
【００５１】
つまり、印刷装置１０の電源がＯＮ状態に操作されると、ＦｌａｓｈＲＯＭ３４のディスク領域９０のうちで、ＳＲＡＭ３３の一部領域がＵＳＢマスストレージとして動作するために最低限必要な領域（つまり、ＦＡＴ領域９３、ＲＤＥ領域９４、ステータスファイル領域９７および印刷ファイル領域９８）のみが、ＳＲＡＭ３３のディスク領域１０１として展開される。これにより、ＳＲＡＭ３３のディスク領域１０１も、ディスク領域９０と同様に、印刷装置１０がパソコン２０により記憶デバイスとして認識された状態において、パソコン２０の記憶領域として使用可能となるように設定される。
【００５２】
その結果、本実施形態の印刷装置１０では、ＦｌａｓｈＲＯＭ３４のディスク領域９０の代わりにＳＲＡＭ３３のディスク領域１０１が、ＵＳＢマスストレージとして動作することになる。そして、ＦｌａｓｈＲＯＭ３４のディスク領域９０はデータ読み取り専用であって、実際にデータの読み書きが発生するのはＳＲＡＭ３３のディスク領域１０１のみである。
【００５３】
ここで、ＵＳＢマスストレージ（つまり、各ディスク領域９０、１０１）のファイルシステムの管理主体は、ＵＳＢホスト（つまり、パソコン２０）である。そして、本実施形態では、制御プログラム領域５１に記憶されているファームウエアの制御によって、物理的に分離されたＦｌａｓｈＲＯＭ３４およびＳＲＡＭ３３が、パソコン２０側で連続したメモリ空間として認識される。そのうえで、パソコン２０側でファイルシステムにアクセスするときは、ＳＲＡＭ３３のディスク領域１０１（詳細には、ＦＡＴ領域１０２、ＲＤＥ領域１０３、ステータスファイル領域１０５および印刷ファイル領域１０６）に対してデータ操作を行う。
【００５４】
このように、ＵＳＢマスストレージとして最低限必要な領域のみをＦｌａｓｈＲＯＭ３４からＳＲＡＭ３３に展開してＳＲＡＭ３３上でファイル操作を行うようにした理由は、ＳＲＡＭはＦｌａｓｈＲＯＭとは異なり書き込み回数に制限がなく、かつ、ＳＲＡＭのほうがＦｌａｓｈＲＯＭよりも書き込み時間が早いためである。また、ＳＲＡＭ３３にはＵＳＢマスストレージとして最低限必要な領域のみが展開されるため、ＦＡＴ構造全体をコピーするよりもＳＲＡＭ３３のデータ容量が小さくて済み、印刷装置１０の製品コストを抑制することができる。なお、本実施形態では、ＦｌａｓｈＲＯＭ３４のデータ容量が４メガバイトであるのに対し、ＳＲＡＭ３３のデータ容量は１２８キロバイトである。
【００５５】
一方、ＳＲＡＭ３３のローカル領域１０７は、印刷バッファ領域１０８、フラグ領域１０９、リングバッファ領域１１０、受信バッファ領域１１１などを有している。印刷バッファ領域１０８は、印字テープの印字時に使用される印刷データが一時的に記憶される領域である。フラグ領域１０９は、各種のフラグ情報を記憶する領域である。リングバッファ領域１１０は、印刷装置１０がパソコン２０により印刷デバイスとして認識されている状態において、パソコン２０から受信する各種データが記憶される領域である。受信バッファ領域１１１は、印刷装置１０がパソコン２０により記憶デバイスとして認識されている状態において、パソコン２０から受信する各種データが記憶される領域である。
【００５６】
ところで、本実施形態では印刷装置１０のメモリ（ＳＲＡＭ３３およびＦｌａｓｈＲＯＭ３４）を管理するファイルシステムとしてＦＡＴを採用しているため、１セクタのバイト数や１クラスタのセクタ数などが規定されている。また、各記憶領域９０〜９９、１０１〜１０６は、その記憶容量（セクタサイズ）および記憶位置（クラスタ位置）があらかじめ規定されている。さらに、印刷ファイル領域９８、１０６には、一つの固定長の印刷ファイルのみが記憶されている。
【００５７】
このようなデータ構造によって、ＳＲＡＭ３３にて印刷ファイル領域１０６にてファイル操作が行われる場合、印刷ファイルのデータ書き込み位置またはデータ読み出し位置が常に同じ（すなわち、特定クラスタの先頭セクタ）となる。ステータスファイル領域１０５についても同様に、一つのステータスファイルのみが記憶されて、ステータスファイルのデータ書き込み位置またはデータ読み出し位置が常に同じである。また、本実施形態では、ステータスファイルは１ファイルあたり５１２バイト（１セクタ）の固定長データであり、印刷ファイルは１ファイルあたり３２キロバイト（４０セクタ）の固定長データである。
【００５８】
特に、本実施形態では、パソコン２０において後述するように編集プログラム実行ファイルを用いて作成される印刷ファイルが、常に規定（３２キロバイト）のファイルサイズで作成される。編集プログラム実行ファイルは、ユーザ操作により作成された印刷用画像データが３２キロバイトよりも小さくても、残りの領域にダミーデータ（例えば０）を含めることで、ファイル全体としては３２キロバイトのファイルサイズとなるような印刷ファイルを作成する。これにより、ＳＲＡＭ３３の印刷ファイル領域１０６に印刷ファイルの書き込みが発生しても、ＣＰＵ３１は印刷ファイル領域１０６の記憶領域を変えることなく印刷ファイルを上書きすることができる。
【００５９】
次に、印刷装置１０のＣＰＵ３１がパソコン２０と通信を行う場合における、印刷装置１０内のデータの流れについて、図５を参照して説明する。図５は、印刷装置１０〜パソコン２０間で送受されるデータの流れを示す内部ブロック図である。
【００６０】
図５に示すように、ＦｌａｓｈＲＯＭ３４には、先述のように、制御プログラムとしてアプリケーションプログラム５４（例えば、メインプログラム）とＵＳＢデバイスドライバ５７（ここでは、プリンタクラスドライバ５８とマスストレージクラスドライバ５９）とを備えている。ＵＳＢデバイスドライバ５７は、実際にＵＳＢコントローラ４２を制御してパソコン２０とＵＳＢケーブル１１を介した通信を実行する場合において、事前にＣＰＵ３１により読み出されて使用されるプログラムである。
【００６１】
そして、ＣＰＵ３１がＵＳＢデバイスドライバ５７としてマスストレージクラスドライバ５９を選択した場合には、パソコン２０は印刷装置１０を記憶デバイスとして認識する。これにより、パソコン２０が印刷装置１０とＵＳＢケーブル１１を介して接続した状態で、ディスク領域９０、１０１をパソコン２０の記憶領域として使用可能となる。また、ＣＰＵ３１がＵＳＢデバイスドライバ５７としてプリンタクラスドライバ５８を選択した場合には、パソコン２０は印刷装置１０を印刷デバイスとして認識する。これにより、パソコン２０が印刷装置１０とＵＳＢケーブル１１を介して接続した状態で、パソコン２０より印刷装置１０に対して印刷データを転送し印刷指示を行うことによって、印刷装置１０に印刷処理を実行させることが可能な状態となる。
【００６２】
次いで、ＵＳＢコントローラ４２について説明する。ＵＳＢコントローラ４２は、エンドポイント（ＥＰ）を使用してＵＳＢケーブル１１を介したパケットの送受信を実行する。ＥＰとは、ＦＩＦＯ構造を有する送受信用バッファである。そして、送信用に割り当てられた送信用ＥＰ（バッファサイズ６４バイトのＥＰ１）にデータが記憶された場合に、ＵＳＢコントローラ４２は記憶されたデータをパケット化してＵＳＢケーブル１１に対して送信可能となる。一方、ＵＳＢコントローラ４２がＵＳＢケーブル１１を介してパケットを受信した場合には、パケット中のデータは受信用に割り当てられた受信用ＥＰ（バッファサイズ６４バイトのＥＰ２）に記憶される。従って、ＣＰＵ３１は、送信用ＥＰに送信データを記憶することにより、パソコン２０に対してパケットを送信することが可能となる。また、ＣＰＵ３１は、受信用ＥＰに記憶されたデータを読み出すことにより、パソコン２０からのパケットを認識することが可能となる。
【００６３】
次いで、ＵＳＢコントローラ４２のパケット通信時における動作について概説する。ＵＳＢコントローラ４２とＣＰＵ３１との間には、ＵＳＢコントローラ４２の状態をＣＰＵ３１に通知するための制御信号として、バルクＩＮ転送要求線６２と、バルクＯＵＴ転送要求線６３とが少なくとも設けられている。ここで、バルクＩＮ転送要求線６２は、送信用ＥＰにデータが記憶された場合に、ＵＳＢコントローラ４２が電位を変位させる。ＣＰＵ３１は、バルクＩＮ転送要求線６２の電位が変位したことを検出した場合に、ＵＳＢコントローラ４２がパソコン２０に対してパケットを送信可能な状態であると判断する。そして、ＣＰＵ３１は、パソコン２０に対してパケットを送信することが可能なタイミングでＵＳＢコントローラ４２を制御し、送信用ＥＰに記憶されているデータをパケット化させてパソコン２０に送信させる。
【００６４】
一方、バルクＯＵＴ転送要求線６３は、受信用ＥＰにデータが記憶された場合に、ＵＳＢコントローラ４２が電位を変位させる。ＵＳＢケーブル１１を介してＵＳＢコントローラ４２が受信したパケットのデータは受信用ＥＰに自動的に格納されるので、ＣＰＵ３１は、バルクＯＵＴ転送要求線６３の電位が変位したことを検出した場合に、ＵＳＢコントローラ４２がパソコン２０よりパケットを受信したと判断する。そして、ＣＰＵ３１は、ＵＳＢコントローラ４２を制御し、受信用ＥＰに記憶されているデータを読み出してＳＲＡＭ３３に記憶する。
【００６５】
以上概説した処理を実行することにより、ＣＰＵ３１は、ＵＳＢケーブル１１を介して接続された状態におけるパソコン２０に対するパケット送信処理、および、パソコン２０からのパケット受信処理を実行する。
【００６６】
次に、印刷装置１０〜パソコン２０間で実行される通信シーケンスについて、図６を参照して説明する。図６は、印刷装置１０〜パソコン２０間の通信シーケンスを示す模式図である。
【００６７】
図６に示すように、はじめに、印刷装置１０とパソコン２０とがＵＳＢケーブル１１を介して接続される（８１）。この状態では、印刷装置１０の電源スイッチがＯＮ状態となっていないので、パソコン２０は印刷装置１０を認識できておらず、印刷装置１０〜パソコン２０との間で通信はなされていない。
【００６８】
次いで、印刷装置１０の電源スイッチがＯＮ状態とされる（７０）。本実施形態では、印刷装置１０は電源スイッチがＯＮとされた直後は、ＵＳＢデバイスドライバ５７としてマスストレージクラスドライバ５９を選択して読み込む。これにより、印刷装置１０はパソコン２０により記憶デバイスとして認識される状態、すなわち「記憶デバイス状態」となる。また、印刷装置１０は電源スイッチがＯＮされるのと同時に、ＵＳＢケーブル１１の信号線のうちＤ＋信号をプルアップする。そして、パソコン２０にてＤ＋信号のプルアップ状態が検出された場合に、パソコン２０は印刷装置１０がＵＳＢケーブル１１を介して接続されたと判断する。
【００６９】
パソコン２０にて印刷装置１０が接続されたと判断された場合、次いで、印刷装置１０〜パソコン２０間でプラグアンドプレイ通信（ＰｎＰ通信）が実行される（８２）。ＰｎＰ通信では、ＵＳＢホストとして機能するパソコン２０が、ターゲットとなるＵＳＢデバイスとして機能する印刷装置１０の駆動状態を把握するためのパケット通信が実行される。この場合、ＵＳＢコントローラ４２にてコントロール転送用に割り当てられた制御用ＥＰ（バッファサイズが８バイトのＥＰ０）が使用され、パケットの送受信が実行される。そしてＰｎＰ通信により、パソコン２０は、接続された印刷装置１０の駆動状態が「記憶デバイス状態」となっており、ＳＲＡＭ３３およびＦｌａｓｈＲＯＭ３４の各ディスク領域９０、１０１がパソコン２０の記憶領域として使用可能な状態であることを認識する。
【００７０】
ＰｎＰ通信（８２）が終了した以後は、各ディスク領域９０、１０１のファイルがパソコン２０によって参照される度に、参照されるデータを含むパケットが印刷装置１０からパソコン２０に対して転送される（８３）。また、パソコン２０によって各ディスク領域９０、１０１にファイルが記憶される場合に、記憶されるファイルを構成するデータを含むパケットがパソコン２０から印刷装置１０に対して転送される（８４）。
【００７１】
ここで、印刷装置１０が「記憶デバイス状態」となっている場合において、パソコン２０により印刷装置１０に対して印刷処理を実行させる具体例について、図６を参照しつつ説明する。はじめに、パソコン２０を操作するユーザにより、ＦｌａｓｈＲＯＭ３４のディスク領域９０に記憶されている編集プログラム実行ファイルが選択される。すると、編集プログラム実行ファイルが印刷装置１０からパソコン２０に対して転送される（８３）。そして、パソコン２０の記憶領域（図示外）に、この転送された編集プログラム実行ファイルが記憶される。これにより、パソコン２０のユーザが編集プログラム実行ファイルを使用可能となるので、ユーザは編集プログラム実行ファイルを使用して任意の印刷ファイルを作成する。
【００７２】
印刷ファイルの作成が終了すると、ユーザはパソコン２０で作成済みの印刷ファイルを印刷装置１０のメモリ上に保存することを指示する。すると、この印刷ファイルが、パソコン２０から印刷装置１０に対して転送され（８４）、ＳＲＡＭ３３の印刷ファイル領域１０６に書き込まれる。そして、印刷装置１０は、印刷ファイル領域１０６に格納されている印刷ファイルに含まれる各データに基づいて印刷処理を実行する。
【００７３】
次いで、印刷装置１０の駆動状態が切り替えられる場合について説明する。印刷装置１０が「記憶デバイス状態」にて駆動している状態で、ユーザによる操作キー３７の操作、または、パソコン２０のキーボード２３やマウス２４などの操作により、印刷装置１０の駆動状態の切り替え指示が入力される（７１）。すると、パソコン２０は、印刷装置１０に対して駆動状態を切り替える旨の情報である駆動状態情報を送信する（８５）。
【００７４】
駆動状態情報を受信した印刷装置１０は、ＣＰＵ３１が使用するＵＳＢデバイスドライバ５７をマスストレージクラスドライバ５９からプリンタクラスドライバ５８に切り替えて、ＵＳＢの切断・再接続処理を行う（８６）。すなわち、まず一旦パソコン２０との接続状態を解除するために、ＵＳＢケーブル１１の信号線のうちＤ＋信号のプルアップ状態をクリアし、ハイインピーダンス状態とする。そして、パソコン２０にてＤ＋信号のプルアップ状態のクリアが検出された場合に、パソコン２０は印刷装置１０との接続状態が解除されたものと判断する。
【００７５】
そして、印刷装置１０は、ＵＳＢデバイスドライバ５７としてプリンタクラスドライバ５８を選択して読み込む。これにより、印刷装置１０はパソコン２０により印刷デバイスとして認識される状態、すなわち「印刷デバイス状態」となる。そして再度、ＵＳＢケーブル１１の信号線のうちＤ＋信号をプルアップ状態とする。そして、パソコン２０にてＤ＋信号のプルアップ状態が検出された場合に、パソコン２０は印刷装置１０がＵＳＢケーブル１１を介して再接続されたと判断する。
【００７６】
パソコン２０にて印刷装置が再接続されたことを検出した場合、次いで、印刷装置１０〜パソコン２０間でＰｎＰ通信が実行される（８７）。ＰｎＰ通信では、電源スイッチＯＮ時のＰｎＰ通信（８２）と同様に、ＵＳＢホストとして機能するパソコン２０が、ターゲットとなるＵＳＢデバイスとして機能する印刷装置１０の駆動状態を把握するためのパケット通信が実行される。そして、パソコン２０は、駆動状態が「印刷デバイス状態」となっており、印刷データを転送することにより印字テープへの印刷処理が実行可能な状態であることを認識する。
【００７７】
ＰｎＰ通信（８７）が終了した後、パソコン２０から印刷装置１０に対して印刷処理を実行させるために印刷データを送信する度に、印刷データを含むパケットがパソコン２０から印刷装置１０に対して転送される（８８）。
【００７８】
ここで、印刷装置１０が「印刷デバイス状態」となっている場合において、パソコン２０により印刷装置１０に対して印刷処理を実行させる具体例について、図６を参照しつつ説明する。はじめに、パソコン２０にて印刷データの作成処理が実行される。ここでは、ユーザにより、予めパソコン２０にインストールされている編集プログラムが操作され、印刷データの作成作業が実行される。
【００７９】
ユーザによる印刷データの作成が終了すると、この作成済みの印刷データはパソコン２０の記憶領域（図示外）に記憶される。そして、ユーザの操作に応じてパソコン２０から印刷装置１０に対して印刷データの印刷指示がなされると、この印刷データがパソコン２０から印刷装置１０に転送される。さらに、印刷装置１０に印刷処理を開始させるための印刷開始コマンドデータが、パソコン２０から印刷装置１０に転送される。印刷装置１０では、パソコン２０から転送された印刷データに基づき、印刷開始コマンドデータによる指示に従って印刷処理を実行する。
【００８０】
次いで、印刷装置１０のＣＰＵ３１が実行する処理について、図７〜図１４を参照して説明する。図７は、メイン処理のフローチャートである。図８は、モード切替処理のフローチャートである。図９は、プリンタ処理のフローチャートである。図１０は、マスストレージ処理のフローチャートである。図１１は、バルク受信処理のフローチャートである。図１２は、セクタ情報取得処理のフローチャートである。図１３は、コマンド処理のフローチャートである。図１４は、印刷動作制御処理のフローチャートである。
【００８１】
はじめに、図７を参照して、印刷装置１０のメイン処理について説明する。図７に示すメイン処理は、印刷装置１０の電源スイッチがＯＮとされた場合において、ＣＰＵ３１が   先述のメインプログラムを起動して開始する処理である。
【００８２】
図７に示すように、印刷装置１０のメイン処理では、はじめにＣＰＵ３１が初期化処理を実行する（Ｓ１１）。初期化処理では、印刷装置１０による印刷処理が実行可能となるように、駆動回路４３、駆動回路４４およびＵＳＢコントローラ４２が初期化される。ＣＰＵ３１は、所定の初期化条件に基づいて、駆動回路４３および駆動回路４４を初期化（例えば、デバイスリセットや初期化設定など）する。これにより、サーマルヘッド４０およびテープ送りローラ４１を駆動させ、印字テープに印刷を行うことが可能な状態とする。また、ＣＰＵ３１は、先述のようにファイルシステムの一部をＦｌａｓｈＲＯＭ３４からＳＲＡＭ３３に展開する。
【００８３】
さらに、ＣＰＵ３１は、所定の初期化条件に基づいて、ＵＳＢコントローラ４２を初期化（例えば、デバイスリセットや初期化設定）する。これにより、ＵＳＢコントローラ４２が使用可能な状態となる。なお、この状態では、ＣＰＵ３１によるＵＳＢデバイスドライバ５７の選択および読み出しの処理はなされていない。
【００８４】
次いで、ＣＰＵ３１は、モード切替処理を実行する（Ｓ１３）。モード切替処理では、操作キー３７の操作により実行された駆動状態の設定操作の内容に基づいて、パソコン２０との再接続処理を実行する。印刷装置１０は、操作キー３７におけるユーザ操作により、駆動状態（記憶デバイス状態または印刷デバイス状態）を任意に設定可能である。ＣＰＵ３１は、ユーザによって設定された駆動状態を判断し、この設定された駆動状態にて駆動するために必要な処理を実行する。なお、印刷装置１０に対する駆動状態の設定方法は、上述のような操作キー３７からの入力操作に限定されるものではなく、他の方法で駆動状態が設定されても構わない（例えば、パソコン２０から駆動状態を設定するなど）。
【００８５】
図８を参照して、モード切替処理（Ｓ１３）の詳細について説明する。図８に示すように、モード切替処理では、はじめにＣＰＵ３１が操作キー３７を介してユーザにより設定された駆動状態を検出する（Ｓ３３）。そして、ユーザにより設定された駆動状態が、「記憶デバイス状態」および「印刷デバイス状態」のいずれであるかを判断する。また、ＣＰＵ３１は、現在の駆動状態を判断する（Ｓ３３）。現在の駆動状態の情報は、ＳＲＡＭ３３のフラグ領域１０９に記憶されている駆動状態フラグに設定されている。ＣＰＵ３１は、この駆動状態フラグを読み出して現在の駆動状態を判断する。
【００８６】
そして、ＣＰＵ３１は、現在の駆動状態と、ユーザにより設定された駆動状態とを比較する（Ｓ３５）。なお、電源スイッチＯＮ直後においては、駆動状態フラグは「設定なし」の状態となっているので、本判定ではユーザにより異なる駆動状態が設定されたものと必ず判断する。
【００８７】
現在の駆動状態と、ユーザにより設定された駆動状態とが同一である場合は（Ｓ３５：ＮＯ）、印刷装置１０は既にユーザにより設定された駆動状態にて駆動しており、ＵＳＢデバイスドライバ５７を新たに読み出して変更する必要はない。従って、特段の処理を行うことなく、モード切替処理を終了してメイン処理（図７参照）に戻る。
【００８８】
一方、現在の駆動状態と、ユーザにより設定された駆動状態とが異なる場合には（Ｓ３５：ＹＥＳ）、ＣＰＵ３１が使用するＵＳＢデバイスドライバ５７を変更して駆動状態を変更する必要がある。そこで、ＣＰＵ３１は、ＳＲＡＭ３３のフラグ領域１０９の駆動状態フラグに駆動状態の情報を記憶した後、先述したＵＳＢの切断・再接続処理として、まずＤ＋信号のプルアップ設定を解除し、その後に新たなＵＳＢデバイスドライバ５７を稼動した状態でＤ＋信号のプルアップ設定を有効とする。
【００８９】
以上説明した処理を実行することにより、ＵＳＢの切断・再接続処理が実行される（Ｓ３７）。これにより、パソコン２０は印刷装置１０とＵＳＢケーブル１１を介して再接続した状態であると認識するので、次いで、印刷装置１０の駆動状態を認識して通信を実行可能とするための通信（ＰｎＰ通信）が実行される。
【００９０】
すなわち、ＣＰＵ３１は、印刷装置１０の駆動状態が「印刷デバイス状態」であれば（Ｓ４１：ＹＥＳ）、ＵＳＢデバイスドライバ５７としてプリンタクラスドライバ５８を稼動してＰｎＰ通信を実行する（Ｓ４３）。これにより、ＵＳＢホストとして機能するパソコン２０は、ターゲットである印刷装置１０をＵＳＢ印刷デバイスとして認識するとともに、印刷装置１０〜パソコン２０間でプリンタクラスに準拠した通信規約での通信が実行される。
【００９１】
一方、ＣＰＵ３１は、印刷装置１０の駆動状態が「記憶デバイス状態」であれば（Ｓ４１：ＮＯ）、ＵＳＢデバイスドライバ５７としてマスストレージクラスドライバ５９を稼動してＰｎＰ通信を実行する（Ｓ４５）。これにより、ＵＳＢホストとして機能するパソコン２０は、ターゲットである印刷装置１０をＵＳＢ記憶デバイスとして認識するとともに、印刷装置１０〜パソコン２０間でマスストレージクラスに準拠した通信規約での通信が実行される。
【００９２】
図７のメイン処理に戻り、Ｓ１３のモード切替処理（図８参照）で印刷装置１０の駆動状態が確定されると、ＣＰＵ３１は、電源スイッチの状態を監視する（Ｓ１５）。ユーザにより電源スイッチがＯＦＦ状態に操作されたことを検出した場合には（Ｓ１５：ＹＥＳ）、ＯＦＦ処理（Ｓ１７）にて後処理等を行った後、メイン処理を終了する。
【００９３】
ユーザにより電源スイッチがＯＦＦ状態に操作されなかった場合（Ｓ１５：ＮＯ）、ＣＰＵ３１は、ＳＲＡＭ３３の駆動状態フラグを参照して既存の駆動状態を判断する（Ｓ１９）。そして、Ｓ１９で判断された駆動状態が「印刷デバイス状態」である場合には（Ｓ１９：ＹＥＳ）、ＣＰＵ３１は「印刷デバイス状態」でのパソコン２０との通信処理であるプリンタ処理（Ｓ２１）を実行する。他方、Ｓ１９で判断された駆動状態が「記憶デバイス状態」である場合には（Ｓ１９：ＮＯ）、ＣＰＵ３１は「記憶デバイス状態」でのパソコン２０との通信処理であるマスストレージ処理（Ｓ２３）を実行する。
【００９４】
ここで、図９を参照して、プリンタ処理（Ｓ２１）の詳細について説明する。図９に示すように、プリンタ処理では、はじめにＣＰＵ３１がＵＳＢコントローラ４２からのバルクＯＵＴ転送要求線６３の状態を監視し、バルクＯＵＴ転送要求があったかどうかを判断する（Ｓ５１）。バルクＯＵＴ転送要求線６３における電位の変位を検出した場合（Ｓ５１：ＹＥＳ）、ＣＰＵ３１はＵＳＢコントローラ４２がパソコン２０からパケットを受信したと判断し、受信用ＥＰに格納されたパケットのデータを読み出す。そして、ＳＲＡＭ３３のリングバッファ領域１１０にパケットから読み出した受信データを記憶するリングバッファ処理を行う（Ｓ５７）。その後、プリンタ処理を終了してメイン処理（図７参照）に戻る。
【００９５】
一方、バルクＯＵＴ転送要求線６３の電位が変位しない場合には（Ｓ５１：ＮＯ）、ＣＰＵ３１はＵＳＢコントローラ４２がパケットを受信していないと判断する。次いで、ＣＰＵ３１は、ＵＳＢコントローラ４２からのバルクＩＮ転送要求線６２の状態を監視し、バルクＩＮ転送要求があったかどうかを判断する（Ｓ５３）。バルクＩＮ転送要求線６２における電位の変位を検出した場合（Ｓ５３：ＹＥＳ）、ＣＰＵ３１は印刷時のエラー情報などを含むステータスデータをパソコン２０に送信するためのステータスバッファ処理を行う（Ｓ５５）。
【００９６】
Ｓ５５のステータスバッファ処理では、ＣＰＵ３１がＳＲＡＭ３３に設けられたステータスバッファ（図示外）からステータスデータを取り出してＵＳＢコントローラ４２の送信用ＥＰに格納する。そして、ＵＳＢコントローラ４２を制御して、送信用ＥＰに格納されているステータスデータをパケット化させてパソコン２０に送信させる。その後、プリンタ処理を終了してメイン処理（図７参照）に戻る。なお、バルクＩＮ転送要求を検出しなかった場合も（Ｓ５３：ＮＯ）、メイン処理（図７参照）に戻る。
【００９７】
次に、図１０を参照して、マスストレージ処理（Ｓ２３）の詳細について説明する。図１０に示すように、マスストレージ処理では、はじめにＣＰＵ３１が先述のＳ５１と同様に、バルクＯＵＴ転送要求があったかどうかを判断する（Ｓ６１）。バルクＯＵＴ転送要求があったと判断される場合（Ｓ６１：ＹＥＳ）、ＣＰＵ３１はＵＳＢコントローラ４２がパソコン２０からパケットを受信したと判断して、受信用ＥＰに格納されたパケットのデータをＳＲＡＭ３３の受信バッファ領域１１１に読み出してバルク受信処理を行う（Ｓ６３）。バルク受信処理は、ＵＳＢホスト（ここでは、パソコン２０）が送り出したデータを受信する処理であって、各種コマンドを受信するコマンドトランスポート処理、および、ファイルの実データを受信するデータトランスポート処理を含む。
【００９８】
ここで、図１１を参照して、バルク受信処理（Ｓ６３）の詳細について説明する。図１１に示すように、バルク受信処理では、はじめにＣＰＵ３１が受信バッファ領域１１１に記憶された受信データを解析して、パソコン２０から印刷装置１０に対する印刷ファイルの書き込み要求コマンド（Ｗｒｉｔｅコマンド）を受信したか否かを判断する（Ｓ８１）。Ｗｒｉｔｅコマンドを受信したと判断した場合（Ｓ８１：ＹＥＳ）、ＳＲＡＭ３３の所定ファイル領域が書き換えられたか否かが判断される（Ｓ８３）。なお、「所定ファイル領域」は、ＳＲＡＭ３３の印刷ファイル領域１０６（より詳細には、印刷ファイル領域１０６の先頭セクタ）である。
【００９９】
所定ファイル領域が書き換えられたと判断した場合（Ｓ８３：ＹＥＳ）、ＣＰＵ３１はＳＲＡＭ３３のフラグ領域１０９に記憶されているライトトリガーフラグをＯＮに設定する（Ｓ８５）。そして、ＣＰＵ３１は、さらに受信用ＥＰに格納されたパケットのデータをＳＲＡＭ３３の受信バッファ領域１１１に読み出して、印刷ファイル領域１０６の各セクタに書き込むべき実データ（セクタデータ）を１ファイル分受信するセクタデータ受信処理を行う（Ｓ８７）。なお、ＣＰＵ３１は、受信バッファ領域１１１に格納されている各セクタデータを、印刷ファイルとして印刷ファイル領域１０６の各セクタに順次書き込む。所定ファイル領域が書き換えられていない場合も（Ｓ８３：ＮＯ）、Ｓ８７にてセクタデータ受信処理を行う。
【０１００】
Ｓ８７のセクタデータ受信処理にて印刷ファイルを構成する全てのセクタデータを受信すると、ＣＰＵ３１は、ＵＳＢコントローラ４２の送信用ＥＰに応答信号としてＣＳＷ（Ｃｏｍｍａｎｄ  Ｓｔａｔｕｓ  Ｗｒａｐｐｅｒ）を格納する（Ｓ８９）。これにより、印刷装置１０からパソコン２０にＣＳＷが送信されて、パソコン２０ではＣＳＷに基づいてセクタデータの受信完了を判断することができる。
【０１０１】
次いで、ＣＰＵ３１は、ＳＲＡＭ３３のフラグ領域１０９を参照して、ライトトリガーフラグがＯＮであるか否かを判断する（Ｓ９１）。ライトトリガーフラグがＯＮであると判断した場合（Ｓ９１：ＹＥＳ）、ＣＰＵ３１は、フラグ領域１０９に記憶されているライトトリガーフラグをＯＦＦに設定する（Ｓ９３）。そして、ＣＰＵ３１は、ＳＲＡＭ３３の所定記憶領域にてＷｒｉｔｅコマンドの完了設定を行うとともに、内部タイマ（図示外）から現在時刻を取得して記録する（Ｓ９５）。なお、Ｗｒｉｔｅコマンドの完了設定がなされた時点（つまり、Ｓ９５で取得された現在時刻）から、内部タイマ（図示外）によって経過時間がカウントされる。その後、バルク受信処理を終了してマスストレージ処理（図１０参照）に戻る。また、ＣＳＷ送信後にライトトリガーフラグがＯＮでないと判断した場合も（Ｓ９３：ＮＯ）、マスストレージ処理（図１０参照）に戻る。
【０１０２】
ところで、上記のＳ８１〜Ｓ９５は、印刷ファイルの各セクタデータを受信するだけでなく、印刷装置１０側で印刷ファイルの書き込み完了を認識するための判断基準を提供する。先述のようにファイルシステムの管理主体はパソコン２０にあるため、印刷装置１０側では主体的に各メモリ（ＳＲＡＭ３３およびＦｌａｓｈＲＯＭ３４）へのファイル書き込みが完了したか否かを判断することはできない。そこで、上記のＳ８１〜Ｓ９５では、所定ファイル領域が書き換えられると、パソコン２０から印刷装置１０への印刷ファイルのデータ転送が開始されたものとみなして、ライトトリガーフラグをＯＮにする（Ｓ８５）。また、印刷装置１０からパソコン２０にＣＳＷが送信されると、パソコン２０から印刷装置１０への印刷ファイルのデータ転送が完了されたものとみなして、ライトトリガーフラグをＯＦＦにしてＷｒｉｔｅコマンドの完了設定と現在時刻取得を行う（Ｓ９３、Ｓ９５）。これにより、Ｗｒｉｔｅコマンドの完了設定時（つまり、印刷ファイルの転送完了時）からの経過時間がカウントされ、一定時間が経過すると印刷ファイルの書き込みが完了したと判断されるが、詳細は後述する。
【０１０３】
なお、印刷装置１０における１ファイルの書き込みに対して、パソコン２０からのＷｒｉｔｅコマンドが１回であるとは限らず、１ファイルの書き込みについて複数回のＷｒｉｔｅコマンドを受信することがある。例えば、Ｗｒｉｔｅコマンドの受信（Ｓ８１：ＹＥＳ）を契機として上記Ｓ８５〜Ｓ９５を経て経過時間のカウントが開始されたのちに、一定時間が経過する前に新たなＷｒｉｔｅコマンドの受信（Ｓ８１：ＹＥＳ）があったとする。この場合、新たなＷｒｉｔｅコマンドの受信（Ｓ８１：ＹＥＳ）を契機として再び上記Ｓ８５〜Ｓ９５を経て新たな現在時刻が取得されて、この新たな現在時刻を基準として経過時間のカウントが開始される（つまり、Ｗｒｉｔｅコマンドの完了設定時を基準とした経過時間のカウントがリセットされる）。
【０１０４】
一方、Ｗｒｉｔｅコマンドを受信していない場合（Ｓ８１：ＹＥＳ）、ＣＰＵ３１はパソコン２０から印刷装置１０に対するその他のコマンドを受信したか否かを判断する（Ｓ９７）。その他のコマンドを受信したと判断した場合（Ｓ９７：ＮＯ）、ＣＰＵ３１はその受信したコマンドに応じた処理を実行する（Ｓ９９）。その後、バルク受信処理を終了してマスストレージ処理（図１０参照）に戻る。また、その他のコマンドを受信していない場合も（Ｓ９７：ＮＯ）、マスストレージ処理（図１０参照）に戻る。
【０１０５】
図１０のマスストレージ処理に戻り、バルクＯＵＴ転送要求がないと判断される場合（Ｓ６１：ＮＯ）、ＣＰＵ３１はＵＳＢコントローラ４２がパケットを受信していないと判断する。次いで、ＣＰＵ３１は先述のＳ５３と同様に、バルクＩＮ転送要求があったかどうかを判断する（Ｓ６５）。バルクＩＮ転送要求があったと判断される場合（Ｓ６５：ＹＥＳ）、ＣＰＵ３１は、ＵＳＢコントローラ４２を制御して、送信用ＥＰに格納されているデータをパケット化させてパソコン２０に送信させるバルク送信処理を行う（Ｓ６７）。バルク送信処理は、ＵＳＢホスト（ここでは、パソコン２０）にデータを送信する処理であって、ＳＲＡＭ３３のステータスファイル領域１０５に記憶されているステータスファイルを送信するステータストランスポート処理、および、ファイルの実データを送信するデータトランスポート処理を含む。
【０１０６】
一方、バルクＩＮ転送要求がないと判断される場合（Ｓ６５：ＮＯ）、ＣＰＵ３１はＳＲＡＭ３３の所定記憶領域を参照して、Ｗｒｉｔｅコマンドの完了設定がなされているか否かを判断する（Ｓ６９）。そして、Ｗｒｉｔｅコマンドの完了設定がなされていると判断した場合（Ｓ６９：ＹＥＳ）、ＣＰＵ３１はパソコン２０から印刷装置１０への印刷ファイルのデータ転送が完了していると判断して、ＳＲＡＭ３３からディスク領域９０の各セクタに関する情報を取得するセクタ情報取得処理を実行する（Ｓ７１）。
【０１０７】
ここで、図１２を参照して、セクタ情報取得処理（Ｓ７１）の詳細について説明する。図１２に示すように、セクタ情報取得処理では、はじめにＣＰＵ３１が、ＳＲＡＭ３３の所定記憶領域に記憶された現在時刻および内部タイマ（図示外）を参照して、Ｗｒｉｔｅコマンドの完了設定がなされた時点（つまり、印刷ファイル領域１０６への最終書き込みが完了した時点）からの経過時間が、予め定められた一定時間を経過したか否かを判断する（Ｓ１０１）。本実施形態では、Ｗｒｉｔｅコマンドの完了設定時から１００ｍｓ以上（好適には、２００ｍｓ程度）を経過した場合には、「一定時間」を経過したと判断される。なお、Ｓ１０１の判断基準となる「一定時間」は、あらかじめＥＥＰＲＯＭ３５に設定された基準時間値でおり、この基準時間値を更新することで「一定時間」を任意に可変とすることができる。
【０１０８】
先述したように、印刷装置１０における１のファイル書き込みに対して、パソコン２０から複数回のＷｒｉｔｅコマンドが転送される場合がある。そのため、Ｓ１０１では、Ｓ９５で取得された現在時刻（つまり、複数回のＷｒｉｔｅコマンドがあった場合には、最新のＷｒｉｔｅコマンドで取得された現在時刻）からカウントした経過時間が、一定時間を経過したか否かを判断する。そして、Ｗｒｉｔｅコマンドの完了設定時（印刷ファイルの受信完了時）から一定時間を経過したと判断した場合は（Ｓ１０１：ＹＥＳ）、印刷ファイル領域１０６に記憶されている印刷ファイルのアクセスについて更なるＷｒｉｔｅコマンドを受信することはないとみなす。言い換えると、ＣＰＵ１３は、Ｗｒｉｔｅコマンドの完了設定時から一定時間内に他のＷｒｉｔｅコマンドを受信しなかった場合は、ＳＲＡＭ３３の印刷ファイル領域１０６に対する印刷ファイルの書き込みが完了したとみなす。
【０１０９】
このように、印刷ファイル領域１０６への最終書き込みから一定時間が経過したと判断した場合（Ｓ１０１：ＹＥＳ）、ＣＰＵ３１は印刷ファイルの書き込みが完了したとみなす。しかしながら、印刷ファイル領域１０６へのファイル書き込みと同じタイミングで、パソコン２０から他のファイル操作やコマンド指示を受信していた場合は、印刷装置１０での各種処理が重複してしまうことがある。この場合、印刷装置１０でのデータ処理が遅延して、上記の一定時間が経過しても印刷ファイルの書き込みが完了していない場合がある。また、印刷ファイルの書き込み処理において不具合が発生した場合には、印刷ファイル領域１０６に適正な印刷ファイルが記憶されないことがある。そこで、ＣＰＵ３１は、次の処理を行うことで、印刷ファイル領域１０６に適正な印刷ファイルが存在しているか否かを判断する。
【０１１０】
まず、ＣＰＵ３１は、ＳＲＡＭ３３のＲＤＥ領域１０３を参照して、印刷ファイルのファイル名（本実施形態ではＰＴＬＩＴＥ．ＰＲＮ）を発見したか否かを判断する（Ｓ１０３）。ＲＤＥ領域１０３に印刷ファイルのファイル名がない場合は、印刷ファイル領域１０６へファイル書き込みが完了していないためである。ここで、ＲＤＥ領域１０３では、印刷ファイルに関するファイル情報データの記憶位置があらかじめ規定されているため、ＣＰＵ３１は所定の記憶位置を読み出せばファイル名やファイルサイズなどを参照できる。
【０１１１】
印刷ファイルのファイル名を発見したと判断した場合（Ｓ１０３：ＹＥＳ）、さらにＣＰＵ３１はＳＲＡＭ３３のＲＤＥ領域１０３を参照して、印刷ファイルのファイルサイズが指定のサイズ（本実施形態では３２キロバイト）であるか否かを判断する（Ｓ１０５）。ＲＤＥ領域１０３にて印刷ファイルのファイルサイズが指定サイズとは異なる場合は、印刷ファイル領域１０６に書き込まれた印刷ファイルにデータの破損や欠落などが発生しているためである。
【０１１２】
印刷ファイルが指定のサイズであると判断した場合（Ｓ１０５：ＹＥＳ）、ＣＰＵ３１は、印刷ファイル領域１０６に記憶されている印刷ファイルが適正であると判断して、ＳＲＡＭ３３のリングバッファ領域１１０に記憶するリングバッファ処理を行う（Ｓ５７）。なお、Ｓ５７のリングバッファ処理が行われると、ＣＰＵ３１は、ＳＲＡＭ３３の所定記憶領域にてＷｒｉｔｅコマンドの完了設定をクリアするとともに、内部タイマ（図示外）によるカウントを終了する。
【０１１３】
その後、ＣＰＵ３１は、セクタ情報取得処理を終了してマスストレージ処理（図１０参照）に戻る。同様に、最終書き込みから一定時間が経過していない判断した場合（Ｓ１０１：ＮＯ）、印刷ファイルのファイル名が発見されないと判断した場合（Ｓ１０３：ＮＯ）、および、印刷ファイルのファイルサイズが指定のサイズでないと判断した場合（Ｓ１０５：ＹＥＳ）、マスストレージ処理（図１０参照）に戻る。
【０１１４】
図１０のマスストレージ処理に戻り、バルク受信処理（Ｓ６３）、バルク送信処理（Ｓ６７）およびセクタ情報送信処理（Ｓ６９）のいずれかがなされたのちは、マスストレージ処理を終了してメイン処理（図７参照）に戻る。同様に、Ｗｒｉｔｅコマンドの完了設定がなされていないと判断した場合も（Ｓ６９：ＮＯ）メイン処理（図７参照）に戻る。
【０１１５】
図７のメイン処理に戻り、Ｓ２１のプリンタ処理（図９参照）またはＳ２３のマスストレージ処理（図１０参照）が終了したのちは、これらのプリンタ処理またはマスストレージ処理においてパソコン２０からデータを受信しているか否かが判断される。
【０１１６】
すなわち、「印刷デバイス状態」にてパソコン２０から受信するデータは、印刷データまたは印刷開始コマンドデータであり、これらのデータを受信した場合、ＣＰＵ３１は印刷処理を実行する必要がある。Ｓ２１のプリンタ処理で受信したデータは、Ｓ５７においてＳＲＡＭ３３のリングバッファ領域１１０に記憶されるので（図９参照）、ＣＰＵ３１はリングバッファ領域１１０に記憶されているデータを参照する（Ｓ２５）。そして、リングバッファ領域１１０にデータが記憶されていると判断した場合には（Ｓ２５：ＹＥＳ）、ＣＰＵ３１は、リングバッファ領域１１０に記憶されているデータに基づいて後述のコマンド処理を実行する（Ｓ２７）。
【０１１７】
また、「記憶デバイス状態」にてパソコン２０から印刷ファイルを受信した場合も、ＣＰＵ３１は印刷処理を実行する必要がある。Ｓ２３のマスストレージ処理で受信した印刷ファイルを構成する各セクタデータ（印刷データおよび印刷開始コマンドデータ）は、Ｓ１０７においてＳＲＡＭ３３のリングバッファ領域１１０に記憶される（図１２参照）。そこで、ＣＰＵ３１は、リングバッファ領域１１０を参照してデータが記憶されている場合には、上記と同様に後述のコマンド処理を実行する（Ｓ２５、Ｓ２７）。なお、リングバッファ領域１１０にデータが記憶されていないと判断した場合には（Ｓ２５：ＮＯ）、Ｓ１３の処理に戻る。
【０１１８】
次に、図１３を参照して、コマンド処理（Ｓ２７）の詳細について説明する。図１３に示すように、コマンド処理では、はじめにＣＰＵ３１が、ＳＲＡＭ３３のリングバッファ領域１１０に印刷データが記憶されているか（言い換えると、パソコン２０から印刷データを受信したかどうか）を判断する（Ｓ１１１）。印刷データを受信していると判断した場合（Ｓ１１１：ＹＥＳ）、ＣＰＵ３１は、パソコン２０から受信した印刷データに基づいて印刷処理を実行可能とするために、印刷バッファ領域１０８に印刷データの一部を記憶する印刷イメージ処理を実行する（Ｓ１１３）。
【０１１９】
なお、Ｓ１１３の印刷イメージ処理では、印刷データがラスタ形式である場合、１回の走査により印刷可能な印刷データを抽出して印刷バッファに記憶する。また、印刷データがＥＳＣ／Ｐ形式である場合、キャラクタコードの文字データを文字発生し、印刷バッファ領域内の所定位置に記憶する。これにより、続いてパソコン２０から印刷開始コマンドデータを受信した場合に、印刷バッファ領域に記憶した印刷データに基づいて印刷することが可能な状態となる。そして、コマンド処理を終了して、メイン処理（図７参照）に戻る。
【０１２０】
一方、リングバッファ領域１１０に記憶されているデータが印刷データではないと判断した場合（Ｓ１１１：ＮＯ）、ＣＰＵ３１はリングバッファ領域１１０に記憶されているデータが印刷開始コマンドデータであるか否かを判断する（Ｓ１１５）。そして、印刷開始コマンドデータであると判断した場合には（Ｓ１１５：ＹＥＳ）、ＣＰＵ３１は、Ｓ１１３にて印刷バッファ領域１０８に記憶された印刷データに基づいて印刷処理を行う印刷動作制御処理を実行する（Ｓ１１７）。
【０１２１】
ここで、図１４を参照して、印刷動作制御処理（Ｓ１１７）の詳細について説明する。図１４に示すように、印刷動作制御処理では、はじめにＣＰＵ３１が供給されている電源電圧が所定の範囲内であるかどうかを判断する（Ｓ１３１）。供給電源電圧が所定範囲外であると判断した場合（Ｓ１３１：ＮＯ）、ＣＰＵ３１は、供給電源電圧が異常であり駆動回路４３、駆動回路４４、サーマルヘッド４０、テープ送りローラ４１等が駆動不能であると判断して、Ｓ１４１のエラー処理を実行する。
【０１２２】
供給されている電源電圧が所定の範囲内であると判断した場合（Ｓ１３１：ＹＥＳ）、ＣＰＵ３１は電池の充電容量が所定の範囲内であるかどうかを判断する（Ｓ１３３）。電池充電容量が所定範囲外であると判断した場合（Ｓ９３：ＮＯ）、ＣＰＵ３１は、電池の充電容量が異常であると判断して、Ｓ１４１のエラー処理を実行する。
【０１２３】
電池の充電容量が所定の範囲内であると判断した場合（Ｓ１３３：ＹＥＳ）、ＣＰＵ３１は印刷装置１０およびサーマルヘッド４０の温度が所定の範囲内であるかどうかを判断する（Ｓ１３５）。温度が所定の範囲外であると判断した場合（Ｓ１３５：ＮＯ）、ＣＰＵ３１は、温度が異常でありサーマルヘッド４０等が駆動不能であると判断して、Ｓ１４１のエラー処理を実行する。
【０１２４】
印刷装置１０およびサーマルヘッド４０の温度が所定の範囲内であると判断した場合（Ｓ１３５：ＹＥＳ）、ＣＰＵ３１は印字テープのテープカセットが収容されているかどうかを判断する（Ｓ１３７）。テープカセットが収容されていないと判断した場合（Ｓ１３７：ＮＯ）、ＣＰＵ３１は印刷すべき印字テープが存在しないと判断して、Ｓ１４１のエラー処理を実行する。
【０１２５】
テープカセットが収容されていると判断した場合（Ｓ１３７：ＹＥＳ）、ＣＰＵ３１は印刷処理を行うために必要な条件を満たしているものと判断する。そして、ＣＰＵ３１は、Ｓ１１３（図１３参照）にて印刷バッファ領域１０８に記憶された印刷データに基づいて、駆動回路４３および駆動回路４４を制御し、印字テープへの印刷処理を実行する（Ｓ１３９）。そして、印刷動作制御処理を終了し、コマンド処理（図１３参照）に戻る。
【０１２６】
一方、Ｓ１３１〜Ｓ１３７のいずれかの判断にて印刷処理を行うことが不可能であると判断した場合、ＣＰＵ３１は異常状態であることをユーザに通知するエラー処理を行う（Ｓ１４１）。例えば、Ｓ１４１のエラー処理では、印刷装置１０に付随したＬＥＤ（図示外）を点灯させたり、パソコン２０に対して通知を行って、ディスプレイ２１に異常状態が発生して印刷不可能である旨を表示させたりする。そして、印刷動作制御処理を終了し、コマンド処理（図１３参照）に戻る。
【０１２７】
図１３のコマンド処理に戻り、Ｓ１１７の印刷動作制御処理（図１４参照）が実行されると、コマンド処理を終了してメイン処理（図７参照）に戻る。そして、リングバッファ領域１１０に記憶されているデータが、印刷データでも印刷開始コマンドデータでもない場合（Ｓ１１１：ＮＯ、Ｓ１１５：ＮＯ）、ＣＰＵ３１は所定のその他のデータであるか否かを判断する（Ｓ１１９）。所定のその他のデータであると判断した場合には（Ｓ１１９：ＹＥＳ）、ＣＰＵ３１は、リングバッファ領域１１０に記憶されているデータに従って所定の処理を実行する（Ｓ８３）。その後、コマンド処理を終了してメイン処理（図７参照）に戻る。また、リングバッファ領域１１０に記憶されているデータが所定のデータでないと判断した場合も（Ｓ１１９：ＮＯ）、コマンド処理を終了してメイン処理（図７参照）に戻る。なお、図７のメイン処理では、Ｓ２７のコマンド処理（図１３参照）が終了するとＳ１３に移行し、ＣＰＵ３１は上述した処理を繰り返し継続して実行する。
【０１２８】
ここで、より具体的なＦＡＴ構造のデータを例示して、所定ファイル領域の書き換えの判定処理（図１１のＳ８３参照）、および、ＲＤＥ領域１０３の検索処理（図１２のＳ１０３およびＳ１０５参照）の好適な態様を説明する。図１５は、ディスク領域１０１のデータ構造を示すテーブルである。
【０１２９】
図１５に示すように、本実施形態のディスク領域１０１は、ファイルシステムタイプがＦＡＴ１２、１セクタが５１２バイト、１クラスタが１セクタである。ディスク領域１０１のうち、ＲＤＥ領域１０３には、ステータスファイル領域１０５に記憶されているステータスファイルに関するファイル情報データ２０１や、印刷ファイル領域１０６に記憶されている印刷ファイルに関するファイル情報データ２０２など、複数のファイル情報データが１ファイルあたり３２バイトで記憶されている。ここで、ＲＤＥ領域１０３に記憶されているファイル情報データのデータ構成（１ファイル分）を、以下の表１に示す。
【表１】
2010082924.tif 000003
【０１３０】
表１に示すように、ＲＤＥ領域１０３に記憶されているファイル情報データには、オフセット位置０〜７「ファイル名」、オフセット位置８〜１０「拡張子」、オフセット位置１１「ファイル属性」、オフセット位置１２「予約領域」、オフセット位置１３「ファイル作成時間の１／１０秒単位」、オフセット位置１４〜１５「ファイル作成時間」、オフセット位置１６〜１７「ファイル作成日」、オフセット位置１８〜１９「最終アクセス日」、オフセット位置２０〜２１「ファイルデータの最初のクラスタ番号上位２バイト」、オフセット位置２２〜２３「最終ファイル書き込み時間」、オフセット位置２４〜２５「最終ファイル書き込み日」、オフセット位置２６〜２７「ファイルデータの最初のクラスタ番号下位２バイト」、よび、オフセット位置２８〜３１「ファイルサイズ」が、データとして含まれる。
【０１３１】
例えば、ファイル情報データ２０１では、オフセット位置０〜７によりファイル名「ＰＲＴＳＴＡＴＥ」、オフセット位置８〜１０により拡張子「ＳＴＳ」、オフセット位置２８〜３１によりファイルサイズ「５１２バイト」、などのファイル情報が示される。また、ファイル情報データ２０２では、オフセット位置０〜７によりファイル名「ＰＴＬＩＴＥ」、オフセット位置８〜１０により拡張子「ＰＲＮ」、オフセット位置２８〜３１によりファイルサイズ「３２キロバイト」、などのファイル情報が示される。
【０１３２】
ここで、Ｓ８３の判定処理（図１２参照）では、ＣＰＵ３１が、ＲＤＥ領域１０３に記憶されているファイル情報データ２０２のオフセット位置２６〜２７を参照して、印刷ファイルの記憶領域における開始クラスタ「０ｘ８７７−２」を特定する。そして、ＣＰＵ３１は、この開始クラスタ「０ｘ８７７−２」における先頭セクタが書き換えられているか否かを判断する。本実施形態では１クラスタ＝１セクタであるため、開始クラスタ「０ｘ８７７−２」が書き換えられていれば、Ｓ８３にて所定ファイル領域の書き換えがあったと判断する（Ｓ８３：ＹＥＳ）。
【０１３３】
また、Ｓ１０３の判定処理（図１３参照）では、ＣＰＵ３１が、ＲＤＥ領域１０３に記憶されているファイル情報データ２０２のオフセット位置０〜７を参照して、ファイル名が「ＰＴＬＩＴＥ」であるか否かを判断する。そして、ファイル名が「ＰＴＬＩＴＥ」であると判断すれば、印刷ファイルを発見したと判断する（Ｓ１０３：ＹＥＳ）。
【０１３４】
また、Ｓ１０５の判定処理（図１３参照）では、ＣＰＵ３１が、ＲＤＥ領域１０３に記憶されているファイル情報データ２０２のオフセット位置２８〜３１を参照して、ファイルサイズが「３２キロバイト」であるか否かを判断する。そして、ファイルサイズが「３２キロバイト」であると判断すれば、印刷ファイルが適正であると判断する（Ｓ１０５：ＹＥＳ）。
【０１３５】
なお、ＳＲＡＭ３３の印刷ファイル領域１０６にて印刷ファイルの書き込みが行われる場合は、まずＲＤＥ領域１０３に記憶されているファイル情報データ２０２が削除され、印刷ファイル領域１０６に印刷ファイルが書き込まれたのちに、ＲＤＥ領域１０３に新たなファイル情報データ２０２が書き込まれる。つまり、ＲＤＥ領域１０３のファイル情報データ２０２には、印刷ファイル領域１０６に記憶されている印刷ファイルに関する最新のファイル情報が反映されているため、このファイル情報データ２０２を利用することで上記の判定処理Ｓ８３、Ｓ１０３、Ｓ１０５を正確に行うことができる。
【０１３６】
以上説明したように、本実施形態の印刷装置１０によれば、印刷装置１０を記憶デバイスとして認識するパソコン２０から印刷ファイルが書き込まれると、ＣＰＵ３１は、ＳＲＡＭ３３のディスク領域１０１（詳細には、印刷ファイル領域１０６）への印刷ファイルの書き込みが完了したか否かを判断する。そのため、ファイル管理の主体でない印刷装置１０で、印刷ファイルの書き込みが完了したことを認識できる。これにより、印刷装置１０では、印刷ファイルの書き込み途中で印刷動作を開始することが防止されて、適正な印刷動作を実行できない印刷エラーや印刷画像での文字化けや画像欠損などを抑制することができる。
【０１３７】
また、ＣＰＵ３１は、パソコン２０からＷｒｉｔｅコマンドを受信した場合、印刷ファイルの転送が完了した時点から他のＷｒｉｔｅコマンドを受信することなく所定時間が経過すると、印刷ファイル領域１０６への印刷ファイルの書き込みが完了したと判断する。すなわち、印刷装置１０では、一の印刷ファイルについて複数回のＷｒｉｔｅコマンドを受信する場合があるため、印刷ファイルの転送完了時から所定時間経過するまでに他のＷｒｉｔｅコマンドを受信しなければ、この印刷ファイルについて更なるＷｒｉｔｅコマンドを受信することがなくファイル書き込みが完了したものとみなす。これにより、ファイル管理の主体でない印刷装置１０で、印刷ファイルの書き込みが完了したか否かを、パソコン２０から送信されるＷｒｉｔｅコマンドを基準として正確に特定することができる。
【０１３８】
また、ＣＰＵ３１は、印刷ファイルの転送完了時から所定時間経過すると、ＲＤＥ領域１０３のファイル情報データ２０２を検索してファイル名「ＰＴＬＩＴＥ」を発見すると、記憶手段への印刷ファイルの書き込みが完了したと判断する。すなわち、印刷ファイル領域１０６への印刷ファイルの書き込みが完了すると、ＲＤＥ領域１０３に記憶されているファイル情報データ２０２にファイル名「ＰＴＬＩＴＥ」が記憶されるため、ファイル名「ＰＴＬＩＴＥ」を発見すると印刷ファイルの書き込みが完了したものとみなす。これにより、ファイル管理の主体でない印刷装置１０で、印刷ファイルの書き込みが完了したか否かを、ファイル名の検索という簡易な制御だけで正確に特定することができる。
【０１３９】
また、ＣＰＵ３１は、印刷ファイルの転送完了時から所定時間経過すると、ＲＤＥ領域１０３のファイル情報データ２０２を検索してファイルサイズ「３２キロバイト」を発見すると、印刷ファイル領域１０６への印刷ファイルの書き込みが完了したと判断する。すなわち、印刷ファイル領域１０６への印刷ファイルの書き込みが完了すると、ＲＤＥ領域１０３に記憶されているファイル情報データ２０２にファイルサイズ「３２キロバイト」が記憶されるため、ファイルサイズ「３２キロバイト」を発見すると印刷ファイルの書き込みが完了したものとみなす。これにより、ファイル管理の主体でない印刷装置１０で、印刷ファイルの書き込みが完了したか否かを、ファイルサイズの検索という簡易な制御だけで正確に特定することができる。
【０１４０】
ところで、本実施形態において、パソコン２０が本発明の「外部端末」に相当する。図９のＳ５５、Ｓ５７、図１０のＳ６３、Ｓ６７において、パソコン２０からパケットを受信する処理およびパソコン２０にパケットを送信する処理を行うＣＰＵ３１が、本発明の「通信手段」に相当する。ＳＲＡＭ３３およびＦｌａｓｈＲＯＭ３４が、本発明の「記憶手段」に相当する。マスストレージクラスドライバ５９を稼動するＣＰＵ３１が、本発明の「制御手段」に相当する。図１１のＳ８３〜Ｓ８５、Ｓ９１〜Ｓ９５、および、図１２のＳ１０１〜Ｓ１０５を実行するＣＰＵ３１が、本発明の「書込完了判断手段」に相当する。図１４のＳ１３９を実行するＣＰＵ３１が、本発明の「印刷手段」に相当する。
【０１４１】
なお、本発明は上記実施形態に限定されるものではなく、発明の要旨を変更しない範囲での変更が可能である。
【０１４２】
例えば、上記実施形態では、ＵＳＢコントローラ４２はＣＰＵ３１とは独立したデバイスとする構成を想定したが、この構成に限定されない。従って、ＣＰＵ３１がＵＳＢコントローラ４２の機能を内蔵する構成であっても構わない。
【０１４３】
また、上記実施形態では、Ｓ８３において印刷ファイル領域１０６の先頭セクタへの書き換えがあったか否かを判断しているが、「所定ファイル領域」は印刷ファイル領域１０６における任意のセクタ（あるいは、クラスタ）とすることができる。例えば、ＣＰＵ３１は、印刷ファイル領域１０６の最終セクタへの書き換えがあった場合に、「所定ファイル領域」の書き換えがあったと判断してもよい。
【０１４４】
また、上記実施形態では、図１２のセクタ情報取得処理において、Ｓ１０１（最終書き込みからの経過時間の判定）が満たされたのちに、Ｓ１０３（ファイル名検索）、Ｓ１０５（ファイルサイズ検索）を行っているが、このフローに限定されない。例えば、図１２のセクタ情報取得処理において、Ｓ１０１、Ｓ１０３およびＳ１０５のいずれか一つの判定処理を実行し、その判定処理が満たされれば印刷ファイルの書き込みが完了してものとしてリングバッファ処理（Ｓ１０７）を実行してもよい。
【０１４５】
ところで、図１２のセクタ情報取得処理において、Ｓ１０１を行わずにＳ１０３およびＳ１０５のいずれかの判定処理を行う場合には、Ｓ１０３またはＳ１０５を適当なタイミングで実行することが好ましい。例えば、ＲＤＥ領域１０３へのアクセスがあった場合（より好適には、ファイル情報データ２０２の更新があった場合）に、Ｓ１０３またはＳ１０５の判定処理を行うことが好ましい。ファイル情報データ２０２の更新があった場合には、印刷ファイル領域１０６への印刷ファイルの書き込みが完了している可能性が高く、Ｓ１０３またはＳ１０５をより効率的に実行できるためである。
【０１４６】
また、上記実施形態では、Ｓ１０３（ファイル名検索）にて印刷ファイルのファイル名「ＰＴＬＩＴＥ」と一致するか否かを判断しているが、印刷ファイルのファイル名の一部（例えば、「ＰＴＬ」）と一致するか否かを判断してもよいし、印刷ファイルの拡張子も含めたファイル名（例えば、「ＰＴＬＩＴＥ．ＰＲＮ」）と一致するか判断してもよい。
【０１４７】
また、上記実施形態では、ファイルの書き込み位置および読み出し位置を規定するためにファイルシステムとしてＦＡＴを採用した場合を例示したが、本発明を実現できれば他のファイルシステムを採用してもよい。また、ＦＡＴを採用する場合でも、ＦＡＴ構造の詳細（ファイルシステムタイプ、１セクタのデータサイズ、１クラスタのデータサイズなど）は、印刷システム１や印刷装置１０に合わせて任意に設計すればよい。
【０１４８】
また、上記実施形態では、印刷ファイルを３２キロバイトの固定長データとしたが、印刷対象画像に応じた可変長データとしてもよい。これによれば、印刷ファイルのファイルサイズを最適化して送信データ量を抑制することができるが、その場合でも印刷装置１０のメモリ上における印刷ファイルの書き込み位置（特に、書き込み領域の先頭位置）が変化しないことが望ましい。
【０１４９】
また、上記実施形態では、ＦｌａｓｈＲＯＭ３４からＳＲＡＭ３３にＦＡＴ構造の一部をコピーして、ＳＲＡＭ３３で実際のファイルのアクセスを行っているが、かかる態様に限定されない。例えば、ＦＡＴ構造がコピーされてファイルアクセスが行われるメモリ（本実施形態ではＳＲＡＭ３３）として大容量記憶素子（例えば、ＤＲＡＭやＳＤＲＡＭなど）を採用することで、ＦＡＴ構造の本体を有するメモリ（本実施形態ではＦｌａｓｈＲＯＭ３４）からＦＡＴ構造の全体をコピーするようにしてもよい。また、ＦＡＴ構造がコピーされてファイルアクセスが行われるメモリ（本実施形態ではＳＲＡＭ３３）を設けずに、ＦＡＴ構造の本体を有するメモリ（本実施形態ではＦｌａｓｈＲＯＭ３４）において直接ファイルアクセスが行われるようにしてもよい。
【図面の簡単な説明】
【０１５０】
【図１】印刷システム１を示す模式図である。
【図２】印刷装置１０の電気的構成を示す模式図である。
【図３】ＦｌａｓｈＲＯＭ３４の記憶領域を示す模式図である。
【図４】ＳＲＡＭ３３の記憶領域を示す模式図である。
【図５】印刷装置１０〜パソコン２０間のデータの流れを示す内部ブロック図である。
【図６】印刷装置１０〜パソコン２０間の通信シーケンスを示す模式図である。
【図７】メイン処理のフローチャートである。
【図８】モード切替処理のフローチャートである。
【図９】プリンタ処理のフローチャートである。
【図１０】マスストレージ処理のフローチャートである。
【図１１】バルク受信処理のフローチャートである。
【図１２】セクタ情報取得処理のフローチャートである。
【図１３】コマンド処理のフローチャートである。
【図１４】印刷動作制御処理のフローチャートである。
【図１５】ディスク領域１０１のデータ構造を示すテーブルである。
【符号の説明】
【０１５１】
１    印刷システム
１０    印刷装置
１１    ＵＳＢケーブル
２０    パソコン
３１    ＣＰＵ
３３    ＳＲＡＭ
３４    ＦｌａｓｈＲＯＭ
４２    ＵＳＢコントローラ
５１    制御プログラム領域
５８    プリンタクラスドライバ
５９    マスストレージクラスドライバ
９０    ディスク領域
１０１    ディスク領域
１０２    ＦＡＴ領域
１０３    ＲＤＥ領域
１０４    ＤＡＴＡ領域
１０５    ステータス領域
１０６    印刷ファイル領域
１０７    ローカル領域
【図１】
2010082924.tif 000004
【図２】
2010082924.tif 000005
【図３】
2010082924.tif 000006
【図４】
2010082924.tif 000007
【図５】
2010082924.tif 000008
【図６】
2010082924.tif 000009
【図７】
2010082924.tif 000010
【図８】
2010082924.tif 000011
【図９】
2010082924.tif 000012
【図１０】
2010082924.tif 000013
【図１１】
2010082924.tif 000014
【図１２】
2010082924.tif 000015
【図１３】
2010082924.tif 000016
【図１４】
2010082924.tif 000017
【図１５】
2010082924.tif 000018