(57)【要約】【課題】汎用デバイスドライバーを利用して記録装置を制御するとともに、汎用デバイスドライバーが備えていない機能により記録装置を制御することが可能な制御装置、制御方法、及びプログラムを提供する。【解決手段】制御対象のプリンター３に接続されたホストコンピューター１は、ＰＯＳアプリケーション２１の動作に基づき印刷ジョブを生成するプリンタードライバー２２と、プリンタードライバー２２により生成された印刷ジョブに基づいてプリンター３を制御するデバイスドライバー２４と、デバイスドライバー２４の制御によるプリンター３の動作状態を監視し、プリンター３の動作状態に応じて、デバイスドライバー２４が解釈しない形態で制御コマンドをプリンター３に出力する通信制御モジュール２３を備える。【選択図】図１
2011108203.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の記録装置に接続された制御装置において、
アプリケーションプログラムの動作に基づきジョブを生成するジョブ生成部と、
前記ジョブ生成部により生成されたジョブに基づいて前記記録装置を制御して記録動作を実行させる汎用デバイスドライバーと、
前記汎用デバイスドライバーの制御による前記記録装置の動作状態を監視し、前記記録装置の動作状態に応じて、前記汎用デバイスドライバーが解釈しない形態の制御情報を前記記録装置に出力する通信制御部と、
を備えたことを特徴とする制御装置。
【請求項２】
前記通信制御部は、前記記録装置が前記ジョブの記録を所定時間内に完了しない場合に、前記記録装置が前記汎用デバイスドライバーにエラーを報知するための制御情報を前記記録装置に出力すること、
を特徴とする請求項１記載の制御装置。
【請求項３】
前記汎用デバイスドライバーは、データを入出力するポートを有し、前記ポートに入力されたジョブに基づいて前記記録装置を制御して記録動作を実行させ、
前記通信制御部は、前記ジョブ生成部により生成されたジョブを取得して、この取得したジョブを前記汎用デバイスドライバーのポートに出力し、このジョブを出力してから所定時間内に前記記録装置が記録を完了しない場合に、前記記録装置が前記汎用デバイスドライバーにエラーを報知するための制御コマンドを前記記録装置に出力すること、
を特徴とする請求項２記載の制御装置。
【請求項４】
前記通信制御部は、前記記録装置が前記汎用デバイスドライバーにエラーを報知するための制御コマンドを前記記録装置に出力した後、記録中であったジョブのうち未記録の部分または前記ジョブの全ての部分を前記汎用デバイスドライバーのポートに再度出力すること、
を特徴とする請求項３記載の制御装置。
【請求項５】
前記通信制御部は、前記記録装置に対して即時処理コマンドを出力すること、
を特徴とする請求項１記載の制御装置。
【請求項６】
制御対象の記録装置に接続された制御装置を制御して、
アプリケーションプログラムの動作に基づきジョブを生成し、
生成されたジョブに基づいて汎用デバイスドライバーによって前記記録装置を制御して記録動作を実行させ、
前記汎用デバイスドライバーの制御による前記記録装置の動作状態を監視し、前記記録装置の動作状態に応じて、前記汎用デバイスドライバーが解釈しない形態の制御情報を前記記録装置に出力すること、
を特徴とする制御方法。
【請求項７】
制御対象の記録装置に接続された制御装置が実行するプログラムであって、
アプリケーションプログラムの動作に基づきジョブを生成し、
生成されたジョブに基づいて汎用デバイスドライバーによって前記記録装置を制御して記録動作を実行させ、
前記汎用デバイスドライバーの制御による前記記録装置の動作状態を監視し、前記記録装置の動作状態に応じて、前記汎用デバイスドライバーが解釈しない形態の制御コマンドを前記記録装置に出力すること、
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象の記録装置に接続された制御装置、この制御装置により実行される制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
一般に、記録装置を制御するコンピューター等の制御装置には、制御対象の記録装置に対応したデバイスドライバー等のプログラムがインストールされ、このデバイスドライバーの機能により記録装置が制御される（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−０７７２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、記録装置とコンピューターとの接続インターフェイスの高機能化が進み、様々な記録装置に対して同様の制御を行える汎用のデバイスドライバーが使用されるようになっている。この汎用デバイスドライバーは、記録装置の機種毎に対応して用意されることもあるが、記録装置を制御するための機能が共通化されている。このため、低コストで様々な機種の記録装置に対応できる等の利点がある。
しかしながら、汎用デバイスドライバーは様々な記録装置に共通した制御を行うよう設計されており、一部の記録装置のみが有する一般的でない制御機能には対応していない。このため、一般的でない高度で専用的な制御機能が必要な場合、汎用デバイスドライバーに代えて独自のデバイスドライバーを用いる必要があった。そして、汎用デバイスドライバーを利用しながら汎用デバイスドライバーが備えていない機能を用いるため別のプログラムで記録装置を制御しようとすれば、汎用デバイスドライバーとの制御の衝突が発生するおそれがあるため、汎用デバイスドライバーの一部の機能のみを使用することもできなかった。
本発明は、上述した事情に鑑みてなされたものであり、汎用デバイスドライバーを利用して記録装置を制御するとともに、汎用デバイスドライバーが備えていない機能により記録装置を制御することが可能な制御装置、制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明は、制御対象の記録装置に接続された制御装置において、アプリケーションプログラムの動作に基づきジョブを生成するジョブ生成部と、前記ジョブ生成部により生成されたジョブに基づいて前記記録装置を制御して記録動作を実行させる汎用デバイスドライバーと、前記汎用デバイスドライバーの制御による前記記録装置の動作状態を監視し、前記記録装置の動作状態に応じて、前記汎用デバイスドライバーが解釈しない形態の制御情報を前記記録装置に出力する通信制御部と、を備えたことを特徴とする。
この構成によれば、汎用デバイスドライバーの機能によって記録装置を制御し、アプリケーションプログラムの動作に基づいて生成されたジョブを実行させて記録を行わせる一方、記録装置の動作状態に応じて、汎用デバイスドライバーが解釈しない形態の制御コマンドなどの制御情報を記録装置に出力するので、汎用デバイスドライバーを活用して記録装置を制御するとともに、記録装置に対して制御コマンドを出力することで、汎用デバイスドライバーが持たない機能を実現できる。また、通信制御部が記録装置に出力する制御コマンドは汎用デバイスドライバーが解釈しないコマンドであるため、汎用デバイスドライバーによる制御を阻害することなく、汎用デバイスドライバーの制御下にある記録装置を制御して別の動作を行わせることができる。
【０００６】
また、本発明は、上記の制御装置において、前記通信制御部は、前記記録装置が前記ジョブの記録を所定時間内に完了しない場合に、前記記録装置が前記汎用デバイスドライバーにエラーを報知するための制御情報を前記記録装置に出力すること、を特徴とする。
この構成によれば、汎用デバイスドライバーの制御により記録装置がジョブを実行している間に実行が停止または著しく遅延した場合に、汎用デバイスドライバーに対して記録装置からエラーを報知させることにより、汎用デバイスドライバーが異常発生を検出できる。これにより、汎用デバイスドライバーがタイムアウトの検出を行う機能を持たない場合であっても、この汎用デバイスドライバーによる制御の障害とならないように、汎用デバイスドライバーが持たないタイムアウト検出機能を追加的に実現できる。
【０００７】
また、本発明は、上記の制御装置において、前記汎用デバイスドライバーは、データを入出力するポートを有し、前記ポートに入力されたジョブに基づいて前記記録装置を制御して記録動作を実行させ、前記通信制御部は、前記ジョブ生成部により生成されたジョブを取得して、この取得したジョブを前記汎用デバイスドライバーのポートに出力し、このジョブを出力してから所定時間内に前記記録装置が記録を完了しない場合に、前記記録装置が前記汎用デバイスドライバーにエラーを報知するための制御コマンドを前記記録装置に出力することを特徴とする。
この構成によれば、通信制御部が、ジョブ生成部により生成されたジョブを取得して、これを汎用デバイスドライバーに出力するので、汎用デバイスドライバーによりジョブを実行させながら、生成されたジョブが汎用デバイスドライバーにより処理されるタイミングを正確に検出できる。これにより、汎用デバイスドライバーによる制御の障害とならないように、記録装置の動作の停止または著しい遅延を確実に検出して、汎用デバイスドライバーが持たないタイムアウト検出機能を追加的に実現できる。
【０００８】
また、本発明は、上記の制御装置において、前記通信制御部は、前記記録装置が前記汎用デバイスドライバーにエラーを報知するための制御情報を前記記録装置に出力した後、記録中であったジョブのうち未記録の部分または前記ジョブの全ての部分を前記汎用デバイスドライバーのポートに再度出力することを特徴とする。
この構成によれば、タイムアウトエラーにより中断されたジョブを、中断した部分からまたは全ての部分を再開させることが可能になる。これにより、汎用デバイスドライバーがエラー後のジョブの再実行機能を持たない場合であっても、ジョブを中断箇所からまたは最初から再開して、動作の無駄を省くことができる。
【０００９】
また、本発明は、上記の制御装置において、前記通信制御部は、前記記録装置に対して即時処理コマンドを出力することを特徴とする。
この構成によれば、記録装置にステータス返信指示などの即時処理コマンドを出力して、記録装置に即時に応答させることができるので、汎用デバイスドライバーによる制御の障害とならないように、即時処理コマンドを用いた高度な制御を実現できる。
【００１０】
また、上記課題を解決するため、本発明は、制御対象の記録装置に接続された制御装置を制御して、アプリケーションプログラムの動作に基づきジョブを生成し、生成されたジョブに基づいて汎用デバイスドライバーによって前記記録装置を制御して記録動作を実行させ、前記汎用デバイスドライバーの制御による前記記録装置の動作状態を監視し、前記記録装置の動作状態に応じて、前記汎用デバイスドライバーが解釈しない形態の制御情報を前記記録装置に出力すること、を特徴とする。
この方法によれば、汎用デバイスドライバーの機能によって記録装置を制御し、アプリケーションプログラムの動作に基づいて生成されたジョブを実行させて記録を行わせる一方、記録装置の動作状態に応じて、汎用デバイスドライバーが解釈しない形態の制御コマンドを記録装置に出力するので、汎用デバイスドライバーを活用して記録装置を制御するとともに、記録装置に対して制御コマンドなどの制御情報を出力することで、汎用デバイスドライバーが持たない機能を実現できる。また、通信制御部が記録装置に出力する制御コマンドは汎用デバイスドライバーが解釈しないコマンドであるため、汎用デバイスドライバーによる制御を阻害することなく、汎用デバイスドライバーの制御下にある記録装置を制御して別の動作を行わせることができる。
【００１１】
また、上記課題を解決するため、本発明は、制御対象の記録装置に接続された制御装置が実行するプログラムであって、前記制御部は、アプリケーションプログラムの動作に基づきジョブを生成し、生成されたジョブに基づいて汎用デバイスドライバーによって前記記録装置を制御して記録動作を実行させ、前記汎用デバイスドライバーの制御による前記記録装置の動作状態を監視し、前記記録装置の動作状態に応じて、前記汎用デバイスドライバーが解釈しない形態の制御コマンドを前記記録装置に出力すること、を特徴とする。
このプログラムを実行することにより、汎用デバイスドライバーの機能によって記録装置を制御し、アプリケーションプログラムの動作に基づいて生成されたジョブを実行させて記録を行わせる一方、記録装置の動作状態に応じて、汎用デバイスドライバーが解釈しない形態の制御コマンドを記録装置に出力するので、汎用デバイスドライバーを活用して記録装置を制御するとともに、記録装置に対して制御コマンドを出力することで、汎用デバイスドライバーが持たない機能を実現できる。また、通信制御部が記録装置に出力する制御コマンドは汎用デバイスドライバーが解釈しないコマンドであるため、汎用デバイスドライバーによる制御を阻害することなく、汎用デバイスドライバーの制御下にある記録装置を制御して別の動作を行わせることができる。
【発明の効果】
【００１２】
本発明によれば、汎用デバイスドライバーを活用して記録装置を制御するとともに、記録装置に対して制御コマンドを出力することで、汎用デバイスドライバーによる制御を阻害することなく、汎用デバイスドライバーによる制御を阻害することなく、汎用デバイスドライバーが持たない機能を実現できる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係るプリントシステムの構成を示す機能ブロック図である。
【図２】ホストコンピューターの機能的構成を模式的に示す図である。
【図３】プリントシステムの動作を示すシーケンス図である。
【図４】プリントシステムの動作を示すシーケンス図である。
【図５】プリントシステムの動作を示すシーケンス図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明を適用した実施形態に係るプリントシステム１００の構成を示すブロック図である。
この図１に示すように、プリントシステム１００は、ホストコンピューター１と、ホストコンピューター１に対して通信可能に接続されたプリンター３をと、を備える。ホストコンピューター１は、例えば、小売店等の店頭に設置され、売上登録処理及び精算処理を行う販売時点管理システム（ＰＯＳシステム）を搭載したＰＯＳ端末装置であり、取引毎にプリンター３によってレシートを印刷（記録）させる。なお、ホストコンピューター１には、売上登録処理時に商品に付されたバーコードを読み取るバーコードスキャナー、精算用の現金を収容するキャッシュドロワー等を備えているが、これらの各部については図示及び説明を省略する。
【００１５】
制御装置としてのホストコンピューター１は、各種プログラムを実行するＣＰＵ１１、ＣＰＵ１１により実行される基本制御プログラム等を記憶したＲＯＭ１２、ＣＰＵ１１が実行するプログラムや処理対象のデータ等を一時的に記憶するワークエリアを形成するＲＡＭ１３、ＣＰＵ１１が実行するアプリケーションプログラムや処理対象のデータ等を記憶する記憶部１４、オペレーターに操作される売上登録キー等の各種キーを備えた入力部１５、売上登録処理及び精算処理の処理内容を表示するディスプレイを備えた表示部１６、及び、プリンター３に有線接続され、プリンター３との間の通信制御を行うＵＳＢホストコントローラー１７を備え、これらの各部はバス１９を介して相互に接続されている。
【００１６】
記憶部１４には、ＣＰＵ１１が実行するプログラムとして、ホストコンピューター１のオペレーティングシステム２（図２）、ＰＯＳシステムとして売上登録処理及び精算処理を行うＰＯＳアプリケーション２１（図２）、ＰＯＳアプリケーション２１の要求に応じてプリンター３に対応した印刷ジョブを生成するプリンタードライバー２２（図２）、オペレーティングシステム２の動作に係る各種設定値を格納したレジストリー（図示略）等が記憶される。
【００１７】
また、記録装置としてのプリンター３は、ホストコンピューター１の制御に従って、取引毎にレシートを出力する。プリンター３は、例えば、ロール状に巻かれた感熱記録紙である感熱ロール紙を、ロール状のプラテン（図示略）により搬送し、この感熱ロール紙の記録面に、発熱素子を備えたラインサーマルヘッド（図示略）によって熱を与えることによりモノクロまたは多色で文字や画像を印刷（記録）するサーマルラインプリンターである。プリンター３は、ホストコンピューター１に有線接続されるＵＳＢデバイスコントローラー３１、ＵＳＢデバイスコントローラー３１を介してホストコンピューター１から受信したコマンドに従ってプリンター３の各部を制御するコントローラー３２、ホストコンピューター１から受信したコマンドやデータ等を一時的に保持する受信バッファー３３、及び、上述したラインサーマルヘッド及びプラテンを含む各部により感熱ロール紙への印刷を実行するプリントエンジン３４を備えている。
【００１８】
図２は、ホストコンピューター１の機能的構成を模式的に示す図である。この図２に示す各機能部のうち、ＣＰＵ１１がプログラムを実行してＵＳＢホストコントローラー１７を制御することにより、ハードウェアとソフトウェアとの協働により実現される。
図２に示すように、ホストコンピューター１は、オペレーティングシステム２のカーネル・モードにおいて、ＵＳＢホストコントローラー１７を制御するＵＳＢドライバースタック２５と、このＵＳＢドライバースタック２５を利用してプリンター３を制御するデバイスドライバー２４とを有する。プリンタードライバー２２はジョブ生成部に相当し、デバイスドライバー２４は汎用デバイスドライバーに相当する。
また、オペレーティングシステム２のユーザー・モードでは、ＰＯＳアプリケーション２１、ＰＯＳアプリケーション２１の印刷要求に応じてプリンター３に適した印刷ジョブを生成するプリンタードライバー２２が実行される。さらに、ホストコンピューター１は、ユーザー・モードで動作する通信制御モジュール２３を有する。この通信制御モジュール２３は、通信制御部に相当する。
【００１９】
プリンタードライバー２２は、ＰＯＳアプリケーション２１が生成した文字や画像を含む文書データの通りに文字及び画像を印刷するための印刷データを生成し、生成した印刷データをプリンター３に印刷させるための制御コマンドを生成し、これらの制御コマンド及び印刷データを含む印刷ジョブを生成する。
デバイスドライバー２４は、ＵＳＢインターフェイス（Universal Serial Interface）を介して接続される複数の機種のプリンターに共通して使用可能な汎用デバイスドライバーである。オペレーティングシステム２としてMicrosoft（登録商標）社のWindows（登録商標）OSを使用する場合、デバイスドライバー２４は、様々な機種のプリンターに田尾負するＵＳＢプリンタークラス用のデバイスドライバーとして、Windows（登録商標）OSに実装されている。
デバイスドライバー２４は、印刷ジョブが入力されるポート２４Ａを有し、ポート２４Ａにプリンタードライバー２２から印刷ジョブが入力されると、この印刷ジョブを実行するためにＵＳＢドライバースタック２５を呼び出してプリンター３との間の通信制御を行う。
【００２０】
デバイスドライバー２４によるプリンター３との通信は、デバイスドライバー２４をホスト装置、プリンター３をターゲット装置とするポーリング方式により行われる。
具体的には、デバイスドライバー２４は、ＵＳＢドライバースタック２５の機能によってプリンター３に対してクリア命令を送信し、このクリア命令を受信したプリンター３は、受信したデータのデータ量をカウントするカウンターの値をクリアしてクリア後の応答をホストコンピューター１へ送信する。デバイスドライバー２４は、プリンター３からの応答を受信した後、制御コマンドと印刷データとを含む印刷ジョブのデータを、所定サイズのパケットに分割してプリンター３へ送信し、所定数のパケットを送信する毎にプリンター３から受信確認応答を受信する。デバイスドライバー２４は、プリンター３から受信確認応答や印刷完了の応答を受信するまで、待機する。
【００２１】
また、デバイスドライバー２４は、印刷ジョブが入力される別のポート２４Ｂを有し、このポート２４Ｂには、通信制御モジュール２３から印刷ジョブが入力される。
通信制御モジュール２３は、プリンタードライバー２２が生成した印刷ジョブの出力先のポートとして、ポート２３Ａを有しており、通信制御モジュール２３は、所定の操作によって、生成した印刷ジョブをポート２４Ａではなくポート２３Ａに出力する。
つまり、プリンタードライバー２２がデバイスドライバー２４に印刷ジョブを出力する動作に代えて、プリンタードライバー２２は通信制御モジュール２３を経由してデバイスドライバー２４に印刷ジョブを出力する。
【００２２】
上述したように汎用デバイスドライバーとして構成されるデバイスドライバー２４は、プリンター３にパケットを送信した後は、プリンター３からの応答を受信するまで待機し続け、この待機状態が所定時間続いた場合に異常と見なすタイムアウト機能を持たない。このため、プリンター３がオフラインになってしまうと、デバイスドライバー２４は長時間にわたって待機状態を継続し、プリンタードライバー２２が生成する次の印刷ジョブの処理を行えなくなる。
【００２３】
そこで、本実施形態の通信制御モジュール２３は、プリンタードライバー２２からポート２３Ａに入力された印刷ジョブを、デバイスドライバー２４のポート２４Ｂに出力するとともに、出力したタイミングからの経過時間をカウントする。そして、予め設定された時間を超過してもプリンター３から受信確認応答や印刷完了の応答がない場合には、プリンター３において何らかの事態が発生し、正常な印刷が行われていないと判断する。すなわち、ポート２４Ｂに印刷ジョブを入力してからの時間を基準としてタイムアウトエラーを検出する。タイムアウトエラーを検出した場合、通信制御モジュール２３は、デバイスドライバー２４にエラーコードを送信するための制御コマンドを、プリンター３に対して、デバイスドライバー２４を介して送信する。エラーコードは、プリンター３が、自身の動作にエラーが発生した場合に、エラーの要因を示すコードであり、エラーコードを受信したホストコンピューター１はプリンター３の異常と、その要因を検出できる。
【００２４】
プリンター３のコントローラー３２は、例えば、ロール紙を収容するケースのカバーが開放された場合、ロール紙の残量が無くなった場合、紙詰まりを起こした場合、受信バッファー３３がいっぱいになった場合等に、通常の印刷動作を停止してオフライン状態に移行する。オフライン状態では、コントローラー３２は、ホストコンピューター１との間の接続状態を論理的に切断し、ＵＳＢデバイスコントローラー３１が既に受信して未実行のコマンドやデータ、及び、オフライン状態となった後に受信したコマンドやデータは受信バッファー３３に蓄積するのみで、その解析、実行及び応答を行わない。
その一方で、コントローラー３２は、オフライン状態においてもリアルタイム制御コマンドは実行する。リアルタイム制御コマンドとしては、例えば、ステータス通知の送信を指示するステータス要求コマンド、受信バッファー３３の全消去を指示するバッファークリアコマンド、キャッシュドロワー（図示略）の開動作を指示するドロワーオープンコマンド等がある。また、通信制御モジュール２３からデバイスドライバー２４及びＵＳＢドライバースタック２５を介してプリンター３に送信される、エラーコードを送信させるための制御コマンドは、リアルタイム制御コマンドである。この制御コマンドを受信したコントローラー３２は、このコマンドをオフライン状態においても実行し、デバイスドライバー２４に対してエラーコードを送信する。デバイスドライバー２４は、このエラーコードを受信してプリンター３におけるエラーの発生を検出するので、デバイスドライバー２４の待機状態を解除することができ、ＰＯＳアプリケーション２１及びプリンタードライバー２２に対するエラーを報知し、エラー解消後に次の印刷ジョブの実行が可能になる。
通信制御モジュール２３は、上記の制御コマンドを、デバイスドライバー２４及びＵＳＢドライバースタック２５が解釈して実行する対象ではなく、印刷データのような、プリンター３向けの通常のデータと同様に送信する。このため、デバイスドライバー２４及びＵＳＢドライバースタック２５は、上記の制御コマンドをデータとして含むパケットを生成してプリンター３へ送信するので、上記の制御コマンドがデバイスドライバー２４やＵＳＢドライバースタック２５の動作を乱すおそれはない。
【００２５】
この一連の動作により、通信制御モジュール２３がデバイスドライバー２４に代わってタイムアウトエラーを検出し、このタイムアウトエラーの検出時に通信制御モジュール２３がプリンター３を制御して、プリンター３からデバイスドライバー２４にエラーコードを送信させる。これにより、タイムアウトエラーを検出する機能を持たないデバイスドライバー２４が、擬似的にタイムアウトエラーを検出できるようになる。
【００２６】
図３、図４及び図５は、プリントシステム１００の動作を示すシーケンス図であり、同図（Ａ）は通信制御モジュール２３の動作を示し、同図（Ｂ）はデバイスドライバー２４の動作を示し、同図（Ｃ）はプリンター３の動作を示す。
図３には、印刷中にプリンター３のオフライン状態が発生した場合の動作を示す。
通信制御モジュール２３は、プリンタードライバー２２からポート２３Ａに印刷ジョブが入力されると（ステップＳ１１）、この印刷ジョブをデバイスドライバー２４のポート２４Ｂに出力するとともに、タイマー（図示略）のカウントを開始する（ステップＳ１２）。
デバイスドライバー２４は、ポート２４Ｂに入力された印刷ジョブを取得し（ステップＳ２１）、ＵＳＢドライバースタック２５の機能により印刷ジョブに含まれるコマンドとデータとをパケット化してプリンター３へ送信する（ステップＳ２２）。
【００２７】
プリンター３は、ホストコンピューター１から送信された印刷ジョブのデータを含むパケットを受信すると（ステップＳ３１）、この印刷ジョブに従って印刷を開始する（ステップＳ３２）。ここで、プリンター３にオフライン要因が発生して、プリンター３がオフライン状態に移行すると（ステップＳ３３）、プリンター３は印刷動作を停止する。この場合、プリンター３と、プリンター３からの応答を待つデバイスドライバー２４は、ともに停止状態となる。
通信制御モジュール２３は、デバイスドライバー２４に印刷ジョブを出力してからカウントを開始し、プリンター３がジョブの印刷を完了した応答を送信するまで（ステップＳ１３；Ｎｏ）、カウントを継続し、プリンター３がジョブの印刷を完了した場合は（ステップＳ１３；Ｙｅｓ）、本処理を終了して次の印刷ジョブがポート２３Ａに入力されるまで待機する。
そして、タイマーのカウント値が予め設定された値を超えて、タイムアウトとなった場合（ステップＳ１４；Ｙｅｓ）、通信制御モジュール２３は、エラーコードを送信させるためのリアルタイム制御コマンドを、デバイスドライバー２４及びＵＳＢドライバースタック２５を介してプリンター３に送信し（ステップＳ１５）、このリアルタイム制御コマンドを受信して（ステップＳ３５）、プリンター３は、エラーコードをデバイスドライバー２４に送信する（ステップＳ３６）。インターフェイスによっては、専用の信号線にエラーを示す信号を出力してもよい。
エラーコードを検出したデバイスドライバー２４は（ステップＳ２３）、印刷ジョブの送信を停止し（ステップＳ２４）、エラー発生をＰＯＳアプリケーション２１に報知する。
【００２８】
このように、通信制御モジュール２３は、デバイスドライバー２４がタイムアウトエラーを検出する機能を持たない場合であっても、デバイスドライバー２４に代わってタイムアウトエラーを検出し、デバイスドライバー２４の待機状態が長時間継続するような事態を回避できる。
また、通信制御モジュール２３は、プリンター３に対してリアルタイム制御コマンドを用いた制御を行えるので、この機能を利用して、プリンター３のオフライン要因が解消してオンラインに復帰した場合に、停止していた印刷ジョブの実行を、停止していたところから再開させることができる。この例について図４を参照して説明する。
【００２９】
図４は、プリンター３がオフラインとなって中断した印刷ジョブを再開する場合の動作を示す。
すなわち、プリンター３のオフライン要因が解消したオンライン状態に復帰した場合（ステップＳ６１）、通信制御モジュール２３は、プリンター３に対して、ホストコンピューター１からの受信カウンターのカウント値を要求するリアルタイム制御コマンドを送信する（ステップＳ４１）。プリンター３は、ホストコンピューター１から受信したデータの容量をカウントする受信カウンターを備え、そのカウント値は、デバイスドライバー２４が印刷ジョブのパケットを送信する前にカウント値クリアのコマンドを送信した際にクリアされる。このカウント値は、印刷ジョブのうち受信して実行した分を示しているから、このカウント値以後の印刷ジョブのデータは、受信されていないか、或いは、受信しても受信バッファー３３がいっぱいであったために読み捨てられている。このため、プリンター３のカウント値以後のデータをプリンター３に送信すれば、データの受信が途切れたところから、印刷ジョブを再開できる。
【００３０】
通信制御モジュール２３が送信したリアルタイム制御コマンドは、デバイスドライバー２４及びＵＳＢドライバースタック２５によってパケット化されてプリンター３へ送信される。プリンター３は、受信したリアルタイム制御コマンドを即時実行して、カウント値を、デバイスドライバー２４を経由して通信制御モジュール２３へ、或いは図２に矢印で示すように通信制御モジュール２３に直接、出力する（ステップＳ６２）。
通信制御モジュール２３は、プリンター３が送信したカウント値を取得し（ステップＳ４２）、このカウント値に基づいて、既にポート２４Ｂに出力した印刷ジョブの途中から、印刷ジョブをポート２４Ｂに再出力する（ステップＳ４３）。
デバイスドライバー２４は、ポート２４Ｂに印刷ジョブが入力されると（ステップＳ５１）、入力された印刷ジョブをパケット化してプリンター３に送信し（ステップＳ５２）、プリンター３は、デバイスドライバー２４が送信した印刷ジョブを受信して（ステップＳ６３）、印刷を実行する（ステップＳ６４）。これにより、プリンター３がオンラインに復帰した後は、オフラインとなって中断した印刷ジョブが再開できる。また、デバイスドライバー２４が送信したがプリンター３により読み捨てられたデータも再送信されるので、正確に、中断したところから印刷ジョブを再開できる。
【００３１】
さらに、通信制御モジュール２３が、プリンター３に対してリアルタイム制御コマンドを用いた制御を行う機能を利用して、オフライン状態のプリンター３を制御することも可能である。
図５は、オフライン状態のプリンター３を制御する場合の動作を示す。
プリンター３がオフライン状態に移行した後（ステップＳ９１）、通信制御モジュール２３は、プリンター３に対してステータスを通知するよう要求するリアルタイム制御コマンドを送信する（ステップＳ７１）。このリアルタイム制御コマンドは、プリンター３の現在のステータスを、オンラインかオフラインかに関わらず送信するよう要求するコマンドであり、プリンター３は、このステータス要求に応答して、オンライン／オフライン状態を示すデータと、オフライン要因を示すエラーコードとを含むステータス通知を送信する。
【００３２】
通信制御モジュール２３が送信したリアルタイム制御コマンドは、デバイスドライバー２４及びＵＳＢドライバースタック２５の機能によりパケット化されてプリンター３へ送信され、プリンター３は、このコマンドを受信して（ステップＳ９２）、リアルタイム制御コマンドとして検出する（ステップＳ９３）。そして、検出したリアルタイム制御コマンドを即時実行し、ステータス通知をデバイスドライバー２４を経由して通信制御モジュール２３へ、或いは図２に矢印で示すように通信制御モジュール２３に直接、出力する（ステップＳ９４）。このステータス通知は通信制御モジュール２３によって取得され（ステップＳ７２）、その後の制御に利用される。
【００３３】
以上のように、本発明を適用した実施形態に係るプリントシステム１００によれば、制御対象のプリンター３に接続されたホストコンピューター１は、プリンタードライバー２２によってＰＯＳアプリケーション２１の動作に基づき印刷ジョブを生成し、ＵＳＢプリンタークラスの汎用デバイスドライバーであるデバイスドライバー２４を利用して、プリンタードライバー２２が生成した印刷ジョブに基づいてプリンター３を制御して印刷動作を実行させる。また、ホストコンピューター１は、デバイスドライバー２４の制御によるプリンター３の動作状態を監視し、プリンター３の動作状態に応じて、デバイスドライバー２４が解釈しない形態の制御コマンドをプリンター３に出力する通信制御モジュール２３を備えるので、デバイスドライバー２４を活用してプリンター３を制御するとともに、プリンター３に対して制御コマンドを出力することで、デバイスドライバー２４が持たない機能を実現できる。また、通信制御モジュール２３がプリンター３に出力する制御コマンドはデバイスドライバー２４が解釈しないでパケット化し、パケットのペイロードとしてプリンター３に送信されるので、デバイスドライバー２４による制御の障害となることなく、デバイスドライバー２４の制御下にあるプリンター３を通信制御モジュール２３により制御して、別の動作を行わせることができる。
【００３４】
また、通信制御モジュール２３は、プリンター３が印刷ジョブの印刷を所定時間内に完了しない場合に、プリンター３からデバイスドライバー２４にエラーコードを送信させるリアルタイム制御コマンドをプリンター３に送信するので、デバイスドライバー２４がタイムアウトの検出を行う機能を持たない場合であっても、タイムアウトエラーを発生させて、デバイスドライバー２４によりジョブの実行を停止させる等の対応が可能になる。従って、デバイスドライバー２４による制御の障害とならないように、デバイスドライバー２４が持たないタイムアウト検出機能を追加的に実現できる。
【００３５】
デバイスドライバー２４は、データを入出力するポート２４Ａ、２４Ｂに入力された印刷ジョブに基づいてプリンター３を制御し、通信制御モジュール２３は、プリンタードライバー２２により生成された印刷ジョブを取得して、この取得した印刷ジョブをデバイスドライバー２４のポート２４Ｂに出力し、この印刷ジョブを出力してから所定時間内にプリンター３が印刷を完了しない場合に、プリンター３にエラーコードを送信させるためのリアルタイム制御コマンドをプリンター３に送信するので、デバイスドライバー２４により印刷ジョブを実行させながら、生成された印刷ジョブがデバイスドライバー２４により処理されるタイミングを正確に検出できる。これにより、デバイスドライバー２４による制御の障害とならないように、プリンター３の動作の停止または著しい遅延を確実に検出して、デバイスドライバー２４が持たないタイムアウト検出機能を追加的に実現できる。
【００３６】
さらに、通信制御モジュール２３は、プリンター３にエラーコードを送信させるためのリアルタイム制御コマンドを送信した後、印刷中であった印刷ジョブのうち未印刷の部分をデバイスドライバー２４に再度出力するので、印刷ジョブを中断したところから再開させることが可能になる。これにより、デバイスドライバー２４がエラー後の印刷ジョブの再実行機能を持たない場合であっても、印刷ジョブを中断箇所から再開して、動作の無駄を省くことができる。
また、通信制御モジュール２３がプリンター３にリアルタイム制御コマンドを送信するので、プリンター３がオフライン状態であってもプリンター３を制御でき、デバイスドライバー２４による制御の障害とならないように、リアルタイム制御コマンドを用いた高度な制御を実現できる。
【００３７】
なお、上記実施形態は本発明を適用した一具体例を示すものであり、本発明はこれに限定されるものではない。例えば、上記実施形態においては、通信制御モジュール２３が、プリンタードライバー２２とは独立した機能モジュールとして実装される例を説明したが、プリンタードライバー２２が通信制御モジュール２３の機能を兼ねる構成としてもよい。また、通信制御モジュール２３は、タイムアウトエラーの検出時にエラーコードを送信するための制御コマンド、ステータス要求のコマンドに限らず、プリンター３をエラー（オフライン状態）から復帰させる制御コマンドや、受信バッファー３３の内容を全てクリアさせ、その後にホストコンピューター１から送信されるパケットを強制的に受信させる制御コマンドを送信して、プリンター３を制御してもよい。
【００３８】
また、上記実施形態では、プリンター３が、感熱ロール紙を記録媒体として使用する場合を例に挙げて説明したが、本発明はこれに限定されるものではなく、所定長さで折りたたまれた連続紙や定型サイズのカット紙を用いることも可能である。また、上記実施形態では、プリンター３が、発熱素子を備えたラインサーマルヘッドにより感熱ロール紙に印刷するサーマルプリンターである場合を例に挙げて説明したが、本発明を適用可能な記録装置は、予め記憶した画像データを印刷できるプリンターであれば特に制限されず、ドットインパクトプリンターやインクジェット式プリンター、レーザープリンター等にも本発明を適用可能であり、他の装置に組み込まれるプリンターにも本発明を適用可能である。
【符号の説明】
【００３９】
１…ホストコンピューター（制御装置）、２…オペレーティングシステム、３…プリンター（記録装置）、１１…ＣＰＵ、２１…ＰＯＳアプリケーション、２２…プリンタードライバー（ジョブ生成部）、２３…通信制御モジュール（通信制御部）、２４…デバイスドライバー（汎用デバイスドライバー）、２３Ａ、２４Ａ、２４Ｂ…ポート、１００…プリントシステム。
【図１】
2011108203.tif 000003
【図２】
2011108203.tif 000004
【図３】
2011108203.tif 000005
【図４】
2011108203.tif 000006
【図５】
2011108203.tif 000007