JP2008310701A - 周辺装置制御システム、情報処理装置、周辺装置制御方法、プログラム、記憶媒体、プリンタ制御装置、プリンタ制御プログラム及びプリンタ制御方法 - Google Patents

周辺装置制御システム、情報処理装置、周辺装置制御方法、プログラム、記憶媒体、プリンタ制御装置、プリンタ制御プログラム及びプリンタ制御方法 Download PDF

Info

Publication number
JP2008310701A
JP2008310701A JP2007159496A JP2007159496A JP2008310701A JP 2008310701 A JP2008310701 A JP 2008310701A JP 2007159496 A JP2007159496 A JP 2007159496A JP 2007159496 A JP2007159496 A JP 2007159496A JP 2008310701 A JP2008310701 A JP 2008310701A
Authority
JP
Japan
Prior art keywords
information
peripheral device
notification
notification information
page
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
JP2007159496A
Other languages
English (en)
Other versions
JP4996362B2 (ja
JP2008310701A5 (ja
Inventor
Koichi Abe
孝一 安部
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2007159496A priority Critical patent/JP4996362B2/ja
Priority to US12/139,437 priority patent/US7941571B2/en
Publication of JP2008310701A publication Critical patent/JP2008310701A/ja
Publication of JP2008310701A5 publication Critical patent/JP2008310701A5/ja
Application granted granted Critical
Publication of JP4996362B2 publication Critical patent/JP4996362B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1222Increasing security of the print job
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1207Improving or facilitating administration, e.g. print management resulting in the user being informed about print result after a job submission
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1259Print job monitoring, e.g. job status
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1273Print job history, e.g. logging, accounting, tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

【課題】低機能のプリンタを利用した周辺装置システムにおいて、プリンタドライバから正しい内容の印刷ジョブに関する通知を正確なタイミングかつ正しい順序で発行し、アプリケーションに正しい情報を正確なタイミングかつ正しい順序で伝えることで、信頼性の高い正確な周辺装置制御システムを実現する。
【解決手段】情報処理装置と、周辺装置とから成る周辺装置制御システムであって、前記情報処理装置は、周辺装置から周辺装置に関する周辺装置情報を取得して、周辺装置情報からジョブ情報を生成し、ジョブ情報を通知する。その際に、通知済みの印刷中ページ番号及び印刷済みページ番号と、現在印刷中のページ番号とに基づいて未発行の通知を作成し、発行する。
【選択図】図13

Description

本発明は、周辺装置制御システム、情報処理装置、周辺装置制御方法、プリンタ制御装置及びプリンタ制御方法に関する。
近年、ネットワークの基盤が整備されるに従い、ネットワーク対応型のプリンタ、複写機、ファクシミリ、スキャナ、デジタルカメラ、及びこれらの複合機能を備える装置(周辺装置)が急速に普及しつつある。これに伴い、周辺装置の使用状況をその進行状態も含め正確に把握する必要があるケースが生じている。例えば、プリンタの出力枚数に応じて課金するアプリケーションなどがその一例である。周辺装置の使用状況に応じて課金するアプリケーションの例としては、課金アプリケーションの例が挙げられる。
ここで周辺装置の例としてLBPや複写機等の高機能なプリンタを用いる場合は、課金アプリケーションが、プリンタから発行される印刷ジョブに関する通知の内容に従って、印刷が終了したページに対して課金を行うような印刷システムが存在する。このような印刷システムでは高機能なプリンタが使用されるので、プリンタ自身が各ページの印刷状況をモニタし、その状況に応じて適切な印刷ジョブに関する通知を発行することができる。そのため前記アプリケーションにおいて正確に課金を行うことが可能である。
一方、周辺装置の例としてインクジェットプリンタ等の低機能のプリンタは印刷ジョブに関する通知機能を備えていない。この場合プリンタと接続されている情報処理装置にインストールされている、プリンタを制御する為に必要なプリンタドライバを使って、印刷ジョブに関する通知を発行するような印刷システムが考案されている(例えば特許文献1等参照)。特許文献1には、通知端末装置からポーリングによりプリンタの状態情報を取得して、通知端末装置から報知端末装置にその状態情報を通知することが記載されている。
特許第3841023号
このような低機能のプリンタを利用した印刷システムにおいては、例えば4秒毎の定期的な割り込み関数であるReadPort関数を使って印刷ジョブの状態を監視する。またWritePort関数等により書き込みを行った際にも、印刷ジョブの状態を得ることができる。しかしジョブ状態の監視はポーリングによって行われ、印刷処理の進行とは必ずしも同期しないため、次のような問題点があった。
(1)情報処理装置が、たとえば印刷データ量が少ないページなどについて、そのページの印刷状況をモニタすることができない場合がある。モニタできなかったページの「ページ開始」通知や「ページ終了」通知を発行できない。共有情報はランゲージモニタ(後述する)により管理される情報で、プリンタの状態、たとえば印刷処理の進捗情報すなわちジョブ状態を含んでいる。ただし、ランゲージモニタは、ライト処理やリード処理の関数が実行された場合にプリンタからジョブ状態を取得し、状態に変化があった場合に、ジョブ状態を通知情報(ジョブ情報とも呼ぶ。)として、関数の呼出し元に返す。そのため、互いに直近の2つの関数の合間に、ジョブ状態の1項目が複数回変化したとしても、その項目の値は、先の関数で捕捉された状態から後の関数で捕捉された状態へと1回変化しただけであるかのように関数の呼び出し元に通知される。
たとえば共通情報からジョブ状態を読み取るためのReadPort関数を4秒おきに実行するものとしよう。2回のReadPort関数処理の間にたとえば或るページの印刷が開始され、印刷が完了してしまうと、そのページに関しては印刷開始の通知(「ページ開始」通知)も、印刷終了の通知(「ページ終了」通知)も発行されることはない。
(2)オペレータによって印刷ジョブがキャンセルされた時、正常に印刷が開始または終了されているページの「ページ開始」通知や「ページ終了」通知が発行される前に「印刷キャンセル」通知が発行される。そのため、印刷ジョブに関する通知の順序が不正確になってしまう。例えば、或るページPの印刷が終了し、次のページQの印刷が開始された後、ページPの「ページ終了」通知とページQの「ページ開始」通知とが発行される前に、印刷がキャンセルされたものとしよう。その場合、キャンセル指示のためのWritePort関数によりキャンセル情報がセットされ、WritePort関数に対して「印刷キャンセル」通知が発行される。そしてその後に実行されるReadPort関数に対して、ページPの「ページ終了」通知とページQの「ページ開始」通知とが発行される。しかもそれらページはキャンセル前に終了或いは開始されているにもかかわらず、その「ページ終了」通知と「ページ開始」通知に含まれるキャンセル情報は「キャンセルされた」ことを示すことになる。
(3)また、プリンタドライバから発行される印刷ジョブに関する通知が、OS内における処理等の影響を受けて、アプリケーションで受信される際に、発行された順序と異なる順序で受信されるケースがある、という問題点もあった。
本発明では上記従来例に鑑みたもので、上記問題点を解消したプリンタ制御装置及びプリンタ制御プログラム及びプリンタ制御方法を提供することを目的とする。
上記目的を達成するために本発明は以下の構成を備える。すなわち、第1の情報処理装置と、周辺装置とから成る周辺装置制御システムであって、前記第1の情報処理装置は、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を通知する通知手段を備え、前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知する手段を備える。
また、他の側面によれば、本発明は、第1の情報処理装置と、第2の情報処理装置と、周辺装置とから成る周辺装置制御システムであって、前記第1の情報処理装置は、前記周辺装置と接続されていて、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を前記第2の情報処理装置に通知する通知手段を備え、前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知する。
また、他の側面によれば、本発明は、第1の情報処理装置であって、前記第1の情報処理装置は、周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を通知する通知手段を備え、前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知する。
また、他の側面によれば、本発明は、第1の情報処理装置であって、前記第1の情報処理装置は、周辺装置と接続されていて、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を第2の情報処理装置に通知する通知手段を備え、前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知する。
また、他の側面によれば、本発明は、以下の構成も備える。すなわち、他のプログラムに対して印刷の進捗を通知するプリンタ制御装置であって、
最後に通知した印刷中のページ番号と、最後に通知した印刷済のページ番号とを保存する保存手段と、
プリンタから現在印刷中のページ番号を一定時間ごとに取得する取得手段と、
前記現在印刷中のページ番号と前記最後に通知した印刷中のページ番号とに基づいて、印刷中のページ番号の通知が発行されていないページ、および、印刷済みのページ番号の通知が発行されていないページの存在を判定し、存在する場合には、該当するページごとに印刷中の通知および印刷済みの通知をその順序で発行する発行手段とを備える。
本発明によれば、次のような効果が得られる。
(1)情報処理装置がモニタできない印刷データ量の少ないページの印刷状況に関しても、「ページ開始」通知や「ページ終了」通知等の通知を正しく発行することができる。
(2)オペレータによって印刷ジョブがキャンセルされた時、正常に印刷が開始または終了されているページの「ページ開始」通知や「ページ終了」通知が発行された後に「印刷キャンセル」通知を発行することができる。そのため印刷ジョブに関する通知を正確なタイミングかつ正しい順序で発行することができる。
(3)印刷ジョブに関する通知の内容が正しい通知を発行することができる。
(4)プリンタドライバから発行される印刷ジョブに関する通知が、OS内における処理等の影響を受けて、アプリケーションで受信される際に、発行された順序と異なる順序で受信されるケースにおいても、正しい順序に変換して正確に処理する。こうすることで信頼性の高い周辺装置制御システムを実現することができる。
以下、本発明の実施の形態を、図面を参照して説明する。以下で引用される関数(情報)の内、詳しい説明をしていないものに関しては、「msdn(r)subscriptions Library Disc 1 January 2007 日本語版DVD」に収録の「MSDN Library for Visual Studio 2005 − 日本語版 −」のヘルプに記載されている。そこでその説明を省略する。
以下において、USBとはUniversal Serial Busの略であり、双方向通信が可能な公知のインタフェースであるので、その詳細説明は省略する。以降のタイミングチャート(図7、図9、図11、図13等に示す)及び通知内容を表す図(図8、図10、図12、図14等に示す)において、次のような省略記号を使用する。
タイミングチャートにおけるP1は、通知内容におけるpagePrintingに相当し、図5のジョブ情報における印刷中の印刷物のページ番号108に相当する。タイミングチャートにおけるP2は、通知内容におけるpagePrintedに相当し、図5のジョブ情報における印刷済みの印刷物のページ番号109に相当する。タイミングチャートにおけるCIは、通知内容におけるcancelledに相当し、図5のジョブ情報におけるキャンセル情報111に相当する。
[第1の実施の形態]
図1は、本発明に係る情報処理装置及び周辺装置からなる周辺装置制御システムの一実施形態におけるシステムの構成部分を表すブロック図である。同図において、情報処理装置1、2は、一般的なパーソナルコンピュータ(以降、PCと略す場合がある)で構成される。PC1、PC2は図2で後述するようなハードウェアで構成され、OS(Operating System)として米国マイクロソフト社のWindows Vista(登録商標)がインストールされている。PC1とPC2はEthernet(登録商標)で構成されるネットワーク4を介して接続され、互いに双方向通信が可能である。3はプリンタであり、カラーインクジェットプリンタで構成され、本発明における周辺装置の一例としている。プリンタ3はABC社製のKmmnというモデル名とした。尚、本発明における周辺装置としては、プリンタ、複写機、ファクシミリ、スキャナ、デジタルカメラ、及びこれらの複合機能を備える装置等であってもよい。プリンタ3は図3で後述するようなハードウェアで構成され、PC1とUSBインタフェース9を介して接続されており、互いに双方向通信が可能である。図4で後述するランゲージモニタ36、48は、Windows(登録商標)用のダイナミックリンクライブラリで構成される。アプリケーション30、47は、Windows用の実行可能形式のファイル(*.EXE)で構成される。本発明のアプリケーションの一例としては、アプリケーション30、47は図18に示すような課金アプリケーション(Photo Album Creator)である。
本発明の周辺装置制御システムでは、次のような2つの印刷システムの例を挙げているが、以降では、ローカル印刷の例を中心に説明する。
(1)PC1内のアプリケーション30からUSBインタフェース9を介してプリンタ3に印刷するローカル印刷システム。このシステムでは、PC1が第1の情報処理装置に相当する。
(2)PC1がサーバ、PC2がクライアントとなるような関係を持ち、PC1はプリンタ3を共有プリンタとしてネットワーク4を介して他の情報処理装置(PC2)から印刷することができるプリントサーバの機能を備えるネットワーク印刷システム。なおこの印刷機能をネットワーク印刷と呼ぶ。ここでサーバは第1の情報処理装置に、クライアントは第2の情報処理装置に相当する。
本発明の周辺装置制御システムは、前記MSDNのサイトで公開されているAsynchronous Printing Notification Interfacesを利用した印刷ジョブに関する通知機能を備えている。PC2はこのAsynchronous Printing Notification Interfacesを利用して、PC1内のLM36から通知される情報を受け取ることができる。このAsynchronous Printing Notification Interfacesを利用した通知機能に関しては、Windows Vista(登録商標)の公知の機能であるので、その詳細説明は省略する。
<PCのハードウェア>
図2はPCのハードウェア構成の一例を表すブロック図である。PC1、PC2は何れも同図に示すようなハードウェア構成を持つが、ここではPC1を例にして説明する。PC1は、ランダムアクセスメモリ部(RAM1201)、記憶部であるハードディスクドライブ部(HDD1202)、入力部の一例であるキーボード部(KBD1203)、制御部のCPU1204を有する。さらに、表示部の一例である表示用ディスプレイ(LCD1205)、通信制御部の一例であるネットワークボード(NB1207)、以上のPC1の構成要素を互いに接続するバス1206を有する。なお、記憶部は、可搬性CD−ROMまたは内部据付のROMなどであってもよい。図1に示すPC1の各モジュール(LM36)は、HDD1202に記憶され、必要に応じてRAM1201に読み出されてCPU1204により実行される。これにより、CPU1204が、図1に示す各モジュールの機能を実現する。
<プリンタのハードウェア>
図3はプリンタのハードウェア構成を表すブロック図である。プリンタ3は同図に示すようなハードウェア構成を持つ。同図において、マイクロプロセッサ等から構成されるCPU15は、プリンタ3の中央処理装置として、ROM16に記憶されているプログラムに従って、RAM17、通信部18、記録部19を制御する。ROM16にはプリンタドライバ50(図4で後述する)の制御に従ってプリンタ3が記録(印刷)処理や、状態をPC1へ伝える処理を行うプログラムが記憶されている。プリンタドライバは、プリンタを制御するプリンタ制御プログラムとも呼ぶことができる。また、CPUによりプリンタ制御プログラムが実行されているコンピュータを、プリンタ制御装置と呼ぶこともできる。RAM17は主にPC1から送られて、それをもとに記録部19によって印刷される印字データが一時的に記憶される。通信部18にはUSBインタフェース9用の接続ポートが含まれており、USBの通信を制御する。記録部19は、インクジェット方式の記録ヘッド、各カラーインク、キャリッジ、記録紙搬送機構等から構成される記録ユニットと、前記印字データをもとに前記記録ヘッドにて印字用パルスを発生させる為のASIC等から構成される電気回路とから構成される。印刷可能なアプリケーション上での印刷操作によって、アプリケーションで開かれているファイルの表示内容(画像データ)が、EMF形式のスプールファイルとしてPC1のHDD1202に一時的に格納される。そしてプリンタドライバ50を介してプリンタ3制御用コマンドを含む印字データに変換された後、USBインタフェース9を介してプリンタ3に送られる。プリンタ3にて受信された印字データは、記録部19によって印字用パルスに変換されて、記録紙上に印刷される。
<プリンタドライバの構成>
図4はPC1におけるプリンタドライバの構成を表す図である。同図において、PC1にインストールされているプリンタドライバ50は、複数のモジュール33〜38から構成される。印刷可能なアプリケーション30は、例えば、Windows Vista(登録商標)OSに標準で同梱されているテキストエディタであるNotepad(Notepad.exe)等に相当する。尚、本発明では、アプリケーション30は図18に示すような課金アプリケーション(Photo Album Creator)である。Graphics Device Interface(GDI)31は、Windows Vista(登録商標) OSの一部である。プリンタキュー32は、スプーラ40の一部として構成され、印刷ジョブがキューイングされる。キューイングされた印刷ジョブは、プリンタキューフォルダ(ここでは説明を省略する)に表示される。プリントプロセッサ33は、印刷レイアウトの変更や印刷画像の特殊処理が行われる。グラフィックスドライバ34は、プリンタドライバの画像処理のコアとして、GDI31から送られて来る描画命令をもとに印刷用の画像処理を行い、印刷制御コマンドを作成する。UIモジュール35は、プリンタドライバのユーザインタフェースの提供及び制御を行う。ランゲージモニタ36は、データの通信I/Fとしてデータの送受信を制御する。ポートモニタ37は、ランゲージモニタ36から送られて来るデータを適切なポートに対して送信したり、プリンタ3から送られて来るデータをクラスドライバ38を介して受信したりする処理を行う。クラスドライバ38は、最もポートに近いローレベルのモジュールであり、本発明ではUSBのプリンタクラスのドライバに相当し、ポート(本発明ではUSBポート)を制御する。プリンタドライバ50はプリンタ3の製造元であるABC社製のものである。
<ジョブ情報の内容>
図5はジョブ情報(JobInfo)を表す図である。ジョブ情報は、共有情報51に含まれる。ジョブ情報のことを通知情報と呼ぶ場合もある。同図において、ジョブ情報(JobInfo)100は、印刷ジョブに関する通知機能でLM36からアプリケーション30に通知される情報(ジョブ状態通知)を含んでいる。アプリケーション30は、ジョブ情報(通知情報)を受信可能である。印刷ジョブに関する通知機能のバージョン(Ver)101は、LM36からアプリケーション30に通知される情報の整合性を確認する目的等に利用される。ジョブ情報のサイズ(size)102は、バイト単位で表されたジョブ情報100のデータサイズである。通知ID(funcId)103は、印刷ジョブに関する通知の種類(タイミング)を表す。プリンタ名(printer)104は、印刷ジョブが印刷されているプリンタのプリンタ名である。ユーザー名(user)105は、印刷ジョブの所有者を表す。印刷ジョブID(jobId)106は、印刷ジョブに割り当てられた固有のIDである。ドキュメント名(document)107は、印刷ジョブのドキュメント名を表す。印刷中のページ番号(pagePrinting)108は、プリンタで印刷中のページ番号を表す。印刷済のページ番号(pagePrinted)109は、プリンタで印刷が完了しているページ番号を表す。通信モード(commMode)110は、PC1とプリンタ3の通信モードを示し、0は不明、1は片方向通信、2は双方向通信を意味している。キャンセル情報(canceled)111は、印刷ジョブがキャンセル(すなわち中断)されたか否かを示し、0はキャンセル無し、1はキャンセル有りを意味する。本実施形態ではキャンセルされた場合が'1'で表されているが、この例に限られることなく、例えばキャンセルされたページ番号を含むような情報で表してもよい。印刷失敗情報(failedPrint)112は、印刷ジョブが失敗したか否かを示し、0は成功、1は失敗を意味している。本実施形態では失敗した場合が'1'で表されているが、この例に限られることなく、例えば失敗したページ番号を含むような情報で表してもよい。印刷ジョブの失敗の例としては、例えば紙詰まり等が挙げられる。拡張情報(extendedInfo)113は、拡張のために利用される。本実施形態では拡張情報は無いので、拡張情報が無いことを表すNULLが常にセットされている。
図6は通知の種類と通知IDのマップを表す図である。同図に示す通り、各通知の種類(タイミング)に対して、通知ID(funcId)103にセットされる値がそれぞれ定義されている。
<前提技術のジョブ状態通知のタイミング>
図7は印刷ジョブに関する通知機能の前提技術のタイミングチャートである。同図は、図1に示すような周辺装置制御システムのランゲージモニタ(以降、LMと略す場合がある)36における制御を表す。同図において、関数52、53、54、55はスプーラ40のプロセスから生成されたライトスレッドによりコールされる関数の処理を表し、スプーラ40から関数52、53、54、55の順にコールされる。関数52はStartDocPort関数であり、印刷ジョブの開始時にスプーラ40からコールされ、LM36やプリンタ3における印刷開始時の初期化処理等が行われる。関数53、54はWritePort関数であり、グラフィックスドライバ34で生成された印刷制御コマンドがスプーラ40からこの関数によりLM36に渡され、LM36がプリンタ3にその印刷制御コマンドを送信する。関数55はEndDocPort関数であり、印刷ジョブの終了時にスプーラ40からコールされ、LM36やプリンタ3における印刷終了時の初期化処理等が行われる。関数56、57、58、59はReadPort関数であり、LM36がStartDocPort52関数内で生成したリードスレッドの割り込み関数の処理を表す。関数56、57、58、59の順に4秒毎の定期的な割り込みとしてコールされる。共有情報51には、印刷ジョブに関する通知機能で通知するジョブ情報(JobInfo)100や通知の制御の為に使用する情報等が保存されている。共有情報51は、スプーラ40のプロセスから生成されたライトスレッドとLM36により生成されたリードスレッドの複数のスレッドからアクセスされ、これらのスレッドから同一の情報を参照可能である。共有情報は、リードスレッドとライトスレッドのスレッド間で情報の共有を行う情報共有手段により実現されている。ジョブ状態通知60、61、62、63、64、65は印刷ジョブに関する通知であり、それぞれ図6で示す通知の種類の内の何れかに該当する。ジョブ状態通知60は「印刷開始」通知であり、印刷ジョブの開始のタイミングで発行される通知である。ジョブ状態通知61は1ページ目の「ページ開始」通知であり、プリンタ3が印刷ジョブの1ページ目の印刷を開始したタイミングで発行される通知である。ジョブ状態通知62は2ページ目の「ページ終了」通知であり、プリンタ3が印刷ジョブの2ページ目の印刷を終了したタイミングで発行される通知である。ジョブ状態通知63は3ページ目の「ページ開始」通知であり、プリンタ3が印刷ジョブの3ページ目の印刷を開始したタイミングで発行される通知である。ジョブ状態通知64は3ページ目の「ページ終了」通知であり、プリンタ3が印刷ジョブの3ページ目の印刷を終了したタイミングで発行される通知である。ジョブ状態通知65は「印刷完了」通知であり、印刷ジョブの完了のタイミングで発行される通知である。同図では、各通知におけるジョブ情報(JobInfo)100の中から、印刷中のページ番号108、印刷済のページ番号109、キャンセル情報111をピックアップして記載している。同図における印刷ジョブに関する通知では、全ての通知においてキャンセル情報111が'0'である。これは、印刷ジョブがキャンセルされずに印刷が完了したことを表している。
図8は印刷ジョブに関する通知の内容を表す前提技術の図である。同図では、LM36が発行する印刷ジョブに関する通知のジョブ情報(JobInfo)100の内容が記されている。上から下に向けて発行された通知の順で各通知のジョブ情報(JobInfo)100の内容が記されている。ジョブ情報(JobInfo)100の内容に関しては、図5に示す。同図は、図7のタイミングチャートの例で発行される印刷ジョブに関する通知の内容を表す。
図9は印刷ジョブに関する通知機能の前提技術のタイミングチャートである。同図において、図7と重複する内容に関してはここでは説明を省略する。印刷キャンセルオペレーション67は、オペレータによって印刷ジョブがキャンセルされたことを表す。この時点において、共有情報51内のジョブ情報(JobInfo)100のキャンセル情報111に'1'がセットされる。ジョブ状態通知66は「印刷キャンセル」通知であり、印刷ジョブがキャンセルされたタイミングで発行される通知である。この「印刷キャンセル」通知66が存在する点と、「ページ終了」通知62、「ページ開始」通知63、「印刷完了」通知65におけるキャンセル情報111が'1'となっている点が、図7とは異なる。
図10は印刷ジョブに関する通知の内容を表す前提技術の図である。同図では、LM36が発行する印刷ジョブに関する通知のジョブ情報(JobInfo)100の内容が記されている。上から下に向けて発行された通知の順で各通知のジョブ情報(JobInfo)100の内容が記されている。ジョブ情報(JobInfo)100の内容に関しては、図5に示す。同図は、図9のタイミングチャートの例で発行される印刷ジョブに関する通知の内容を表す。「印刷キャンセル」通知66が存在する点、「ページ終了」通知62、「ページ開始」通知63におけるキャンセル情報111が'1'になっている点が、図8とは異なる。さらに、「印刷完了」通知65における印刷済のページ番号(PagePrinted)109が'2'及びキャンセル情報111が'1'となっている点が、図8とは異なる。
<本実施形態に係るジョブ状態通知のタイミング>
図11は印刷ジョブに関する通知機能のタイミングチャートの一例である。同図は、図1に示すような周辺装置制御システムのLM36における制御を表す。同図において、関数52、53、54、55は、スプーラ40のプロセスから生成されたライトスレッドによりコールされる関数の処理を表し、スプーラ40から関数52、53、54、55の順にコールされる。StartDocPort関数52は、印刷ジョブの開始時にスプーラ40からコールされ、LM36やプリンタ3における印刷開始時の初期化処理等が行われる。WritePort関数53、54により、グラフィックスドライバ34で生成された印刷制御コマンドがスプーラ40からLM36に渡され、LM36がプリンタ3にその印刷制御コマンドを送信する。EndDocPort関数55は、印刷ジョブの終了時にスプーラ40からコールされ、LM36やプリンタ3における印刷終了時の初期化処理等が行われる。リード処理56、57、58、59は、LM36がStartDocPort52関数内で生成したリードスレッドの割り込み関数であるReadPort関数の処理を表し、リード処理56、57、58、59の順に4秒毎の定期的な割り込みとしてコールされる。共有情報51には、印刷ジョブに関する通知機能で通知するジョブ情報(JobInfo)100や通知の制御の為に使用する情報等が保存されている。共有情報51は、スプーラ40のプロセスから生成されたライトスレッドとLM36により生成された複数のリードスレッドからアクセスされ、これらのスレッドから同一の情報を参照可能である。このように、ジョブ情報(通知情報)は、ライトスレッドから通知される第1の通知情報群とリードスレッドから通知される第2の通知情報群に分けられる。
ジョブ状態通知70、71、72、73、74、75、76、77は印刷ジョブに関する通知であり、それぞれ図6で示す通知の種類の内の何れかに該当する。ジョブ状態通知は、ジョブ情報に変化があった後、最初に実行される関数の返し値として関数の呼出し元に返される。さらに本実施形態では、或る関数の実行と次の関数の実行との間に、ジョブの進捗状況の変化が複数回生じた場合には、最新のジョブ情報にのみ基づいてジョブ状態通知を発行するのではない。本実施形態では、プリンタの進捗に応じてジョブ情報が更新されていたとすれば発行されているはずのジョブ状態通知を補完的に発行する。
図11において、ジョブ状態通知70は「印刷開始」通知であり、印刷ジョブの開始後に関数52に対して発行される通知である。ジョブ状態通知71は1ページ目の「ページ開始」通知であり、プリンタ3が印刷ジョブの1ページ目の印刷を開始した後に実行された関数56に対して発行される通知である。関数53,57のタイミングではプリンタの状態は変化がないのでジョブ情報も変化せず、ジョブ状態通知は発行されない。
ジョブ状態通知72は1ページ目の「ページ終了」通知であり、プリンタ3が印刷ジョブの1ページ目の印刷を終了した後に実行された関数58に対して発行される通知である。ジョブ状態通知73は2ページ目の「ページ開始」通知であり、プリンタ3が印刷ジョブの2ページ目の印刷を開始した後に実行された関数58に対して発行される通知である。ジョブ状態通知74は2ページ目の「ページ終了」通知であり、プリンタ3が印刷ジョブの2ページ目の印刷を終了した後に実行された関数58に対して発行される通知である。ジョブ状態通知75は3ページ目の「ページ開始」通知であり、プリンタ3が印刷ジョブの3ページ目の印刷を開始した後に実行された関数58に対して通知である。
ジョブ状態通知76は3ページ目の「ページ終了」通知であり、プリンタ3が印刷ジョブの3ページ目の印刷を終了した後に実行された関数59に対して発行される通知である。ジョブ状態通知77は「印刷完了」通知であり、印刷ジョブの完了の後に実行された関数55に対して発行される通知である。
図11では、各通知におけるジョブ情報(JobInfo)100の中から、印刷中のページ番号108、印刷済のページ番号109、キャンセル情報111をピックアップして記載している。同図における印刷ジョブに関する通知では、全ての通知においてキャンセル情報111が'0'である。これは、印刷ジョブがキャンセルされずに印刷が完了したことを表している。
図12は印刷ジョブに関するジョブ状態通知の内容を表す図である。図12では、LM36が発行する印刷ジョブに関する通知のジョブ情報(JobInfo)100の内容がジョブ状態通知に記されている。上から順に発行された通知70〜77の順で各通知のジョブ情報(JobInfo)100の内容が記されている。ジョブ情報(JobInfo)100の内容に関しては、図5に示す。同図は、図11のタイミングチャートの例で発行される印刷ジョブに関する通知の内容を表す。
図13は印刷ジョブに関する通知機能のタイミングチャートの一例である。同図において、図11と重複する内容に関してはここでは説明を省略する。印刷キャンセルオペレーション67は、オペレータによって印刷ジョブがキャンセルされたことを表す。この時点において、共有情報51内のジョブ情報(JobInfo)100のキャンセル情報(CI)111に'1'がセットされる。「印刷キャンセル」通知78は、印刷ジョブがキャンセルされた直後に実行された関数55に対して発行されるジョブ状態通知である。この「印刷キャンセル」通知78が存在する点と、「印刷完了」通知77におけるキャンセル情報111が'1'となっている点が、図11とは異なる。
図14は印刷ジョブに関する通知の内容を表す図である。同図では、LM36が発行する印刷ジョブに関する通知のジョブ情報(JobInfo)100の内容が記されている。上から順に発行されたジョブ状態通知の順で各通知のジョブ情報(JobInfo)100の内容が記されている。ジョブ情報(JobInfo)100の内容に関しては、図5に示す。同図は、図13のタイミングチャートの例で発行される印刷ジョブに関する通知の内容を表す。「印刷キャンセル」通知78が存在する点が図12とは異なる。また、「印刷完了」通知77における印刷済のページ番号(pagePrinted)109が'2'及びキャンセル情報111が'1'となっている点が、図12の「印刷完了」通知77とは異なる。
<プリンタ状態コマンド>
図35はプリンタ3の状態を表すプリンタ状態コマンドの内容を表す図である。プリンタ状態コマンド80は、USBインタフェース9を介してPC1からプリンタ3に発行されるデータ取得要求に対して、プリンタ3から返される。データ取得要求は、ランゲージモニタ36が関数を実行する都度プリンタに対して発行される。プリンタ状態コマンドはプリンタ3の状態を表すコマンドである。このプリンタ状態コマンド80から、プリンタ3の状態情報を取得することができる。プリンタ状態コマンド80に含まれる印刷中のページ情報コマンド81は、プリンタ3で印刷中のページ番号を表す。同図ではプリンタ3で1ページを印刷中の状態を表している。その他の状態を表すコマンド群82には、プリンタ3の様々な状態情報が含まれている。ここでは各コマンドの詳細説明を省略する。
図18は課金アプリケーション(ここではPhoto Album Creator)のユーザーインタフェース(以降、UIと略す場合がある)を表す図である。アプリケーション30、47が課金アプリケーション(Photo Album Creator)に相当する。図18において、42はメインウィンドウである。プリンタ表示部43には、PC1内にUSBインタフェースを介して接続されているプリンタまたはネットワーク4上にPCを介して接続されている共有プリンタが全て表示される。尚、同図では、図1に図示されていないプリンタも表示している例を示す。この例ではABC社製のKmmnというモデル名のプリンタ3が選択されている状態を表している。印刷ジョブ情報表示部44は、プリンタ表示部43で選択されているプリンタに対して発行された全ての印刷ジョブに関する情報が表示される。この例では、印刷ジョブのオーナー(Owner)、ドキュメント名(Document Name)、印刷ジョブID(ID)、状態(Status)が表示されている。さらに、Koichiさんから発行されたPhoto Albumというドキュメントが選択されている状態を表している。印刷状況表示部45は、印刷ジョブ情報表示部44で選択されている印刷ジョブの印刷状況が表示される。この例では、ページ(Page)、状態(Status)、課金の状況(Charge [Yen])の内訳と合計(Total)、及び情報(Information)が特に無い状態を表している。キャンセルボタン46は、このボタンを押すことで印刷キャンセルオペレーション67が実行され、印刷ジョブ情報表示部44で選択されている印刷ジョブをキャンセルすることができる。
<共有情報51の内容>
図36は、共有情報51に含まれている情報の詳細を表す前提技術の図である。同図において、ページ番号120は最後に取得した印刷中のページ番号(LastPrintingPage)、ページ番号121は現在印刷中のページ番号(CurrentPrintingPage)である。また、ページ番号122は「ページ開始」通知で通知した(あるいは通知する)印刷中のページ番号(pagePrintingSent)である。共有情報51には、ジョブ情報(JobInfo)100、LastPrintingPage120、CurrentPrintingPage121、pagePrintingSent122が含まれている。
これに対して図37は、本実施形態における共有情報51に含まれている情報の詳細を表す図である。同図において、図36と重複する内容に関してはここでは説明を省略する。ページ番号123は「ページ終了」通知で通知した(あるいは通知する)印刷済のページ番号(pagePrintedSent)であり、共有情報51に含まれている。このpagePrintedSent123は印刷ジョブに関する通知機能の各通知に対して、通知の順序に関する依存関係を設けて制御する為に必要とされる情報であり、本実施形態の特徴の一つである。
なおこれから説明するフローチャートにおいて、印刷ジョブに関する通知を発行する処理が記載されているケースがある。本実施形態ではOS内のIPrintAsyncNotifyChannel::SendNotificationメソッドにより、その処理を実行するものとする。
<本実施形態のStartDocPort関数>
図19はLM36におけるStartDocPort関数の処理を表すフローチャートである。同図に記されている処理は全てLM36における処理である。スプーラ40からこの関数がコールされると(S1901)、リードスレッドを開始し(S1902)、印刷ジョブに関する通知機能用の通知チャネルを初期化する(S1903)。通知チャネルの初期化では、OS内のCreatePrintAsyncNotifyChannel関数をコールして、印刷ジョブに関する通知機能用の通知チャネルを開いて初期設定を行う。通知処理を初期化する(S1904)。通知処理の初期化では、共有情報51の初期化を行う。プリンタ3を初期化し(S1906)、ジョブ情報(JobInfo:通知情報)100を生成する(S1907)。ここがジョブ情報生成あるいは通知情報生成の処理に相当する。ここで、図12、図14の「印刷開始」通知70のジョブ情報(JobInfo)100の内容を表すJobInfo:70の情報をセットする。「印刷開始」通知を発行し(S1908)、この「印刷開始」通知で通知した内容を共有情報51のジョブ情報(JobInfo)100に保存し(S1909)、StartDocPort関数の処理を終了してスプーラ40に戻る(S1910)。
<前提技術のWritePort関数>
図20はLM36におけるWritePort関数の処理を表す前提技術のフローチャートである。同図に記されている各処理は、全てLM36における処理である。スプーラ40からこの関数がコールされると(S2001)、プリンタ3に印刷制御コマンドを送信し(S2002)、オペレータによる印刷キャンセルオペレーション67の有無を判定する(S2003)。印刷ジョブがキャンセルされた場合(S2004)、ジョブ情報(JobInfo)100をロードする(S2005)。そして、通知ID(funcId)103に「印刷キャンセル」を表す値をセットし(S2006)、キャンセル情報(canceled)111に'1'をセットし(S2007)、「印刷キャンセル」通知を発行する(S2008)。この「印刷キャンセル」通知で通知した内容を共有情報51のジョブ情報(JobInfo)100に保存し(S2009)、WritePort関数の処理を終了してスプーラ40に戻る(S2011)。ステップS2004において印刷ジョブがキャンセルされていない場合、図22に示すページ情報の通知の処理を実行し(S2010)、WritePort関数の処理を終了してスプーラ40に戻る(S2011)。
<本実施形態のReadPort関数>
図21はLM36におけるReadPort関数の処理を表すフローチャートである。同図に記されている各処理は、全てLM36における処理である。スプーラ40からこの関数がコールされると(S2101)、プリンタ状態コマンド80により、プリンタ3からプリンタの状態情報を取得する(S2102)。これはプリンタから印刷中のページ番号を取得する取得手段に相当する。取得した情報の中に印刷中のページ情報コマンド81として含まれている現在印刷中のページ番号をCurrentPrintingPage121に保存する(S2103)。図25に示すページ情報の通知の処理を実行し(S2104)、ReadPort関数の処理を終了してスプーラ40に戻る(S2105)。
<前提技術のページ情報通知処理>
図22はLM36におけるページ情報の通知の処理を表す前提技術のフローチャートである。同図に記されている各処理は、全てLM36における処理である。図20のステップS2010または図21のステップS2104が実行されると、この処理がコールされる。ページ情報の通知の処理が開始されると(S2201)、共有情報51からジョブ情報(JobInfo)100をロードし(S2202)、CurrentPrintingPage121をロードする(S2218)。またLastPrintingPage120をロードする(S2203)。CurrentPrintingPage121とLastPrintingPage120の差をPage_diffに代入する(S2204)。Page_diffが0より大きい、すなわち、この例でとり得る値としては1以上の場合(S2205)、通知ID(funcId)103に「ページ終了」を表す値をセットする(S2206)。印刷中のページ番号(pagePrinting)108にCurrentPrintingPage121をセットしり(S2207)。また、印刷済のページ番号(pagePrinted)109にCurrentPrintingPage121から1を引いた値をセットする(S2208)。「ページ終了」通知を発行し(S2209)、この「ページ終了」通知で通知した内容を共有情報51のジョブ情報(JobInfo)100に保存し(S2210)、ページ情報の通知の処理を終了してコール元に戻る(S2217)。ステップS2205においてPage_diffが0以下、すなわち、この例でとり得る値としては0の場合、式1の値を判定する。式1は、(pagePrintingSent122<(印刷済のページ番号(pagePrinted)109+1))かつ(CurrentPrintingPage121=(印刷済のページ番号(pagePrinted)109+1))というものである。式1が真の場合(S2211)、通知ID(funcId)103に「ページ開始」を表す値をセットし(S2212)、印刷中のページ番号(pagePrinting)108にCurrentPrintingPage121をセットする(S2213)。印刷済のページ番号(pagePrinted)109にCurrentPrintingPage121から1を引いた値をセットし(S2214)、「ページ開始」通知を発行する(S2215)。印刷中のページ番号(pagePrinting)108をpagePrintingSent122に保存し(S2216)、ステップS2210に進む。一方ステップS2211において式1が偽の場合、ページ情報の通知の処理を終了してコール元に戻る(S2217)。
<前提技術のEndDocPort関数>
図23はLM36におけるEndDocPort関数の処理を表す前提技術のフローチャートである。同図に記されている各処理は、全てLM36における処理である。スプーラ40からこの関数がコールされると(S2301)、リードスレッドを終了し(S2302)、印刷処理を終了し(S2303)、プリンタ3を初期化する(S2304)。そして、ジョブ情報(JobInfo)100をロードし(S2305)、通知ID(funcId)103に「印刷完了」を表す値をセットし(S2306)、「印刷完了」通知を発行し(S2307)、通知処理を初期化する(S2308)。通知処理の初期化では、共有情報51の初期化を行う。OS内のIPrintAsyncNotifyChannel::CloseChannelメソッドにより、印刷ジョブに関する通知機能用の通知チャネルを閉じ(S2309)、EndDocPort関数の処理を終了してスプーラ40に戻る(S2310)。
<本実施形態のWritePort関数>
図24はLM36におけるWritePort関数の処理を表すフローチャートである。同図に記されている各処理は、全てLM36における処理である。スプーラ40からこの関数がコールされると(S2401)、プリンタ3に印刷制御コマンドを送信し(S2402)、オペレータによる印刷キャンセルオペレーション67の有無を判定する(S2403)。印刷ジョブがキャンセルされた場合(S2404)、ジョブ情報(JobInfo)100をロードし(S2405)、キャンセル情報(canceled)111に'1'をセットする(S2406)。この内容を共有情報51のジョブ情報(JobInfo)100に保存し(S2407)、WritePort関数の処理を終了してスプーラ40に戻る(S2408)。一方ステップS2404において印刷ジョブがキャンセルされていない場合、WritePort関数の処理を終了してスプーラ40に戻る(S2408)。
<ページ情報の通知の処理>
図25はLM36におけるページ情報の通知の処理を表すフローチャートである。同図に記されている各処理は、全てLM36における処理である。図21のステップS2104が実行されると、この処理がコールされる。ページ情報の通知の処理が開始されると(S2501)、共有情報51からジョブ情報(JobInfo)100をロードし(S2502)、pagePrintedSent123をロードする(S2503)。CurrentPrintingPage121とpagePrintedSent123の差をPage_diffに代入する(S2504)。次にPage_diffが0より大きいか否かを判定する(S2505)。Page_diffは、現在印刷中のページ番号と最後に「ページ終了」通知で通知した印刷済みのページ番号との差である。この値が0より大きければ、ページ開始通知で印刷中であることが示されていないページ番号またはページ終了通知で印刷済みであることが通知されていないページ番号が存在する可能性がある。そこで、Page_diffが0より大きければ、すなわち、この実施形態でとり得る値としては1以上の場合、図26に示す「ページ開始」の確認と通知の処理を実行する(S2506)。また図27に示す「ページ終了」の確認と通知の処理を実行する(S2507)。S2506により、最後に「ページ開始」通知を発行したページ番号の次のページ(印刷が開始されたにもかかわらずページ開始通知が発行されていないものに限る)について「ページ開始」通知を発行する。またS2507により、最後に「ページ終了」通知を発行したページ番号の次のページ(印刷済みにもかかわらずページ終了通知が発行されていないものに限る)について「ページ終了」通知を発行する。それらを終えたなら、Page_diffから1を引いた値をPage_diffにセットし(S2508)、ステップS2505に戻る。ステップS2505においてPage_diffが0以下、すなわち、この実施形態でとり得る値としては0の場合、ページ情報の通知の処理を終了してコール元に戻る(S2509)。
<「ページ開始」の確認と通知の処理>
図26はLM36における「ページ開始」の確認と通知の処理を表すフローチャートである。同図に記されている各処理は、全てLM36における処理である。図25のステップS2506が実行されると、この処理がコールされる。「ページ開始」の確認と通知の処理が開始されると(S2601)、共有情報51からジョブ情報(JobInfo)100をロードし(S2602)、pagePrintingSent122をロードする(S2603)。pagePrintingSent122とpagePrintedSent123の差をi_pageに代入する(S2604)。pagePrintingSent122は最後に「ページ開始」通知で通知した印刷中のページ番号である。pagePrintedSent123は最後に「ページ終了」通知で通知した印刷済のページ番号である。或るページについて「ページ終了」が発行されると、次に、次のページについて「ページ開始」が発行されるのが通常の順序であるから、i_pageは0または1のいずれかである。i_pageが0であれば、「ページ終了」通知で通知された印刷済のページ番号の次のページについて「ページ開始」を発行する必要がある。
そこでi_pageが0であるか否か判定する(S2605)。i_pageが0の場合、通知ID(funcId)103に「ページ開始」を表す値をセットし(S2606)、「ページ開始」通知で最後に通知した印刷中のページ番号であるpagePrintingSent122に1を足す(S2607)。印刷中のページ番号(pagePrinting)108にpagePrintingSent122をセットし(S2608)、印刷済のページ番号(pagePrinted)109にpagePrintedSent123をセットする(S2609)。キャンセル情報(canceled)111に'0'をセットし(S2610)、「ページ開始」通知を発行する(S2611)。「ページ開始」通知においては、pagePrinting108で示されているページ番号が印刷中のページ番号としてセットされている。この後印刷中のページ番号(pagePrinting)108をpagePrintingSent122に保存する(S2612)。この「ページ開始」通知で通知した内容を共有情報51のジョブ情報(JobInfo)100に保存し(S2613)、「ページ開始」の確認と通知の処理を終了してコール元に戻る(S2614)。このようにして、最後に「ページ開始」通知を発行したページ番号の次のページ(ページ開始通知が発行されていないものに限る)について「ページ開始」通知を発行する。
一方ステップS2605においてi_pageが0以外、すなわち、この実施形態でとり得る値としては1以上の場合、「ページ開始」の確認と通知の処理を終了してコール元に戻る(S2614)。図13で印刷キャンセルオペレーション67が発生し、キャンセル情報(canceled)111に'1'がセットされている場合においても、ステップS2610においてキャンセル情報(canceled)111に'0'をセットする。こうすることで、「ページ開始」通知に含まれるジョブ情報(JobInfo)100内のキャンセル情報(canceled)111が正しい値、すなわち'0'がセットされた状態で「ページ開始」通知が発行される。この点が、本実施形態に係る発明の特徴の一つである。
<「ページ終了」の確認と通知の処理>
図27はLM36における「ページ終了」の確認と通知の処理を表すフローチャートである。同図に記されている各処理は、全てLM36における処理である。図25のステップS2507が実行されると、この処理がコールされる。「ページ終了」の確認と通知の処理が開始されると(S2701)、共有情報51からジョブ情報(JobInfo)100をロードし(S2702)、Page_diffが1より大きいか判定する(S2703)。Page_diffが1であれば、現在印刷中のページの直前のページの印刷終了通知は発行済みである。そこで、Page_diffが1より大きい、すなわち、この実施形態でとり得る値としては2以上の場合(S2703)、pagePrintingSent122をロードする(S2704)。pagePrintingSent122とpagePrintedSent123の差をi_pageに代入する(S2705)。i_pageの意味は図26と同様である。すなわち、或るページについて「ページ終了」が発行されると、次に、次のページについて「ページ開始」が発行されるのが通常の順序であるから、i_pageは0または1のいずれかである。i_pageが1であれば、「ページ終了」通知で既に通知された印刷済のページ番号の次のページについて「ページ終了」を発行する必要がある。
そこでi_pageが1であるか否か判定する(S2706)。i_pageが1であれば、通知ID(funcId)103に「ページ終了」を表す値をセットし(S2707)、pagePrintedSent123に1を足した値をpagePrintedSent123に代入する(S2708)。印刷中のページ番号(pagePrinting)108にpagePrintingSent122をセットし(S2709)、印刷済のページ番号(pagePrinted)109にpagePrintedSent123をセットする(S2710)。キャンセル情報(canceled)111に'0'をセットし(S2711)、「ページ終了」通知を発行する(S2712)。印刷済のページ番号(pagePrinted)109をpagePrintedSent123に保存し(S2713)、この「ページ終了」通知で通知した内容を共有情報51のジョブ情報(JobInfo)100に保存する(S2714)。そして「ページ終了」の確認と通知の処理を終了してコール元に戻る(S2715)。このようにして、最後に「ページ終了」通知を発行したページ番号の次のページ(ページ終了通知が発行されていないものに限る)について「ページ終了」通知を発行する。
一方、ステップS2706においてi_pageが1以外、すなわち、この実施形態でとり得る値としては0または2以上の場合、「ページ終了」の確認と通知の処理を終了してコール元に戻る(S2715)。ステップS2703において、Page_diffが1以下、すなわち、この実施形態でとり得る値としては0または1の場合、「ページ終了」の確認と通知の処理を終了してコール元に戻る(S2715)。
図13で印刷キャンセルオペレーション67が発生し、キャンセル情報(canceled)111に'1'がセットされている場合においても、ステップS2711においてキャンセル情報(canceled)111に'0'をセットする。こうすることで、「ページ終了」通知に含まれるジョブ情報(JobInfo)100内のキャンセル情報(canceled)111が正しい値、すなわち'0'がセットされた状態で「ページ終了」通知が発行される。この点が、本実施形態に係る発明の特徴の一つである。
また、図25乃至図27によって、「ページ開始」通知および「ページ終了」通知が未発行のページの存在を判定する。存在する場合には、該当するページごとに、「ページ開始」通知および「ページ終了」通知を、その順序で発行する。ただし、現在印刷中であれば、「ページ終了」通知は発行されない。
<本実施形態のEndDocPort関数>
図28はLM36におけるEndDocPort関数の処理を表すフローチャートである。同図に記されている各処理は、全てLM36における処理である。スプーラ40からこの関数がコールされると(S2801)、リードスレッドを終了し(S2802)、印刷処理を終了し(S2803)、プリンタ3を初期化する(S2804)。そして、ジョブ情報(JobInfo)100をロードし(S2805)、キャンセル情報(canceled)111が'0'であるか否か判定する(S2806)。'0'以外の場合、通知ID(funcId)103に「印刷キャンセル」を表す値をセットする(S2807)。そして「印刷キャンセル」通知を発行し(S2808)、この「印刷キャンセル」通知で通知した内容を共有情報51のジョブ情報(JobInfo)100に保存する(S2809)。ジョブ情報(JobInfo)100をロードし(S2810)、通知ID(funcId)103に「印刷完了」を表す値をセットし(S2811)、「印刷完了」通知を発行し(S2812)、通知処理を初期化する(S2813)。通知処理の初期化では、共有情報51の初期化を行う。OS内のIPrintAsyncNotifyChannel::CloseChannelメソッドにより、印刷ジョブに関する通知機能用の通知チャネルを閉じ(S2814)、EndDocPort関数の処理を終了してスプーラ40に戻る(S2815)。ステップS2806においてキャンセル情報(canceled)111が'0'の場合、ステップS2810に進む。このように、EndDocPort関数内のステップS2808において「印刷キャンセル」通知を発行する。こうすることで、オペレータによって印刷ジョブがキャンセルされた時においても、それまでに印刷が開始または終了している全てのページに関する「ページ開始」通知や「ページ終了」通知を正しい内容で発行することができる。これは本実施形態に係る発明の特徴の一つである。
<アプリケーション30における通知の受信処理>
図29はアプリケーション30におけるメイン処理を表すフローチャートである。同図に記されている各処理は、全てアプリケーション30における処理である。オペレータの操作等によりアプリケーション30が開始されると(S2901)、メインウィンドウ42を表示する(S2902)。OS内のRegisterForPrintAsyncNotifications関数をコールして、印刷ジョブに関する通知機能用の通知チャネルを登録する(S2903)。この通知チャネルの登録により、アプリケーション30が、LM36から発行される印刷ジョブに関する通知を受信することができる。メッセージループを作成する(S2904)。このメッセージループにより、アプリケーション30が、オペレータからのキーボードやマウス操作のイベントメッセージ、OSからのウィンドウやアプリケーション制御に関するイベントメッセージ等のメッセージを受け取る。そして、それぞれのメッセージに対して適切な処理を行うことができる。印刷ジョブに関する通知を受信した場合(S2905)、図30、図34に示す通知に基づく情報の取得と更新を実行する(S2906)。メッセージを受信した場合(S2907)、アプリケーションの終了メッセージの場合(S2908)、OS内のUnRegisterForPrintAsyncNotifications関数をコールする。こうして、印刷ジョブに関する通知機能用の通知チャネルの登録を解除する(S2909)。そしてアプリケーション30を終了する(S2911)。ステップS2908においてアプリケーションの終了メッセージ以外の場合、各メッセージに対応する適切な処理を行い(S2910)、ステップS2905に戻る。尚、ここでは各メッセージに対応する適切な処理の詳細説明を省略する。ステップS2907においてメッセージを受信していない場合、ステップS2905に戻る。ステップS2905において印刷ジョブに関する通知を受信していない場合、ステップS2907に進む。
図30はアプリケーション30における通知に基づく情報の取得と更新の処理を表すフローチャートである。同図に記されている各処理は、全てアプリケーション30における処理である。図29のステップS2906が実行されると、この処理がコールされる。通知に基づく情報の取得と更新の処理が開始されると(S3001)、通知に含まれるジョブ情報(JobInfo)100から次の情報を取得する。
・プリンタ名(printer)104(S3002)、
・通知ID(funcId)103(S3003)、
・ドキュメント名(document)107(S3004)、
・ユーザー名(user)105(S3005)、
・印刷ジョブID(jobId)106(S3006)、
・印刷中のページ番号(pagePrinting)108(S3007)、
・印刷済のページ番号(pagePrinted)109(S3008)、
・キャンセル情報(canceled)111(S3009)、
・印刷失敗情報(failedPrint)112(S3010)。
通知ID(funcId)103が「ページ終了」を表す値の場合(S3011)、印刷済のページ番号(pagePrinted)109が表すページに対して印刷済のページとして課金する(S3012)。プリンタ表示部43、印刷ジョブ情報表示部44、印刷状況表示部45の表示内容を更新し(S3013)、通知に基づく情報の取得と更新の処理を終了してコール元に戻る(S3014)。ステップS3011において通知ID(funcId)103が「ページ終了」を表す値以外の場合、ステップS3013に進む。
本発明の周辺装置制御システムでは、ライトスレッドとリードスレッドにおける印刷ジョブに関する通知処理を次の通り切り分けることで、排他的な制御を実現し、LM36が印刷ジョブに関する通知を正確に発行することができる。すなわち、ライトスレッドでは印刷開始、印刷完了、印刷キャンセルが、リードスレッドではページ開始、ページ終了
の各通知が処理される。これは本実施形態に係る発明の特徴の一つである。
以上のようにして、本実施形態では、印刷処理の対象となったページについて、もれなくページ開始(すなわち当該ページの印刷の開始)とページ終了(すなわち当該ページの印刷の完了)の通知を発行することができる。また、印刷処理が途中でキャンセルされた場合であっても、ページ開始通知とページ終了通知とを正しい内容で、かつ正しい順序で発行することができる。すなわち、通知情報は必要に応じて補填され、通知される。本実施形態では、周辺装置からある時間間隔で周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、これを情報処理装置に通知する。

[第2の実施の形態]
第1の実施の形態に記した周辺装置制御システムにおいて、LM36から発行される各通知の発行間隔が短い場合、OS内における処理またはネットワーク4における通信状況等の影響を受ける。そのため、アプリケーション30が受信する通知の順序が、LM36から発行された通知の順序と異なる場合があり、通知の順序の不整合が発生するケースがある。このような通知の順序の不整合の問題を解決する手段の例を以下に記す。
図15は本実施形態のジョブ情報(JobInfo)を表す図である。図15において、図5と重複する内容に関してはここでは説明を省略する。タイムスタンプ(time)114は、印刷ジョブに関する通知の発行時刻を表す。順序を表す情報(order)115は、各通知に対して順に付加され、その印刷ジョブに関する各通知の順序を表す。
図16は印刷ジョブに関する通知の内容を表す図である。図16では、LM36が発行する印刷ジョブに関する通知のジョブ情報(JobInfo)100の内容が記されている。上から順に、発行された通知の順で各通知のジョブ情報(JobInfo)100の内容が記されている。ジョブ情報(JobInfo)100の内容に関しては、図15に示す。同図は、図11のタイミングチャートの例で発行される印刷ジョブに関する通知の内容を表す。図12と比較すると、各通知に対してタイムスタンプ(time)114と順序を表す情報(order)115が付加されていることがわかる。
図17は印刷ジョブに関する通知の内容を例示する図である。図17では、アプリケーション30が受信する印刷ジョブに関する通知のジョブ情報(JobInfo)100の内容が記されている。上から順に受信された通知の順で各通知のジョブ情報(JobInfo)100の内容が記されている。ジョブ情報(JobInfo)100の内容に関しては、図15に示す。図17は、図11のタイミングチャートの例でLM36から発行された印刷ジョブに関する通知を、アプリケーション30が受信した時の通知の内容を表す。図17から、2ページ目の「ページ開始」通知73(JobInfo:73)と2ページ目の「ページ終了」通知74(JobInfo:74)の順序が逆転して、不整合が発生していることがわかる。これは、これらの通知が図26、図27で示すような計算により、極めて短い時間間隔で発行された結果、OS内における処理またはネットワーク4における通信状況の影響を受けたものである。
図32はLM36における通知処理を表すフローチャートである。図32に記されている各処理は、全てLM36における処理であり、次に挙げる各通知処理において、図32の処理を実行してタイムスタンプ及び順序を表す順序情報を通知に付加することで、前記不整合の問題を解決することができる。
(1)図19のステップS1908、
(2)図26のステップS2611、
(3)図27のステップS2712、
(4)図28のステップS2808、S2812。
まず、各通知処理に対してこの処理が開始されると(S3201)、OSから年月日及び時刻情報を取得し(S3202)、タイムスタンプ(time)114に「年月日及び時刻」をセットする(S3203)。そして、順序を表す情報(order)115をロードし(S3204)、順序を表す情報(order)115に1を足した値を順序を表す情報(order)115に代入する(S3205)。そして、前記各ステップにおける通知を発行し(S3206)、通知処理を終了してコール元に戻る(S3207)。
図33は通知リストを表す図である。図33において、通知リスト49は、アプリケーション30が、受信した印刷ジョブに関する通知の情報を管理して正確な制御を行う為のリストである。通知リスト49は、アプリケーション30が利用可能な保存エリアであるランダムアクセスメモリ部RAM1201やハードディスクドライブ部HDD1202に保存されている。図33では、図17に示す印刷ジョブに関する通知の内容の内、2ページ目の「ページ終了」通知74(JobInfo:74)まで受信した状態を表している。アプリケーション30は通知リストを参照して、順序を表す情報が連続して保存されている行までの状態を有効な情報として取り扱う。例えば図33の例の場合、順序を表す情報1から3の行の情報を有効とし、未だ受信していない順序を表す情報4及び既に受信している順序を表す情報5の行の情報に関しては、この時点では無効として取り扱う。
図34はアプリケーション30における通知に基づく情報の取得と更新の処理を表すフローチャートである。図34に記されている各処理は、全てアプリケーション30における処理である。図29のステップS2906が実行されると、第1実施形態では図30が実行されたのに対して本実施形態では図34がコールされる。通知に基づく情報の取得と更新の処理が開始されると(S3401)、ジョブ情報(JobInfo)100内の順序を表す情報(order)115を取得し(S3402)、通知リスト49に保存する(S3403)。ジョブ情報(JobInfo)100内のタイムスタンプ(time)114を取得し(S3404)、通知リスト49に保存する(S3405)。通知リスト49において順序を表す情報(order)を確認する(S3406)。ここでは確認とは、通知リスト49を参照して、抜けの有無を判定することである。通知の抜けが有る場合(S3407−YES)、通知に基づく情報の取得と更新の処理を終了してコール元に戻る(S3423)。ステップS3407において通知の抜けが無い場合、通知リスト49においタイムスタンプ(time)を確認する(S3408)。ここでは確認とは、通知リスト49を参照して、タイムスタンプの不整合を判断することである。タイムスタンプに不整合が有る場合(S3409−YES)、図18の印刷状況表示部45の情報(Information)欄に通知が正しく無い旨を表すエラーを表示する(S3410)。このエラーは、"Information:Notification is incorrect."というものである。そして通知に基づく情報の取得と更新の処理を終了してコール元に戻る(S3423)。ここでタイムスタンプの不整合とは、例えば通知リスト49において、順序情報(order)が大きい方の通知のタイムスタンプ(time)が、順序情報(order)が小さい方の通知のタイムスタンプ(time)より早い時刻を表している場合等が該当する。すなわち、タイムスタンプの不整合とは、順序情報で示される順序と、タイムスタンプで示される順序とが整合しない場合などをいう。尚、図33に示す通知リスト49では、このようなエラーのケースではなく、正常に動作しているケースを記す。ステップS3409においてタイムスタンプに不整合が無い場合、通知リスト49に保存されているジョブ情報(JobInfo)100から次の情報を取得する。
・プリンタ名(printer)104(S3411)、
・通知ID(funcId)103(S3412)、
・ドキュメント名(document)107(S3413)、
・ユーザー名(user)105(S3414)、
・印刷ジョブID(jobId)106(S3415)、
・印刷中のページ番号(pagePrinting)108(S3416)、
・印刷済のページ番号(pagePrinted)109(S3417)、
・キャンセル情報(canceled)111(S3418)、
・印刷失敗情報(failedPrint)112(S3419)。
ジョブ情報(JobInfo)100内の通知ID(funcId)103が「ページ終了」を表す値であるか判定する(S3420)。該当する場合、そのジョブ情報(JobInfo)100内の印刷済のページ番号(pagePrinted)109が表すページに対して印刷済のページとして課金する(S3421)。プリンタ表示部43、印刷ジョブ情報表示部44、印刷状況表示部45の表示内容を更新し(S3422)、通知に基づく情報の取得と更新の処理を終了してコール元に戻る(S3423)。ステップS3420において通知ID(funcId)103が「ページ終了」を表す値以外の場合、ステップS3422に進む。このように、通知リスト49を使って、各通知の順序を表す情報(order)、あるいはタイムスタンプ(time)を確認する。そして、LM36から発行された通知をその発行された順序通りに適切に処理することで、前記不整合の問題を解決することができる。これは本実施形態に係る発明の特徴の一つである。尚、本実施形態ではタイムスタンプ(time)をエラー処理に利用した。この例に限られることなく、アプリケーション30がタイムスタンプ(time)を利用して、LM36から発行された通知をその発行された順序通りに適切に処理することで、前記通知の順序の不整合の問題を解決することも可能である。順序通りに適切に処理するために、たとえば各通知の順序を表す順序情報に従って通知情報の順序を並び替え、並び替えた順序で処理する。
[第3の実施の形態]
第2の実施の形態に記した周辺装置制御システムにおける、前記通知の順序の不整合の問題を解決する手段の他の例を以下に記す。図31はLM36における通知処理を表すフローチャートである。図31に記されている各処理は、全てLM36における処理であり、次に挙げる各通知処理においてこの処理を実行することで、前記通知の順序の不整合の問題を解決することができる。
(1)図19のステップS1908、
(2)図26のステップS2611、
(3)図27のステップS2712、
(4)図28のステップS2808、S2812。
各通知処理に対してこの処理が開始されると(S3101)、前記各ステップにおける通知を発行し(S3102)、一定時間(この例では1秒間)のウェイト(待機)を行い(S3103)、通知処理を終了してコール元に戻る(S3104)。このように、ステップS3103において一定時間のウェイトを行うことで、LM36から発行された通知の順序と同じ順序でアプリケーション30がそれぞれの通知を受信することができ、前記不整合の問題を解決することができる。このステップS3103におけるウェイト処理は、本実施形態に係る発明の特徴の一つである。
このように本実施形態では、ある通知情報を通知した後には、早くともそれから或る時間が経過した後でなければ、次の通知情報が通知されない。
[実施形態に係る発明の拡張]
以下に上述した3つの実施形態において実行されるプログラムについて、その構成を説明する。図38に示すメモリマップを参照して、本発明に係る情報処理装置及び周辺装置からなる周辺装置制御システムで読み出し可能なデータ処理プログラムの構成について説明する。
図38は、本発明に係る周辺装置制御システムで読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを示す図である。なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報や作成者等もこの記憶媒体に記憶される。さらに、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等もこの記憶媒体に記憶される場合もある。図38において、記憶媒体130は、ここではハードディスクで構成されているものとする。ディレクトリ情報管理部131には、各種プログラムに従属するデータが管理されている。プログラム格納部132には、各種プログラムを情報処理装置にインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に解凍するためのプログラム等も記憶される場合がある。本実施形態における図19〜図32、図34にそれぞれ示す各フローチャートの実行によって実現できる各機能が、外部からインストールされるプログラムによって、情報処理装置によって実現されるようにしてもよい。そして、その場合、CD−ROMやフラッシュメモリやフレキシブルディスク等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群が情報処理装置や周辺装置に供給される場合でも、本発明は適用されるものである。
本発明は、前述した実施形態の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM、EEPROM等を用いることができる。
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
本発明の実施の形態では、周辺装置制御システムの例の一つとしてローカル印刷システムの例を中心に説明した。しかしこの例に限られることなく、図1に示すようなネットワーク印刷システムにおいて、PC1内のアプリケーション30の代わりにPC2内のアプリケーション47を使うような例でも実現可能であり、有効である。
本実施の形態では、アプリケーション30、47の例として図18に示すような課金アプリケーション(Photo Album Creator)を挙げたが、この例に限られることはない。例えば周辺装置から情報を取得して、それを利用してその情報に関する通知を行うような任意のアプリケーションで実現可能であり、有効である。
本発明の実施の形態では、アプリケーション30、47が、プリンタ3で印刷される印刷ジョブに関する通知を受信する例を説明したが、この例に限られることなく任意の情報や状態の取得して通知するような周辺装置制御システムに対して有効活用できる。
本発明の実施の形態では、Windows Vista(登録商標)OSに実装されているAsynchronous Printing Notification Interfacesを介した通知機能を利用して実現している。しかしこの例に限られることなく、任意の通知機能を利用して、実現することができる。また、実現するにあたっては、標準化された規格を利用することで、より汎用的なシステムを容易に実現することができる。
本発明の実施の形態では、プリンタの例としてカラーインクジェットプリンタを使用したが、この例に限られることなく、例えば、モノクロLBP等の任意のプリンタを使用することができる。
本発明の実施の形態ではクライアントやサーバとしてパーソナルコンピュータを想定した。しかし、この例に限られることなく、例えばDVDビデオプレーヤー、ゲーム、セットトップボックス、インターネット家電等、同様な使用方法が可能な任意の端末に対して実現することができ、有効である。
本発明の実施の形態では、周辺装置としてプリンタを例示している。しかし、周辺装置として他に、複写機、ファクシミリ、スキャナ、デジタルカメラ、及びこれらの複合機能を備える装置等のいずれかが、本発明の適用対象となり得る。
本発明の実施の形態では、OSに例としてWindows Vista(登録商標)を使用したが、これらのOSに限られることなく、任意のOSを使用することができる。
本発明の実施の形態では、ネットワーク4の構成例としてEthernetを用いたが、この例に限られることなく、他の任意のネットワーク構成であってもよい。
本発明の実施の形態では、PC1とプリンタ3との間のインタフェースとして、USBインタフェースを用いた。このインタフェースに限られることなく、例えば、Ethernet、無線LAN、IEEE1394、Bluetooth、IrDA、パラレル、シリアル等の任意のインタフェースを用いるようにしてもよい。
本発明に係る情報処理装置及び周辺装置からなる周辺装置制御システムの一実施形態におけるシステムの構成部分を表すブロック図 PCのハードウェア構成の一例を表すブロック図 プリンタのハードウェア構成を表すブロック図 PC1におけるプリンタドライバの構成を表す図 ジョブ情報(JobInfo)を表す図 通知の種類と通知IDのマップを表す図 印刷ジョブに関する通知機能の前提技術のタイミングチャート 印刷ジョブに関する通知の内容を表す前提技術の図 印刷ジョブに関する通知機能の前提技術のタイミングチャート 印刷ジョブに関する通知の内容を表す前提技術の図 印刷ジョブに関する通知機能のタイミングチャート 印刷ジョブに関する通知の内容を表す図 印刷ジョブに関する通知機能のタイミングチャート 印刷ジョブに関する通知の内容を表す図 ジョブ情報(JobInfo)を表す図 印刷ジョブに関する通知の内容を表す図 印刷ジョブに関する通知の内容を表す図 課金アプリケーション(Photo Album Creator)のユーザーインタフェースを表す図 LM36におけるStartDocPort関数の処理を表すフローチャート LM36におけるWritePort関数の処理を表す前提技術のフローチャート LM36におけるReadPort関数の処理を表すフローチャート LM36におけるページ情報の通知の処理を表す前提技術のフローチャート LM36におけるEndDocPort関数の処理を表す前提技術のフローチャート LM36におけるWritePort関数の処理を表すフローチャート LM36におけるページ情報の通知の処理を表すフローチャート LM36における「ページ開始」の確認と通知の処理を表すフローチャート LM36における「ページ終了」の確認と通知の処理を表すフローチャート LM36におけるEndDocPort関数の処理を表すフローチャート アプリケーション30におけるメイン処理を表すフローチャート アプリケーション30における通知に基づく情報の取得と更新の処理を表すフローチャート LM36における通知処理を表すフローチャート LM36における通知処理を表すフローチャート 通知リストを表す図 アプリケーション30における通知に基づく情報の取得と更新の処理を表すフローチャート プリンタ3の状態を表すプリンタ状態コマンドの内容を表す図 共有情報51に含まれている情報の詳細を表す前提技術の図 共有情報51に含まれている情報の詳細を表す図 本発明に係る周辺装置制御システムで読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを示す図
符号の説明
1・・・情報処理装置(PC)
2・・・情報処理装置(PC)
3・・・プリンタ
4・・・ネットワーク
9・・・USBインタフェース
30・・・アプリケーション(課金アプリケーション)
36・・・ランゲージモニタ
40・・・スプーラ
42・・・メインウィンドウ
43・・・プリンタ表示部
44・・・印刷ジョブ情報表示部
45・・・印刷状況表示部
46・・・キャンセルボタン
47・・・アプリケーション(課金アプリケーション)
48・・・ランゲージモニタ
49・・・通知リスト
51・・・共有情報
52・・・StartDocPort関数
53・・・WritePort関数
54・・・WritePort関数
55・・・EndDocPort関数
56・・・ReadPort関数
57・・・ReadPort関数
58・・・ReadPort関数
59・・・ReadPort関数
67・・・印刷キャンセルオペレーション
70・・・「印刷開始」通知
71・・・1ページ目の「ページ開始」通知
72・・・1ページ目の「ページ終了」通知
73・・・2ページ目の「ページ開始」通知
74・・・2ページ目の「ページ終了」通知
75・・・3ページ目の「ページ開始」通知
76・・・3ページ目の「ページ終了」通知
77・・・「印刷完了」通知
78・・・「印刷キャンセル」通知で
81・・・印刷中のページ情報コマンド
100・・・ジョブ情報(JobInfo)
103・・・通知ID(funcId)
104・・・プリンタ名(printer)
105・・・ユーザー名(user)
106・・・印刷ジョブID(jobId)
107・・・ドキュメント名(document)
108・・・印刷中のページ番号(pagePrinting)
109・・・印刷済のページ番号(pagePrinted)
111・・・キャンセル情報(canceled)
112・・・印刷失敗情報(failedPrint)
114・・・タイムスタンプ(time)
115・・・順序を表す情報(order)
120・・・最後に取得した印刷中のページ番号(LastPrintingPage)
121・・・現在印刷中のページ番号(CurrentPrintingPage)
122・・・「ページ開始」で通知した(通知する)印刷中のページ番号(pagePrintingSent)
123・・・「ページ終了」で通知した(通知する)印刷済のページ番号(pagePrintedSent)
130・・・記憶媒体
131・・・ディレクトリ情報管理部
132・・・プログラム格納部
1201・・・RAM
1202・・・HDD

Claims (29)

  1. 第1の情報処理装置と、周辺装置とから成る周辺装置制御システムであって、
    前記第1の情報処理装置は、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知することを特徴とする周辺装置制御システム。
  2. 第1の情報処理装置と、第2の情報処理装置と、周辺装置とから成る周辺装置制御システムであって、
    前記第1の情報処理装置は、前記周辺装置と接続されていて、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を前記第2の情報処理装置に通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知することを特徴とする周辺装置制御システム。
  3. 前記第1の情報処理装置は前記周辺装置を制御する周辺装置制御手段を備え、
    前記周辺装置制御手段は、前記周辺装置情報を取得し、この周辺装置情報から通知情報を生成し、前記通知情報を通知することを特徴とする請求項1または2記載の周辺装置制御システム。
  4. 前記通知情報は補填された通知情報を含むことを特徴とする請求項1または2記載の周辺装置制御システム。
  5. 前記周辺装置は印刷装置で構成され、前記通知情報は、前記周辺装置で印刷される印刷物のページ番号を含むことを特徴とする請求項4記載の周辺装置制御システム。
  6. 前記周辺装置制御手段は、前記周辺装置へのデータの書き込みを制御する書き込みスレッドと、前記周辺装置からのデータの読み出しを制御する読み出しスレッドにより前記周辺装置を制御し、前記書き込みスレッドと前記読み出しスレッド間で情報の共有を行う情報共有手段を備えることを特徴とする請求項3記載の周辺装置制御システム。
  7. 前記周辺装置制御手段は、前記周辺装置情報と前記情報共有手段で共有される共有情報から、前記通知情報を生成することを特徴とする請求項6記載の周辺装置制御システム。
  8. 前記周辺装置制御手段は、前記通知情報の種類に応じて、前記共有情報から生成した通知情報の一部を変更して、通知することを特徴とする請求項7記載の周辺装置制御システム。
  9. 前記通知情報は複数の種類で構成され、前記周辺装置制御手段は、前記通知情報を第1の通知情報群と第2の通知情報群に分け、前記第1の通知情報群に含まれる通知情報を前記書き込みスレッドから通知し、前記第2の通知情報群に含まれる通知情報を前記読み出しスレッドから通知することを特徴とする請求項6記載の周辺装置制御システム。
  10. 前記通知情報に依存関係を設けることを特徴とする請求項1または2記載の周辺装置制御システム。
  11. 前記通知手段は、ある通知情報を通知した後、ある時間が経過した後、次の通知情報を通知することを特徴とする請求項1または2記載の周辺装置制御システム。
  12. 前記通知情報は、時刻を表す時刻情報を含むことを特徴とする請求項1または2記載の周辺装置制御システム。
  13. 前記通知情報は、通知の順序を表す順序情報を含むことを特徴とする請求項1または2記載の周辺装置制御システム。
  14. 前記第1の情報処理装置または前記第2の情報処理装置は、前記通知情報を受信可能なアプリケーションを備え、前記アプリケーションは、前記時刻情報に従って通知情報の順序を並び替えることを特徴とする請求項12記載の周辺装置制御システム。
  15. 前記第1の情報処理装置または前記第2の情報処理装置は、前記通知情報を受信可能なアプリケーションを備え、前記アプリケーションは、前記順序情報に従って通知情報の順序を並び替えることを特徴とする請求項13記載の周辺装置制御システム。
  16. 第1の情報処理装置であって、
    前記第1の情報処理装置は、周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知することを特徴とする情報処理装置。
  17. 第1の情報処理装置であって、
    前記第1の情報処理装置は、周辺装置と接続されていて、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を第2の情報処理装置に通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知することを特徴とする情報処理装置。
  18. 第1の情報処理装置と、周辺装置とから成る周辺装置制御方法であって、
    前記第1の情報処理装置は、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知するステップを備えることを特徴とする周辺装置制御方法。
  19. 第1の情報処理装置と、第2の情報処理装置と、周辺装置とから成る周辺装置制御方法であって、
    前記第1の情報処理装置は、前記周辺装置と接続されていて、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を前記第2の情報処理装置に通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知するステップを備えることを特徴とする周辺装置制御方法。
  20. 第1の情報処理装置と、周辺装置とから成る周辺装置制御方法を、コンピュータに実行させるためのプログラムであって、
    前記第1の情報処理装置は、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知するステップを備えることを特徴とするプログラム。
  21. 第1の情報処理装置と、第2の情報処理装置と、周辺装置とから成る周辺装置制御方法を、コンピュータに実行させるためのプログラムであって、
    前記第1の情報処理装置は、前記周辺装置と接続されていて、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を前記第2の情報処理装置に通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知するステップを備えることを特徴とするプログラム。
  22. 第1の情報処理装置と、周辺装置とから成る周辺装置制御方法を、コンピュータに実行させるためのプログラムを記憶する記憶媒体であって、
    前記第1の情報処理装置は、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知するステップを備えることを特徴とする記憶媒体。
  23. 第1の情報処理装置と、第2の情報処理装置と、周辺装置とから成る周辺装置制御方法を、コンピュータに実行させるためのプログラムを記憶する記憶媒体であって、
    前記第1の情報処理装置は、前記周辺装置と接続されていて、前記周辺装置から前記周辺装置に関する周辺装置情報を取得する取得手段と、前記周辺装置情報から通知情報を生成する通知情報生成手段と、前記通知情報を前記第2の情報処理装置に通知する通知手段を備え、
    前記取得手段は、前記周辺装置からある時間間隔で前記周辺装置情報を取得し、ある時刻における第1の周辺装置情報と、別の時刻における第2の周辺装置情報から通知情報を生成し、前記通知情報を通知するステップを備えることを特徴とする記憶媒体。
  24. 他のプログラムに対して印刷の進捗を通知するプリンタ制御装置であって、
    最後に通知した印刷中のページ番号と、最後に通知した印刷済のページ番号とを保存する保存手段と、
    プリンタから現在印刷中のページ番号を一定時間ごとに取得する取得手段と、
    前記現在印刷中のページ番号と前記最後に通知した印刷中のページ番号とに基づいて、印刷中のページ番号の通知が発行されていないページ、および、印刷済みのページ番号の通知が発行されていないページの存在を判定し、存在する場合には、該当するページごとに印刷中の通知および印刷済みの通知をその順序で発行する発行手段と
    を備えることを特徴とするプリンタ制御装置。
  25. 印刷が中断された場合には、印刷の終了の指示に対して、中断されたことを示す通知を発行する手段をさらに備えることを特徴とする請求項24に記載のプリンタ制御装置。
  26. 前記発行手段により発行される通知に、タイムスタンプと、発行の順序を示す情報とがさらに含まれることを特徴とする請求項24または25に記載のプリンタ制御装置。
  27. 前記発行手段は、通知の発行の後、一定時間の待機することを特徴とする請求項24または25に記載のプリンタ制御装置。
  28. コンピュータにより実行される、他のプログラムに対して印刷の進捗を通知するプリンタ制御プログラムであって、
    最後に通知した印刷中のページ番号と、最後に通知した印刷済のページ番号とを保存する保存工程と、
    プリンタから現在印刷中のページ番号を一定時間ごとに取得する取得工程と、
    前記現在印刷中のページ番号と前記最後に通知した印刷中のページ番号とに基づいて、印刷中のページ番号の通知が発行されていないページ、および、印刷済みのページ番号の通知が発行されていないページの存在を判定し、存在する場合には、該当するページごとに印刷中の通知および印刷済みの通知をその順序で発行する発行工程と
    をコンピュータにより実行させることを特徴とするプリンタ制御プログラム。
  29. 他のプログラムに対して印刷の進捗を通知するプリンタ制御方法であって、
    保存手段が、最後に通知した印刷中のページ番号と、最後に通知した印刷済のページ番号とを保存する保存工程と、
    取得手段が、プリンタから現在印刷中のページ番号を一定時間ごとに取得する取得工程と、
    発行手段が、前記現在印刷中のページ番号と前記最後に通知した印刷中のページ番号とに基づいて、印刷中のページ番号の通知が発行されていないページ、および、印刷済みのページ番号の通知が発行されていないページの存在を判定し、存在する場合には、該当するページごとに印刷中の通知および印刷済みの通知をその順序で発行する発行工程と
    をコンピュータにより実行させることを特徴とするプリンタ制御プログラム。
JP2007159496A 2007-06-15 2007-06-15 周辺装置制御システム、情報処理装置、周辺装置制御方法、プログラム、記憶媒体、プリンタ制御装置、プリンタ制御プログラム及びプリンタ制御方法 Active JP4996362B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007159496A JP4996362B2 (ja) 2007-06-15 2007-06-15 周辺装置制御システム、情報処理装置、周辺装置制御方法、プログラム、記憶媒体、プリンタ制御装置、プリンタ制御プログラム及びプリンタ制御方法
US12/139,437 US7941571B2 (en) 2007-06-15 2008-06-13 Peripheral device control system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007159496A JP4996362B2 (ja) 2007-06-15 2007-06-15 周辺装置制御システム、情報処理装置、周辺装置制御方法、プログラム、記憶媒体、プリンタ制御装置、プリンタ制御プログラム及びプリンタ制御方法

Publications (3)

Publication Number Publication Date
JP2008310701A true JP2008310701A (ja) 2008-12-25
JP2008310701A5 JP2008310701A5 (ja) 2010-04-30
JP4996362B2 JP4996362B2 (ja) 2012-08-08

Family

ID=40133411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007159496A Active JP4996362B2 (ja) 2007-06-15 2007-06-15 周辺装置制御システム、情報処理装置、周辺装置制御方法、プログラム、記憶媒体、プリンタ制御装置、プリンタ制御プログラム及びプリンタ制御方法

Country Status (2)

Country Link
US (1) US7941571B2 (ja)
JP (1) JP4996362B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5279516B2 (ja) * 2009-01-09 2013-09-04 キヤノン株式会社 情報処理装置、表示制御方法及びプログラム
JP5479177B2 (ja) * 2010-03-19 2014-04-23 株式会社Pfu 情報処理装置、消耗品管理方法およびプログラム
JP5630072B2 (ja) * 2010-05-24 2014-11-26 富士ゼロックス株式会社 印刷管理装置、印刷管理システム及びプログラム
JP5790143B2 (ja) * 2011-05-18 2015-10-07 株式会社リコー 情報処理装置及びプログラム
US11474767B1 (en) * 2014-05-28 2022-10-18 Amazon Technologies, Inc. Print from web services platform to local printer

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192358A (ja) * 2002-12-11 2004-07-08 Hitachi East Japan Solutions Ltd 端末とセンタ側の装置との間で送受信を行うための双方向通信方式および双方向通信のためのプログラム
JP2004199225A (ja) * 2002-12-17 2004-07-15 Fuji Xerox Co Ltd クライアント装置、通知源サーバ装置、イベント通知メッセージ管理方法
JP2004220164A (ja) * 2003-01-10 2004-08-05 Seiko Epson Corp デバイス稼働制御システム、プリンタ稼働制御システム、プリンタ管理端末及び端末用プログラム、並びにデバイス稼働制御方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188504A1 (en) * 2001-06-07 2002-12-12 Whale Margo N. Monitoring usage of printer consumables to initiate promotional actions
JP3841023B2 (ja) 2002-06-07 2006-11-01 ブラザー工業株式会社 プリンタの状態報知システム及び通知端末装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192358A (ja) * 2002-12-11 2004-07-08 Hitachi East Japan Solutions Ltd 端末とセンタ側の装置との間で送受信を行うための双方向通信方式および双方向通信のためのプログラム
JP2004199225A (ja) * 2002-12-17 2004-07-15 Fuji Xerox Co Ltd クライアント装置、通知源サーバ装置、イベント通知メッセージ管理方法
JP2004220164A (ja) * 2003-01-10 2004-08-05 Seiko Epson Corp デバイス稼働制御システム、プリンタ稼働制御システム、プリンタ管理端末及び端末用プログラム、並びにデバイス稼働制御方法

Also Published As

Publication number Publication date
JP4996362B2 (ja) 2012-08-08
US20080313360A1 (en) 2008-12-18
US7941571B2 (en) 2011-05-10

Similar Documents

Publication Publication Date Title
JP4996362B2 (ja) 周辺装置制御システム、情報処理装置、周辺装置制御方法、プログラム、記憶媒体、プリンタ制御装置、プリンタ制御プログラム及びプリンタ制御方法
EP1521171B1 (en) Device information management system
CN100444155C (zh) 文档处理装置及其控制方法
KR100872955B1 (ko) 정보 처리 장치, 주변 장치 제어 방법, 및 컴퓨터판독가능한 기억 매체
CN103279310A (zh) 信息处理装置及信息处理方法
JP5078423B2 (ja) ワークフロー管理サーバ及び方法
US7461069B2 (en) Log information management device, log information generation device, and computer-readable medium storing log information management program therein
US20050162693A1 (en) Job management apparatus and method, and control program used therewith
JP2002135508A (ja) 画像処理装置、画像処理システム、処理分散方法、資源取得方法、作業受託処理方法及び記憶媒体
CN101604229A (zh) 数据输出设备可处理的输出数据的产生
JP2007018500A (ja) 情報処理装置及び情報処理方法
US10095960B2 (en) Printing managing apparatus and computer readable medium storing printing managing program
CN102006384A (zh) 信息处理设备和信息处理方法
JP4795151B2 (ja) 情報処理方法、情報処理装置、プログラム及び記憶媒体
JP4420053B2 (ja) 情報管理装置、情報管理方法及びそのプログラム
JP2009294931A (ja) システム、サーバ、サーバの制御方法及びプログラム
JP2008097226A (ja) 情報処理装置及び情報処理方法
US8902442B2 (en) Image forming system and method in which client apparatuses are notified via print server of event generated in image forming apparatus
JP2004151994A (ja) データ処理装置
US7623253B1 (en) Indirect processing of print jobs
JP4366042B2 (ja) ジョブ管理装置、ジョブ管理方法、制御プログラム
JP2007004680A (ja) 印刷制御装置、印刷制御方法および印刷制御プログラム
JP2002245007A (ja) 情報処理装置、ネットワークシステム、情報処理方法、及び記憶媒体
JP2004220098A (ja) 画像形成される対象データとその処理条件とを再利用可能とする画像形成装置
KR100851117B1 (ko) 정보 처리 방법 및 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100311

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120313

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: 20120413

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120511

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4996362

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3