以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できる。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更することができる。
本実施形態では、パーソナルコンピュータ(以下、「PC」と表記する)50にインストールされて実行されるドライバプログラム66(図2(B))を説明する。
ドライバプログラム66がインストールされるPC50は、種々の手段によってプリンタ10と通信可能にされる。具体的には、PC50は、図1(A)に示されるように、PC70とともにネットワーク11に接続されている。また、PC70は、ネットワーク11を介してプリンタ10と通信可能となっている。なお、PC70には、自身に接続されるプリンタ10をネットワーク11内で共有し、PC50からプリンタ10を利用可能なプリンタ共有が設定されており、所謂サーバとして機能する。以下では、PC70によって管理されるプリンタ10を共有プリンタ10と表記する。一方、PC50は、PC70を介してプリンタ10と通信可能であり、所謂クライアントとして機能する。
また、PC50は、図1(B)に示されるように、プリンタ10がケーブル12を介してローカル接続されたPC70にネットワーク接続され、PC70を通じてプリンタ10と通信可能に接続される。図1(A)と同様に、図1(B)においても、PC70には、プリンタ共有が設定されており、PC50からプリンタ10を利用可能となっている。
また、PC50は、図1(C)に示されるように、ネットワーク11やケーブル12を用いてプリンタ10と接続され、ネットワーク11やケーブル12を通じてプリンタ10と通信を行う。なお、ケーブル12は、USBケーブルやパラレルケーブルなどである。また、PC50は、有線LANによってネットワーク接続されていてもよいし、無線LANによってネットワーク接続されていてもよい。また、PC50は、不図示のアクセスポイントを経由して、Wi-Fi(Wi-Fi Allianceの登録商標)などによってネットワーク11に接続されてもよい。
PC70は、例えば、PC50から受信した印刷ジョブからプリンタ10がプリントしたシートの枚数(以下、プリント枚数と表記)を取得し、プリント枚数に応じた使用金額を算出する管理機能を備えている。PC70を用いてのプリンタ10の管理は、例えばメーカが行う。すなわち、メーカが管理するプリンタ10がユーザに提供される。
メーカは、例えば、プリンタ10と、ドライバプログラム66とのセットをユーザに提供する。或いは、メーカは、プリンタ10と、ドライバプログラム66と、PC70にインストール可能なプログラム(不図示)とのセットをユーザに提供する。ドライバプログラム66は、例えば、プリンタ10に同梱されたCD-ROM等の形式で提供されてもよいし、メーカのWEBサイトを通じてダウンロード可能にされてもよい。
本実施形態では、プリンタ10との接続手段や、PC70の有無などに応じて、後述の先行コマンドをプリンタ10に適切に入力可能なドライバプログラム66を説明する。
プリンタ10は、図2(A)に示されるように、電源部26と、動作部20と、ディスプレイ23と、入力インタフェース(以下、I/Fと表記する)24と、通信インタフェース(以下、I/Fと表記する)25と、制御部30とを主に備える。プリンタ10を構成する各構成要素は、不図示の通信バスを通じて相互に接続されている。本実施形態では、インクジェット方式のプリンタ10を例として説明するが、プリンタ10は、インクジェット方式に限定されず、電子写真方式などの公知の他の方式であってもよい。
電源部26は、電源プラグを通じて外部電源から供給された電力を、プリンタ10の各構成要素に供給する。より詳細には、電源部26は、外部電源から取得した電力を、動作部20に駆動電力(例えば、直流24V)として出力し、制御部30に制御電力(例えば、直流5V)として出力する。また、図示は省略するが、電源部26は、ディスプレイ23、入力I/F24、及び通信I/F25にも電力を供給している。電源部26は、例えば、商用交流電圧を直流電圧に変換するAC/DCコンバータと、AC/DCコンバータが出力する直流電圧を所定の直流電圧に降圧するスイッチングレギュレータなどのDC/DCコンバータとを有する。
また、電源部26は、制御部30から出力される駆動信号に基づいて、駆動状態と休眠状態とに切り替えが可能である。より詳細には、制御部30は、AC/DCコンバータやDC/DCコンバータが備えるスイッチング素子を駆動させる駆動信号を出力することによって、休眠状態にある電源部26を駆動させて駆動状態にする。
駆動状態とは、動作部20に駆動電力を出力している状態である。換言すれば、駆動状態とは、動作部20が動作可能な状態である。休眠状態とは、動作部20に駆動電力を出力していない状態である。換言すれば、休眠状態とは、動作部20が動作不能な状態である。一方、電源部26は、駆動状態であるか休眠状態であるかに拘わらず、制御部30に制御電力を出力している。また、図示は省略するが、入力I/F24は、電源部26が駆動状態であるか休眠状態であるかに拘わらず、ユーザ操作に応じた操作信号を出力することができる。また、通信I/F25は、電源部26が駆動状態であるか休眠状態であるかに拘わらず、外部装置から情報を受信することができる。
動作部20は、制御部30の指示に従ってプリント動作及びプリント前動作を実行する。プリント動作は、シートに画像をプリントする動作である。プリント前動作は、プリント動作で所定品質の画像をシートにプリントするために、プリント動作に先立って実行される動作である。プリント動作及びプリント前動作の詳細は、後述する。動作部20は、図1に示されるように、搬送部21と、吐出部22とを主に備える。
搬送部21は、不図示の給送トレイに支持されたシートを搬送方向に搬送する。搬送部21は、例えば、不図示のモータの駆動力が伝達されて回転する複数のローラによって構成される。モータによって回転されるローラは、給送トレイに支持されたシートを吐出部22に対面する位置まで搬送し、吐出部22によって画像がプリントされたシートをプリンタ10の外部に排出する。プリンタ10は、複数の給送トレイを備えることができる。
吐出部22は、搬送部21によって搬送されたシートに対面し得る位置において、搬送方向と直交する主走査方向に移動する。吐出部22は、不図示のモータの駆動力が伝達されることによって、主走査方向に移動する。吐出部22の下面には、複数のノズルが形成されたノズル面が形成されている。吐出部22は、ノズルからインク滴を吐出する。
吐出部22が主走査方向に移動する過程で吐出したインクがシートに着弾することによって、シートに画像がプリントされる。吐出部22が主走査方向の一方から他方に移動する過程において、吐出部22から吐出されたインクが着弾し得るシート上の領域を「プリント領域」と表記する。シートは、複数のプリント領域に区画される。そして、吐出部22は、後述するプリント動作において、複数のプリント領域それぞれに対して順番に画像をプリントする。
ディスプレイ23は、液晶ディスプレイ、有機ELディスプレイ等であり、各種情報を表示する表示面を備える。
入力I/F24は、ユーザによる入力操作を受け付けるユーザインタフェースである。具体的には、入力I/F24はボタンを有しており、押下されたボタンに対応づけられた各種の操作信号をCPU31へ出力する。さらに、入力I/F24は、ディスプレイ23の表示面に重畳された膜状のタッチセンサを有していてもよい。ディスプレイ23の表示面に表示されたオブジェクトを指定する操作、文字列或いは数字列を入力する操作は、ユーザ操作の一例である。「オブジェクト」とは、例えば、ディスプレイ23に表示された文字列、アイコン、ボタン、リンク等である。
タッチセンサとして実現される入力I/F24は、ユーザがタッチした表示面上の位置を示す位置情報を出力する。なお、本明細書中における「タッチ」とは、入力媒体を表示面に接触させる操作全般を含む。また、入力媒体が表示面に触れていなくても、表示面との間の距離がごく僅かな位置まで入力媒体を近接させることを、前述の「タッチ」の概念に含めてもよい。さらに入力媒体とは、ユーザの指であってもよいし、タッチペン等であってもよい。ディスプレイ53に表示されたアイコンの位置のタップするユーザ操作は、当該アイコンを指定する指定操作の一例である。
通信I/F25は、ネットワーク11やケーブル12を通じてPC70やPC50と通信可能なインタフェースである。すなわち、プリンタ10は、通信I/F25を通じてPC70やPC50に各種情報を送信し、通信I/F25を通じてPC70やPC50から各種情報を受信する。通信I/F25は、例えば、Wi-Fi(Wi-Fi Allianceの登録商標)に従った通信手順で、ネットワーク11の不図示のアクセスポイントに無線信号を送信及び受信するものであってもよいし、LANケーブルや、USBケーブルなどのケーブル12が接続されるインタフェースであってもよい。
制御部30は、プリンタ10の全体動作を制御するものである。制御部30は、図2(A)に示されるように、CPU31、ROM32、RAM33、EEPROM34、ASIC35を主とするマイクロコンピュータである。
ROM32には、CPU31がプリンタ10の動作を制御するためのプログラムが格納される。RAM33は、CPU31がプログラムを実行する際に用いる各種データを一時的に記録する記憶領域又は作業領域として使用される。EEPROM34には、電源オフ後も保持すべき設定やフラグ等が格納される。CPU31は、プログラムをROM32から読み出して実行することにより、プリンタ10の動作を制御する。ASIC35には、搬送部21と、吐出部22と、ディスプレイ23と、入力I/F24と、通信I/F25とが接続されている。ASIC35は、CPU31の指示に従ってプリンタ10の各構成要素を動作させる。
ROM32、RAM33、EEPROM34は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。後述する情報処理端末50のメモリ62についても同様である。
EEPROM34には、プリンタ10の装置情報が記憶されている。装置情報は、プリンタ10のモデル名、シリアルナンバー、及びMACアドレスや、復帰時間情報が記憶されている。
復帰時間情報は、プリンタ10が待機状態からプリント実行可能状態に移行した後から、プリントデータが入力しなかった場合に待機状態に戻るまでの復帰時間T1を示す情報であり、EEPROM34に予め記憶される。プリンタ10の待機状態とは、電源部26が休眠状態であり、吐出部22のノズルが不図示のキャップに覆われた状態である。プリンタ10のプリント実行可能状態とは、電源部26が駆動状態であり、吐出部22のノズルがキャップに覆われていない状態である。
ASIC35は、モータへ駆動信号を出力する。モータが回転すると、搬送部21はシートを搬送し、吐出部22は主走査方向に移動する。ASIC35は、ピエゾ素子等の駆動素子へ駆動信号を出力する。駆動素子が振動すると、吐出部22はノズルからインク滴を吐出する。ASIC35は、ディスプレイ23へ画像信号を出力し、ディスプレイ23に画面を表示させる。ASIC35は、入力I/F24から出力される操作信号を取得する。ASIC35は、通信I/F25を通じて外部装置から情報を受信し、通信I/F25を通じて外部装置に情報を送信する。
PC50は、図2(B)に示されるように、ディスプレイ53と、入力I/F54と、通信I/F55と、CPU61と、メモリ62と、通信バス63とを主に備える。情報処理端末50に含まれるディスプレイ53、入力I/F54、通信I/F55、CPU61は、プリンタ10に含まれるディスプレイ23、入力I/F24、通信I/F25、CPU31と同様の構成であるので、説明は省略する。CPU61及びメモリ62は、コントローラの一例である。
PC50は、例えば、携帯電話、スマートフォン、タブレット端末等であってもよい。PC50は、コンピュータの一例である。PC50の入力I/F54は、例えば、マウス及びキーボードの組み合わせであってもよい。この場合において、ディスプレイ53に表示されたアイコンなどのオブジェクトの位置にマウスポインタを移動させてクリックするユーザ操作は、当該オブジェクトを指定する指定操作の一例である。
メモリ62は、例えば、RAM、ROM、EEPROM、HDD、PC50に着脱されるUSBメモリ等の可搬記憶媒体、CPU61が備えるバッファ等、或いはそれらの組み合わせによって構成される。メモリ62は、プログラム記憶領域62A(以下、「領域62A」と表記する)と、データ記憶領域62B(以下、「領域62B」と表記する)とを有する。領域62Aには、OS64と、ドライバプログラム66とがインストールされている。領域62Aに記憶される各プログラムは、単一のプログラムであってもよいし、複数のプログラムの集合体であってもよい。領域62Bには、各プログラムの実行に必要なデータ或いは情報が記憶される。
本実施形態では、Windows(Microsoft Corporationの登録商標) Operating SystemをOS64の具体例として説明するが、OS64の具体例はこれに限定されず、例えば、Android(Google inc.の登録商標) OS、iOS(Cisco Systems,Inc.の登録商標)等であってもよい。
ドライバプログラム66は、OS64から受け付けたプリント指示情報に従って、プリンタ10にプリント処理を実行させるためのプログラムである。ドライバプログラム66は、単一のモデルのプリンタ10に対してのみプリント処理を指示可能であってもよいし、複数のモデルのプリンタ10に対してプリント処理を指示可能であってもよい。
ドライバプログラム66には、OS64によって指定された複数の関数が定義されている。そして、ドライバプログラム66は、複数の関数がOS64によって所定の順序で呼び出されることによって、プリンタ10にプリント動作を実行させることができる。本実施形態に係るプリント指示情報は、例えば、所定の定数を引数として、ドライバプログラム66に定義された関数がOS64によって呼び出されたことを指す。
領域62Bは、第1領域62Cと、第2領域62Dとを含む。第1領域62Cは、例えば、OS64に関する基本情報、或いはドライバプログラムの設定情報のデータベースである所謂レジストリである。
第1領域62Cは、条件情報を記憶している。条件情報は、プリンタ10に実行させるプリント動作の実行条件を示すための情報である。条件情報は、セキュアフラグ及び認証情報を含む。
条件情報は、ドライバプログラム66がインストールされたタイミングで第1領域62Cに記憶される。また、ドライバプログラム66は、第1領域62Cに記憶された条件情報をユーザの指示に従って変更することができる。より詳細には、ドライバプログラム66は、OS64からの参照指示に従って第1領域62Cから条件情報を読み出し、読み出した条件情報をディスプレイ53に表示させる。次に、ドライバプログラム66は、条件情報を変更するユーザ操作を入力I/F54を通じて受け付けたことに応じて、第1領域62Cに記憶された条件情報を変更後の条件情報で上書きする。
セキュアフラグは、所謂セキュアプリントをプリンタ10に実行させるか否かを示す情報である。セキュアフラグには、セキュアプリントを実行させる指示に対応する「ON」、或いはセキュアプリントを実行させない指示に対応する「OFF」が設定される。認証情報は、ユーザによって指定されたPINである。認証情報には、セキュアフラグに「ON」が設定される場合にのみ、有効な値が設定される。
セキュアプリントとは、有効な認証情報の入力をトリガとして開始されるプリント動作を指す。すなわち、プリンタ10は、セキュアプリントの実行を指示するプリント実行情報を受信したことに応じて直ちにプリント動作を開始せず、入力I/F24を通じて認証情報の入力を受け付けたことに応じてプリント動作を開始する。
また、領域62Bは、1以上のキュー領域を含む。キュー領域は、プリンタ10に送信すべき情報が記憶されるメモリ領域である。キュー領域は、プリンタ10を特定する所謂印刷ポートに対応付けられている。ドライバプログラム66には、例えば、情報を記憶させるべきキュー領域が、関数の引数としてOS64から指定される。以下、ドライバプログラム66に対して指定されたキュー領域を、「指定キュー」と表記することがある。
キュー領域には、各種動作の実行をプリンタ10に指示するための情報が記憶される。より詳細には、キュー領域には、図3(A)に示される先行コマンド、図3(B)に示されるプリント実行情報、及び不図示のステータス送信指示情報等が記憶される。プリント実行情報は、プリント動作の実行を指示するための情報であって、給送指示情報、頭出し指示情報、搬送指示情報、吐出指示情報、及び排出指示情報等を含む。先行コマンドは、プリント前動作の実行を指示するためのコマンドである。不図示のステータス送信指示情報は、プリンタ10の状態を示すステータス情報の送信を指示するための情報である。但し、キュー領域に記憶される情報の具体例は、これらに限定されない。
キュー領域は、OS64が通信I/F55を通じてプリンタ10に送信する情報が、送信順を特定して記憶される領域である。換言すれば、OS64は、キュー領域に指示情報が記憶されているか否かを所定のタイミングでチェックする。そして、OS64は、キュー領域に指示情報が記憶されていると判断したことに応じて、当該指示情報を予め定められた送信順序で、通信I/F55を通じてプリンタ10に送信し、送信した指示情報をキュー領域から削除する。
より詳細には、キュー領域に記憶される指示情報には、図3(A)及び図3(B)に示されるように、ジョブIDが付加される。ジョブIDは、キュー領域内において、連続して送信すべき指示情報を特定するための情報である。すなわち、複数の指示情報に同一のジョブIDが付加される場合がある。OS64は、同一のジョブIDが付加された複数の指示情報を、キュー領域に記憶された順にプリンタ10に送信する。また、OS64は、異なるジョブIDが付加された指示情報を、当該ジョブIDの生成順にプリンタ10に送信する。
OS64は、例えばキュー領域において、まず、ジョブID“コンテンツデータA”が付加された搬送指示情報、吐出指示情報、及び排出指示情報をこの順に送信する。次に、OS64は、ジョブID“コンテンツデータB”が付加された給送指示情報、及び頭出し指示情報をこの順に送信する。このとき、ジョブID“コンテンツデータB”が付加された給送指示情報が、ジョブID“コンテンツデータA”が付加された排出指示情報より先にキュー領域に書き込まれていたとしても、排出指示情報が先に送信される。すなわち、同一のジョブIDが付加された複数の指示情報が書き込み順に連続して送信される。
なお、PC70は、PC50の構成と同様であるので、説明は省略する。
[プリント指示処理]
以下、ドライバプログラム66が実行するプリント指示処理について、図4を参照して説明する。ドライバプログラム66は種々の処理を実行するが、以下では、ドライバプログラム66が先行コマンドを送信するか否かを判断し、当該判断にしたがって、先行コマンドを送信し、或いは先行コマンドを送信せずに、プリントデータを送信するプリント指示処理について説明する。なお、以下の説明では、本発明において特に重要な処理を説明し、それ以外の処理の説明を省略している場合がある。先行コマンドは、準備指示情報の一例である。
本明細書のフローチャートは、基本的に、プログラムに記述された命令に従ったCPU31、61の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「制御」等の処理は、CPU31、61の処理を表している。CPU61による処理は、OS64を介したハードウェア制御も含む。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。
ドライバプログラム66は、ドライバプログラム66に定義された関数がOS64によって呼び出されることにより、プリント指示を含むプリント指示情報を受け付ける。ドライバプログラム66は、プリント指示情報を受け付けたか否かを判断する(S11)。ドライバプログラム66は、プリント指示情報を受け付けていないと判断すると(S11:No)、プリント指示処理を終了する。プリント指示を含むプリント指示情報を生成するOS64の処理は、第1生成処理の一例である。
一方、ドライバプログラム66は、プリント指示情報を受け付けたと判断すると(S11:Yes)、プリント指示情報が示す指定キューに、既にプリントデータがあるか否かを判断する(S12)。プリント指示情報を受け付ける処理(S12:Yes)は、プリント指示受付処理の一例である。
ドライバプログラム66は、指定キューにプリントデータがあると判断すると(S12:Yes)、ステップS13からS17、S21、S22の処理をスキップして、プリント指示情報を生成するStartPage処理を実行する(S18)。
[StartPage処理]
StartPage処理は、指定コンテンツデータに含まれるページデータ毎に実行される。StartPage処理の処理対象となるページデータは、例えば、OS64によって、関数の引数として指定される。図7(A)を参照して、StartPage処理の詳細を説明する。
OS64は、ドライバプログラム66に定義された関数“DrvStartPage()”を呼び出す(S71)。ドライバプログラム66は、関数“DrvStartPage()”が呼び出されたことに応じて、ヘッダ指示情報を生成し、生成したヘッダ指示情報をキュー領域67Aに記憶させる(S72)。ヘッダ指示情報は、1枚のシートに画像を記録する一連の動作において、シートに画像をプリントする前に実行すべき動作を指示するためのプリント実行情報である。本実施形態に係るヘッダ指示情報は、給送指示情報及び頭出し指示情報である。
そして、ドライバプログラム66は、関数“DrvStartPage()”を終了する(S73)。次に、OS64は、ドライバプログラム66に定義された描画関数を呼び出す。複数の描画関数が所定の順序で実行されることによって、ドライバプログラム66は、ページデータからプリントデータを生成する(S74)。プリントデータは、例えば、ページデータをラスタライズしたラスタデータである。また、ドライバプログラム66は、プリントデータに対するプリント動作を実行させるためのプリント実行情報を生成し、生成したプリント実行情報をキュー領域67Aに記憶させる。ステップS74では、後述するように、吐出指示情報及び搬送指示情報が生成される。ステップS74においてプリントデータを生成する処理は、生成処理及び第2生成処理の一例である。以下、ドライバプログラム66がプリント実行情報を生成する処理の詳細を説明する。
まず、ドライバプログラム66は、ラスタライズの対象として受け渡されるデータの単位を示す単位情報を、OS64に通知する。単位情報には、例えば、ページデータの単位での受け渡しを指示する“ページ”、或いはバンドデータの単位での受け渡しを指示する“バンド”が設定される。バンドデータは、ページデータの一部のデータである。
単位情報“ページ”を取得したOS64は、ステップS74において、ページデータを、ドライバプログラム66に引き渡す。ドライバプログラム66は、OS64から引き渡されたページデータ全体をラスタライズしてラスタデータを生成する。次に、ドライバプログラム66は、領域62Bに展開されたラスタデータを、領域62B内で90°回転させる。次に、ドライバプログラム66は、プリント領域の1つに記録する画像を示す複数のパスデータを、90°回転されたラスタデータから抽出する。そして、ドライバプログラム66は、抽出したパスデータそれぞれに基づいて吐出指示情報及び搬送指示情報を生成し、生成した吐出指示情報及び搬送指示情報を順番にキュー領域67Aに書き込む。ドライバプログラム66は、パスデータの抽出、吐出指示情報及び搬送指示情報の生成、生成した情報のキュー領域67Aへの書き込みを、ページデータに含まれる全てのパスデータに対して連続して実行する。
一方、単位情報“バンド”を取得したOS64は、ステップS74において、ページデータに含まれる複数のバンドデータのうちの1つを、ドライバプログラム66に引き渡す。ドライバプログラム66は、OS64から引き渡されたバンドデータ全体をラスタライズしてラスタデータを生成する。次に、ドライバプログラム66は、ラスタデータに基づいて吐出指示情報及び搬送指示情報を生成し、生成した吐出指示情報及び搬送指示情報をキュー領域67Aに書き込む。そして、ページデータを構成する全てのバンドデータに対して、前述の処理が繰り返し実行される。
次に、OS64は、ドライバプログラム66に定義された関数“DrvEndPage()”を呼び出す(S75)。ドライバプログラム66は、関数“DrvEndPage()”が呼び出されたことに応じて、排出指示情報を生成し、生成した排出指示情報をキュー領域67Aに記憶させる(S76)。
図7(A)に示されるStartPage処理によってキュー領域67Aに書き込まれた複数のプリント実行情報は、OS64によって書き込み順にプリンタ10に送信される。典型的には、OS64は、給送指示情報、頭出し指示情報、吐出指示情報、搬送指示情報、吐出指示情報、・・・、排出指示情報を、通信I/F55を通じてプリンタ10にこの順で送信する。ステップS72の処理、ステップS74でプリント実行情報をキュー領域67Aに記憶させる処理、ステップS76の処理は、通信I/F55を通じてプリンタ10にプリント実行情報を送信するプリント実行指示処理の一例である。
そして、ドライバプログラム66は、関数“DrvEndPage()”を終了する(S77)。これにより、StartPage処理が終了する。StartPage処理により、プリントデータがOS64によって印刷ポートからプリンタ10に送信される。
次に図4に戻って、ドライバプログラム66は、ステップS12において、指定キューにプリントデータがないと判断すると(S12:No)、プリント指示情報が示すセキュアフラグの値が「ON」であるか否かを判断する。すなわち、ステップS12では、プリント実行情報が示すプリントがセキュアプリントであるか否かが判断される。
ドライバプログラム66は、セキュアフラグの値が「ON」であると判断すると(S13:Yes)、ステップS14からS17、S21、S22の処理をスキップして、プリントデータを生成するStartPage処理を実行する(S18)。
一方、ドライバプログラム66は、セキュアフラグの値が「OFF」であると判断すると(S13:No)、先行コマンド出力判断処理を実行する(S14)。図5(A)を参照して、先行コマンド出力判断処理の詳細について説明する。
ドライバプログラム66は、プリント指示情報が示す識別フラグの値が「ON」であるか否かを判断する(S31)。識別フラグは、プリント指示情報が示すプリンタ10が共有プリンタ10であることに応じて「ON」が設定され、プリンタ10が共有プリンタ10でないことに応じて「OFF」が設定されるフラグである。ステップS31の処理は、判断処理の一例である。識別フラグは、第1情報の一例である。
ドライバプログラム66は、プリント指示情報が示す識別フラグの値が「ON」でないと判断すると(S31:No)、先行コマンドフラグに「ON」を設定し(S32)、先行コマンド出力判断処理を終了する。先行コマンドフラグは、ドライバプログラム66が先行コマンドを出力するか否かを判断するためのフラグである。詳しくは後述する。
一方、ドライバプログラム66は、プリント指示情報が示す識別フラグの値が「ON」であると判断すると(S31:Yes)、共有プリンタの場合の判断処理を実行する(S33)。図5(B)を参照して、共有プリンタの場合の判断処理の詳細について説明する。
ドライバプログラム66は、管理情報及びポート設定情報をメモリから読み出す(S41)。管理情報は、PC50の管理者によって、「出力」、「出力しない」、「設定に応じて出力」のうちから選択された情報である。
ポート設定情報は、PC50のユーザによってPC50に入力された情報である。詳しく説明すると、ドライバプログラム66は、図9に示すポート設定情報入力画面をPC50のディスプレイに53に表示させる。ポート設定情報入力画面をPC50のディスプレイ53に表示させる処理は、表示処理の一例である。
ポート設定情報入力画面は、「ポート設定」の文字と、「共有時でも先行コマンドを出力する印刷ポート情報」の文字とを有する。また、ポート設定情報入力画面は、「USBポートの場合には、先行コマンドを送信する」の文字及びチェックボックスを有する。「USBポートの場合には、先行コマンドを送信する」の文字及びチェックボックスは、第1オブジェクトの一例である。
また、ポート設定情報入力画面は、「LANポートの場合の切り替え条件」の文字及びチェックボックスを有する。また、ポート設定情報入力画面は、「有線/無線の情報で切り替える」の文字及びラジオボタンと、「有線であれば出力する」の文字及びチェックボックスと、「無線であれば出力する」の文字及びチェックボックスと、「プリンタとの通信速度を測定して切り替える」の文字及びラジオボタンとを有する。「LANポートの場合の切り替え条件」の文字及びチェックボックスと、「有線/無線の情報で切り替える」の文字及びラジオボタンと、「有線であれば出力する」の文字及びチェックボックスとは、第2オブジェクトの一例である。「LANポートの場合の切り替え条件」の文字及びチェックボックスと、「有線/無線の情報で切り替える」の文字及びラジオボタンと、「無線であれば出力する」の文字及びチェックボックスとは、第3オブジェクトの一例である。
ドライバプログラム66は、入力I/F54を通じたラジオボタンやチェックボックスがユーザ操作を受け付け、受け付けたユーザ操作に応じたポート設定情報をメモリ62に記憶させる。
図5(B)に戻って、ドライバプログラム66は、管理情報が示す情報が「出力」であるか、「出力しない」であるか、「設定に応じて出力」であるかを判断する(S42)。ドライバプログラム66は、管理情報が示す情報が「出力」であると判断すると(S42:出力)、先行コマンドフラグに「ON」を設定し(S43)、共有プリンタの場合の判断処理を終了する。ドライバプログラム66は、管理情報が示す情報が「出力しない」であると判断すると(S42:出力しない)、先行コマンドフラグに「OFF」を設定し(S44)、共有プリンタの場合の判断処理を終了する。
一方、ドライバプログラム66は、管理情報が示す情報が「設定に応じて出力」であると判断すると(S42:設定に応じて出力)、印刷ポートがUSBであるかLANであるかを判断する(S45)。具体的には、ドライバプログラム66は、印刷ポートのポート名をOSから取得する。ここで、プリンタ10が共有プリンタである場合、ポート名としては、PC70に設定されているポート名が取得される。なお、OSがWindows(登録商標)の場合、ポート名と実際にネットワーク上の送信先として指定されるIPアドレスやノード名とが分けて設定可能であり、これらの情報はメモリ62の所定のレジストリに書き込まれている。よって、ドライバプログラム66は、ポート名を取得すると、レジストリを検索して、ポート名からIPアドレスやノード名を取得する。そしてドライバプログラム66は、印刷ポートのポート名、IPアドレス又はノード名に基づいて、印刷ポートがUSBであるかLANであるかを判断する。ポート名は、第2情報の一例である。
ドライバプログラム66は、印刷ポートがUSBであると判断すると(S45:USB)、ポート設定情報が「USBで出力の設定」であるか否かを判断する(S46)。ドライバプログラム66は、ポート設定情報が「USBで出力の設定」でないと判断すると、先行コマンドフラグに「OFF」を設定する。一方、ドライバプログラム66は、ポート設定情報が「USBで出力の設定」であると判断すると、先行コマンドフラグに「ON」を設定する。
ドライバプログラム66は、印刷ポートがLANであると判断すると(S45:LAN)、LANの場合の判断処理を実行する(S48)。図6を参照して、LANの場合の判断処理の詳細について説明する。
まず、ドライバプログラム66は、ポート設定情報が「有線/無線の情報で切り替える」であるか、「プリンタとの通信速度を測定して切り替える」であるかを判断する(S51)。ドライバプログラム66は、「プリンタとの通信速度を測定して切り替える」であると判断すると(S51:通信速度)、プリンタ10がEEPROM34に記憶する復帰時間T1をプリンタ10から取得する(S52)。ステップS52の処理は、取得処理の一例である。
具体的には、ドライバプログラム66は、プリンタ10に装置情報を返送させるコマンド及びプリンタ10のアドレス(IPアドレスやMACアドレス)を含むリクエスト情報を生成し、送信する。リクエスト情報を受信したプリンタ10は、装置情報をPC50に返送する。ドライバプログラム66は、返送に含まれる装置情報から、復帰時間T1を取得する。リクエスト情報は、第1要求情報の一例である。
次に、ドライバプログラム66は、参照通信時間T2を取得する(S53)。具体的には、ドライバプログラム66は、プリンタ10のアドレスを含むPINGコマンドを生成し、OS64に受け渡す。OS64は、PINGコマンドにしたがって、所定のリクエスト情報をプリンタ10に送信し、プリンタ10からの返信を受信する。OS64は、リクエスト情報を送信してから返信を受信するまでの時間をカウントする。OS64は、カウントした時間を示す結果情報をドライバプログラム66に引き渡す。ドライバプログラム66は、結果情報が示す時間を参照通信時間T2として取得する。PINGコマンドは、第3情報の一例である。PINGコマンドにしたがって生成される所定のリクエスト情報は、第2要求情報の一例である。
ドライバプログラム66は、参照通信時間T2と、メモリ62に予め記憶された所定時間T3とを和算し、和算の結果得られた時間(T2+T3)がステップS52で取得した復帰時間T1未満か否かを判断する(S54)。所定時間は、先行コマンドを送信してから、ヘッダ指示情報をプリントジョブに追加(S72)するまでに要する時間として、メモリ62に予め記憶される。すなわち、ステップS54では、プリンタ10が先行コマンドを受信して待機状態からプリント実行可能状態に移行してから、ヘッダ指示情報を受信するまでの時間が、復帰時間T1より短いか否かが判断される。ステップS54の処理は、判断処理の一例である。和算の結果得られた時間(T2+T3)は、参照通信時間に応じた時間の一例である。
ドライバプログラム66は、和算の結果得られた時間(T2+T3)が復帰時間T1未満でないと判断すると(S54:No)、先行コマンドフラグに「OFF」を設定し(S56)、LANの場合の判断処理を終了する。一方、ドライバプログラム66は、和算の結果得られた時間(T2+T3)が復帰時間T1未満であると判断すると(S54:Yes)、先行コマンドフラグに「ON」を設定し、かつ、直接送信フラグに「ON」を設定し(S55)、LANの場合の判断処理を終了する。
直接送信フラグは、プリント実行情報を送信するプリンタ10が共有プリンタ10であって、かつ、ネットワーク11との接続がLAN接続であって、かつ、先行フラグに「ON」が設定される場合に、「ON」に設定されるフラグである。詳しくは後述するが、ドライバプログラム66は、直接送信フラグに「ON」が設定されていると判断すると、ステップS74で生成したプリントデータをOS64に引き渡すことなく、生成したプリントデータを含むプリント実行情報及び共有プリンタ10のアドレスを有する送信情報を生成し、共有プリンタ10に送信する。すなわち、プリントデータを含むプリント実行情報は、印刷ポートを介さずに共有プリンタ10に送信される。印刷ポートを介さないので、プリント実行情報は、PC70を介さずに、共有プリンタ10に直接受信される。
ドライバプログラム66は、ステップS51において、「有線/無線の情報で切り替える」であると判断すると(S51:有線/無線)、印刷ポートが有線であるか無線であるかを判断する(S57)。具体的には、ドライバプログラム66は、印刷ポートのポート名に基づいて、印刷ポートが有線であるか無線であるかを判断する。
ドライバプログラム66は、印刷ポートが有線であると判断すると、ポート設定情報が「有線であれば出力する」であるか否かを判断する(S61)。ドライバプログラム66は、ポート設定情報が「有線であれば出力する」でないと判断すると、先行コマンドフラグに「OFF」を設定し(S56)、LANの場合の判断処理を終了する。一方、ドライバプログラム66は、ポート設定情報が「有線であれば出力する」であると判断すると、先行コマンドフラグに「ON」を設定し(S60)、LANの場合の判断処理を終了する。
ドライバプログラム66は、ステップS57において、印刷ポートが無線であると判断すると(S57:無線)、ポート設定情報が「無線であれば出力する」であるか否かを判断する(S58)。ドライバプログラム66は、ポート設定情報が「無線であれば出力する」でないと判断すると、先行コマンドフラグに「OFF」を設定し(S59)、LANの場合の判断処理を終了する。一方、ドライバプログラム66は、ポート設定情報が「無線であれば出力する」であると判断すると、先行コマンドフラグに「ON」を設定し、かつ、直接送信フラグに「ON」を設定し(S60)、LANの場合の判断処理を終了する。
ドライバプログラム66は、ステップS57において、印刷ポートが有線であるか無線であるか不明であると判断すると(S57:不明)、設定情報が「不明であれば出力する」であるか否かを判断する(S62)。設定情報は、ポート設定画面によってユーザの入力によって設定されてもよいし、PC50の管理者によって設定されてもよい。
ドライバプログラム66は、設定情報が「不明であれば出力する」でないと判断すると(S62:No)、先行コマンドフラグに「OFF」を設定し(S59)、LANの場合の判断処理を終了する。一方、ドライバプログラム66は、設定情報が「不明であれば出力する」であると判断すると(S62:Yes)、先行コマンドフラグに「ON」を設定し、かつ、直接送信フラグにONを設定し(S63)、LANの場合の判断処理を終了する。
図4に戻って、ドライバプログラム66は、先行コマンド出力判断処理(S14)が終了すると、先行コマンドフラグの値が「ON」であるか否かを判断する(S15)。ドライバプログラム66は、先行コマンドフラグの値が「ON」でないと判断すると(S15:No)、ステップS16、S17、S21、S22の処理をスキップし、ステップS18のStartPage処理を実行する。
一方、ドライバプログラム66は、先行コマンドフラグの値が「ON」であると判断すると(S15:ON)、直接送信フラグの値が「ON」であるか否かを判断する(S16)。ドライバプログラム66は、直接送信フラグの値が「ON」であると判断すると(S16:Yes)、先に取得したポート名、ノード名又はIPアドレスから共有プリンタ10のアドレスを特定し、先行コマンド及び共有プリンタ10のアドレスを含む先行コマンド送信情報を生成する(S21)。そして、ドライバプログラム66は、生成した先行コマンド送信情報を、印刷ポート及びPC70を介さずに、共有プリンタ10に直接送信する(S22)。ドライバプログラム66は、先行コマンド送信処理の実行後、ステップS18のStartPage処理を実行する。
ドライバプログラム66は、直接送信フラグの値が「ON」でないと判断すると(S16:No)、StartDoc処理を実行する(S17)。図7(B)を参照して、StartDoc処理の詳細について説明する。
[StartDoc処理]
OS64は、ドライバプログラム66に定義された各種関数を所定の順序で呼び出す。また、ドライバプログラム66は、OS64によって呼び出された関数に定義された処理を実行する。これらの処理の詳細は省略する。
OS64は、関数“DrvDocumentEvent()”を呼び出す(S81)。OS64は、定数“DOCUMENTEVENT_FIRST”を、関数“DrvDocumentEvent()”の引数として指定する。
次に、ドライバプログラム66は、第1関数“DrvDocumentEvent()”が呼び出されたことに応じて、第1領域62Cに記憶された条件情報を読み出し、読み出した条件情報を第2領域62Dに記憶させ(S82)、関数“DrvDocumentEvent()”を終了する(S83)。すなわち、ドライバプログラム66は、ステップS82において、第1領域62Cから読み出された条件情報を第2領域62Dに記憶させる。
次に、OS64は、関数“DrvDocumentEvent()”を呼び出す(S84)。OS64は、定数“DOCUMENTEVENT_STARTDOCDOC”を、関数“DrvDocumentEvent()”の引数として指定する。ステップS84の処理は、ステップS81の処理より後に実行される。次に、関数“DrvDocumentEvent()”が呼び出されたドライバプログラム66は、先行コマンドを指定キューに記憶させる(S85)。
次に、ドライバプログラム66は関数“DrvDocumentEvent()”を終了する(S86)。次に、OS64は、関数“DrvDocumentEvent()”が終了したことに応じて(S86)、ドライバプログラム66に定義された関数“DrvStartDoc()”を呼び出す(S87)。OS64は、関数“DrvStartDoc()”の引数として指定された指定データID“コンテンツデータC”を関数“DrvStartDoc()”の引数として指定する。
次に、ドライバプログラム66は、関数“DrvStartDoc()”が呼び出されたことに応じて、引数として指定された指定データID“コンテンツデータC”をジョブIDとするプリントジョブを、指定キューであるキュー領域67Aに生成して(S88)、関数“DrvStartDoc()”を終了する(S89)。上述のステップS72、S74、S76でキュー領域67Aに書き込まれる各種実行情報には、ジョブID“コンテンツデータC”が付加される。但し、ジョブID“コンテンツデータC”で識別されるプリントジョブは、この時点では指示情報を含んでいない。
次に、OS64は、関数“DrvStartDoc()”が終了したことに応じて(S89)、関数“DrvDocumentEvent()”を呼び出す(S90)。OS64は、定数“DOCUMENTEVENT_STARTDOCPOST”を、関数“DrvDocumentEvent()”の引数として指定する。次に、ドライバプログラム66は、関数“DrvDocumentEvent()”が呼び出されたことに応じて、先行コマンドを指定キューから削除する(S91)。
次に、ドライバプログラム66は、関数“DrvDocumentEvent()”を終了する(S92)。これにより、StartDoc処理が終了される。フローチャートには示されていないが、StartDoc処理の実行により、OS64によって、指定キューに記憶された先行コマンドが印刷ポートからプリンタ10に送信される。StartDoc処理は、準備指示処理の一例である。
図4に戻って、ドライバプログラム66は、StartDoc処理の実行後、上述のStartPage処理を実行する(S18)。次に、ドライバプログラム66は、全てのページに対してStartPage処理を実行したか否かを判断する(S19)。ドライバプログラム66は、全てのページに対してStartPage処理を実行していないと判断すると(S19:Yes)、次ページに対してStartPage処理を実行する(S18)。一方、ドライバプログラム66は、全てのページに対してStartPage処理を実行したと判断すると(S19:No)、EndDoc処理を実行する(S20)。EndDoc処理は、プリンタ10にプリント動作を実行させた後の後処理である。EndDoc処理は、周知の処理なので、詳細の説明は省略する。
StartPage処理の実行により、OS64によって印刷ポートからプリントデータを含むプリント実行情報がプリンタ10に送信される。プリント実行情報、或いは、先行コマンド及びプリント実行情報を受信したプリンタ10は、プリント処理を実行する。図8を参照して、プリント処理の詳細について説明する。
[プリント処理]
プリンタ10が実行する以下の各処理は、ROM32に記憶されているプログラムをCPU31が読み出して実行してもよいし、制御部30に搭載されたハードウェア回路によって実現されてもよい。プリント処理は、プリント動作の一例である。
プリンタ10の制御部30は、通信I/F25を通じてPC50から先行コマンドを受信したか、プリント実行情報を受信したかを判断する(S101)。先行コマンドは、上述のように、StartDoc処理の実行により、OS64によってプリンタ10に送信され、或いは、ステップS22の処理によって、ドライバプログラム66によってプリンタ10に送信される。プリント実行情報は、上述のStartPage処理の実行により、OS64によってプリンタ10に送信される。ステップS22の処理は、準備指示処理の一例である。
制御部30は、先行コマンドを受信したことに応じて(S101:先行コマンド)、電源部26が休眠状態か否かを判断する(S102)。制御部30は、例えば、電源部26の現在の状態を示すフラグ情報をRAM33或いはEEPROM34に記憶させておき、当該フラグ情報に基づいてステップS102の判断を行ってもよい。但し、ステップS72の判断の方法は、前述の例に限定されない。
次に、制御部30は、電源部26が休眠状態だと判断したことに応じて(S102:Yes)、電源部26を休眠状態から駆動状態に切り替える(S103)。より詳細には、制御部30は、HIGHレベルの電源信号を電源部26に出力する。一方、制御部30は、電源部26が駆動状態だと判断したことに応じて(S102:No)、ステップS103の処理をスキップする。
次に、制御部30は、先行コマンドを受信したことをディスプレイ23を通じて報知する(S104)。制御部30は、例えば、ディスプレイ23のバックライトを所定の時間だけ点灯させればよい。
次に、制御部30は、動作部20にプリント前動作を実行させる(S105)。プリント前動作は、プリント動作で所定品質の画像をシートに記録するために、プリンタ10が実行すべき動作である。プリント前動作は、例えば、ノズル面を覆うキャップを吐出部22から離間させるアンキャップ処理、シートが通過する領域外において吐出部22にインクを吐出させるフラッシング処理、電源部26の電源電圧を目標電圧に昇圧する昇圧処理等のうちの一部又は全部を含む。ステップS105の処理は、プリント前処理の一例である。
また、制御部30は、複数のプリント前動作それぞれに対応するフラグ情報を、RAM33或いはEEPROM34に記憶させておく。全てのフラグ情報には、プリント前処理の開始時点において、プリント前動作が終了していないことに対応する「OFF」が設定されている。そして、制御部30は、プリント前動作の1つが終了したことに応じて、プリント前動作が終了したことに対応する「ON」を、終了したプリント前動作に対応するフラグ情報に設定する。
次に、制御部30は、通信I/F25を通じてPC50からプリント実行情報を受信する(S101:プリント実行)。すなわち、制御部30は、給送指示情報、頭出し指示情報、吐出指示情報、搬送指示情報、吐出指示情報、・・・、排出指示情報を、通信I/F25を通じて情報処理端末50からこの順に受信する。
給送指示情報は、編集条件情報のトレイ情報で示される給送トレイから搬送部21にシートを給送させるための情報である。頭出し指示情報は、給送されたシートの最初の記録領域が吐出部22に対面する位置まで、当該シートを搬送部21に搬送させるための情報である。吐出指示情報は、吐出部22に対面されたシートの記録領域に対して画像を記録するために、吐出部22によるインクの吐出タイミングを示すための情報である。搬送指示情報は、次に画像を記録する記録領域が吐出部22に対面する位置まで、搬送部21にシートを搬送させるための情報である。排出指示情報は、画像が記録されたシートを搬送部21に排出させるための情報である。
次に、制御部30は、プリント実行情報に含まれるセキュアフラグの設定値を判断する(S106)。次に、制御部30は、セキュアフラグに「OFF」が設定されていると判断したことに応じて(S106:OFF)、プリント前処理が終了したか否かを判断する(S107)。より詳細には、制御部30は、プリント前動作に対応付けられた全てのフラグ情報に「ON」が設定されていることに応じて、プリント前処理が終了したと判断する(S107:Yes)。一方、制御部30は、プリント前動作に対応付けられた少なくとも1つのフラグ情報に「OFF」が設定されていることに応じて、プリント前処理が終了していないと判断する(S107:No)。
先行コマンドとプリント実行情報との受信間隔は、例えば、プリンタデータを生成する(S74)のドライバプログラム66の処理量、ネットワーク11の状態等によって変動する。すなわち、先行コマンドをトリガにして開始されたプリント前処理は、プリント実行情報を受信した時点で終了していない可能性がある。そこで、制御部30は、プリント前処理が終了していないと判断したことに応じて(S107:No)、プリント前処理が終了するまで後続の処理の実行を待機する。そして、制御部30は、プリント前処理が終了したと判断したことに応じて(S107:Yes)、受信したプリント実行情報に従ったプリント動作を動作部20に実行させる(S108~S112)。
まず、制御部30は、受信した給送指示情報に従った給送処理と、頭出し指示情報に従った頭出し処理とを実行する(S108)。すなわち、制御部30は、給送指示情報に示される給送トレイに収容されたシートを搬送部21に給送させる。次に、制御部30は、給送処理で給送されたシートを、頭出し指示情報に示される位置まで搬送部21に搬送させる。なお、これらの処理は、プリント前処理で実行されてもよい。
次に、制御部30は、受信した吐出指示情報に従った吐出処理を実行する(S109)。すなわち、制御部30は、主走査方向の一方から他方に吐出部22を移動させると共に、吐出指示情報に示される吐出タイミングで吐出部22にインクを吐出させる。次に、制御部30は、シートの全ての記録領域に画像を記録したか否かを判断する(S110)。換言すれば、制御部30は、直近のステップS109で用いた吐出指示情報の次に搬送指示情報及び排出指示情報のどちらを受信したかを判断する。
次に、制御部30は、シートの全ての記録領域に画像を記録していないと判断したことに応じて(S110:No)、受信した搬送指示情報に従った搬送処理を実行する(S111)。すなわち、制御部30は、搬送指示情報に示される搬送量だけ搬送部21にシートを搬送させる。制御部30は、シートの全ての記録領域に画像を記録するまで(S110:No)、ステップS109~S111の処理を繰り返し実行する。
そして、制御部30は、シートの全てのプリント領域に画像をプリントしたと判断したことに応じて(S110:Yes)、受信した排出指示情報に従った排出処理を実行する(S112)。すなわち、制御部30は、画像がプリントされたシートを搬送部21にプリンタ10の外部へ排出させる。なお、指定コンテンツデータに複数のページデータが含まれる場合、ステップS108~S112の処理が繰り返し実行される。これにより、ステップS74で生成されたプリントデータで示される画像、換言すれば、指定コンテンツデータで示される画像がシートにプリントされる。
一方、制御部30は、セキュアフラグに「ON」が設定されていると判断したことに応じて(S106:ON)、認証情報の入力を入力I/F24を通じて受け付ける。そして、制御部30は、入力I/F24を通じて入力された認証情報と、プリント実行情報に含まれる認証情報とが一致するか否かを判断する(S113)。次に、制御部30は、2つの認証情報が一致したと判断したことに応じて(S113:Yes)、プリント前処理を実行する(S114)。そして、制御部30は、プリント前処理が終了したことに応じて、ステップS108以降の処理を実行する。一方、制御部30は、2つの認証情報が不一致と判断したことに応じて(S113:No)、ユーザに認証情報を再び入力させる。
[本実施形態の作用効果]
本実施形態では、プリント指示情報が示すプリンタ10が共有プリンタであるか否かと、プリンタ10との通信に要する時間を示す参照通信時間T2との少なくとも一方を用いて、プリント前動作の開始を先行コマンドによってプリンタ10に指示するか否かが判断される。したがって、プリント前動作の開始を指示する先行コマンドを送信するか否かを適切に判断することができる。
また、本実施形態では、プリンタ10がプリント前処理を行ってからプリント前処理を行う前の状態に戻るまでの復帰時間T1が、プリントデータの生成及び送信に要する時間よりも長いと推定される場合、先行コマンドは送信されない。したがって、プリンタ10において、インクが乾いて印刷品質が低下したり、乾いたインクを排出してインクが無駄に消費されたり、或いは、無駄な電力が消費されるということが抑制される。
また、本実施形態では、プリント指示情報が示すプリンタ10が共有プリンタ10である場合、プリントデータが印刷ポート及びPC70を介さず、共有プリンタ10に直接送信される。したがって、PC70が先行コマンドを誤ってプリントデータと判断してプリント枚数が意図せず増加してしまうことが防止される。
また、本実施形態では、ユーザの入力を受け付ける第1オブジェクト、第2オブジェクト、及び第3オブジェクトがディスプレイに表示され、ユーザ入力の設定に従って、先行コマンドが送信されるか否かが判断される。したがって、先行コマンドを送信するか否かのユーザの意図が反映されて先行コマンドを送信するか否かが判断される
[変形例1]
上述の実施形態では、ポート設定画面においてユーザが設定したポート設定情報と、管理者が設定した管理情報とに応じてドライバプログラム66が先行コマンドフラグに「ON」を設定するか「OFF」を設定するかを判断する例を説明した。本変形例では、ユーザによるポート設定情報の設定及びPC40の管理者による管理情報の設定を受け付けず、ドライバプログラム66が先行コマンドを送信するか否かを判断する例を説明する。
本変形例では、ドライバプログラム66は、共有プリンタの場合の判断処理(図5(A))に代えて、図10に示される共有プリンタの場合の判断処理を実行する。その他の処理は、実施形態で説明した処理と同じである。なお、実施形態と同一の処理については、実施形態と同一の符号を付して、一部の説明を省略する。
図10に示される共有プリンタの場合の判断処理において、ドライバプログラム66は、プリント指示情報が示す共有プリンタ10に設定された印刷ポートが「USB」であるか「LAN」であるかを、印刷ポート名から判断する(S45)。すなわち、ステップS45では、プリント指示情報が示すプリンタ10とケーブル12で接続されているかLANで接続されているかが判断される。ステップS45の処理は、判断処理の一例である。
ドライバプログラム66は、プリント指示情報が示すプリンタ10に設定された印刷ポートが「USB」であると判断すると(S45:USB)、先行コマンドフラグに「ON」を設定し(S43)、共有プリンタの場合の判断処理を終了する。一方、ドライバプログラム66は、プリント指示情報が示すプリンタ10に設定された印刷ポートが「LAN」であると判断すると(S45:「LAN」)、プリント指示情報が示すプリンタ10が有線LANによってネットワーク11に接続されているか、無線LANによってネットワーク11に接続されているかを判断する(S57)。ステップS57の処理は、判断処理の一例である。
ドライバプログラム66は、プリント指示情報が示すプリンタ10が有線LANによってネットワーク11に接続されていると判断すると、実施形態と同様に、ステップS52からS54の処理を実行する。ドライバプログラム66は、ステップS54の処理において、参照通信時間T2とメモリ62に記憶された所定の時間T3とを和算した時間が復帰時間T1未満でないと判断すると、先行コマンドフラグに「OFF」を設定し(S59)、共有プリンタの場合の判断処理を終了する。ステップS54の処理は、判断処理の一例である。
一方、ドライバプログラム66は、参照通信時間T2と所定の時間T3とを和算した時間が復帰時間T1未満であると判断すると、先行コマンドフラグに「ON」を設定し、かつ、直接送信フラグに「ON」を設定し(S55)、共有プリンタの場合の判断処理を終了する。
また、ドライバプログラム66は、ステップS57の処理において、プリント指示情報が示すプリンタ10が有線LANによってネットワーク11に接続されているか、無線LANによってネットワーク11に接続されているかが不明であると判断すると(S57:不明)、先行コマンドフラグに「OFF」を設定し、共有プリンタの場合の判断処理を終了する。
[変形例1の効果]
本変形例では、ユーザや管理者の設定に拠らず、先行コマンドを出力するか否かをドライバプログラム66が判断するので、ユーザや管理者が設定条件を入力する手間を低減することができる。
一般に、無線LAN接続では、通信のリトライや再接続が有線LAN接続よりも多く発生する。すなわち、無線LAN接続は、有線LAN接続よりもデータの受け渡しに時間を要することがある。本変形例では、プリンタ10とPC50とが有線LAN接続されている場合、先行コマンドが送信される。一方、プリンタ10とPC50とが無線LAN接続されている場合、先行コマンドが送信されない。すなわち、プリンタ10が先行コマンドを受信してからプリントデータを受信するまでの時間が長くなるおそれがある無線LAN接続では、先行コマンドは送信されない。したがって、プリンタ10において、インクが乾いて印刷品質が低下したり、乾いたインクを排出してインクが無駄に消費されたり、或いは、無駄な電力が消費されるということが抑制される。
[変形例2]
実施形態で説明した図4に示されるステップS11~S16、ステップS21、S22、及び図7(B)に示されるステップS85の処理は、図7(B)で説明したStartDoc処理の一部(サブルーチン)として実行されてもよい。本変形例では、図11(A)に示されたStartDoc処理を説明する。なお、実施形態と同様の処理については、実施形態と同一の符号を付して、説明を省略する。
図11(A)に示されるStartDoc処理では、ステップS85(図7(B))に代えて、図4に示されるステップS11~S16、ステップS21、S22、及び図7(B)に示されるステップS85の処理を実行するサブルーチンであるステップS93の先行コマンド処理が実行される点において、図7(B)に示されるStartDoc処理と相違する。図11(A)に示されるStartDoc処理におけるその他の処理(S81~S84、S86~S92)は、図7(B)に示されるStartDoc処理と同じである。
ステップS93の先行コマンド処理について、図11(B)を参照して説明する。先行コマンド処理では、ドライバプログラム66は、実施形態のプリント指示処理(図4)と同様に、ステップS11~S15の処理を実行する。ドライバプログラム66は、プリント指示を受け付けていないと判断し(S11:No)、或いは、プリントデータが存在すると判断し(S12:Yes)、或いは、セキュアプリントであると判断し(S13:Yes)、或いは、先行コマンドフラグが「ON」でないと判断すると(S15:No)、先行コマンド処理を終了する。
一方、ドライバプログラム66は、ステップS15において、先行コマンドフラグが「ON」であると判断すると(S15:Yes)、実施形態と同様に、直接送信フラグが「ON」であるか否かを判断する(S16)。ドライバプログラム66は、直接送信フラグが「ON」であると判断すると(S16:Yes)、実施形態と同様に、ステップS21、S22の処理を実行し、先行コマンド処理を終了する。一方、ドライバプログラム66は、直接送信フラグが「ON」でないと判断すると(S16:No)、実施形態と同様に、先行コマンドを指定キューに記憶させ(S85)、先行コマンド処理を終了する。
ドライバプログラム66は、先行コマンド処理の実行後(S93)、実施形態と同様に、ステップS86~S92の処理を実行し、StartDoc処理を終了する。ドライバプログラム66は、StartDoc処理の実行後、実施形態で説明したステップS18~S20の処理を実行する。
上述したように、本変形例2でドライバプログラム66が実行する処理の内容は、実施形態と同一であり、ステップS11~S16及びステップS21、S22の処理が、StartDoc処理の一部として実行されるか否かが実施形態と相違する。すなわち、プリンタドライバ66は、先行コマンドを出力するか否かを判断する先行コマンド出力判断処理(S14、図5(A))を、適切なタイミングで実行すればよい。すなわち、本変形例2は、プリンタドライバ66が先行コマンド出力判断処理を実行するタイミングを示す他の例である。
[その他の変形例]
上述の実施形態や変形例では、プリント指示情報が示すプリンタ10が共有プリンタ10であるか否か、及び、参照通信時間T2と所定の時間T3とを和算した時間が復帰時間T1未満か否かによって、先行コマンドフラグの値を設定する例を説明した。しかしながら、プリント指示情報が示すプリンタ10が共有プリンタ10であるか否かのみによって、或いは、参照通信時間T2と所定の時間T3とを和算した時間が復帰時間T1未満か否かのみによって、先行コマンドフラグの値が設定されてもよい。
また、上述の実施形態や変形例では、プリント指示情報が示すプリンタ10が共有プリンタ10であって、かつ、先行コマンドフラグに「ON」を設定して先行コマンドを送信に決定する場合、直接送信フラグに「ON」を設定して、印刷ポート及びPC70を介さずにプリント実行情報が共有プリンタ10に送信される例を説明した。しかしながら、共有プリンタ10であることに応じて、一律に先行コマンドフラグに「OFF」を設定し、先行コマンドを送信しないことに決定してもよい。
また、上述の実施形態や変形例では、PINGコマンドを用いて通信参照時間を測定する例を説明した。しかしながら、PINGコマンドを用いず、ドライバプログラム66が、リクエスト情報を共有プリンタ10のアドレス宛に送信し、共有プリンタ10からの返送を受信するまでの時間をカウントしてもよい。
また、上述の実施形態や変形例では、ポート設定情報入力画面が、「ポート設定」の文字と、「共有時でも先行コマンドを出力する印刷ポート情報」の文字と、「USBポートの場合には、先行コマンドを送信する」の文字及びチェックボックスと、「LANポートの場合の切り替え条件」の文字及びチェックボックスと、「有線/無線の情報で切り替える」の文字及びラジオボタンと、「有線であれば出力する」の文字及びチェックボックスと、「無線であれば出力する」の文字及びチェックボックスと、「プリンタとの通信速度を測定して切り替える」の文字及びラジオボタンとを有する例を説明した。しかしながら、上述の複数のラジオボタン及びチェックボックスの全てがポート設定画面に設けられる必要はなく、いずれかのラジオボタンやチェックボックスがポート設定画面に設けられていてもよい。