JP2017194758A - 印刷制御装置および印刷制御プログラム - Google Patents

印刷制御装置および印刷制御プログラム Download PDF

Info

Publication number
JP2017194758A
JP2017194758A JP2016083231A JP2016083231A JP2017194758A JP 2017194758 A JP2017194758 A JP 2017194758A JP 2016083231 A JP2016083231 A JP 2016083231A JP 2016083231 A JP2016083231 A JP 2016083231A JP 2017194758 A JP2017194758 A JP 2017194758A
Authority
JP
Japan
Prior art keywords
response data
transmission command
transmission
identification information
printer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016083231A
Other languages
English (en)
Other versions
JP6680060B2 (ja
Inventor
哲也 若▲狭▼
Tetsuya Wakasa
哲也 若▲狭▼
裕保 尾形
Hiroyasu Ogata
裕保 尾形
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2016083231A priority Critical patent/JP6680060B2/ja
Publication of JP2017194758A publication Critical patent/JP2017194758A/ja
Application granted granted Critical
Publication of JP6680060B2 publication Critical patent/JP6680060B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

【課題】送信コマンドと応答データとの不対応が生じることを抑制する。【解決手段】プリンターと通信する通信部と、プリンターを送信対象とする送信コマンドの送信要求を行う通信制御部と、記憶部と、送信要求に応じて送信コマンドを通信部を介してプリンターに送信する送信制御部と、送信コマンドに対応した応答データを通信部を介してプリンターから取得し、取得した応答データに識別情報を付加し、識別情報を付加した応答データを記憶部に格納する受信制御部と、を有し、通信制御部は、第1の送信コマンドの送信要求を行う前に記憶部から取得した応答データに付加されている識別情報と、第1の送信コマンドの送信要求を行った後に記憶部から取得した応答データに付加されている識別情報との比較に基づいて、第1の送信コマンドの送信要求を行った後に記憶部から取得した応答データが第1の送信コマンドに対応するか否かを判定する印刷制御装置。【選択図】図4

Description

本発明は、プリンターを制御する印刷制御装置および印刷制御プログラムに関する。
Windows(登録商標)環境下で動作する端末では、プリンター等のデバイスとの間で双方向通信を実行するための双方向通信機能(BiDi)を備えている。双方向通信機能を用いることで、端末は、アプリケーションからの要求のプリンターへの送信と、この要求に応じたプリンターからの応答データの取得とを、通信部を介して実現することができる。
Windows8以降の環境下で動作するVersion4プリンタードライバー(以下、V4プリンタードライバーとも記載する。)では、双方向通信機能はデバイス制御のための拡張機能として定義されている。この拡張機能では、アプリケーションからプリンターへコマンドを送信する処理と、プリンターからの応答データを取得する処理とは、Javascript(登録商標)で作成された別々のインターフェイス(IF)により実現されている。例えば、アプリケーションで発行したコマンドをプリンターに送信するためには、拡張機能のsetメソッドを用いて一連の処理が行われる。一方、プリンターからの応答データの取得は、拡張機能のgetメソッドを用いて一連の処理が行われる。
また、XPS(XML Paper Specification)仕様で記述されたXPSファイルを処理するXPSプリンタードライバーが開示されている(特許文献1参照)。
特開2013‐257820号公報
V4プリンタードライバーにおける双方向通信機能では、setメソッドによる処理とgetメソッドによる処理との間で同期が取られていない(それぞれの処理が独立して行われる)ため、setメソッドで送信したコマンドと、getメソッドで取得したデータとが対応していない場合があった。
本発明は、上述の課題に鑑みたもので、送信コマンドと応答データとの不対応が生じることを抑制できる印刷制御装置および印刷制御プログラムを提供する。
本発明の態様の1つは、印刷制御装置は、プリンターと通信する通信部と、前記プリンターを送信対象とする送信コマンドの送信要求を行う通信制御部と、記憶部と、前記送信要求に応じて、前記送信コマンドを前記通信部を介して前記プリンターに送信する送信制御部と、前記送信コマンドに対応した応答データを前記通信部を介して前記プリンターから取得し、取得した前記応答データに識別情報を付加し、当該識別情報を付加した前記応答データを前記記憶部に格納する受信制御部と、を有し、前記通信制御部は、第1の送信コマンドの送信要求を行う前に前記記憶部から取得した応答データに付加されている識別情報と、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データに付加されている識別情報との比較に基づいて、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データが前記第1の送信コマンドに対応するか否かを判定する。
当該構成によれば、印刷制御装置は、前記比較に基づいて送信コマンド(第1の送信コマンド)に対応する応答データを確実に取得することができる。
本発明の態様の1つは、前記受信制御部は、前記プリンターから取得した前記応答データを、当該応答データが対応する送信コマンドの種別に応じた前記記憶部の領域に格納し、前記通信制御部は、前記第1の送信コマンドの種別に対応する前記記憶部の領域から前記応答データを取得するとしてもよい。
当該構成によれば、通信制御部は、第1の送信コマンドと種別が異なる送信コマンドに対応した応答データを、第1の送信コマンドに対応する可能性のある応答データとして記憶部から取得することを、回避できる。
本発明の態様の1つは、前記通信制御部は、前記第1の送信コマンドの送信要求を行う前に前記記憶部から取得した応答データに付加されている識別情報と、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データに付加されている識別情報とが相違する場合に、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データが前記第1の送信コマンドに対応する応答データであると判定する。一方、前記比較の対象とした2つの識別情報が同じである場合には、前記通信制御部は、前記受信制御部に前記プリンターからの応答データの取得を再度要求する。
このような構成によれば、第1の送信コマンドに対応する応答データを最終的には取得することができる。また、前記通信制御部は、前記第1の送信コマンドの送信要求を行う前に前記記憶部から空データを取得した場合には、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データが前記第1の送信コマンドに対応する応答データであると判定すればよい。
前記通信部は、USB(Universal Serial Bus)規格に対応するインターフェイスである。また、印刷制御装置は、前記通信制御部からの要求に応じて拡張機能を呼び出すスプーラーを有し、前記送信制御部と前記受信制御部とは前記スプーラーにより読み出されて実行されるとしてもよい。
本発明の技術的思想は、印刷制御装置以外によっても実現される。例えば、印刷制御装置が搭載するコンピューターに本発明にかかる処理を実行させるプログラム(印刷制御プログラム)や、印刷制御装置が実行する工程を含んだ方法(印刷制御方法)や、当該プログラムを記憶したコンピューター読取可能な記憶媒体等を、それぞれ発明として捉えることができる。また、印刷制御装置(印刷制御プログラム、印刷制御方法)は、プリンターとの通信を制御すると言えるため、これを通信制御装置(通信制御プログラム、通信制御方法)等と称してもよい。
印刷制御装置の構成を例示するブロック図。 CPUにより実現されるソフトウェアの機能を例示する図。 CPUにより実現される機能のうち双方向通信に係る機能を模式的に示す図。 通信処理を説明するためのシーケンス図。 受信制御部がステップS5,S13で実行する処理を示すフローチャート。 応答データ格納領域を説明するための図。 格納領域規定テーブルを例示する図。 上位通信モジュールがステップS16で実行する処理を示すフローチャート。
下記の順序に従って本発明の実施形態を説明する。
1.印刷制御装置の構成:
2.ソフトウェアの機能構成:
3.通信処理:
4.まとめ:
1.印刷制御装置の構成:
図1は、印刷制御装置の構成を例示するブロック図である。以下では、印刷制御装置の一例として、端末10を例に説明を行う。端末10は、プリンタードライバーを搭載してプリンターを制御できるものであればよく、パーソナルコンピューター(PC)や、タブレット型端末や、スマートフォンや、これらと同等の性能を有する各種装置である。また、端末10が有する構成の一部を印刷制御装置や通信制御装置と称してもよい。端末10は、ディスプレイ11、操作キー12、ビデオカード13、I・OIF14、バス15、CPU16、外部記憶装置17、RAM18、ROM19、USBIF20、を備えている。
ディスプレイ11は、画像を表示する表示部111や、利用者からの操作を受け付けるタッチパネルモジュール112を備えている。表示部111は、例えば、LCD(Liquid Crystal Display)や、LCDを駆動するためのドライバー回路を備え、ビデオカード13に接続されている。ビデオカード13は、バス15とディスプレイ11とを接続している。また、タッチパネルモジュール112は、静電容量方式や抵抗膜方式のセンサーを備え、利用者の操作位置に応じた電圧値を、I・OIF14に出力する。
操作キー12は、押し込み式のボタンにより構成され、利用者の操作を受け付けるユーザーインターフェイスである。
I・OIF14は、利用者によるタッチパネルモジュール112または操作キー12の操作に応じて生成される信号をバス15に出力する。
バス15には、CPU16、外部記憶装置17、I・OIF14、RAM18、ROM19、ビデオカード13、USBIF20が接続されている。バス15は、不図示のチップセットを備え、CPU16と他のデバイスとの通信を制御する。
CPU16は、外部記憶装置17またはROM19に記憶されたプログラムをRAM18に展開して実行することで、端末10を統合的に制御する。ROM19には、CPU16が起動する際に実行されるBIOSプログラムが記憶されている。RAM18は、CPU16により処理されるプログラムやデータを展開するワークエリアとして機能する。
外部記憶装置17には、OS(Operating System)としての機能をCPU16に付与するOSプログラム17a、アプリケーションの機能をCPU16に付与するアプリケーションプログラム17b、OSと協働してプリンター200を制御するプリンタードライバープログラム(PDRVプログラム)17cが記憶されている。OSプログラム17aは、例えば、Windows10(Windowsは登録商標)である。アプリケーションプログラム17bは、描画ソフト、PDFファイルビューア、ブラウザー、Webアプリケーションといったアプリケーションの機能をCPU16に実現させる。PDRVプログラム17cは、V4プリンタードライバーであり、拡張機能を備えている。
USBIF20は、USBコントローラーや、USBケーブルを備え、バス15とプリンター200とを接続している。この実施形態では、通信部は、USBIF20により実現されている。
プリンター200は、インクジェットプリンターやレーザープリンターである。プリンター200は、プリンター以外の機能、例えば、スキャナーやファクシミリ等の機能も併せ持つ複合機であってもよい。プリンター200は、外部記憶装置17に記憶されたPDRVプログラム17cに対応しており、端末10からUSBIF20を通じて送信される印刷用データや送信コマンドによりその駆動が制御される。なお、プリンター200の内部構成は周知でありその説明は省略する。
2.ソフトウェアの機能構成:
図2は、CPU16により実現されるソフトウェアの機能を例示する図である。図2では、外部記憶装置17に記憶された各プログラムによりCPU16に実現される機能をアプリケーション160、OS170、プリンタードライバー180として示している。
アプリケーション160は、画像や文章を含む印刷用データを生成する。印刷用データはXPS(XML Paper Specification)のフォーマットに対応するものを想定しているが、これ以外のフォーマットに対応するものであってもよい。また、アプリケーション160は、プリンター200に対して、インク残量等の状態を示すステータス情報を要求するコマンドや、クリーニング等のメンテナンス処理を実行させるコマンドを発行する機能を備えている。以下では、アプリケーション160が発行するコマンドを送信コマンドSCと記載する。
OS170は、スプーラー171、USBポートモニター172を備え、プリンタードライバー180と協働してプリンター200を制御する。スプーラー171は、印刷処理時のデータ(スプールデータ)の出力処理や、双方向通信時のデータの送受信を制御する。USBポートモニター172は、アプリケーション160やプリンタードライバー180が通信を行う際に使用するポート番号の管理や、印刷処理時や双方向通信時におけるこのポート番号を用いた実質的な通信を行う。
プリンタードライバー180は、上位通信モジュール181、グラフィックスモジュール182、拡張機能部183を備えている。プリンタードライバー180は、印刷制御プログラムの一例である。上位通信モジュール181(通信制御部)は、アプリケーション160からの印刷用データの受信や、アプリケーション160との間で行われる制御用データ(送信コマンドSC、応答データRD)の受け渡しを実行する。グラフィックスモジュール182は、印刷処理時に、アプリケーション160が生成した印刷用データをプリンター200が対応するフォーマットに変換する。拡張機能部183は、印刷処理時や双方向通信時に行われる機能を拡張するためのモジュールにより構成されている。
拡張機能部183は、その機能ごとに複数の機能モジュールを備えている。各機能モジュールは、Javascriptにより構成されたスクリプトファイルや、XML(eXtensible Markup Language)ファイルにより構成されている。XMLファイルは、各機能を定義するスキーマとして機能し、スクリプトファイルは、このXMLファイルに基づいて動作することで、プリンタードライバー180に拡張された機能を提供する。各機能モジュールは、スプーラー171から呼び出されることで、実施される。
図3は、CPU16により実現される各機能のうち、USBIF20を用いた双方向通信に係る機能を模式的に示した図である。双方向通信は、スプーラー171が、拡張機能部183が備える機能モジュールのうち、USB Bidi Extender184を呼び出すことで実行される。USB Bidi Extender184のうち、スクリプトファイル内に実装されているメソッド(関数)であるsetSchema()は、上位通信モジュール181がアプリケーション160から取得した送信コマンドSCを、USBポートモニター172からUSBIF20によりプリンター200に送信する機能を実現する。スクリプトファイル内に実装されているメソッド(関数)であるgetSchemas()は、プリンター200が送信コマンドSCに対応して生成する応答データRDをUSBIF20を通じて取得する機能を実現する。getSchemas()で取得される応答データRDは、XMLファイル内の要素で定義されたRAM18の該当領域(後述する応答データ格納領域)に記憶される。該当領域に記憶された応答データRDは、上位通信モジュール181により取得され、アプリケーション160に返信される。
以下では、端末10(CPU16)がsetSchema()を用いることで実現される機能部を送信制御部185と、getSchemas()を用いることで実現される機能部を受信制御部186とも記載する。
3.通信処理:
次に、双方向通信機能を用いた端末10とプリンター200との通信処理を説明する。
図4は、当該通信処理を説明するためのシーケンス図である。図4は、アプリケーション160、上位通信モジュール181、スプーラー171、送信制御部185、受信制御部186、プリンター200による処理をそれぞれ示している。
ステップS1では、アプリケーション160は、プリンター200に応答データRD(例えば、ステータス情報を記述した応答データ)を要求するための送信コマンドSCを発行する。ステータス情報は、例えば、アプリケーション160がプリンター200の状態を示すユーザーインターフェイス(UI)画面を表示させる情報である。
ステップS2では、上位通信モジュール181は、アプリケーション160から取得した、ステップS1で発行された送信コマンドSCの種別を記憶する。送信コマンドSCの種別は、例えば、ステータス情報の要求や、メンテナンス処理の実行命令といったように、アプリケーション160が要求する処理の内容に応じて定められている。ステップS1で発行された送信コマンドSCは、第1の送信コマンドに該当する。本発明において、第1の送信コマンドとは、その内容や種別が限定される訳ではない。便宜上“第1の〜”と表現することで、端末10が現在実行中の通信処理(図4)の発端としてアプリケーション160が発行した送信コマンドSC(第1の送信コマンド)を、端末10が過去に実行した通信処理(図4)の発端としてアプリケーション160が発行した送信コマンドSCと区別しているに過ぎない。
ステップS3では、上位通信モジュール181は、スプーラー171に対してgetSchemas()を呼び出すための関数をコールする。つまり、上位通信モジュール181は、スプーラー171に対する、USB Bidi Extender184のgetSchemas()の呼び出し要求を行う。また、このような要求を、応答データRDの取得要求とも言う。
ステップS4では、スプーラー171は、上位通信モジュール181がコールする関数に応じて、USB Bidi Extender184のgetSchemas()を呼び出す。getSchemas()の呼び出しにより、CPU16は受信制御部186として機能することとなる。
ステップS5では、受信制御部186は、応答データRDをプリンター200から取得するための処理を行う。
図5は、受信制御部186がステップS5で実行する処理を示すフローチャートである。なお、受信制御部186は、後述するステップS13でも当該図5に示すフローチャートを実行する。ステップS51では、受信制御部186は、プリンター200が送信する(ステップS6)応答データRDを、USBIF20を介して取得する。
ステップS52では、受信制御部186は、ステップS51においてプリンター200からの応答データRDの取得に成功したか否かを判定する。応答データRDを取得、つまりプリンター200から応答データRDを受信できた場合(ステップS52:Yes)はステップS53へ進む。ステップS53では、受信制御部186は、受信した応答データRDを識別情報IDとともに、記憶部(例えばRAM18)の対応する記憶領域(応答データ格納領域)に格納する。受信制御部186により応答データRDが格納される応答データ格納領域のアドレスは、拡張機能部183のXMLファイルに定義されている。
一方、プリンター200からの応答データRDの取得に成功しなかった場合(ステップS52:No)、受信制御部186は、ステップS53を実行することなく、図5に示すフローチャートを終了する。プリンター200は、端末10から送信された送信コマンドSCへの応答として、応答データRDを生成して返す。ステップS1で送信コマンドSCが発行されて以降、ステップS5の段階では、この送信コマンドSCは未だプリンター200に送信されていない。従って、ステップS5の段階では、実際にはプリンター200から応答データRDは送信されず(ステップS6は発生せず)、ステップS52において“No”の判定をすることになる。
ここで、ステップS53の詳細を説明しておく。
図6は、応答データ格納領域の位置を説明するための図である。拡張機能部183のXMLファイルにより、応答データRDが対応する送信コマンドSCの種別に応じて応答データ格納領域が指定されている。図6の例では、送信コマンドSCの種別、例えば、第1種別の送信コマンドSC1、第2種別の送信コマンドSC2、第3種別の送信コマンドSC3…毎に、RAM18の記憶領域内に応答データ格納領域18a,18b,18c…といった各領域が確保されている。ステップS53では、受信制御部186は、拡張機能部183のXMLファイルを参照することにより、前記ステップS51で受信した応答データRDを、その応答データRDが対応する送信コマンドSCの種別に応じた応答データ格納領域に格納する。なお、受信制御部186等は、応答データRDが対応する送信コマンドSCの種別については、例えば、応答データRDの内容と送信コマンドSCの種別との対応付けを予めしている拡張機能部183のXMLファイルを参照することにより、判別することができる。
ステップS53では、受信制御部186は、応答データRDに上述したように識別情報IDを付加し、識別情報IDを付加した応答データRDを応答データ格納領域に格納する。識別情報IDを応答データRDに付加するとは、識別情報IDと応答データRDとを一対一で対応付けるという意味である。受信制御部186は、ステップS53を実行する度に異なる識別情報IDを生成し、そのとき応答データ格納領域へ格納する応答データRDに付加する。受信制御部186は、例えば、ステップS53の度に乱数を発生させることによりユニークな識別情報IDを生成することができる。あるいは、受信制御部186は、予め定められた規則に従ってユニークな識別情報IDを生成してもよい。ステップS53では、受信制御部186は、識別情報IDを付加した応答データRDを、対応する応答データ格納領域に格納する際、それまで当該応答データ格納領域に記憶されていた情報(応答データRDおよび識別情報ID)に上書きする。
ステップS7(図4)では、上位通信モジュール181は、応答データRDおよび応答データRDに付加されている識別情報IDを取得する。つまり、上位通信モジュール181は、応答データRDおよび識別情報IDが格納されている参照先の応答データ格納領域を、ステップS2で記憶した送信コマンドSCの種別に従って特定し、当該特定した応答データ格納領域から応答データRDおよび識別情報IDを取得する。このような参照先の応答データ格納領域の特定は、例えば、拡張機能部183に記憶されている格納領域規定テーブルRTを用いて行われる。
図7は、ステップS7(および後述のステップS15)で用いる格納領域規定テーブルRTを例示している。格納領域規定テーブルRTには、送信コマンドSCの種別(例えば、第1種別の送信コマンドSC1、第2種別の送信コマンドSC2、第3種別の送信コマンドSC3…)毎に、参照先の応答データ格納領域を特定可能な格納領域特定情報が記憶されている。格納領域特定情報としては、例えば、参照先の応答データ格納領域をXMLファイルで定義したスキーマ名称(スキーマ名称1,2,3…)や、この応答データ格納領域をXMLファイルで間接的に示す定義名称を用いることができる。これ以外にも、応答データ格納領域の先頭アドレス等を用いるものであってもよい。上位通信モジュール181はステップS2で記憶した送信コマンドSCの種別をもとに、格納領域規定テーブルRTから応答データ格納領域の格納領域特定情報を取得し、格納領域特定情報に対応する応答データ格納領域から応答データRDおよび識別情報IDを取得する。むろん、ステップS53(図5)において、受信制御部186は、応答データRDおよび識別情報IDを応答データ格納領域へ格納する際に、格納領域規定テーブルRTを参照して格納先の応答データ格納領域を特定することができる。
このようにステップS7で上位通信モジュール181が取得した識別情報IDは、第1の送信コマンドの送信要求を行う前に記憶部(RAM18)から取得した応答データに付加されている識別情報、に該当する。また、ステップS7で上位通信モジュール181が取得した識別情報IDは、端末10が現在実行中の通信処理(図4)よりも過去に、受信制御部186がプリンター200から取得した応答データRDに付加して記憶部(RAM18)内の応答データ格納領域に応答データRDとともに格納した識別情報である。
次に、ステップS8では、上位通信モジュール181は、スプーラー171に対してsetSchema()を呼び出すための関数をコールするとともに、アプリケーション160から取得した(ステップS1で発行された)送信コマンドSCを送信する。つまり、上位通信モジュール181は、スプーラー171に対する、USB Bidi Extender184のsetSchema()の呼び出し要求を行う。このような要求は、送信コマンドSCの送信要求に該当する。
ステップS9では、スプーラー171は、上位通信モジュール181がコールする関数により、USB Bidi Extender184のsetSchema()を呼び出し、送信コマンドSCをsetSchema()の引数として設定する。setSchema()の呼び出しにより、CPU16は送信制御部185として機能することになる。
ステップS10では、送信制御部185は、USBポートモニター172を制御し、送信コマンドSCをプリンター200に送信する。USBポートモニター172の機能により送信コマンドSCはUSBIF20を介してプリンター200に送信される。プリンター200はUSBIF20を介して送信コマンドSCを受信すると、送信コマンドSCを解釈し、送信コマンドSCに対応する応答データRDを生成する。
ステップS8の後に、上位通信モジュール181は、ステップS11を実行する。また、ステップS11を起因として、ステップS12,S13が実行される。ステップS11,S12,S13は、上述のステップS3,S4,S5と同じ処理である。
上述したように、受信制御部186は、ステップS13においても図5のフローチャートを実行する。ステップS13の段階では、上位通信モジュール181は、ステップS1で発行された送信コマンドSCについての送信要求(ステップS8)を実行済みである。従って、ステップS13で実行する図5のフローチャートにおいては、ステップS51で、プリンター200が送信する(ステップS14)応答データRDを、USBIF20を介して取得できる可能性が高い。
次に、ステップS15では、上位通信モジュール181は、応答データRDおよび応答データRDに付加されている識別情報IDを取得する。ステップS15は、ステップS7と同じ処理である。ステップS15で応答データRDおよび識別情報IDを取得するための参照先の応答データ格納領域は、ステップS7で応答データRDおよび識別情報IDを取得するために参照した応答データ格納領域と同じである。ただし、ステップS15で応答データRDおよび識別情報IDを取得するための参照先の応答データ格納領域は、前記ステップS13により、格納する応答データRDおよび識別情報IDが更新(上書き)されている可能性が高い。ステップS15で上位通信モジュール181が取得した識別情報IDは、第1の送信コマンドの送信要求を行った後に記憶部(RAM18)から取得した応答データに付加されている識別情報、に該当する。また、ステップS15で上位通信モジュール181が取得した応答データRDは、第1の送信コマンドの送信要求を行った後に記憶部(RAM18)から取得した応答データ、に該当する。
ステップS16では、上位通信モジュール181は、応答データRDをアプリケーション160へ送信するための処理を行う。
図8は、ステップS16において上位通信モジュール181が実行する処理を示すフローチャートである。上位通信モジュール181は、ステップS7で取得した識別情報ID(以下、事前取得の識別情報ID)と、ステップS15で取得した識別情報ID(以下、直近取得の識別情報ID)とを比較し、当該比較に基づいて、ステップS15で取得した応答データRDが、ステップS1で発行された送信コマンドSCに対応する応答データRDであるか否かを判定する。具体的には、ステップS161において、事前取得の識別情報IDと直近取得の識別情報IDとが相違するか否か判定し、判定結果に応じて処理を分岐する。
上位通信モジュール181は、事前取得の識別情報IDと直近取得の識別情報IDとが相違する場合は(ステップS161:Yes)、ステップS15で取得した応答データRDが、ステップS1で発行された送信コマンドSCに対応すると判定し、ステップS162へ進む。つまり、直近取得の識別情報IDが事前取得の識別情報IDから変化していれば、送信コマンドSCの送信(ステップS8〜S10)後の応答データRDの取得要求(S11)を契機としたステップS13(ステップS13で実行する図5のフローチャートにおけるステップS53)で、当該送信コマンドSCの種別に対応する応答データRDが更新されたことになるため、ステップS1で発行された送信コマンドSCに対応する応答データRDをステップS15で取得できたと判定することができる。
ステップS162では、上位通信モジュール181は、ステップS15で取得した応答データRDを、アプリケーション160へ送信する。この結果、アプリケーション160は、ステップS1で発行した送信コマンドSCに対応してプリンター200が生成した応答データRDを得たことになる。
一方、上位通信モジュール181は、事前取得の識別情報IDと直近取得の識別情報IDとが同じである場合は(ステップS161:No)、ステップS15で取得した応答データRDが、ステップS1で発行された送信コマンドSCに対応していない(送信コマンドSCの送信前から記憶されている応答データRDがまだ更新されていない)と判定できるため、ステップS11へ戻る。ステップS11へ戻ることで、上位通信モジュール181は、スプーラー171(受信制御部186)に対して再度、応答データRDの取得要求をすることになる。つまり、ステップS11〜S16が繰り返される。ステップS11〜S16を繰り返すことで、最終的には、アプリケーション160がステップS1で発行した送信コマンドSCに対応する応答データRDを、アプリケーション160へ返すことができる。
なお、ステップS7では、上位通信モジュール181は、ステップS2で記憶した送信コマンドSCの種別に対応する応答データ格納領域から応答データRDおよび識別情報IDを取得しようとしたとき、この応答データ格納領域が空である場合は応答データRDおよび識別情報IDを取得できない。この場合、上位通信モジュール181は、ステップS2で記憶した送信コマンドSCの種別に対応する応答データ格納領域から、応答データ格納領域が空であることを示す空データ(Null値)を得るだけである。上位通信モジュール181は、ステップS7で空データを取得した場合は、ステップS16を実行するための便宜上、当該空データを事前取得の識別情報IDとみなす。このようにすれば、ステップS161(図8)では、事前取得の識別情報IDと直近取得の識別情報IDとが相違する(ステップS161:Yes)と判定することができる。つまり、上位通信モジュール181は、第1の送信コマンドの送信要求を行う前に記憶部(RAM18)から空データを取得した場合には、第1の送信コマンドの送信要求を行った後に記憶部(RAM18)から取得した応答データが第1の送信コマンドに対応する応答データであると判定する。
ステップS15においても、実行のタイミング如何では、ステップS7と同様に、ステップS2で記憶した送信コマンドSCの種別に対応する応答データ格納領域から応答データRDおよび識別情報IDを取得しようとしたとき、この応答データ格納領域から空データを取得することが有り得る。上位通信モジュール181は、ステップS15で空データを取得した場合は、ステップS16を実行するための便宜上、当該空データを直近取得の識別情報IDとみなす。この場合、事前取得の識別情報ID、直近取得の識別情報IDのいずれも空データであるため、ステップS161(図8)では、事前取得の識別情報IDと直近取得の識別情報IDとが同じ(ステップS161:No)と判定することになる。ただし、ステップS161において“No”と判定した場合は、ステップS11〜S16が繰り返されるため、最終的には、アプリケーション160がステップS1で発行した送信コマンドSCに対応する応答データRDを、アプリケーション160へ返すことができる。
4.まとめ:
このように本実施形態によれば、通信制御部(上位通信モジュール181)は、第1の送信コマンド(ステップS1で発行された送信コマンドSC)の送信要求を行う前に記憶部(RAM18)から取得した応答データRDに付加されている識別情報(事前取得の識別情報ID)と、第1の送信コマンドの送信要求を行った後に記憶部から取得した応答データRDに付加されている識別情報(直近取得の識別情報ID)との比較に基づいて、第1の送信コマンドの送信要求を行った後に記憶部から取得した応答データRDが第1の送信コマンドに対応するか否かを判定する。これにより、第1の送信コマンドに対応していない応答データRDを、誤って第1の送信コマンドに対応する応答データRDと判定し第1の送信コマンドに対応する応答データRDとして処理してしまうことを回避できる。具体的には、例えば、第1の送信コマンドよりも過去にアプリケーション160が発行した送信コマンドに対応してプリンター200が生成し端末10へ送信した応答データRDを、第1の送信コマンドの発行後に当該第1の送信コマンドに対応する応答データRDの送信を待っているアプリケーション160へ送信してしまう、といったことを回避できる。
また本実施形態によれば、受信制御部186は、プリンター200から取得した応答データRDを、当該応答データRDが対応する送信コマンドSCの種別に応じた記憶部(RAM18)の領域(応答データ格納領域)に格納し、通信制御部(上位通信モジュール181)は、第1の送信コマンドの種別に対応する記憶部の領域(応答データ格納領域)から応答データRDを取得する。当該構成によれば、上位通信モジュール181は、第1の送信コマンドと種別が異なる送信コマンドに対応して記憶部に格納されている応答データRDを、第1の送信コマンドに対応する可能性のある応答データRDとして記憶部から取得することを回避できる。また、受信制御部186は、ある送信コマンドの種別に対応して記憶部に記憶されている応答データRDを、他の種別の送信コマンドの送信に応じてプリンター200から返信された応答データRDにより上書きしてしまうことを回避することができる。
また本実施形態は、取得した応答データRDが第1の送信コマンドに対応する応答データRDであるか否かの判定において、上述したように事前取得の識別情報IDと直近取得の識別情報IDとが相違するか否かという判定基準を用いることで、次のような優位性を有する。
送信コマンドと応答データとの対応・不対応を判定するために、例えば、送信コマンドの送信要求を行ったときの時刻(送信時刻)と、応答データをプリンターから受信したときの時刻(受信時刻)とを管理し、送信時刻よりも受信時刻の方が後であれば、当該受信時刻に受信した応答データが、当該送信時刻にかかる送信コマンドに対応すると判定する構成が考えられる。ここで、サーバーが管理するプリンターを、当該サーバーが接続するネットワーク(例えばLAN)に参加する複数のクライアント端末が共同使用する構成(印刷制御装置が、クライアント端末とサーバーを含むシステムである場合)を想定する。当該構成では、上述の送信時刻は、送信コマンドを発するクライアント端末が記憶し、上述の受信時刻は、サーバーが記憶することになる。
このような場合、クライアント端末が時間を認識する基準(クライアント端末が内蔵する時計)と、サーバーが時間を認識する基準(サーバーが内蔵する時計)とにずれがあると、上述したような送信時刻と受信時刻との前後関係に基づく判定を正確に行えないことがある。例えば、現実の時系列では送信時刻よりも受信時刻の方が後であるにも関わらず、クライアント端末が認識する送信時刻が、サーバーが認識する受信時刻よりも後であるために、応答データは送信コマンドに対応しないという判定結果になることがある。本実施形態は、送信コマンドと応答データとの対応・不対応を、事前取得の識別情報IDと直近取得の識別情報IDとの相違の有無に基づいて行うため、上述したような各処理の時刻の前後関係に基づく判定をする場合に生じ得る誤判定を、避けることができる。
10…端末、11…ディスプレイ、12…操作キー、13…ビデオカード、15…バス、16…CPU、17…外部記憶装置、18…RAM、18a,18b,18c…応答データ格納領域、19…ROM、20…USBIF、160…アプリケーション、170…OS、171…スプーラー、172…USBポートモニター、180…プリンタードライバー、181…上位通信モジュール、182…グラフィックスモジュール、183…拡張機能部、184…USB Bidi Extender、185…送信制御部、186…受信制御部、200…プリンター、ID…識別情報、SC…送信コマンド、RD…応答データ

Claims (8)

  1. プリンターと通信する通信部と、
    前記プリンターを送信対象とする送信コマンドの送信要求を行う通信制御部と、
    記憶部と、
    前記送信要求に応じて、前記送信コマンドを前記通信部を介して前記プリンターに送信する送信制御部と、
    前記送信コマンドに対応した応答データを前記通信部を介して前記プリンターから取得し、取得した前記応答データに識別情報を付加し、当該識別情報を付加した前記応答データを前記記憶部に格納する受信制御部と、を有し、
    前記通信制御部は、第1の送信コマンドの送信要求を行う前に前記記憶部から取得した応答データに付加されている識別情報と、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データに付加されている識別情報との比較に基づいて、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データが前記第1の送信コマンドに対応するか否かを判定する、ことを特徴とする印刷制御装置。
  2. 前記受信制御部は、前記プリンターから取得した前記応答データを、当該応答データが対応する送信コマンドの種別に応じた前記記憶部の領域に格納し、
    前記通信制御部は、前記第1の送信コマンドの種別に対応する前記記憶部の領域から前記応答データを取得することを特徴とする請求項1に記載の印刷制御装置。
  3. 前記通信制御部は、前記第1の送信コマンドの送信要求を行う前に前記記憶部から取得した応答データに付加されている識別情報と、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データに付加されている識別情報とが相違する場合に、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データが前記第1の送信コマンドに対応する応答データであると判定することを特徴とする請求項1または請求項2に記載の印刷制御装置。
  4. 前記通信制御部は、前記第1の送信コマンドの送信要求を行う前に前記記憶部から取得した応答データに付加されている識別情報と、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データに付加されている識別情報とが同じである場合に、前記受信制御部に前記プリンターからの応答データの取得を再度要求することを特徴とする請求項1〜請求項3のいずれかに記載の印刷制御装置。
  5. 前記通信制御部は、前記第1の送信コマンドの送信要求を行う前に前記記憶部から空データを取得した場合には、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データが前記第1の送信コマンドに対応する応答データであると判定することを特徴とする請求項1〜請求項4のいずれかに記載の印刷制御装置。
  6. 前記通信部は、USB規格に対応するインターフェイスであることを特徴とする請求項1〜請求項5のいずれかに記載の印刷制御装置。
  7. 前記通信制御部からの要求に応じて拡張機能を呼び出すスプーラーを有し、
    前記送信制御部と前記受信制御部とは前記スプーラーにより読み出されて実行されることを特徴とする請求項1〜請求項6のいずれかに記載の印刷制御装置。
  8. コンピューターにプリンターを制御させる印刷制御プログラムであって、
    前記コンピューターに、
    前記プリンターを送信対象とする送信コマンドの送信要求を行う通信制御機能と、
    前記送信要求に応じて、前記送信コマンドを通信部を介して前記プリンターに送信する送信制御機能と、
    前記送信コマンドに対応した応答データを前記通信部を介して前記プリンターから取得し、取得した前記応答データに識別情報を付加し、当該識別情報を付加した前記応答データを記憶部に格納する受信制御機能と、実現させ、
    前記通信制御機能は、第1の送信コマンドの送信要求を行う前に前記記憶部から取得した応答データに付加されている識別情報と、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データに付加されている識別情報との比較に基づいて、前記第1の送信コマンドの送信要求を行った後に前記記憶部から取得した応答データが前記第1の送信コマンドに対応するか否かを判定する、ことを特徴とする印刷制御プログラム。
JP2016083231A 2016-04-18 2016-04-18 印刷制御装置および印刷制御プログラム Active JP6680060B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016083231A JP6680060B2 (ja) 2016-04-18 2016-04-18 印刷制御装置および印刷制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016083231A JP6680060B2 (ja) 2016-04-18 2016-04-18 印刷制御装置および印刷制御プログラム

Publications (2)

Publication Number Publication Date
JP2017194758A true JP2017194758A (ja) 2017-10-26
JP6680060B2 JP6680060B2 (ja) 2020-04-15

Family

ID=60156467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016083231A Active JP6680060B2 (ja) 2016-04-18 2016-04-18 印刷制御装置および印刷制御プログラム

Country Status (1)

Country Link
JP (1) JP6680060B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271527A (ja) * 1994-03-31 1995-10-20 Canon Inc プリンタ装置及びプリンタシステム及びその制御方法
JP2003345743A (ja) * 2002-05-29 2003-12-05 Seiko Epson Corp ネットワークにおける通信
JP2011039948A (ja) * 2009-08-18 2011-02-24 Ricoh Co Ltd 印刷システム,プリンタドライバ,および印刷装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271527A (ja) * 1994-03-31 1995-10-20 Canon Inc プリンタ装置及びプリンタシステム及びその制御方法
JP2003345743A (ja) * 2002-05-29 2003-12-05 Seiko Epson Corp ネットワークにおける通信
JP2011039948A (ja) * 2009-08-18 2011-02-24 Ricoh Co Ltd 印刷システム,プリンタドライバ,および印刷装置

Also Published As

Publication number Publication date
JP6680060B2 (ja) 2020-04-15

Similar Documents

Publication Publication Date Title
US9442678B2 (en) Information processing apparatus, information processing system and non-transitory computer-readable information recording medium
US20130235422A1 (en) Printing system and method thereof
US9195976B2 (en) Device, charging method, and system
US8817281B2 (en) Print setting server, document processing server, print system, and print setting method
KR101959862B1 (ko) 사용자 디바이스 브라우저와 로컬 디바이스 사이의 통신을 가능하게 하는 방법
EP2423812A1 (en) Device and help server
US9300824B2 (en) Method and image forming apparatus to generate user interface screen to be displayed to user accessing the image forming apparatus
US20080151277A1 (en) Image forming control apparatus and control method thereof
US10681232B2 (en) Image processing apparatus, method for controlling the same, and storage medium
US8869247B2 (en) Apparatus, system, and non-transitory computer readable medium storing program
US9311036B2 (en) Data processing system and method of data processing
JP2012245695A (ja) 画像出力装置、プログラムおよびシステム
US10455101B2 (en) Server, image processing unit, and non-transitory recording medium for displaying error screen
US20160274845A1 (en) Print control apparatus and computer-readable recording medium
US20140029051A1 (en) Device controlling apparatus, device apparatus, and control program
KR20120017263A (ko) 단말기에서 실행되는 위젯 어플리케이션의 콘텐츠를 인쇄하는 화상형성시스템
US20130185318A1 (en) Data providing apparatus, electronic apparatus, data processing system, and method of data processing
US20140092405A1 (en) Image forming control apparatus and control method thereof
US10592180B2 (en) Information processing device, information processing method, and recording medium
JP6680060B2 (ja) 印刷制御装置および印刷制御プログラム
US9836677B2 (en) Print controlling apparatus and computer-readable recording medium storing print control program
EP2645231A2 (en) User terminal apparatus, method of controlling user terminal apparatus, image forming apparatus, and method of controlling image forming apparatus
US20210342106A1 (en) Program, method, and device for generating job data
US9894239B2 (en) Communication apparatus, communication method, and non-transitory computer readable medium controlling a write process to a plurality of destinations
JP2023056955A (ja) 情報処理装置、情報処理装置の制御方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190411

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200130

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200302

R150 Certificate of patent or registration of utility model

Ref document number: 6680060

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150