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