(57)【要約】      （修正有）【課題】Ｖ４プリンタードライバーの拡張機能である双方向通信機能において、送信コマンドと応答データとの齟齬を抑制する。【解決手段】プリンター２００と通信する通信部２０と、プリンターを送信対象とする送信コマンドの送信要求を行う通信制御部１８１と、記憶部１８と、送信要求に応じて、送信コマンドを通信部を介してプリンターに送信する送信制御部と、送信コマンドＳＣに対応した応答データＲＤを通信部を介してプリンターから取得し、取得した応答データを応答データの種別に応じた記憶部の領域に記憶する受信制御部と、を有する。通信制御部は、送信コマンドの種別に応じて判断される記憶部の領域に記憶されている応答データを送信コマンドに対応する応答データとして取得する。【選択図】図３
2016177608.tif 000002
【特許請求の範囲】
【請求項１】
双方向通信機能を用いてプリンターを制御する印刷制御装置であって、
前記プリンターと通信する通信部と、
前記プリンターを送信対象とする送信コマンドの送信要求を行う通信制御部と、
記憶部と、
前記送信要求に応じて、前記送信コマンドを前記通信部を介して前記プリンターに送信する送信制御部と、
前記送信コマンドに対応した応答データを前記通信部を介して前記プリンターから取得し、取得した前記応答データを前記応答データの種別に応じた前記記憶部の領域に記憶する受信制御部と、を有し、
前記通信制御部は、前記送信コマンドの種別に応じて判断される前記記憶部の領域に記憶されている応答データを前記送信コマンドに対応する応答データとして取得する、ことを特徴とする印刷制御装置。
【請求項２】
前記通信制御部は、前記送信コマンドの送信要求を行った時刻を示す送信時刻情報を保持し、
前記受信制御部は、前記応答データを取得した時刻を示す受信時刻情報を前記記憶部に記憶し、
前記通信制御部は、前記受信時刻情報と前記送信時刻情報とに基づいて、前記記憶部の領域に記憶された応答データが前記送信コマンドに対応するか否かを判断する、ことを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記通信制御部は、前記送信時刻情報が前記受信時刻情報に比べて過去の時刻を示している場合、前記記憶部の領域に記憶された応答データを、前記送信コマンドに対する応答データとして判断する、ことを特徴とする請求項２に記載の印刷制御装置。
【請求項４】
前記通信制御部は、前記受信時刻情報が前記送信時刻情報に比べて過去の時刻を示している場合、再度、送信コマンドの送信を要求する、ことを特徴とする請求項２又は請求項３のいずれかに記載の印刷制御装置。
【請求項５】
前記通信部は、ＵＳＢ規格に対応するインタフェースである、ことを特徴とする請求項１から請求項４のいずれか一項に記載の印刷制御装置。
【請求項６】
前記通信制御部からの要求に応じて拡張機能を呼び出すスプーラを有し、
前記送信制御部と前記受信制御部とは前記スプーラにより読み出されて実行される、ことを特徴とする請求項１から請求項５のいずれか一項に記載の印刷制御装置。
【請求項７】
コンピューターに、双方向通信を用いてプリンターを制御させる印刷制御プログラムであって、
前記コンピューターに
前記プリンターを送信対象とする送信コマンドの送信要求を行う通信制御機能と、
前記送信要求に応じて、前記送信コマンドを通信部を介してプリンターに送信する送信制御機能と、
前記送信コマンドに対応した応答データを前記通信部を介してプリンターから取得し、取得した前記応答データを前記応答データの種別に応じた前記記憶部の領域に記憶する受信制御機能と、を実現させ、
前記通信制御機能では、前記送信コマンドの種別をもとに判断される前記記憶部の領域に記憶されている応答データを前記送信コマンドに対応する応答データとして取得する、ことを特徴とする印刷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｖｅｒｓｉｏｎ４プリンタードライバーの機能である双方向通信機能によりプリンターを制御する印刷制御装置に関する。
【背景技術】
【０００２】
Ｗｉｎｄｏｗｓ（登録商標）環境下で動作する端末では、プリンター等のデバイスとの間で双方向通信を実行するための双方向通信機能（ＢｉＤｉ）を備えている。双方向通信機能を用いることで、端末は、アプリケーションからの要求のプリンターへの送信と、この要求に応じたプリンターからの応答データの取得とを、通信部を介して実現することができる。
【０００３】
Ｗｉｎｄｏｗｓ８以降の環境下で動作するＶｅｒｓｉｏｎ４プリンタードライバー（以下、Ｖ４プリンタードライバーとも記載する）では、双方向通信機能はデバイス制御のための拡張機能として定義されている。この拡張機能では、アプリケーションからプリンターへコマンドを送信する処理と、プリンターからの応答データを取得する処理とは、Ｊａｖａｓｃｒｉｐｔ（登録商標）で作成された別々のＩＦにより実現されている。例えば、アプリケーションで発行したコマンドをプリンターに送信するためには、拡張機能のsetメソッドを用いて一連の処理が行われる。一方、プリンターからの応答データの取得は、拡張機能のgetメソッドを用いて一連の処理が行われる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】http://msdn.microsoft.com/library/windows/hardware/br259124
【発明の概要】
【発明が解決しようとする課題】
【０００５】
Ｖ４プリンタードライバーにおける双方向通信機能では、setメソッドにおける処理とgetメソッドにおける処理との間で同期が取られていないため、setメソッドで送信したコマンドと、getメソッドで取得したデータとが対応していない場合があった。
本発明は、上記課題に鑑みたもので、Ｖ４プリンタードライバーの拡張機能である双方向通信機能において、送信コマンドと応答データとの齟齬を抑制することができる印刷制御装置、印刷制御プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様では、通信部を用いた双方向通信機能を用いてプリンターを制御する印刷制御装置に関するものである。「端末」は、Ｖ４プリンタードライバーを備えてプリンターを制御できるものであれば、パーソナルコンピューターや、タブレット端末、スマートフォン等どのような装置であってもよい。「通信部」は、プリンターと印刷制御装置との通信を実現するインタフェースであり、ＵＳＢ（Universal Serial Bus）や、ＴＣＰ／ＩＰ（Transmission Control Protocol / Internet Protocol）、赤外線通信等に従って動作するインタフェースである。
通信制御部は、印刷制御部の内部で生成された送信コマンドをプリンターに送信するための送信要求を行う。通信制御部が送信要求を行う送信コマンドは、印刷制御部内に実装されているアプリケーションが生成したものや、通信制御部が生成したものを含む。
この送信要求に応じて、送信制御部は、送信コマンドを通信部を介してプリンターに送信する。受信制御部は、送信制御部により送信された送信コマンドに対応した応答データを通信部を介してプリンターから取得し、取得した応答データを応答データの種別に応じた記憶部の領域に記憶する。ここで、「送信制御部」と「受信制御部」とはそれぞれ、Ｖ４プリンタードライバーの拡張機能により実現される機能である。
通信制御部は、送信コマンドの種別に応じて判断される記憶部の領域に記憶されている応答データを送信コマンドに対応する応答データとして取得する。
【０００７】
上記のように構成された発明では、受信制御部はプリンターから取得する応答データをその種別に応じて記憶部の領域に記憶し、通信制御部は送信コマンドの種別に応じて該当する記憶部の領域から応答データを取得するため、送信コマンドに対応していない応答データを取得することを抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】一例としての印刷制御装置の構成を説明するブロック図。
【図２】ＣＰＵ１６により実現されるソフトウェアの機能を説明する図。
【図３】ＣＰＵ１６により実現される各機能のうち、双方向通信に係る機能のみを模式的に示した図。
【図４】双方向通信における送信コマンドの送信に係る処理を説明するシーケンス図。
【図５】ステップＳ２において、上位通信モジュール１８１が実行する処理を説明するフローチャート。
【図６】双方向通信における応答データＲＤの受信に係る各モジュールの処理を説明するシーケンス図。
【図７】受信制御部１８６がステップＳ１３で実行する処理を説明するフローチャート。
【図８】応答データ格納領域の位置を説明する図。
【図９】ステップＳ１５において上位通信モジュール１８１が実行する処理を説明するフローチャート。
【図１０】ステップＳ１５１で参照される参照テーブル１９０を説明する図。
【図１１】時間を前後とする応答コマンドの取得に係る送信時刻情報ＳＴＩと受信時刻情報ＲＴＩとの関係を説明する図。
【発明を実施するための形態】
【０００９】
以下、下記の順序に従って本発明の実施形態を説明する。
１．第１の実施形態：
（１）印刷制御装置の構成
（２）ソフトウェアの機能構成
（３）印刷制御方法
２．その他の実施形態：
【００１０】
１．第１の実施形態：
（１）印刷制御装置の構成
【００１１】
図１は、一例としての印刷制御装置の構成を説明するブロック図である。以下では、印刷制御装置の一例として、パーソナルコンピューター等の端末１０を例に説明を行う。端末１０は、ディスプレイ１１、操作キー１２、ビデオカード１３、Ｉ・ＯＩＦ１４、バス１５、ＣＰＵ１６、外部記憶装置１７、ＲＡＭ１８、ＲＯＭ１９、ＵＳＢＩＦ２０、を備えている。
【００１２】
ディスプレイ１１は、画像を表示する表示部１１１や、利用者からの操作を受け付けるタッチパネルモジュール１１２を備えている。表示部１１１は、例えば、ＬＣＤ（Liquid Crystal Display）や、ＬＣＤを駆動するためのドライバー回路を備え、ビデオカード１３に接続されている。ビデオカード１３は、バス１５とディスプレイ１１とを接続している。また、タッチパネルモジュール１１２は、静電容量方式や抵抗膜方式のセンサーを備え、利用者の操作位置に応じた電圧値を、Ｉ・ＯＩＦ１４に出力する。
【００１３】
操作キー１２は、押し込み式のボタンにより構成され、利用者の操作を受け付けるユーザインタフェースである。
Ｉ・ＯＩＦ１４は、利用者によるタッチパネルモジュール１１２または操作キー１２の操作に応じて生成される信号をバス１５に出力する。
【００１４】
バス１５には、ＣＰＵ１６、外部記憶装置１７、Ｉ・ＯＩＦ１４、ＲＡＭ１８、ＲＯＭ１９、ビデオカード１３、ＵＳＢＩＦ２０が接続されている。バス１５は、不図示のチップセットを備え、ＣＰＵ１６と他のデバイスとの通信を制御する。
【００１５】
ＣＰＵ１６は、外部記憶装置１７またはＲＯＭ１９に記憶されたプログラムをＲＡＭ１８に展開して実行することで、端末１０を統合的に制御する。ＲＯＭ１９には、ＣＰＵ１６が起動する際に実行されるＢＩＯＳプログラムが記憶されている。ＲＡＭ１８は、ＣＰＵ１６により処理されるプログラムやデータを展開するワークエリアとして機能する。
【００１６】
外部記憶装置１７は、ＯＳ（Operation System）としての機能をＣＰＵ１６に付与するＯＳ（Operation System）プログラム１７ａ、アプリケーションの機能をＣＰＵ１６に付与するアプリケーションプログラム１７ｂ、ＯＳと協働してプリンター２００を制御するプリンタードライバープログラム（ＰＤＲＶプログラム）１７ｃが記憶されている。ＯＳプログラム１７ａは、例えば、Ｗｉｎｄｏｗｓ１０（Ｗｉｎｄｏｗｓは登録商標）である。アプリケーションプログラム１７ｂは、描画ソフト、ＰＤＦファイルビューア、ブラウザー、Ｗｅｂアプリケーションといったアプリケーションの機能をＣＰＵ１６に実現させる。ＰＤＲプログラム１７ｃは、Ｖ４プリンタードライバーであり、拡張機能を備えている。
【００１７】
ＵＳＢＩＦ２０は、ＵＳＢコントローラや、ＵＳＢケーブルを備え、バス１５とプリンター２００とを接続している。この実施形態では、通信部は、ＵＳＢＩＦ２０により実現されている。
【００１８】
プリンター２００は、インクジェットプリンターやレーザープリンターである。プリンター２００は、外部記憶装置１７に記憶されたＰＤＲプログラム１７ｃに対応しており、端末１０からＵＳＢＩＦ２０を通じて送信される印刷用データや送信コマンドによりその駆動が制御される。なお、プリンター２００の内部構成は周知でありその説明は省略する。
【００１９】
（２）ソフトウェアの機能構成
図２は、ＣＰＵ１６により実現されるソフトウェアの機能を説明する図である。図２では、外部記憶装置１７に記憶された各プログラムによりＣＰＵ１６に実現される機能をアプリケーション１６０、ＯＳ１７０、プリンタードライバー１８０として示している。
【００２０】
アプリケーション１６０は、画像や文章を含む印刷用データを生成する。印刷用データはＸＰＳ（XML Paper Specification）のフォーマットに対応するものを想定しているが、これ以外のフォーマットに対応するものであってもよい。また、アプリケーション１６０は、プリンター２００に対して、インク残量等の状態を示すステータス情報の取得や、クリーニング等の処理を実行させるメンテナンスコマンドを発行する機能を備えている。以下では、アプリケーション１６０が発行するコマンドを送信コマンドＳＣと記載する。
【００２１】
ＯＳ１７０は、スプーラ１７１、ＵＳＢポートモニター１７２と、を備え、プリンタードライバー１８０と協働してプリンター２００を制御する。スプーラ１７１は、印刷処理時のデータ（スプールデーター）の出力処理や、双方向通信時のデータの送受信を制御する。ＵＳＢポートモニター１７２は、アプリケーション１６０やプリンタードライバー１８０が通信を行う際に使用するポート番号の管理や、印刷処理時や双方向通信時におけるこのポート番号を用いた実質的な通信を行う。
【００２２】
プリンタードライバー１８０は、上位通信モジュール１８１、グラフィックスモジュール１８２、拡張機能部１８３を備えている。上位通信モジュール（通信制御部）１８１は、アプリケーション１６０からの印刷用データの受信や、アプリケーション１６０との間で行われる制御用データ（送信コマンドＳＣ、応答データＲＤ）の受け渡しを実行する。グラフィックスモジュール１８２は、印刷処理時に、アプリケーション１６０が生成した印刷用データをプリンター２００が対応するフォーマットに変換する。拡張機能部１８３は、印刷処理時や双方向通信時に行われる機能を拡張するためのモジュールにより構成されている。
【００２３】
拡張機能部１８３は、その機能ごとに複数の機能モジュールを備えている。各機能モジュールは、Ｊａｖａｓｃｒｉｐｔにより構成されたスクリプトファイルや、ＸＭＬ（eXtensible Markup Language）ファイルにより構成されている。ＸＭＬファイルには、各機能を定義するスキーマとして機能し、スクリプトファイルは、このＸＭＬファイルに基づいて動作することで、プリンタードライバー１８０に拡張された機能を提供する。各機能モジュールは、スプーラ１７１から呼び出されることで、実施される。
【００２４】
図３は、ＣＰＵ１６により実現される各機能のうち、ＵＳＢＩＦ２０を用いた双方向通信に係る機能のみを模式的に示した図である。双方向通信は、スプーラ１７１が、拡張機能部１８３が備える機能モジュールのうち、USB Bidi Extender１８４を呼び出すことで実行される。USB Bidi Extender１８４のうち、スクリプトファイル内に実装されているメソッド（関数）であるsetSchema()は、上位通信モジュール１８１がアプリケーション１６０から取得した送信コマンドＳＣを、ＵＳＢポートモニター１７２からＵＳＢＩＦ２０によりプリンター２００に送信する機能を実現する。スクリプトファイル内に実装されているメソッド（関数）であるgetSchemas()は、プリンター２００が送信コマンドＳＣに対して生成する応答データＲＤをＵＳＢＩＦ２０を通じて取得する機能を実現する。getSchemas()で取得される応答データＲＤは、ＸＭＬファイル内の要素で定義されたＲＡＭ１８の該当領域（後述する応答データ格納領域）に記憶される。該当領域に記憶された応答データＲＤは、上位通信モジュール１８１により取得され、アプリケーション１６０に返信される。
【００２５】
以下では、端末１０（ＣＰＵ１６）がsetSchema()を用いることで実現される機能部を送信制御部と、getSchemas()を用いることで実現される機能部を受信制御部とも記載する。
【００２６】
（３）印刷制御方法
次に、双方向通信機能を用いた印刷制御方法を説明する。図４は、双方向通信における送信コマンドの送信に係る処理を説明するシーケンス図である。図４は、アプリケーション１６０、上位通信モジュール１８１、スプーラ１７１、送信制御部１８５、受信制御部１８６、プリンター２００による処理をそれぞれ示している。
【００２７】
Ｓ１では、アプリケーション１６０は、プリンター２００に対してステータス情報（応答データＲＤ）を要求するための送信コマンドを発行する。例えば、ステータス情報は、アプリケーション１６０がプリンター２００の状態を示すＵＩ画面を表示させる情報である。
【００２８】
ステップＳ２では、上位通信モジュール１８１は、送信コマンドをプリンター２００に送信するための処理を行う。図５は、ステップ２において、上位通信モジュール１８１が実行する処理を説明するフローチャートである。
【００２９】
ステップＳ２１では、上位通信モジュール１８１はアプリケーション１６０から取得した送信コマンドの種別を記憶する。送信コマンドの種別は、例えば、ステータス情報の要求や、メンテナンス処理の実行といったように、アプリケーション１６０が要求する処理の内容に応じて定められている。
【００３０】
ステップＳ２２では、上位通信モジュール１８１は、スプーラ１７１に対してsetSchema()を呼び出すための関数をコールする。上位通信モジュール１８１が呼び出した関数によりスプーラ１７１に対する、USB Bidi Extender１８４のsetSchema()の呼び出し要求が行われる。
【００３１】
ステップＳ２３では、上位通信モジュール１８１は、送信時刻情報ＳＴＩを更新する。送信時刻情報ＳＴＩは、上位通信モジュール１８１が送信コマンドをプリンター２００に送信するための処理を開始した時刻を示す情報である。
【００３２】
図４に戻り、ステップＳ３では、スプーラ１７１は、上位通信モジュール１８１が呼び出した関数により、USB Bidi Extender１８４のsetSchema（）を呼び出し、送信コマンドをsetSchema()の引数として設定する。setSchema()の読み出しにより、ＣＰＵ１６は送信制御部１８５として機能することになる。
【００３３】
ステップＳ４では、送信制御部１８５は、ＵＳＢポートモニター１７２を制御し、送信コマンドをプリンター２００に送信する。ＵＳＢポートモニター１７２の機能により送信コマンドはＵＳＢＩＦ２０を介してプリンター２００に送信される。プリンター２００はＵＳＢＩＦ２０を介して送信コマンドを受信すると、送信コマンドを解釈し、送信コマンドに対応する応答データＲＤを作成する。
【００３４】
次に、端末１０で行われる受信制御を説明する。図６は、双方向通信における応答データＲＤの受信に係る各モジュールの処理を説明するシーケンス図である。図６は、アプリケーション１６０、上位通信モジュール１８１、スプーラ１７１、送信制御部１８５、受信制御部１８６、プリンター２００による処理をそれぞれ示している。
【００３５】
応答データＲＤを要求する条件が成立すると、ステップＳ１１では、上位通信モジュール１８１は、応答データＲＤの取得要求を行う。上位通信モジュール１８１による取得要求は、スプーラ１７１がgetSchemas()を呼び出すための関数を実行することで行われる。
【００３６】
ステップＳ１２では、スプーラ１７１は上位通信モジュール１８１が実行する関数に応じて、拡張機能部１８３のUSB Bidi Extender１８４からgetSchemas()を呼び出す。getSchemas()が実行されることで、ＣＰＵ１６は受信制御部１８６として機能することとなる。
【００３７】
ステップＳ１３では、受信制御部１８６は、応答データＲＤを取得するための処理を行う。図７は、受信制御部１８６がステップＳ１３で実行する処理を説明するフローチャートである。
ステップＳ１３１では、受信制御部１８６はＵＳＢＩＦ２０を介してプリンター２００から送信された（図６、ステップＳ１４）応答データＲＤを取得する。
【００３８】
ステップＳ１３２では、受信制御部１８６は、プリンター２００から応答データＲＤを取得した否かを判断する。応答データＲＤを取得している場合（ステップＳ１３２：ＹＥＳ）、ステップＳ１３３では、受信制御部１８６は受信した応答データＲＤを対応するＲＡＭ１８の記憶領域（応答データ格納領域）に記憶する。受信制御部１８６により応答データＲＤが格納される応答データ格納領域のアドレスは、拡張機能部１８３のＸＭＬファイルに定義されている。
【００３９】
図８は、応答データ格納領域の位置を説明する図である。ＸＭＬファイルには応答データＲＤの種別に応じて応答データ格納領域が指定されている。図８（ａ）では、ＲＡＭ１８の記憶領域のうち、送信コマンドＳＣ１に対応する応答データＲＤ１の応答データ格納領域は領域１８ａであり、送信コマンドＳＣＢに対応する応答データＲＤ２の応答データ格納領域は領域１８ｂとなっている。
【００４０】
ステップＳ１３４では、受信制御部１８６は受信時刻情報ＲＴＩを更新する。受信時刻情報ＲＴＩは、応答データＲＤが端末１０に取得された時刻を示す情報である。図８（ｂ）では、受信制御部１８６は、該当する応答データＲＤ（図８（ｂ）では、応答データＲＤ１）が格納される応答データ格納領域に受信時刻情報ＲＴＩを記憶することで、受信時刻情報ＲＴＩを更新している。
【００４１】
一方、ステップＳ１３２において、プリンター２００から応答データＲＤを取得していなければ（ステップＳ１３２：ＮＯ）、受信制御部１８６はステップＳ１３３、Ｓ１３４の処理を実行することなく処理を終了する。この場合、ＲＡＭ１８の該当する応答データ格納領域は更新されないこととなる。
【００４２】
図６に戻り、ステップＳ１５では、上位通信モジュール１８１は、応答データＲＤを取得するための処理を行う。図９は、ステップＳ１５において上位通信モジュール１８１が実行する処理を説明するフローチャートである。
図９のステップＳ１５１では、上位通信モジュール１８１は、応答データＲＤが記憶されている参照先の応答データ格納領域を送信コマンドＳＣ（ステップＳ２１で記憶した送信コマンドＳＣ）の種別から特定し、特定された応答データ格納領域から応答データＲＤを取得する。参照先の応答データ格納領域の判断は、例えば、拡張機能部１８３に記憶されている参照テーブルＲＴを用いて行われる。
【００４３】
図１０は、ステップＳ１５１で参照される参照テーブルＲＴを説明する図である。参照テーブルＲＴには、送信コマンドＳＣの種別毎に、参照先の応答データ格納領域を特定可能な格納領域特定情報が記憶されている。格納領域特定情報としては、例えば、参照先の応答データ格納領域をＸＭＬファイルで定義したスキーマ名称や、この応答データ格納領域をＸＭＬファイルで間接的に示す定義名称を用いることができる。これ以外にも、応答データ格納領域の先頭アドレス等を用いるものであってもよい。上位通信モジュール１８１はステップＳ１１１で記憶した送信コマンドＳＣの種別をもとに、参照テーブルＲＴから応答データ格納領域の格納領域特定情報を取得し、格納領域特定情報に対応する応答データ格納領域から応答データＲＤを取得する。
【００４４】
ステップＳ１５２では、上位通信モジュール１８１は、送信時刻情報ＳＴＩと受信時刻情報ＲＴＩとを比較する。第１の実施形態では、応答データ毎に設けられた応答データ格納領域に加えて、上位通信モジュール１８１が送信時刻情報ＳＴＩと受信時刻情報ＲＴＩとを用いた応答データのチェックを行うことで、送信コマンドＳＣと応答データＲＤとの齟齬、すなわち、送信した送信コマンドに対する応答データＲＤを誤まって認識してしまうことを抑制している。
【００４５】
図１１は、時間を前後とする応答コマンドの取得に係る送信時刻情報ＳＴＩと受信時刻情報ＲＴＩとの関係を説明する図である。図１１（ａ）は、先に行われた応答データＲＤの取得（受信処理１）と受信処理１より後に行われた応答データＲＤの取得（受信処理２）とのそれぞれで、応答データＲＤを取得している場合であり、図１１（ｂ）は、後の応答データＲＤの取得（受信処理２）において、応答データＲＤが取得できなかった場合の送信時刻情報ＳＴＩと受信時刻情報ＲＴＩの一例を示している。図１１（ａ）（ｂ）ともに、送信処理では、同じ時刻（ＳＴＩ）で送信コマンドＳＣを送信しているものとする。
【００４６】
図１１（ａ）では、受信処理２での応答データＲＤの取得により、受信時刻情報ＲＴＩが更新されており、送信時刻情報ＳＴＩは受信時刻情報ＲＴＩに比べて先（過去）の時刻を示している。一方、図１１（ｂ）では、受信処理２での応答データＲＤの未取得により、受信時刻情報ＲＴＩが更新されておらず、送信時刻情報ＳＴＩは受信時刻情報ＲＴＩに比べて後の時刻を示している。
【００４７】
送信時刻情報ＳＴＩが受信時刻情報ＲＴＩよりも前（過去）であれば（ステップＳ１５２：ＹＥＳ）、ステップＳ１５３では、上位通信モジュール１８１は、送信時刻と受信時刻との間に時系列上の不整合がないため適切な応答データＲＤを受信できたと判断して、応答データＲＤをアプリケーション１６０に渡す。これは、送信時刻情報ＳＴＩの示す時刻が、受信時刻情報ＲＴＩの示す時刻と比べて前（過去）であれば、図１１（ａ）に示したように、該当する応答データ格納領域の応答データＲＤは更新されており、この応答データＲＤは先に送信した送信コマンドＳＣに対応するものであると判断できるからである。
【００４８】
送信時刻情報ＳＴＩが受信時刻情報ＲＴＩよりも後（現在）であれば（ステップＳ１５２：ＮＯ）、ステップＳ１５４では、上位通信モジュール１８１は、送信時刻と受信時刻とが時系列上で整合しないため適切な応答データＲＤを受信できなかったと判断して、応答データＲＤの再要求をスプーラ１７１に対して行う。これは、送信時刻情報ＳＴＩの示す時刻が、受信時刻情報ＲＴＩの示す時刻と比べて後（現在）であれば、図１１（ｂ）に示したように、該当する応答データ格納領域の応答データＲＤは更新されておらず、この応答データＲＤは送信コマンドＳＣに対応してないからである。ステップＳ１５４の応答データＲＤの再要求により、図６のステップＳ１１の処理が実行され、スプーラ１７１はgetSchemas()の呼び出しが行われる。
【００４９】
以上説明したようにこの第１の実施形態では、Ｖ４プリンタードライバーの双方向通信機能を備える端末（印刷制御装置）１０において、受信制御部１８６はプリンター２００から取得する応答データＲＤをその種別に応じてＲＡＭ１８の応答データ格納領域に記憶する。そして、上位通信モジュール（通信制御部）１８１は送信コマンドＳＣの種別に応じて該当する応答データ格納領域から応答データを取得する。
例えば、先に送信した送信コマンドＳＣに対してプリンター２００から応答データＲＤが取得できなかった場合や、ＯＳ１７０内部で、ＸＭＬファイルで定義されているデータの読み出しや書き換え等が行われる場合でも、応答データごとに応答データ格納領域を設けておくことで、送信コマンドＳＣと応答データＲＤとの対応関係を保つことができる。その結果、上位通信モジュール１８１は、送信コマンドＳＣに対応していない応答データＲＤを取得してしまうことを抑制することができる。
【００５０】
上位通信モジュール１８１は、送信コマンドＳＣの送信要求を行った時刻を示す送信時刻情報を保持し、受信制御部１８６は、応答データを取得した時刻を示す受信時刻情報を記憶部に記憶する。そして、上位通信モジュール１８１は、受信時刻情報と送信時刻情報とに基づいて、応答データ格納領域に記憶された応答データが送信コマンドＳＣに対応するか否かを判断することで、送信コマンドＳＣに対応していない応答データを誤って取得してしまうことの抑制を強固にすることができる。
【００５１】
２．その他の実施形態：
通信部としてＵＳＢＩＦを用いたことは一例に過ぎず、これ以外にも、赤外線通信やIEEE1394など、プリンターとホスト装置が１対１に通信を行うインタフェースであってもよい。
【００５２】
端末は、Ｖ４プリンタードライバーを備えてプリンターを制御できるものであれば、パーソナルコンピューター以外にも、タブレット端末、スマートフォン等どのような装置であってもよい。
【００５３】
なお、本発明は上記実施例に限られるものでないことは言うまでもない。当業者であれば言うまでもないことであるが、
・上記実施例の中で開示した相互に置換可能な部材および構成等を適宜その組み合わせを変更して適用すること
・上記実施例の中で開示されていないが、公知技術であって上記実施例の中で開示した部材および構成等と相互に置換可能な部材および構成等を適宜置換し、またその組み合わせを変更して適用すること
・上記実施例の中で開示されていないが、公知技術等に基づいて当業者が上記実施例の中で開示した部材および構成等の代用として想定し得る部材および構成等と適宜置換し、またその組み合わせを変更して適用すること
は本発明の一実施例として開示されるものである。
【符号の説明】
【００５４】
１０…端末、１１…ディスプレイ、１２…操作キー、１３…ビデオカード、１５…バス、１６…ＣＰＵ、１７…外部記憶装置、１８…ＲＡＭ、１９…ＲＯＭ、１６０…アプリケーション、１６５…拡張機能部、１７０…ＯＳ、１７１…スプーラ、１７２…ＵＳＢポートモニター、１８０…プリンタードライバー、１８１…上位通信モジュール、１８２…グラフィックスモジュール、１８３…拡張機能部、１８４…USB Bidi Extender、１８５…送信制御部、１８６…受信制御部、２００…プリンター
【図１】
2016177608.tif 000003
【図２】
2016177608.tif 000004
【図３】
2016177608.tif 000005
【図４】
2016177608.tif 000006
【図５】
2016177608.tif 000007
【図６】
2016177608.tif 000008
【図７】
2016177608.tif 000009
【図８】
2016177608.tif 000010
【図９】
2016177608.tif 000011
【図１０】
2016177608.tif 000012
【図１１】
2016177608.tif 000013