説明

印刷システム、印刷装置、情報処理装置、情報処理方法、およびプログラム

【課題】ネットワークに接続された印刷装置において、処理中でないジョブに対するステータス要求により、不正にタイムアウト処理のカウンタをリセットしてしまうことを回避する。
【解決手段】情報処理装置と印刷装置とを有する印刷システムにおける印刷装置であって、前記情報処理装置から印刷開始要求を受信し、ジョブに識別子を割り当てる割当手段と、計時部を用いて、ジョブの処理のタイムアウトを管理するタイムアウト処理手段と、前記情報処理装置からステータス取得要求を受信し、当該ステータス取得要求に含まれる識別子を取得する第一の取得手段と、処理中のジョブに割り当てた識別子を取得する第二の取得手段と、前記第一の取得手段にて取得した識別子と前記第二の取得手段にて取得した識別子とを比較する比較手段とを有し、前記タイムアウト処理手段は、前記比較手段の比較により識別子が一致した場合、前記計時部の値をリセットする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はネットワークに接続された印刷装置のタイムアウト処理を制御する印刷システムに関する。
【背景技術】
【0002】
近年、米国のマイクロソフト社のWindows 7(登録商標)では、ネットワークに接続された印刷装置にて印刷を行う方式として、WSD(Web Service on Device)が採用されている。WSDについては、非特許文献1上で詳細な情報が公開されている。従来、ネットワークへ接続された印刷装置にて印刷を行う場合、印刷装置の占有を避けるために、印刷ジョブを送信した情報処理装置から一定期間にわたって印刷装置へアクセスがなければタイムアウト処理を行い、印刷装置の占有を解除する技術がある。
【0003】
また、印刷装置は、印刷開始要求を解析しエラーがなければポートを作成し、一定期間、ポートにアクセスなければポートをクローズすると言う処理が開示されている(特許文献1参照)。
【0004】
また、手指し印刷のようにプリンタドライバが手指し印刷のガイドダイアログを表示するためなどに意図的に印刷装置への印刷データの送信を止めている場合も考えられる。このような場合においても、定期的に印刷装置にステータス情報を問い合わせることで、タイムアウトエラーが発生しないようにする技術も存在する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−341734号公報
【非特許文献】
【0006】
【非特許文献1】Microsoft Corporation、“Windows Hardware Developer Central”、[online]、[平成22年10月11日検索]、インターネット(URL:http://www.microsoft.com/whdc/connect/rally/rallywsd.mspx)
【発明の概要】
【発明が解決しようとする課題】
【0007】
一般的なOSの印刷サポート機能として、情報処理装置と接続されているネットワークケーブルが抜き差しされた場合、現在印刷中の印刷ジョブを一度削除し、新たに同じ内容のジョブを再印刷する方法がある。例えば、ジョブ1を印刷中にネットワークケーブルの抜き差しが発生すると、印刷サポート機能は、プリントキューに保持されているジョブ1を削除し、新たに同じ内容のジョブをジョブ2として生成し、印刷する。
【0008】
ここで、印刷装置は、情報処理装置と接続されているネットワークケーブルの抜き差しを検知できないためジョブ1を処理中のままとなる。情報処理装置のポートモニタは印刷装置に対してジョブ2の印刷開始要求を行うが、印刷装置はジョブ1を処理中の為、エラー応答をする。一方、情報処理装置のランゲージモニタは印刷装置に対してステータス取得要求を行う。印刷装置は情報処理装置からのアクセスがある為、タイムアウト処理のカウンタをリセットする。これにより、タイムアウトが発生せず、印刷装置はジョブ1を処理中のままとなり、ジョブ2の処理を一定期間、開始できないという課題があった。
【課題を解決するための手段】
【0009】
上述のような課題を解決するため、本発明は以下の構成を有する。すなわち、ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムであって、前記情報処理装置は、前記印刷装置にジョブに対する印刷開始要求を送信する印刷要求送信手段と、前記印刷装置が処理を開始したジョブに割り当てた識別子を取得し、記憶する記憶手段と、識別子を含むステータス取得要求を前記印刷装置へ送信するステータス取得要求送信手段とを有し、前記印刷装置は、前記情報処理装置から前記印刷開始要求を受信し、処理を開始した当該印刷開始要求に対応するジョブに識別子を割り当てる割当手段と、計時部を用いて、当該印刷開始要求に対応するジョブの処理のタイムアウトを管理するタイムアウト処理手段と、前記情報処理装置から前記ステータス取得要求を受信し、当該ステータス取得要求に含まれる識別子を取得する第一の取得手段と、処理中のジョブに割り当てた識別子を取得する第二の取得手段と、前記第一の取得手段にて取得した識別子と前記第二の取得手段にて取得した識別子とを比較する比較手段とを有し、前記タイムアウト処理手段は、前記比較手段の比較により識別子が一致した場合、前記計時部の値をリセットすることを特徴とする。
【0010】
また、本発明に係る別の構成として、ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムにおける情報処理装置であって、前記印刷装置にジョブに対する印刷開始要求を送信する印刷要求送信手段と、前記印刷装置が処理を開始したジョブに割り当てた識別子を取得し、記憶する記憶手段と、識別子を含むステータス取得要求を前記印刷装置へ送信するステータス取得要求送信手段とを有する。
【0011】
また、本発明に係る別の構成として、ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムにおける印刷装置であって、前記情報処理装置から印刷開始要求を受信し、処理を開始した当該印刷開始要求に対応するジョブに識別子を割り当てる割当手段と、計時部を用いて、当該印刷開始要求に対応するジョブの処理のタイムアウトを管理するタイムアウト処理手段と、前記情報処理装置からステータス取得要求を受信し、当該ステータス取得要求に含まれる識別子を取得する第一の取得手段と、処理中のジョブに割り当てた識別子を取得する第二の取得手段と、前記第一の取得手段にて取得した識別子と前記第二の取得手段にて取得した識別子とを比較する比較手段とを有し、前記タイムアウト処理手段は、前記比較手段の比較により識別子が一致した場合、前記計時部の値をリセットすることを特徴とする。
【発明の効果】
【0012】
印刷装置は情報処理装置からのステータス要求をジョブ単位で区別でき、自身が処理中でないジョブに対するステータス要求により不正にタイムアウト処理のカウンタをリセットしてしまうことを回避できる。
【図面の簡単な説明】
【0013】
【図1】情報処理装置と印刷装置とを有する印刷システムの構成を示すブロック図。
【図2】第一実施形態に係る印刷システムの構成を示すブロック図。
【図3】印刷処理の流れを示す図。
【図4】JobIDとJobStateを示す図。
【図5】印刷装置の処理を示すフローチャート。
【図6】ランゲージモニタの処理を示すフローチャート。
【図7】GetActiveJobs Responseの構成例を示す図。
【図8】ランゲージモニタの処理を示すフローチャート。
【図9】印刷装置の処理を示すフローチャート。
【図10】印刷装置のタイムアウト処理を示すフローチャート。
【図11】GetPrinterElements Request及びGetPrinterElements Responseの構成例を示す図。
【図12】LANケーブルの接続状態に応じた印刷装置とプリントキューの状態を表す図。
【図13】第二実施形態に係る印刷システムの構成を示すブロック図。
【図14】GetPrinterElements Requestの構成例を示す図。
【発明を実施するための形態】
【0014】
以下、添付図面を参照して本発明に係る実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0015】
<第一実施形態>
[システム構成]
図1乃至図12を参照し、本発明に係る第一実施形態を説明する。図1において、情報処理装置100は、一般的なPC(Personal Computer)の構成を有する。情報処理装置100は、RAM101、外部記憶装置102、キーボード103、CPU104、ネットワークボード105、表示用ディスプレイ106、およびインターフェース(I/F)部108を有する。
【0016】
RAM101は、外部記憶装置102に保存される各種プログラムがワークメモリとして使用する。外部記憶装置102にはアプリケーションプログラム群とOS(Operating System)、プリンタドライバやその他各種のデータが格納されている。キーボード103は、ユーザによるデータ入力あるいは動作指示に使用される。表示用ディスプレイ106は、データ表示や状態の通知に使用される。ネットワークボード105はネットワーク109を介し接続された他の機器との通信を行う。インターフェース部108は、印刷装置110との接続を制御する。
【0017】
印刷装置110は、インターフェース(I/F)部111、RAM112、ROM113、CPU114、エンジン115を有する。インターフェース部111はネットワーク109に接続され、同様にネットワークに接続された他の機器との通信を行う。ROM113には、制御プログラムなどが格納されている。CPU114は、ROM113に格納された制御プログラムに従って印刷装置110を制御する。RAM112は、CPU114のワークメモリとして使用され、受信したデータを一時的に保存する受信バッファとしても用いられる。エンジン115はRAM112に保存されたデータを印刷する。本実施形態における印刷装置110のエンジン115はインクジェット方式を例に説明を行うが、これに限定されることなく、例えば、電子写真方式、熱転写方式などのエンジンを適用することもできる。
【0018】
図2は、図1に示した情報処理装置100に適用可能な印刷システムを表すブロック図である。アプリケーション201はOSの印刷サポート機能202を介して、ユーザインターフェースモジュール203から印刷設定情報を取得し、印刷データを作成する。アプリケーション201が作成した印刷データはOSの印刷サポート機能202を介してスプールデータ207としてスプーラ205のプリントキュー206に印刷ジョブとして蓄えられる。印刷ジョブはスプーラ205を経由してランゲージモニタ208に渡される。
【0019】
ランゲージモニタ208は、印刷ジョブをポートモニタ209に出力する。ポートモニタ209はランゲージモニタ208から渡された印刷ジョブを、ネットワーク109を経由して印刷装置110に送信する。本実施形態ではポートモニタ209としてWSD印刷用のポートモニタを想定しているが、これに限定されることなく本発明が適用可能な構成であれば、様々なポートモニタを用いることができる。
【0020】
[WSD印刷処理]
図3はWSD印刷における印刷処理の流れを示したものである。処理301でスプーラ205はランゲージモニタ208の関数であるStartDocPort()を呼び出し、印刷処理を開始する。ランゲージモニタ208は、ポートモニタ209の関数であるStartDocPort()を呼び出す。処理302でスプーラ205は、ランゲージモニタ208の関数であるWritePort()を呼び出し、印刷データの送信を開始する。処理303でランゲージモニタ208は、ポートモニタ209の関数であるWritePort()を呼び出す。処理304でポートモニタ209は、CreatePrintJob Request(印刷開始要求)を印刷装置110に送信する。これにより、印刷要求送信手段を実現する。
【0021】
処理305で印刷装置110は、JobID306と共にCreatePrintJob Response(印刷開始応答)をポートモニタ209に返却する。ここで用いられるJobID306は、印刷装置110が印刷ジョブを管理する為に、印刷ジョブに付加する一意に識別するためのID(識別子)である。処理307でポートモニタ209はSendDocument Request(文書送信要求)を印刷装置110に送信後、WritePort()の処理を完了する。
【0022】
処理308にてランゲージモニタ208は、ポートモニタ209のWritePort()による処理完了後、一定期間内にGetActiveJobs Requestを印刷装置110に送信する。処理309で印刷装置110は、GetActiveJobs Responseをランゲージモニタ208に返却する。GetActiveJobs ResponseはJobIDとJobStateを有する情報(テーブル310)を含んでいる。これにより、ジョブ情報取得手段を実現する。なお、本実施形態では、一定期間(X秒)の例として、4秒以内とする。なお、この時間はこの値に限定されるものではなく、他の設定値を用いてもよい。また、管理者が必要に応じて値を変更可能なように構成してもよい。
【0023】
処理311でスプーラ205は、印刷データを印刷装置110に送信する為にランゲージモニタ208の関数であるWritePort()を呼び出す。続いて、ランゲージモニタ208はポートモニタ209の関数であるWritePort()を呼び出す。そして、ポートモニタ209は印刷データを印刷装置110に送信する。
【0024】
印刷データの送信を行いつつ、処理312でランゲージモニタ208はGetPrinterElements Request(ステータス取得要求)を印刷装置110に送信する。ここでのGetPrinterElements RequestはJobID306を含んでいる。これにより、ステータス取得要求送信手段を実現する。処理313で印刷装置110は、ランゲージモニタ208に対して、GetPrinterElements Response(ステータス取得応答)を返却する。本実施形態におけるシステムは、上述した処理を、印刷データを全て送信するまで繰り返す(処理314、315、316)。
【0025】
[JobIDおよびJobState]
図4を用いて、上述した処理の中で用いられるジョブ情報としてのJobIDとJobStateについて説明する。印刷装置110は、図4(a)、(b)、(c)に示したようなテーブルを用いて現在処理しているジョブの状態を管理する。「JobID」は、現在処理しているジョブを一意に識別するためのID(識別子)であり、「JobState」はジョブの状態を表す。各ジョブは、JobIDおよびJobStateを有する。印刷装置110が情報処理装置100からジョブを受信した直後は図4(a)に示すようにジョブの状態は“Started”となっている。印刷装置110がジョブを処理し、印刷している時は図4(b)に示すようにジョブの状態は“Printing”となっている。印刷装置110がジョブの印刷を完了すると図4(c)に示すようにジョブの状態は“Completed”となる。なお、本実施形態において上記三種類のジョブの状態を示したが、これ以外の状態を定義しても構わない。
【0026】
[Request受信時の動作]
図5を用いて、印刷装置110がCreatePrintJob Requestを受信した際(図3の処理304)及び、GetActiveJobs Requestを受信した際(図3の処理308)の動作を詳細に説明する。
【0027】
印刷装置110はポートモニタ209からCreatePrintJob Requestを受信すると(S501)、自身がジョブ処理中かどうかを判定する(S502)。ジョブ処理中でない場合(S502にてNO)、印刷装置110は受信した要求に対応する新たなJobIDを割り当てる(S503)。これにより、割当手段を実現する。そして、JobStateに“Started”を設定し、その状態を一定時間(X秒)、保持する(S503)。ここでの一定時間は、予め定義されているものとする。また、本実施形態では、“Started”の状態を特定の状態として、一定時間、維持させている。このとき、JobIDとJobStateはテーブル310のような状態になる。印刷装置110は、CreatePrintJob Responseに“成功”を示す情報をセットする(S505)。そして、印刷装置110は、CreatePrintJob Responseをポートモニタ209に送信する(S507)。そして、本処理を終了する。
【0028】
印刷装置110がジョブ処理中の場合(S502にてYES)、印刷装置110は、CreatePrintJob Responseに“エラー”を示す情報をセットする(S506)。そして、印刷装置110は、CreatePrintJob Responseをポートモニタ209に送信する(S507)。そして、本処理を終了する。
【0029】
印刷装置110は、ランゲージモニタ208からGetActiveJobs Requestを受信する(S511)。その後、図5に示すテーブル310のJobIDとJobStateをGetActiveJobs Responseに含めてランゲージモニタ208に送信する(S512)。そして、本処理を終了する。
【0030】
[WritePort()における処理]
図6は図3の処理302で、スプーラ205からランゲージモニタ208の関数であるWritePort()が呼ばれた際のランゲージモニタ208の処理を示すフローチャートである。
【0031】
スプーラ205がランゲージモニタ208のWritePort()を呼び出すと、ランゲージモニタ208はポートモニタ209の関数であるWritePort()を呼び出す(S601)。ポートモニタ209のWritePort()による処理が成功すると(S602にてYES)、ランゲージモニタ208は一定時間(X秒)以内にGetActiveJobs Requestを印刷装置110に送信する(S603)。ここでの一定時間は、予め定義されているものとする。
【0032】
そして、GetActiveJobs Requestの送信に成功し、印刷装置110からGetActiveJobs Responseが返ってきたら(S605にてYES)、ランゲージモニタ208は、GetActiveJobs Responseに含まれるJobStateの値が“Started”になっているかどうか判定を行う(S606)。これにより、ジョブの状態判定を行う。JobStateの値が“Started”になっている場合は(S606にてYES)、ランゲージモニタ208はそのJobIDを記憶部であるRAM101等に記憶する(S607)。そして、ランゲージモニタ208は、スプーラ205に成功を通知する(S608)。そして、本処理を終了する。
【0033】
なお、図6には図示していないが、S607にて記憶したJobIDは、印刷処理終了時にランゲージモニタ208が削除する。
【0034】
ポートモニタ209のWritePort()が失敗した場合は(S602にてNO)、ランゲージモニタ208は、スプーラ205に失敗を通知する(S604)。そして、本処理を終了する。GetActiveJobs Requestに失敗した場合(S605にてNO)やJobStateの値が“Started”でない場合(S606にてNO)は、ポートモニタ209のWrtePort()は成功している。よって、その場合には、ランゲージモニタ208は、その旨をスプーラ205に成功を通知する(S608)。そして、本処理を終了する。
【0035】
[GetActiveJobs Responseの構成]
次に図7を用いて、図3の309にて印刷装置110が返却するGetActiveJobs Responseについて説明する。GetActiveJobs Responseは、情報処理装置100から送信されるGetActiveJobs Requestに対する印刷装置110の応答であり、印刷装置110が処理しているジョブの状態を表している。GetActiveJobs ResponseはXML(eXtensible Markup Language)フォーマットで記述されている。図7にて示したXMLデータに含まれる記述700では、印刷装置110が処理中のジョブのID(JobIDタグ)は“1”であり、状態(JobStateタグ)は“Started”であることが分かる。また、Jobの名称(JobName)は“Job 1”と定義されている。
【0036】
図5のS504で説明したように印刷装置110はCreatePrintJob Requestを受信後、X秒間はジョブの状態(JobState)を“Started”にする。このとき、JobIDが“1”のジョブはまだ処理が開始されたばかりであることがわかる。
【0037】
[GetPrinterElementsの送受信]
図8は、図3に示す処理312および処理315でランゲージモニタ208が印刷装置110に対してGetPrinterElements Requestを送信する時のランゲージモニタ208の処理を示すフローチャートである。
【0038】
ランゲージモニタ208は処理を開始すると、保存しているJobIDがあるか否かを確認する(S801)。保存しているJobIDがある場合は(S801にてYES)、GetPrinterElements RequestのXMLデータに、保存しているJobIDをセットする(S802)。そして、ランゲージモニタ208は、GetPrinterElements Requestを印刷装置110へ送信する(S804)。そして、本処理を終了する。
【0039】
保存しているJobIDが無い場合(S801にてNO)、ランゲージモニタ208は、JobIDとしてデフォルト値を、GetPrinterElements RequestのXMLにセットする(S803)。そして、ランゲージモニタ208は、GetPrinterElements Requestを送信する(S804)。そして、本処理を終了する。
【0040】
図9は、図3に示す処理312及び処理315で印刷装置110がGetPrinterElements Requestを受信した時の印刷装置110の処理を示すフローチャートである。
【0041】
印刷装置110は処理を開始すると、GetPrinterElements Requestを受信する(S901)。そして、印刷装置110は、GetPrinterElements Requestに含まれるJobIDを取得する(S902)。これにより、第一の取得手段を実現する。次に印刷装置110は、現在処理中のジョブのJobIDを取得する(S903)。これにより、第二の取得手段を実現する。
【0042】
印刷装置110は、S902およびS903にて取得した2つのJobIDを比較する(S904)。そして、それらのJobIDが一致した場合は(S904にてYES)、印刷装置110は、タイムアウト処理用カウンタ(以下、カウンタ)の値をリセットする(S905)。そして、印刷装置110は、ランゲージモニタ208へGetPrinterElements Responseを送信する(S906)。そして、本処理を終了する。
【0043】
JobIDが一致しない場合は(S904にてNO)、印刷装置110は、カウンタの値をリセットせずにランゲージモニタ208へGetPrinterElements Responseを送信する(S906)。そして、本処理を終了する。
【0044】
[タイムアウト処理]
ここでの「タイムアウト処理」とは、印刷装置110の占有を避けるために、印刷ジョブを送信した情報処理装置100から一定期間にわたって印刷装置110へアクセスがなければ、印刷ジョブの処理を中止し、印刷装置110の占有を解除することを意味する。図10を用いてタイムアウト処理について説明する。
【0045】
印刷装置110は、情報処理装置100からアクセスがあったか否かを確認する(S1001)。ここでいうアクセスの有無は、情報処理装置100から印刷装置110に印刷データが送られてきた場合や、図9のS904でJobIDが一致した場合などが該当する。しかし、他の条件を用いて、アクセスの有無を判定しても構わない。アクセスがあった場合は(S1001にてYES)、印刷装置110はカウンタの値をリセット(初期化)する(S1002)。そして、本処理を終了する。
【0046】
アクセスが無かった場合は(S1001にてNO)、印刷装置110は、カウンタの値を1つ増やすことでカウントする(S1003)。続いて、印刷装置110は、カウンタの値が閾値を超えているかどうか確認する(S1004)。ここで用いられる閾値は予め定義されているものとし、管理者などによって適宜変更できるように構成されても構わない。カウンタの値が閾値を超えている場合は(S1004にてYES)、印刷装置110は印刷ジョブの処理を中止する(S1005)。そして、本処理を終了する。
【0047】
カウンタの値が閾値を超えていない場合は(S1004にてNO)、そのまま本処理を終了する。印刷装置110は、上記処理を印刷ジョブが終了するまで定期的に行う。
【0048】
なお、上記タイムアウト処理において、アクセスが無かった場合の経過を計測する計時部としてカウンタを用いたが、他の手段(例えばタイマー等)を用いて、タイムアウトを管理しても構わない。
【0049】
[GetPrinterElemtnsの構成例]
図11を用いて、ランゲージモニタ208が送信するGetPrinterElements Request(図3の処理312、315)及び、印刷装置110が送信するGetPrinterElements Response(図3の処理313、316)について説明する。
【0050】
GetPrinterElements Requestはランゲージモニタ208が印刷装置110に対して、印刷装置110の状態の取得及び、意図的に印刷装置110への印刷データの送信を一時的に停止している際に印刷装置110のタイムアウト処理を防止する為に送信する。ランゲージモニタ208が意図的に印刷装置110への印刷データの送信を一時的に停止する例としては、手指し印刷において手指し印刷のガイドダイアログを表示する場合などが挙げられる。
【0051】
印刷装置110は受信したGetPrinterElements Request対してGetPrinterElements Responseで応答する。図11(a)、(b)はGetPrinterElements Requestの構成例を示している。GetPrinterElements RequestはXMLフォーマットで記述されている。
【0052】
図11(a)は図8のS802にて、ランゲージモニタ208が保存しているJobIDをセットした場合のGetPrinterElements Requestの記述例を示している。JobID(JobIDタグ)に“1”がセットされている(記述1100)。
【0053】
図11(b)は図8のS803にて、ランゲージモニタ208がJobIDとしてデフォルト値をセットした場合のGetPrinterElements Requestの記述例を示している。ここでは、JobIDにデフォルト値として“Invalid”がセットされている(記述1101)。
【0054】
図11(c)はGetPrinterElements Responseの構成例を示している。GetPrinerElements Responseには、印刷装置110のRAM容量や、インクの情報など、印刷装置110の状態に関する情報が記述されている。
【0055】
なお、ここで示した各要求/応答のXMLフォーマットにおける構成は、一例であり、これに限定されるものではない。
【0056】
[LANケーブル抜き差し時の動作]
次に図12(A)乃至(C)を用いて、印刷装置110がジョブの印刷中に情報処理装置100側のLANケーブルが抜き差しされた際のOSの印刷サポート機能202、ランゲージモニタ208、および印刷装置110の動作について説明する。
【0057】
図12(A)は、LANケーブルが情報処理装置100から抜かれる前の情報処理装置100と印刷装置110の構成を示している。また、情報処理装置100におけるプリントキュー206にて示されるジョブの状態を示している。情報処理装置100と印刷装置110はネットワーク109で接続されており、印刷装置110はジョブ1を印刷中である。情報処理装置100上のプリントキュー206には状態1200として印刷中のジョブ1が存在する。
【0058】
図12(B)は、情報処理装置100側のLANケーブルが抜かれた際の情報処理装置100と印刷装置110の構成を示している。また、情報処理装置100におけるプリントキュー206にて示されるジョブの状態を示している。情報処理装置100はLANケーブルが抜かれたことを検知し、OSの印刷サポート機能202はジョブ1を再印刷するため一度削除する(状態1300)。このとき、印刷装置110は情報処理装置100側のLANケーブルが抜かれたことを検知できないため、ジョブ1を印刷中のままである(状態1200)。
【0059】
図12(C)は、情報処理装置100側のLANケーブルが再び接続されたときの情報処理装置100と印刷装置110の構成を示している。また、情報処理装置100におけるプリントキュー206にて示されるジョブの状態を示している。情報処理装置100はLANケーブルが再接続されたことを検知し、OSの印刷サポート機能202はジョブ1を再び印刷する(状態1400)。ここでは説明を分かりやすくするため、再印刷されたジョブを再印刷される前のジョブ1と区別して、「ジョブ1’」と表記する。一方、印刷装置110は情報処理装置100側のLANケーブルが抜き差しされたことは検知できないので、ジョブ1を印刷中のままである。すなわち、印刷装置110はジョブ1を印刷中の状態であるにもかかわらず、情報処理装置100はジョブ1’を印刷しようとする。
【0060】
スプーラ205、ランゲージモニタ208、ポートモニタ209、及び印刷装置110は再印刷されたジョブ1’の処理を開始する。スプーラ205は、ランゲージモニタ208の関数であるStartDocPort()、WritePort()を順次呼び出す(図3に示す処理301、302)。ランゲージモニタ208は、ポートモニタ209の関数であるWritePort()を呼び出し、ポートモニタ209はCreatePrintJob Requestを印刷装置110に送信する(図3の処理303、304)。印刷装置110はポートモニタ209からCreatePrintJob Requestを受信し処理を開始するが、ジョブ1を印刷中のままであるため図5の以下の処理を行う。
【0061】
印刷装置110は、ポートモニタ209からCreatePrintJob Requestを受信するが(S501)、ジョブ1を印刷中のままであるため、新たにジョブの処理を開始することができない。したがって、印刷装置110はCreatePrintJob Responseにエラーをセットし(S502にてNO、S506)、ポートモニタ209に送信する(S507)。そして、本処理を終了する。
【0062】
ランゲージモニタ208は、ポートモニタ209のWritePort()の呼び出し(図3の処理303)に失敗するため、スプーラ205に失敗を通知する(図6のS602にてNO、S604)。その後、スプーラ205はランゲージモニタ208のWritePort()の呼び出しが成功するまで繰り返しランゲージモニタ208のWritePort()を呼び出す(図3の処理302)。
【0063】
一方、ランゲージモニタ208は、別スレッドで図3に示す処理312に相当するGetPrinterElements Requestを印刷装置110に送信する。この時のランゲージモニタ208の動作を、図8を用いて説明する。ランゲージモニタ208は保存したJobIDの有無を確認する(S801)。ここでは、保存したJobIDが無い為(S801にてNO)、JobIDとしてデフォルト値(Invalid)をGetPrinterElements RequestのXMLデータにセットする(S803)。そして、ランゲージモニタ208は、GetPrinterElements Requestを印刷装置110に送信する(S804)。その後、本処理を終了する。この時に記述されたGetPrinterElements Requestは、図11(b)に示した内容となる。
【0064】
印刷装置110は、ランゲージモニタ208からのGetPrinterElements Requestを受信する(図3の処理312、315)。この時の印刷装置110の動作を、図9を用いて説明する。印刷装置110はランゲージモニタ208からGetPrinterElements Requestを受信する(S901)。そして、印刷装置110は、GetPrinterElements Requestに含まれているJobIDを取得する(S902)。このJobIDは、“Invalid”となっている。印刷装置110は、現在処理中のジョブのJobIDを取得する(S903)。この時のJobIDは、“1”となっている。印刷装置110は、取得した2つのJobIDの比較を行い、両者は一致しないので(S904にてNO)、ランゲージモニタ208へGetPrinterElements Responseを送信する(S906)。そして、本処理を終了する。
【0065】
印刷装置110は、上記処理に従って、タイムアウト処理用カウンタのクリアは行わない。このためタイムアウト時間が経過すると、印刷装置110はタイムアウト処理を行うこととなる。タイムアウト処理を行うことで、印刷装置110は印刷中のジョブ1に対する処理を中止し、ジョブ1による印刷装置110の占有は解除される。
【0066】
その後、スプーラ205によるランゲージモニタ208のWritePort()の呼び出しは成功する(図3の処理302)。そして、印刷装置110はポートモニタ209からCreatePrintJob Requestを受信する。(S501)このとき、ジョブ1の印刷が終了しているので、印刷装置110は、CreatePrintJob ResponseのXMLデータに成功を示す値をセットし(S505)、ポートモニタ209に送信する(S507)。そして、印刷装置110はジョブ1’の処理を開始する。
【0067】
以上により、印刷装置は自身が処理中でないジョブに対するステータス要求により不正にタイムアウト処理のカウンタをリセットしてしまうことを回避できる。
【0068】
なお、図12ではLANケーブルの抜き差しを例にとって、ネットワークの切断/再接続を説明したが、もちろん物理的なネットワークに限定されるものではなく、例えば無線LANなどのネットワークにおいても本発明は適用可能であることはいうまでもない。
【0069】
<第二実施形態>
図13、14を参照し、本発明に係る第二実施形態を説明する。図13は、図2の印刷システムのブロック図に新たにアプリケーション1500を追加したものである。アプリケーション1500はアプリケーション201と異なり、OSの印刷サポート機能202を経由せず、印刷装置110に直接印刷ジョブを送信することが可能である。
【0070】
ここで、アプリケーション201、アプリケーション1500の順で印刷装置110に印刷ジョブを送った場合を考える。アプリケーション201は、OSの印刷サポート機能202を経由して、図3で説明した処理に従って、印刷装置110に印刷ジョブを送る。この場合において、印刷ジョブの状態の取得及び印刷装置110のタイムアウト処理を防止するために、定期的にGetPrinterElements Requestを送信する。
【0071】
印刷装置110は、アプリケーション201からのCreatePrintJob Requestに対して、JobIDとして“200”を割り当て、CreatePrintJob Reqponseを返却する。このため、アプリケーション201が印刷したジョブの状態を取得する為のGetPrinterElements Requestの内容は図14(A)のようになる。ここでは、JobID(JobIDタグの値)に“200”が記述されている。
【0072】
アプリケーション1500は、OSの印刷サポート機能202を経由せずに直接印刷装置110に、CreatePrintJob Request及びSendDocument Requestを送信し、印刷装置110に所望のジョブを印刷させる。この場合において、印刷ジョブの状態の取得及び印刷装置110のタイムアウト処理を防止するために、アプリケーション1500は、定期的にGetPrinterElements Requestを送信する。
【0073】
印刷装置110は、アプリケーション201からの印刷ジョブを印刷中なので、アプリケーション1500からのCreatePrintJob Requestに対して、エラーを返す。この場合、アプリケーション1500はJobIDを取得できない。よって、アプリケーション1500が印刷ジョブの状態を取得する為のGetPrinterElements Requestの内容は図14(B)のようになる。ここではJobID(JobIDタグの値)に“Invalid”が記述されている。
【0074】
印刷装置110は、アプリケーション201もしくはアプリケーション1500からGetPrinterElements Requestを受信すると、第一実施形態において図9で説明した処理を行う。印刷装置110は、GetPrinterElements Requestに含まれているJobID(S902)と、印刷装置110が処理中のジョブのJobID(S903)とを比較する(S904)。そして、識別子が一致した場合のみ、印刷装置110はタイムアウト処理用のカウンタの値をクリアする(S905)。
【0075】
以上により印刷装置110は、アプリケーション201からGetPrinterElements Requestを受信した場合は、JobIDが一致するのでタイムアウト処理のカウンタの値のクリアを行う。一方、アプリケーション1500からのGetPrinterElements Requestを受信した場合はJobIDが一致しないので、印刷装置110は、カウンタの値のクリアを行わない。このように印刷装置110は、情報処理装置100の複数のアプリケーションからGetPrinterElements Requestを受信した場合でも正しいタイムアウト処理の行うことができる。
【0076】
例えば、印刷装置110がアプリケーション201のジョブを印刷中に、アプリケーション201やOSの印刷サポート機能202が何らかの原因でクラッシュした場合、印刷装置110はアプリケーション201のジョブを印刷中のままとなる。この時、アプリケーション1500からGetPrinterElements Requestを受信した場合、JobIDが一致しないのでカウンタの値を更新しない。
【0077】
これにより印刷装置110は不正にタイムアウト処理用のカウンタを更新することなく、本来想定した時間が経過後、タイムアウト処理を行い印刷中のジョブを中止し、アプリケーション1500からの印刷ジョブを受け付けることが可能となる。
【0078】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムであって、
前記情報処理装置は、
前記印刷装置にジョブに対する印刷開始要求を送信する印刷要求送信手段と、
前記印刷装置が処理を開始したジョブに割り当てた識別子を取得し、記憶する記憶手段と、
識別子を含むステータス取得要求を前記印刷装置へ送信するステータス取得要求送信手段と
を有し、
前記印刷装置は、
前記情報処理装置から前記印刷開始要求を受信し、処理を開始した当該印刷開始要求に対応するジョブに識別子を割り当てる割当手段と、
計時部を用いて、当該印刷開始要求に対応するジョブの処理のタイムアウトを管理するタイムアウト処理手段と、
前記情報処理装置から前記ステータス取得要求を受信し、当該ステータス取得要求に含まれる識別子を取得する第一の取得手段と、
処理中のジョブに割り当てた識別子を取得する第二の取得手段と、
前記第一の取得手段にて取得した識別子と前記第二の取得手段にて取得した識別子とを比較する比較手段と
を有し、
前記タイムアウト処理手段は、前記比較手段の比較により識別子が一致した場合、前記計時部の値をリセットすることを特徴とする印刷システム。
【請求項2】
前記印刷装置は、ジョブに対する前記割当手段による識別子の割り当て後、当該ジョブの状態を一定期間において特定の状態に設定し維持する維持手段を更に備え、
前記情報処理装置は、
前記印刷要求送信手段による印刷開始要求の送信後、一定期間内にジョブの状態を示すジョブ情報の取得要求を送信し、当該ジョブ情報を取得するジョブ情報取得手段と、
前記ジョブ情報にて示されたジョブの状態が前記特定の状態か否かを判定する状態判定手段と
を更に有し、
前記記憶手段は、前記状態判定手段により前記ジョブ情報にて示されたジョブの状態が前記特定の状態の際に、対応する識別子を記憶することを特徴とする請求項1の印刷システム。
【請求項3】
ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムにおける情報処理装置であって、
前記印刷装置にジョブに対する印刷開始要求を送信する印刷要求送信手段と、
前記印刷装置が処理を開始したジョブに割り当てた識別子を取得し、記憶する記憶手段と、
識別子を含むステータス取得要求を前記印刷装置へ送信するステータス取得要求送信手段と
を有することを特徴とする情報処理装置。
【請求項4】
ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムにおける印刷装置であって、
前記情報処理装置から印刷開始要求を受信し、処理を開始した当該印刷開始要求に対応するジョブに識別子を割り当てる割当手段と、
計時部を用いて、当該印刷開始要求に対応するジョブの処理のタイムアウトを管理するタイムアウト処理手段と、
前記情報処理装置からステータス取得要求を受信し、当該ステータス取得要求に含まれる識別子を取得する第一の取得手段と、
処理中のジョブに割り当てた識別子を取得する第二の取得手段と、
前記第一の取得手段にて取得した識別子と前記第二の取得手段にて取得した識別子とを比較する比較手段と
を有し、
前記タイムアウト処理手段は、前記比較手段の比較により識別子が一致した場合、前記計時部の値をリセットすることを特徴とする印刷装置。
【請求項5】
ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムにおける情報処理装置の制御方法であって、
印刷要求送信手段が、前記印刷装置にジョブに対する印刷開始要求を送信する印刷要求送信工程と、
記憶手段が、前記印刷装置が処理を開始したジョブに割り当てた識別子を取得し、記憶部に記憶する記憶工程と、
ステータス取得要求送信手段が、識別子を含むステータス取得要求を前記印刷装置へ送信するステータス取得要求送信工程と
を有することを特徴とする制御方法。
【請求項6】
ネットワークを介して接続された、情報処理装置と印刷装置とを有する印刷システムにおける印刷装置の制御方法であって、
割当手段が、前記情報処理装置から印刷開始要求を受信し、処理を開始した当該印刷開始要求に対応するジョブに識別子を割り当てる割当工程と、
タイムアウト手段が、計時部を用いて、当該印刷開始要求に対応するジョブの処理のタイムアウトを管理するタイムアウト処理工程と、
第一の取得手段が、前記情報処理装置からステータス取得要求を受信し、当該ステータス取得要求に含まれる識別子を取得する第一の取得工程と、
第二の取得手段が、処理中のジョブに割り当てた識別子を取得する第二の取得工程と、
比較手段が、前記第一の取得工程にて取得した識別子と前記第二の取得工程にて取得した識別子とを比較する比較工程と
を有し、
前記タイムアウト処理工程において、前記比較工程による比較により識別子が一致した場合、前記計時部の値をリセットすることを特徴とする制御方法。
【請求項7】
コンピュータを、
印刷装置にジョブに対する印刷開始要求を送信する印刷要求送信手段、
前記印刷装置が処理を開始したジョブに割り当てた識別子を取得し、記憶する記憶手段、
識別子を含むステータス取得要求を前記印刷装置へ送信するステータス取得要求送信手段
として機能させるためのプログラム。
【請求項8】
コンピュータを、
情報処理装置から印刷開始要求を受信し、処理を開始した当該印刷開始要求に対応するジョブに識別子を割り当てる割当手段、
計時部を用いて、当該印刷開始要求に対応するジョブの処理のタイムアウトを管理するタイムアウト処理手段、
前記情報処理装置からステータス取得要求を受信し、当該ステータス取得要求に含まれる識別子を取得する第一の取得手段、
処理中のジョブに割り当てた識別子を取得する第二の取得手段、
前記第一の取得手段にて取得した識別子と前記第二の取得手段にて取得した識別子とを比較する比較手段
として機能させ、
前記タイムアウト処理手段は、前記比較手段の比較により識別子が一致した場合、前記計時部の値をリセットすることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−173975(P2012−173975A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−35183(P2011−35183)
【出願日】平成23年2月21日(2011.2.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】