(57)【特許請求の範囲】
【請求項１】
サーバコンピュータが、印刷データが検知ジョブであれば、クライアントコンピュータにより参照可能な共有記憶領域のジョブＩＤに第１の値を格納する第１格納ステップと、
サーバコンピュータが、印刷データの受信中にプリンタのステータスを取得する第１取得ステップと、
サーバコンピュータが、前記第１取得ステップにより取得したステータスを前記共有記憶領域に書込むステップと、
サーバコンピュータが、印刷データの受信が完了しているか判別し、印刷データの受信が完了していると判別された場合、前記共有記憶領域のジョブＩＤに第２の値を格納する第２格納ステップと、
クライアントコンピュータが、検知ジョブを発行し、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第１の値の場合、一定期間ジョブＩＤの取得を行い、一定期間経過後もジョブＩＤが第１の値の場合、前記共有記憶領域のステータス情報を取得せず、一定期間ジョブＩＤを取得している間に取得したジョブＩＤが第２の値になった場合、前記共有記憶領域のステータス情報を取得する第２取得ステップとを有し、
前記第１格納ステップは、印刷データが検知ジョブでなければ、クライアントコンピュータにより参照可能なサーバコンピュータの共有記憶領域のジョブＩＤに第３の値を格納し、
前記第２取得ステップは、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第３の値の場合、前記共有記憶領域のステータス情報を取得し、取得したジョブＩＤが第３の値でない場合、検知ジョブを発行し、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第１の値の場合、一定期間ジョブＩＤの取得を行い、一定期間経過後もジョブＩＤが第１の値の場合、前記共有記憶領域のステータス情報を取得せず、一定期間ジョブＩＤを取得している間に取得したジョブＩＤが第２の値になった場合、前記共有記憶領域のステータス情報を取得することを特徴とするプリンタのステータス管理方法。
【請求項２】
サーバコンピュータとクライアントコンピュータと有するステータス管理システムであって、
前記サーバコンピュータは、印刷データが検知ジョブであれば、クライアントコンピュータにより参照可能な共有記憶領域のジョブＩＤに第１の値を格納する第１格納手段と、印刷データの受信中にプリンタのステータスを取得する第１取得手段と、前記第１取得手段により取得したステータスを前記共有記憶領域に書込む手段と、印刷データの受信が完了しているか判別し、印刷データの受信が完了していると判別された場合、前記共有記憶領域のジョブＩＤに第２の値を格納する第２格納手段とを有し、
前記クライアントコンピュータは、検知ジョブを発行し、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第１の値の場合、一定期間ジョブＩＤの取得を行い、一定期間経過後もジョブＩＤが第１の値の場合、前記共有記憶領域のステータス情報を取得せず、一定期間ジョブＩＤを取得している間に取得したジョブＩＤが第２の値になった場合、前記共有記憶領域のステータス情報を取得する第２取得手段とを有し、
前記第１格納手段は、印刷データが検知ジョブでなければ、クライアントコンピュータにより参照可能なサーバコンピュータの共有記憶領域のジョブＩＤに第３の値を格納し、
前記第２取得手段は、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第３の値の場合、前記共有記憶領域のステータス情報を取得し、取得したジョブＩＤが第３の値でない場合、検知ジョブを発行し、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第１の値の場合、一定期間ジョブＩＤの取得を行い、一定期間経過後もジョブＩＤが第１の値の場合、前記共有記憶領域のステータス情報を取得せず、一定期間ジョブＩＤを取得している間に取得したジョブＩＤが第２の値になった場合、前記共有記憶領域のステータス情報を取得することを特徴とするプリンタのステータス管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
プリンタ等のステータスを取得する事を可能とするステータス管理方法、装置、及び、記憶媒体に関する。
【０００２】
【従来の技術】
従来、ネットワーク環境で印刷を行う場合、双方向通信プリンタのステータスを取得することは困難であった。プリンタ状態ステータスはプリンタドライバの一部が取得、保持している。
【０００３】
【発明が解決しようとする課題】
これらは実際にプリンタが接続されているコンピュータ上で動作するため、ネットワーク印刷を行った場合、印刷を実行したコンピュータはプリンタ状態ステータスを知ることができない。
【０００４】
また、プリンタ状態ステータスをRPCやMailSlotなどのプログラム間通信によって伝達し、そのプログラムがプリンタ状態ステータスを保持し、クライアントコンピュータに伝達していた。また伝達されたプリンタ状態ステータスは現在のプリンタ状態ステータスとリアルタイムに一致しているかどうかを判断する手段に欠けていた。
【０００５】
このようにプリンタ状態ステータスを取得するために、ネットワークを介したプログラム間通信を行う場合、処理が複雑になり、コンピュータの負荷も増大する。上記課題を解決するため本発明の目的は、ネットワークシステムで簡単な構成でプリンタのステータスを取得することにある。
【０００６】
また、簡単な構成でプリンタのステータスを取得することにある。
【０００７】
また、効率的に、ステータスを取得することにある。
【０００８】
また、印刷開始時に、実際のステータスを確認し、設定されているステータスと実際のステータスとを比較することにある。
【０００９】
【課題を解決するための手段】
上述した課題を解決するために本発明のプリンタのステータス管理方法は、
サーバコンピュータが、印刷データが検知ジョブであれば、クライアントコンピュータにより参照可能な共有記憶領域のジョブＩＤに第１の値を格納する第１格納ステップと、
サーバコンピュータが、印刷データの受信中にプリンタのステータスを取得する第１取得ステップと、
サーバコンピュータが、前記第１取得ステップにより取得したステータスを前記共有記憶領域に書込むステップと、
サーバコンピュータが、印刷データの受信が完了しているか判別し、印刷データの受信が完了していると判別された場合、前記共有記憶領域のジョブＩＤに第２の値を格納する第２格納ステップと、
クライアントコンピュータが、検知ジョブを発行し、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第１の値の場合、一定期間ジョブＩＤの取得を行い、一定期間経過後もジョブＩＤが第１の値の場合、前記共有記憶領域のステータス情報を取得せず、一定期間ジョブＩＤを取得している間に取得したジョブＩＤが第２の値になった場合、前記共有記憶領域のステータス情報を取得する第２取得ステップとを有し、
前記第１格納ステップは、印刷データが検知ジョブでなければ、クライアントコンピュータにより参照可能なサーバコンピュータの共有記憶領域のジョブＩＤに第３の値を格納し、
前記第２取得ステップは、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第３の値の場合、前記共有記憶領域のステータス情報を取得し、取得したジョブＩＤが第３の値でない場合、検知ジョブを発行し、前記共有記憶領域のジョブＩＤを取得し、取得したジョブＩＤが第１の値の場合、一定期間ジョブＩＤの取得を行い、一定期間経過後もジョブＩＤが第１の値の場合、前記共有記憶領域のステータス情報を取得せず、一定期間ジョブＩＤを取得している間に取得したジョブＩＤが第２の値になった場合、前記共有記憶領域のステータス情報を取得することを特徴とする。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１４】
図１は本発明のプリンタ状態ステータス記録、および取得方法の一実施の形態をあらわすローカル印刷環境を表すブロック図である。ホストコンピュータ１は作画環境と印刷環境を提供し、印刷開始を命令するアプリケーション２、アプリケーションで作画された図柄情報をプリンタコマンドに変換する印刷データ生成部３、生成された印刷データを受け取り、任意のサイズの印刷データブロックに分割して繰り返しデータ転送要求を発行するスプールデータ管理部４、データ転送要求を受け付け、印刷データブロックをパースするデータ送信制御部５、パースを終えた印刷データブロックの送信とプリンタからのプリンタ状態ステータス受信を司るデータ送受信処理部６、ホストコンピュータのI/O部を管理するインタフェース制御部７、システムが提供する、プリンタ状態ステータスを格納するための共有記憶領域８から構成される。
【００１５】
一方プリンタ９はホストコンピュータ１との通信を行うインタフェース制御部１０、実際に印刷を行うプリンタエンジン１３、プリンタエンジン１３を制御する印刷制御部１１、ホストコンピュータ１からの印刷データを受信し蓄えるための受信バッファRAM１２から構成される。
【００１６】
本実施の形態では外部インタフェースとしてセントロニクスパラレルインタフェースを引用したがこれはSCSIインタフェース等の他のインタフェースであっても構わない。また、プリントエンジンとしては、ヘッド交換可能なインクジェットプリンタや、レーザビームプリンタ等のプリンタに適用できる。
【００１７】
図２は本発明のデータ送信制御方式の一実施の形態をあらわすサーバ−クライアント形態で接続された印刷環境を表すブロック図である。クライアントコンピュータ２１は作画環境と印刷環境を提供し、印刷開始を命令するアプリケーション２２、アプリケーションで作画された図柄情報をプリンタコマンドに変換する印刷データ生成部２３、生成された印刷データをサーバコンピュータ２５へネットワークを介して送信するためのネットワーク制御部２４で構成されている。
【００１８】
一方、サーバコンピュータ２５はネットワーク経由で送られてきた印刷データを受信するためのネットワーク制御部２６、ネットワーク受信した印刷データを任意のサイズの印刷データブロックに分割して繰り返しデータ転送要求を発行するスプールデータ管理部２７、データ転送要求を受け付け、印刷データブロックをパースするデータ送信制御部２８、パースを終えた印刷データブロックの送信とプリンタからのプリンタ状態ステータス受信を司るデータ送受信処理部２９、サーバコンピュータのI/O部を管理するインタフェース制御部３０、システムが提供する、プリンタ状態ステータスを格納するための共有記憶領域３１から構成される。
【００１９】
プリンタ３２はサーバコンピュータ２５との通信を行うインタフェース制御部３３、実際に印刷を行うプリンタエンジン３６、プリンタエンジン３６を制御する印刷制御部３４、サーバコンピュータ２５からの印刷データを受信し蓄えるための受信バッファRAM３５から構成される。
【００２０】
本実施の形態ではサーバ−プリンタ間の外部インタフェースとしてセントロニクスパラレルインタフェースを引用したがこれはSCSIインタフェース等の他のインタフェースであっても構わない。また、プリントエンジンとしては、ヘッド交換可能なインクジェットプリンタや、レーザビームプリンタ等のプリンタに適用できる。またクライアントコンピュータとサーバコンピュータのブロック図による処理の分担を上記の如く示したが、特にこの分担形態に限ったことではなく例えばスプールデータ管理部２７がクライアントコンピュータ２１に含まれる形態等、別形態であっても構わない。
【００２１】
次に共有記憶領域の概念について説明する。
【００２２】
共有記憶領域はシステムが様々なハードウェアやソフトウェアなどの情報を格納するために提供する領域で、（基本的には、システムが用意し、プリンタドライバ自体で用意、管理しなくてもよいものである。例えば、マイクロソフト社のＷｉｎｄｏｗｓのレジストリに相当するものである。）そこに、プリンタの情報を格納しておく。ここでは、便宜的にkeyとValueDataを使って共有記憶領域を説明する。共有記憶領域にkeyというプリンタ情報の項目の領域を確保し、そこにValueDataを格納する。たとえばプリンタモデル名がPrinterAとするならば、共有記憶領域に「Model」という領域を確保し、その領域に「PrinterA」と格納する。この場合key名は「Model」に相当し、そのkeyの値、すなわちValueDataは「PrinterA」である。
【００２３】
「フォトカートリッジとブラックカートリッジが搭載されているBJC-7000が、現在印刷中である。」というような情報を共有記憶領域に格納するとき、
Model:BJC-7000
Cartridge:Photo,Black
CurrentDoing:Printing
といった具合に格納する。それぞれ左側がkeyで右側がValueDataである。
【００２４】
次に図３、図４のフローチャートを使って図１で示したローカル印刷環境におけるホストコンピュータ上で動作するデータ送信制御部５の動作について説明する。以降ではローカル印刷環境について述べるが図２で示したようなネットワーク印刷環境でも同様である。
【００２５】
なお、図３、図４のフローチャートにかかわるプログラムは、データ送信制御部５またはデータ送信制御部２８で実施され、ホストコンピュータ１内のメモリまたはサーバーコンピュータ２５内のメモリに記憶され、それぞれのＣＰＵによって実行される。
【００２６】
データ送信制御部５はステップ１でスプールデータ管理部４から印刷データブロックを受け取る。そして、ステップ２で印刷データブロックに含まれているプリンタコマンドを解析する。ステップ４で受信した印刷データブロックが印刷ジョブの最初のデータブロックであった場合、ステップ３へ、そうでない場合は、ステップ１０へ進む。ステップ４では共有記憶領域８に「JobID」keyがあるか確認し、「JobID」keyがある場合は、ステップ６へ、ない場合はステップ５へ進み、共有記憶領域に「JobID」keyを新規作成し、ステップ６へ進む。ここで「JobID」keyとは印刷ジョブの識別等に用い、そのValueDataには印刷ジョブごとにユニークな値を割り当てる。この実施の形態では「0」、「1」、「2」を使用しているが、任意であって構わない。
【００２７】
ステップ６では、送られてきた印刷データが検知ジョブかどうかを確認する。検知ジョブとは実際に印字することなく、プリンタ状態ステータスだけを更新したいときにトリガーとして用いる任意のフォーマットで決められた印刷ジョブのことである。検知ジョブでない場合、ステップ７で「JobID」keyのValueDataとして、「0」を格納する。検知ジョブの場合ステップ８で「1」を格納する。
【００２８】
ステップ９ではプリンタ状態ステータス要求コマンドを送られてきた印刷データブロックに付加し、ステップ１０でデータ送受信処理部６へ送信する。プリンタ９はプリンタ状態ステータス要求コマンドを解析すると、指定されたプリンタ状態ステータスをデータ送受信処理部６へ渡す。また、プリンタは、プリンタ状態ステータスが更新されるとその都度、更新された状態ステータスをデータ送受信処理部６へ渡す。
【００２９】
ステップ１１ではデータ送受信処理部６を介してデータ送信制御部５からプリンタ状態ステータスを受け取ったか否かを判別する。受け取っていないと判別された場合、ステップ１１０に進み、所定時間経過したか否かを判別し、経過しない場合、ステップ１１に戻り、経過した場合、ステップ１１１に進み、「JobID」keyのValueDataとして、「１」を格納し、ステップ１に戻る。すなわち、ステータスの取得はあきらめて、印刷データはプリンタに送信する。つまり、双方向から片方向として印刷自体は続けている。ステップ１１で受け取ったと判別された場合、ステップ１２に進む。
【００３０】
ステップ１２で受け取ったプリンタ状態ステータスを解析し、一つずつ処理していく。
【００３１】
なお、この時に、取得したステータスを表示し、また、ドライバで設定されているステータスと取得したステータスを比較し、ミスマッチの場合、その旨表示する。この処理はステップ１８の後で実施してもよい。
【００３２】
ステップ１３では解析したプリンタ状態ステータスに一致するkeyが共有記憶領域８にあるか検索する。一致するkeyがあった場合ステップ１４へと進み、共有記憶領域にある、そのkeyのValueDataを取得する。ステップ１５では共有記憶領域から取得したValueDataと解析したプリンタ状態ステータスを比較し、同じであれば、ステップ１８に、更新されていればステップ１７に進む。
【００３３】
ステップ１３で、解析したプリンタ状態ステータスに一致するkeyが共有記憶領域に存在しなかった場合、ステップ１６でそのプリンタ状態ステータスのためのkeyを新規作成し、ステップ１７に進む。
【００３４】
ステップ１７では解析したプリンタ状態ステータスに該当するkeyのValueDataに、その状態ステータスを格納し、ステップ１８に進む。
【００３５】
ステップ１８で受け取ったプリンタ状態ステータスをすべて解析したか確認する。まだ残っている場合はステップ１２に戻り、すべてのプリンタ状態ステータスを解析した場合はステップ１９に進む。
【００３６】
ステップ１９でスプールデータ管理部４からすべての印刷データブロックが送られてきたか確認する。まだすべての印刷データブロックを受信していなければ、次の印刷データブロックがスプールデータ管理部４から渡されるまで待機している。新たな印刷データブロックが渡されれば、またステップ１から繰り返す。もし、すべての印刷データブロックの受信が完了しているならば、ステップ２０に進み、「JobID」keyに「2」を格納し、終了する。
【００３７】
ここでは印刷データ送信一回につきプリンタ状態ステータスは一度といったシーケンシャルな処理例を示したが、例えば、印刷データ送信とプリンタ状態ステータス取得がマルチタスク環境において並列で行われても構わない。
【００３８】
（他の実施の形態）
次に他の実施の形態として、検知ジョブを用いてプリンタ状態ステータスを取得する方法について説明する。
【００３９】
図５は本発明のプリンタ状態ステータス記録、および取得方法の一実施の形態をあらわすローカル印刷環境を表すブロック図を、図６は本発明のデータ送信制御方式の一実施の形態をあらわすサーバ−クライアント形態で接続された印刷環境を表すブロック図である。それぞれ、図５の１３、図６の３６のプリンタ状態ステータス監視プログラム以外は図１、図２と同様である。図５の１３、図６の３６のプリンタ状態ステータス監視プログラムは、それぞれ図５の３、図６の２７の印刷データ生成部に検知ジョブを発行し、それぞれ図５の８、図６の３１の共有記憶領域からプリンタ状態ステータスをプリンタから取得するプログラムである。
【００４０】
図７のフローチャートを使って図５で示したローカル印刷環境におけるホストコンピュータ上で動作するプリンタ状態ステータス監視プログラム１３の動作について説明する。以降ではローカル印刷環境について述べるが図６で示したようなネットワーク印刷環境でも同様である。
【００４１】
なお、図７のフローチャートにかかわるプログラムは、プリンタ状態ステータス監視プログラム１３またはプリンタ状態ステータス監視プログラム２２で実施され、ホストコンピュータ１内のメモリまたはサーバーコンピュータ２５内のメモリに記憶され、それぞれのＣＰＵによって実行される。
【００４２】
また、図７のフローチャートは、例えば、インクジェットプリンタのプリンタドライバ画面上のプリントヘッド検知ボタンがユーザにより押されたのをトリガとして開始される。
【００４３】
プリンタ状態ステータス監視プログラム１３はまず、ステップ２１でプリンタ状態ステータス要求を行うプリンタのプリンタ名を受け取る。次にステップ２２で指定されたプリンタの「JobID」keyを共有記憶領域８の中から検索する。指定された「JobID」keyがなければ、ステップ２５へ進み、もしあれば、ステップ２３で「JobID」keyのValueDataを取得する。失敗した場合、取得をあきらめて終了し、成功すればステップ２４に進む。ステップ２４で「JobID」keyが「0」であるならば前述の実施の形態で説明したように指定されたプリンタは現在通常の印刷を実行していると考えられるため、共有記憶領域８にあるプリンタ状態ステータスは現在の状態ステータスを反映していると考えられる。しかし、「0」以外の場合、いつプリンタ状態ステータスが更新されたか分からないためそのValueDataを信頼することはできない。「JobID」keyのValueDataが「0」以外ならステップ２５に進み、「0」ならばステップ３２へ進む。
【００４４】
ステップ２５でプリンタ状態ステータス監視プログラム１３は共有記憶領域８のプリンタ状態ステータスkeyを更新するために検知ジョブを発行する。そのデータブロックはデータ送信制御部５へと伝えられ、前述の実施の形態の図３で説明したような動作を経て、共有記憶領域８のプリンタ状態ステータスkeyを更新する。
【００４５】
プリンタ状態ステータス監視プログラム１３は検知ジョブを発行後、ステップ２６で「JobID」keyの取得回数としてCount=1とし、ステップ２７で任意時間Waitし、ステップ２８で「JobID」keyのValueData取得を試みる。失敗した場合、終了し、成功の場合はステップ２９に進む。ステップ２９では、ステップ２８で取得したValueDataが「2」（プリンタの状態ステータスが更新された）ならば、ステップ３２へ進む。ValueDataが同じ場合（「1」）はステップ３０へ進む。ステップ３０で「JobID」keyの取得回数が任意に定めた上限回数を越えた場合、取得をあきらめ終了する。まだ上限回数に達していないならば、ステップ２７へ戻る。
【００４６】
ステップ３２では共有記憶領域８に格納されているプリンタ状態ステータスkeyのValueDataが現在のプリンタ状態を反映していると考えられるので、これらの値をすべて取得し、終了する。
【００４７】
以上説明したようの本発明の実施の形態によれば、
（１）ネットワーク、ローカル印刷に関わらず、クライアントコンピュータがプリンタ状態ステータスを容易に取得することが可能である。
（２）プリンタドライバのすべてのモジュールは、プリンタ状態ステータスをいつでも取得することができる。
（３）共有記憶領域にデータが格納されていなければ、双方向通信をサポートしていないプリンタであると判別することができる。
（４）プリンタ状態ステータスを共有記憶領域から取得することによって、ステータスモニタに利用することができる。
（５）プリンタ状態ステータスを参照できることにより、プリンタドライバ開発においてデバッグ作業が容易になり、開発効率が向上する。
【００４８】
【発明の効果】
以上説明したように本発明によれば、ネットワークシステムで簡単な構成でプリンタのステータスを取得できる。
【００４９】
また、簡単な構成でプリンタのステータスを取得できる。
【００５０】
また、現在の状態を反映するものである場合、プリンタよりステータスの取得を行わないため効率的に、ステータスを取得できる。
【００５１】
また、印刷開始時に、実際のステータスを確認人でき、設定されているステータスと実際のステータスとを比較することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係わるプリンタ状態ステータス記録、および取得方法のブロック図である。
【図２】本発明の実施の形態に係わるプリンタ状態ステータス記録、および取得方法のブロック図である。
【図３】本発明の実施の形態に係わるプリンタ状態ステータス記録、および取得方法の機能を説明するフローチャートである。
【図４】本発明の実施の形態に係わるプリンタ状態ステータス記録、および取得方法の機能を説明するフローチャートである。
【図５】本発明の実施の形態に係わるプリンタ状態ステータス記録、および取得方法のブロック図である。
【図６】本発明の実施の形態に係わるプリンタ状態ステータス記録、および取得方法のブロック図である。
【図７】本発明の実施の形態に係わるプリンタ状態ステータス記録、および取得方法の機能を説明するフローチャートである。
【図１】
0004652503.tif 000002
【図２】
0004652503.tif 000003
【図３】
0004652503.tif 000004
【図４】
0004652503.tif 000005
【図５】
0004652503.tif 000006
【図６】
0004652503.tif 000007
【図７】
0004652503.tif 000008