(57)【要約】【課題】カウント値に関連のある複数のカウンタのカウント値を、複数回の参照要求により参照しようとする場合でも、参照されるカウント値の間に矛盾が発生しないようにする。【解決手段】  カウンタ管理モジュール１０３が、グループ化された複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、その指定されたカウンタのカウント値をカウント値記憶領域１７ａから取得して要求元に供給すると共に、その参照要求を受けた時点のカウント値を、上記指定されたカウントと同じグループに属する全てのカウンタについてセットにして、そのセットにＩＤを付してカウント値一時記憶領域１３ａに保存し、そのＩＤを上記要求元に供給し、ＩＤを指定して第２の参照要求を受けた場合に、その指定されたＩＤを付してカウント値一時記憶領域１３ａに保存されているセットに含まれるカウント値を要求元に供給するようにした。【選択図】        図４
2013065944.tif 000002
【特許請求の範囲】
【請求項１】
グループ化された複数のカウンタと、
前記複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、該指定されたカウンタのカウント値を要求元に供給すると共に、該指定されたカウンタがいずれかのグループに属する場合には、前記参照要求を受けた時点のカウント値を、前記複数のカウンタのうち前記指定されたカウンタと同じグループに属する全てのカウンタについてセットにして、該セットにＩＤを付して所定のメモリに保存し、そのＩＤを前記要求元に供給する第１の手段と、
ＩＤを指定して第２の参照要求を受けた場合に、該指定されたＩＤを付して前記所定のメモリに保存されているセットに含まれるカウント値を要求元に供給する第２の手段とを備えた電子装置。
【請求項２】
複数のカウンタと、
前記複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、該指定されたカウンタのカウント値を要求元に供給すると共に、該参照要求を受けた時点のカウント値を、前記複数のカウンタの全てについてセットにして、該セットにＩＤを付して所定のメモリに保存し、そのＩＤを前記要求元に供給する第１の手段と、
ＩＤを指定して第２の参照要求を受けた場合に、該指定されたＩＤを付して前記所定のメモリに保存されているセットに含まれるカウント値を要求元に供給する第２の手段とを備えた電子装置。
【請求項３】
請求項１又は２に記載の電子装置であって、
前記複数のカウンタのカウント値は不揮発性メモリに記憶させ、または不揮発性メモリに記憶させた値から演算可能であり、
前記カウント値のセットを記憶させる所定のメモリは揮発性メモリであることを特徴とする電子装置。
【請求項４】
グループ化された複数のカウンタを備える電子装置が、
前記複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、該指定されたカウンタのカウント値を要求元に供給すると共に、該指定されたカウンタがいずれかのグループに属する場合には、前記参照要求を受けた時点のカウント値を、前記複数のカウンタのうち前記指定されたカウンタと同じグループに属する全てのカウンタについてセットにして、該セットにＩＤを付して所定のメモリに保存し、そのＩＤを前記要求元に供給する第１の手順と、
ＩＤを指定して第２の参照要求を受けた場合に、該指定されたＩＤを付して前記所定のメモリに保存されているセットに含まれるカウント値を要求元に供給する第２の手順とを実行することを特徴とするカウント値管理方法。
【請求項５】
複数のカウンタを備える電子装置が、
前記複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、該指定されたカウンタのカウント値を要求元に供給すると共に、該参照要求を受けた時点のカウント値を、前記複数のカウンタの全てについてセットにして、該セットにＩＤを付して所定のメモリに保存し、そのＩＤを前記要求元に供給する第１の手順と、
ＩＤを指定して第２の参照要求を受けた場合に、該指定されたＩＤを付して前記所定のメモリに保存されているセットに含まれるカウント値を要求元に供給する第２の手順とを実行することを特徴とするカウント値管理方法。
【請求項６】
請求項４又は５に記載のカウント値出力方法であって、
前記電子装置が、前記複数のカウンタのカウント値は不揮発性メモリに記憶させ、または不揮発性メモリに記憶させた値から演算可能であり、
前記カウント値のセットを記憶させる所定のメモリは揮発性メモリであることを特徴とするカウント値管理方法。
【請求項７】
コンピュータを、
グループ化された複数のカウンタと、
前記複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、該指定されたカウンタのカウント値を要求元に供給すると共に、該指定されたカウンタがいずれかのグループに属する場合には、前記参照要求を受けた時点のカウント値を、前記複数のカウンタのうち前記指定されたカウンタと同じグループに属する全てのカウンタについてセットにして、該セットにＩＤを付して所定のメモリに保存し、そのＩＤを前記要求元に供給する第１の手段と、
ＩＤを指定して第２の参照要求を受けた場合に、該指定されたＩＤを付して前記所定のメモリに保存されているセットに含まれるカウント値を要求元に供給する第２の手段として機能させるためのプログラム。
【請求項８】
コンピュータを、
複数のカウンタと、
前記複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、該指定されたカウンタのカウント値を要求元に供給すると共に、該参照要求を受けた時点のカウント値を、前記複数のカウンタの全てについてセットにして、該セットにＩＤを付して所定のメモリに保存し、そのＩＤを前記要求元に供給する第１の手段と、
ＩＤを指定して第２の参照要求を受けた場合に、該指定されたＩＤを付して前記所定のメモリに保存されているセットに含まれるカウント値を要求元に供給する第２の手段として機能させるためのプログラム。
【請求項９】
請求項７又は８に記載のプログラムであって、
前記コンピュータにおいて前記複数のカウンタのカウント値は不揮発性メモリに記憶させ、または不揮発性メモリに記憶させた値から演算可能であり、
前記カウント値のセットを記憶させる所定のメモリは揮発性メモリであることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のカウンタを備え、参照要求に応じてそのカウント値を要求元に供給する電子装置、このような電子装置におけるカウント値管理方法、およびコンピュータをこのような電子装置として機能させるためのプログラムに関する。
【背景技術】
【０００２】
従来から、電子装置において動作の回数等をカウントする複数のカウンタを設けることが知られている。例えば、コピー、ファクシミリ通信、プリント等の複数の機能を有する画像形成装置において、コピー出力枚数、ファクシミリ出力枚数、プリント出力枚数をそれぞれカウントするカウンタを設ける等である。
【０００３】
また、特許文献１には、画像処理装置において複数のカウンタのカウント値の合計をカウントするトータルカウンタを設ける場合の動作として、以下のものが提案されている。それは、トータルカウンタ単独で値をカウントするのではなく、トータルカウンタのカウント値の出力を要求された時に、合計すべきカウント値をそれぞれ個別に取得し、それらを合計して出力するというものである。
【０００４】
また、特許文献２には、画像形成装置が監視サーバにカウント値を通報するための処理として、以下のものが提案されている。それは、定期データ取得スケジュールが示す定期データ取得時になると、カウント値に関するデータを抽出して取得日時の情報と共に所定の領域に記憶させておき、定期自動通報スケジュールが示す定期自動通報時にその取得しておいたカウント値を監視サーバに送信するものである。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
画像処理装置等の電子装置にカウンタを設ける場合、複数のカウンタのカウント値が関連性を持っている場合がある。特許文献１に記載の、トータルカウンタと、カウント値を合計する個別のカウンタとがその一例である。そして、トータルカウンタを上記のような構成とすることにより、トータルカウンタのカウント値を常時記憶しておくための領域が不要となる他、トータルカウンタのカウントアップ処理も不要となる。
【０００６】
ところで、電子装置においてカウンタの機能を設ける場合、カウンタにおけるカウント動作を制御するカウンタ管理モジュールを、そのカウンタの値を参照するアプリケーションと別に設けることが多い。任意のアプリケーションからカウント値を参照できるようにするためである。
【０００７】
このとき、アプリケーションから見れば、トータルカウンタのようにカウント値の取得に複数のカウント値に基づく演算が必要なカウンタも、そうでないカウンタも、等価な１つのカウンタとして扱えるようにすることが好ましい。例えば、カウンタのＩＤを引数としてカウント値取得コマンド（あるいは関数）をカウンタ管理モジュールに渡すと、どのカウンタであっても同じようにカウント値を取得できる等である。
【０００８】
このような構成を採用する場合、トータルカウンタのカウント値は、カウンタ管理モジュールが、トータルカウンタについてのカウント値取得コマンドを検出した時点で、個別のカウンタのカウント値をそれぞれ取得して算出することになる。また、例えばその後カウンタ管理モジュールが個別カウンタについてのカウント値取得コマンドを検出すると、カウンタ管理モジュールは、その時点の個別カウンタのカウント値を取得して返すことになる。
【０００９】
従って、カウンタ管理モジュールがトータルカウンタのカウント値と個別カウンタのカウント値とを続けて要求された場合でも、トータルカウンタのカウント値算出に用いる個別カウンタのカウント値と、その後のコマンドに応じて返す個別カウンタのカウント値とでは、異なる時点の値となる。
このため、トータルカウンタについてカウント値取得コマンドを検出した後、個別カウンタについてカウント値取得コマンドを検出するまでの間にその個別カウンタについてカウントアップが必要なイベントが発生すると、トータルカウンタのカウント値算出に用いる個別カウンタのカウント値と、その後の要求に応じて返す個別カウンタのカウント値が異なることになってしまう。
【００１０】
このような場合、例えば、トータルカウンタのカウント値と、各個別カウンタのカウント値とを並べて表示する時に、トータルカウンタのカウント値と、個別カウンタのカウント値の合計とが一致しない、という矛盾した事態が発生し得るという問題があった。
このような問題は、カウンタが、トータルと個別、という関係になくても、カウント値に関連のある複数のカウンタのカウント値を、複数回の参照要求により参照しようとする場合には、同様に発生するものである。
この発明は、このような問題を解決し、カウント値に関連のある複数のカウンタのカウント値を、複数回の参照要求により参照しようとする場合でも、参照されるカウント値の間に矛盾が発生しないようにすることを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、この発明による電子装置には、グループ化された複数のカウンタと、上記複数のカウンタのいずれかを指定して第１の参照要求を受けた場合に、その指定されたカウンタのカウント値を要求元に供給すると共に、その指定されたカウンタがいずれかのグループに属する場合には、上記参照要求を受けた時点のカウント値を、上記複数のカウンタのうち上記指定されたカウンタと同じグループに属する全てのカウンタについてセットにして、そのセットにＩＤを付して所定のメモリに保存し、そのＩＤを上記要求元に供給する第１の手段と、ＩＤを指定して第２の参照要求を受けた場合に、その指定されたＩＤを付して上記所定のメモリに保存されているセットに含まれるカウント値を要求元に供給する第２の手段とを設けた。
【発明の効果】
【００１２】
以上のような構成によれば、カウント値に関連のある複数のカウンタのカウント値を、複数回の参照要求により参照しようとする場合でも、参照されるカウント値の間に矛盾が発生しないようにすることができる。
【図面の簡単な説明】
【００１３】
【図１】この発明の電子装置の一実施形態である画像処理装置のハードウェア構成を示すブロック図である。
【図２】図１に示したＮＶＲＡＭにおけるカウント値の記憶状態を示す図である。
【図３】図１に示した画像処理装置が記憶するカウンタの構成に関する情報の例を示す図である。
【図４】図１に示した画像処理装置におけるカウンタの制御に関する機能を示す機能ブロック図である。
【図５】カウント値一時記憶領域におけるカウント値の記憶形式を示す図である。
【図６Ａ】カウンタ管理モジュールがカウンタによるカウント及びカウント値の参照に関して受け付けるコマンドの例を示す図である。
【図６Ｂ】その別の例を示す図である。
【図６Ｃ】そのさらに別の例を示す図である。
【図６Ｄ】そのさらに別の例を示す図である。
【図７】カウント値取得コマンドに応じた動作について説明するための図である。
【図８】一時記憶カウント値取得コマンドに応じた動作について説明するための図である。
【図９】カウンタ管理モジュールがカウント値取得コマンドを検出した場合に実行する処理のフローチャートである。
【図１０】同じく一時記憶カウント値取得コマンドを検出した場合の処理のフローチャートである。
【図１１】カウントアップ依頼モジュール及びカウント値取得モジュールがカウンタ管理モジュールにコマンドを渡す手順の例を示す図である。
【図１２】画像処理装置に設けるカウンタのカウント値の例を示す図である。
【図１３】図１２に示したカウント値をカウント値一時記憶領域に記憶させた状態を示す図である。
【図１４】画像処理装置に設けるカウンタのカウント値の別の例を示す図である。
【図１５】図１４に示したカウント値をカウント値一時記憶領域に記憶させた状態を示す図である。
【図１６】カウント値を表示する画面の例を示す図である。
【図１７】この発明の実施形態を適用した場合のカウント値の取得手順の例を示すシーケンス図である。
【図１８】その続きを示す図である。
【図１９】比較例におけるカウント値の取得手順の例を示すシーケンス図である。
【図２０】その続きを示す図である。
【図２１】比較例における図１６と対応する画面の表示例を示す図である。
【発明を実施するための形態】
【００１４】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
図１は、この発明の電子装置の一実施形態である画像処理装置のハードウェア構成を示すブロック図である。
【００１５】
図１に示すように、画像処理装置１０は、ＣＰＵ１１，ＲＯＭ１２，ＳＤＲＡＭ(Synchronous Dynamic RAM)１３，ＨＤＤ（ハードディスクドライブ）１４，ＡＳＩＣ(Application Specific IC)１５，書込回数カウンタ１６，ＮＶＲＡＭ(Non Volatile RAM)１７，スキャナエンジン１８，プリンタエンジン１９，操作表示部２０，ネットワークＩ／Ｆ（インタフェース）２１，ＦＡＸ通信部２２を備え、これらがシステムバス２３により接続されている。
【００１６】
これらのうちＣＰＵ１１は、画像処理装置１０を統括制御する制御手段である。そして、ＲＯＭ１２やＨＤＤ１４に記録された所要のプログラムを実行し、図１に示した各部を制御することにより、後述するカウンタの制御をはじめ、種々の機能を実現する。また、画像処理装置１０を、コピー、スキャン、プリント、ファクシミリ通信、ドキュメントボックス等の各種機能を備えたデジタル複合機（ＭＦＰ）として機能させることができる。
【００１７】
ＲＯＭ１２は、ＣＰＵ１１が実行するプログラムや書き換えの不要なデータ等を記憶する不揮発性記憶手段である。
ＳＤＲＡＭ１３は、ＣＰＵ１１がワークエリアとして使用したり、一時的に保持すべきデータを記憶させたりする揮発性記憶手段である。
【００１８】
ＨＤＤ１４は、ＣＰＵ１１が実行するプログラムや書き換えの必要なデータ等を記憶する書き換え可能な不揮発性記憶手段である。上述のスキャンやプリント等の機能で使用する圧縮された画像データはこのＨＤＤ１４に記憶する。
ＡＳＩＣ１５は、ＣＰＵ１１と共に画像処理装置１０の制御を行う制御手段である。
書込回数カウンタ１６は、ＮＶＲＡＭ１７への書き込み回数をカウントしてその値を記憶するカウンタである。
【００１９】
ＮＶＲＡＭ１７は、高速かつ安定的に書き換えが必要な比較的容量の小さいデータであって電源ＯＦＦ時にも保持する必要があるデータを記憶するための不揮発性記憶手段である。このＮＶＲＡＭ１７に記憶させるデータとしては、例えば後述する複数のカウンタのカウント値（書き込み回数カウンタ１６のカウント値を除く）が挙げられる。なおここでは、ＮＶＲＡＭ１７を書き換え回数に制限のあるメモリモジュールにより構成されるＥＥＰＲＯＭ(Electrically Erasable Programmable ROM)により構成しているため、ＮＶＲＡＭ１７が書き換え不能になる前に警告を行うために書込回数カウンタ１６を設けている。しかし、ＮＶＲＡＭ１７を構成するメモリモジュールはこれに限られず、書き換え回数に制限がないのであれば、書込回数カウンタ１６は不要である。
【００２０】
スキャナエンジン１８は、原稿の画像を読み取って画像データを得る画像読み取り手段である。
プリンタエンジン１９は、画像データに基づき紙等の記録シートに画像を形成する画像形成手段である。
操作表示部２０は、ＬＣＤ（液晶ディスプレイ）やタッチパネルをはじめとする各種の表示器やボタン等を備え、ユーザからの操作を受け付けると共に、ユーザに対して画像処理装置１０の動作状態や設定内容等の情報を表示する手段である。後述する複数のカウンタのカウント値を操作表示部２０に表示させることもできる。
【００２１】
ネットワークＩ／Ｆ２１は、画像処理装置１０がＬＡＮ（ローカルエリアネットワーク）等のネットワークを介してＰＣ（パーソナルコンピュータ）等の外部装置と通信するためのインタフェースである。通信の規格は、有線、無線を問わず任意のものを用いることができる。
ＦＡＸ通信部２２は、他のＦＡＸ装置とファクリミリ通信を行うための通信手段である。
以上のような画像処理装置１０における一つの特徴は、ＮＶＲＡＭ１７に記憶させるカウント値の管理に関する動作であるので、次にこの点について説明する。
【００２２】
図２は、ＮＶＲＡＭ１７におけるカウント値の記憶状態を示す図である。
図２に示すように、画像処理装置１０においては、ＮＶＲＡＭ１７に、カウント値記憶領域１７ａを設け、この領域に、画像処理装置１０に設ける複数のカウンタのカウント値をカウンタ毎に記憶させている。また、各カウント値は、カウンタＩＤにより識別できるようにする。ただし、複数のカウンタのカウント値を演算してカウント値を求めるカウンタもあるので、全てのカウンタについてカウント値を記憶させるとは限らない。
【００２３】
また、図３に、画像処理装置１０が記憶するカウンタの構成に関する情報の例を示す。
画像形成装置１０は、カウンタに関する情報として、図２に示したカウント値に加え、任意の記憶手段に、図３に示すカウンタ情報も記憶している。
このカウンタ情報は、画像処理装置１０に設ける各カウンタのカウンタＩＤ毎に、カウンタの属するグループおよびカウント値算出のための演算の情報を記憶している。
【００２４】
これらのうち演算の情報としては、図３の例では、カウント値記憶領域１７ａにカウント値を直接記憶させず他のカウンタのカウント値に基づく演算でカウント値を求めるカウンタについて、その演算に用いるカウンタのカウンタＩＤと、演算式とを記憶している。具体的には、カウンタＩＤが２２１１１であるカウンタ（出力面数トータル）について、カウンタＩＤが２２１１２であるカウンタ（出力面数コピー）とカウンタＩＤが２２１１１３であるカウンタ（出力面数ＦＡＸ）とカウンタＩＤが２２１１４であるカウンタ（出力面数プリンタ）のカウント値を全て加算して求めるべきことを記憶している。その他のカウンタについては、演算の情報は記憶しておらず、カウント値をカウント値記憶領域１７ａに記憶していること（「演算なし」）を示している。
【００２５】
また、グループは、カウント値が要求された場合に同時にカウント値を取り出して一時記憶させるカウンタの範囲を規定する情報である。このグループの情報は、カウント値が密接に関連するカウンタ同士が同じグループに属するように設定する。
例えば、図３に示す例では、カウンタＩＤが２２１１１であるカウンタと、そのカウント値を求めるために用いるカウンタＩＤが２２１１２〜２２１１４であるカウンタとを同じグループに所属させ、グループＩＤ「１」を設定することによりこれを示している。このように、あるカウンタのカウント値の算出に別のカウンタのカウント値を用いる場合、その「あるカウンタ」と「別のカウンタ」とは、カウント値が密接に関連すると考えられ、それらのカウンタを同じグループとする。その結果、１つのカウンタが複数のグループに属することになってもよい。
【００２６】
同じグループに属させるカウンタの範囲は、これに限られるものではない。それぞれ個別にカウント値をカウント値記憶領域１７ａに記憶させるものであっても、確実に同じ時点の値を参照したいような要求があるカウンタについては、カウント値が密接に関連すると扱うことが好ましい。
【００２７】
なお、カウンタＩＤが２２００２のカウンタ（ＦＡＸ送信枚数）のように、どのグループにも属しないカウンタがあってもよい。
以上のカウント値記憶情報は、基本的には画像処理装置１０のメーカーが定めるものであり、ユーザに編集させる必要はない。
【００２８】
次に、図４に、画像処理装置１０におけるカウンタの制御に関する機能の機能ブロック図を示す。
図４に示すように、画像処理装置１０は、カウントアップ依頼モジュール１０１、カウント値取得モジュール１０２、カウンタ管理モジュール１０３及びカウンタ情報記憶部１０４を備える。
【００２９】
これらのうちカウントアップ依頼モジュール１０１は、カウンタのカウントアップを要求するモジュールであり、例えばコピー、プリント、ファクシミリ通信等の機能を実現するためのアプリケーションの一部、あるいはこれらのアプリケーションが利用するライブラリの一部として提供される。コピーアプリケーション中に設けた、コピー枚数をカウントするための機能等である。
【００３０】
カウント値取得モジュール１０２は、カウンタのカウント値の参照を要求するモジュールである。カウント値の参照は、操作表示部２０へのカウント値の表示、外部ＰＣにおけるカウント値の表示、外部管理装置に画像処理装置１０を遠隔管理させるための外部管理装置へのカウント値の提供等を行う際に行う。従って、カウント値取得モジュール１０２は、例えばこれらの機能を提供するためのアプリケーションの一部、あるいはこれらのアプリケーションが利用するライブラリの一部として提供される。
カウントアップ依頼モジュール１０１及びカウント値取得モジュール１０２は、画像処理装置１０内部にいくつあってもよい。１つでももちろん構わない。
【００３１】
カウンタ管理モジュール１０３は、カウントアップ依頼モジュール１０１及びカウント値取得モジュール１０２がカウンタにアクセスするためのＡＰＩ(Application Program Interface)を提供する機能を備える。
カウンタ情報記憶部１０４は、図３に示したカウンタ情報を記憶する記憶手段である。
【００３２】
そして、カウンタ管理モジュール１０３は、カウントアップ依頼モジュール１０１及びカウント値取得モジュール１０２からの要求に基づき、カウンタ情報記憶部１０４が記憶するカウンタ情報に基づき上述したＮＶＲＡＭ１７のカウント値記憶領域１７ａに記憶されたカウント値を読み書き及び変更することにより、該要求に応じたカウント値の管理及び提供を行う。また、必要に応じてＳＤＲＡＭ１３に設けたカウント値一時記憶領域１３ａにカウント値を一時的に記憶させ、カウント値記憶領域１７ａに記憶されたカウント値に代えてカウント値一時記憶領域１３ａのカウント値を提供することも行う。このことにより、カウント値の参照と変更が混在して行われる環境下でカウント値に関連のある複数のカウンタのカウント値を複数回の参照要求に応じて提供する場合であっても、該複数のカウンタのカウント値として相互に矛盾のない値を提供できるようにしている。
【００３３】
ここで、図５に、カウント値一時記憶領域１３ａにおけるカウント値の記憶形式を示す。
カウンタ管理モジュール１０３は、カウント値記憶領域１７ａに記憶しているカウント値の参照を要求された場合に、その時点の、参照の要求に係るカウンタと同じグループに属する全てのカウンタのカウント値をセットにして、それらに識別ＩＤ及び時刻データを付して、図５に示すカウント値構成データ１１０としてカウント値一時記憶領域１３ａに記憶させる。
【００３４】
図５の例では、図３に示したカウンタ情報に基づき、カウンタＩＤが２２１１１〜２２１１４のいずれかのカウンタのカウント値の参照が要求された場合に記憶させるカウント値構成データの例を示した。
符号１１２〜１１５で示すのが、同じグループに属する４つのカウンタのカウント値である。符号１１１で示すのが識別ＩＤ、符号１１６で示すのがカウント値構成データ１１０の記憶時刻を示す時刻データ（年月日時分秒）である。
【００３５】
どの位置にどのカウンタのカウント値を記憶させるかは、カウンタ管理モジュール１０３が把握できていればよいので、ここではカウント値構成データにカウンタＩＤは含めていないが、カウント値毎にカウンタＩＤを記載するようにしてもよい。また、カウンタのグループが複数ある場合、どのグループのカウント値のセットであるかを識別するためのグループＩＤを記載するようにしてもよい。
【００３６】
次に、図６Ａ乃至図６Ｄに、カウンタ管理モジュール１０３がカウンタによるカウント及びカウント値の参照に関して受け付けるコマンドの例を示す。
カウントアップ依頼モジュール１０１、カウント値取得モジュール１０２は、カウンタ管理モジュール１０３の機能を実現するプロセスに対し図６Ａ乃至図６Ｄに示すコマンドを渡すことにより、カウンタ管理モジュール１０３に以下に説明する動作を実行させることができる。
【００３７】
図６Ａに示すのはカウントアップコマンドである。このコマンドは、カウンタ管理モジュール１０３に対し、カウンタＩＤ及びカウントアップ量を指定して、カウント値記憶領域１７ａに記憶しているそのカウンタＩＤを有するカウンタのカウント値を、そのカウントアップ量だけカウントアップすることを要求するためのものである。
【００３８】
図６Ｂに示すのはカウント値取得コマンドである。このコマンドは、カウント値記憶領域１７ａに記憶しているカウント値を取得する際に用いるコマンドであり、カウンタ管理モジュール１０３に対しカウント値の参照を要求する第１の参照要求に該当する。このコマンドについては、カウント値構成データを識別するＩＤの戻り値と、カウンタＩＤと、取得したカウント値の格納先を指定する。
【００３９】
このコマンドを受け取ったカウンタ管理モジュール１０３は、カウント値記憶領域１７ａに記憶している指定されたカウンタＩＤを有するカウンタのカウント値を格納先として指定されたアドレスに格納することにより、コマンド送信元が参照可能な形で出力する。また、そのカウンタがいずれかのグループに属する場合、カウント値記憶領域１７ａから必要なカウント値を読み出して図５を用いて説明したカウント値構成データ１１０を生成してカウント値一時記憶領域１３ａに記憶させると共に、戻り値としてそのカウント値構成データ１１０の識別ＩＤを返す（図７参照）。
なお、該当のカウンタがいずれのグループにも属しない場合、カウント値構成データ１１０の生成は不要であり、戻り値としてはnull値を返せばよい。
【００４０】
図６Ｃに示すのは一時記憶カウント値取得コマンドである。このコマンドは、カウント値一時記憶領域１３ａに記憶させたカウント値構成データ１１０に含まれるカウント値を取得するためのコマンドであり、以前にカウント値取得コマンドにより取得したカウント値と矛盾のないカウント値を取得したい場合に用いる。また、カウンタ管理モジュール１０３に対しカウント値の参照を要求する第２の参照要求に該当する。引数としては、カウンタＩＤ，取得したカウント値の格納先及びカウント値構成データの識別ＩＤを指定する。
【００４１】
このコマンドを受け取ったカウンタ管理モジュール１０３は、カウント値一時記憶領域１３ａに記憶させたカウント値構成データ１１０のうち、指定された識別ＩＤを有するカウント値構成データ１１０から、指定されたカウンタＩＤのカウンタのカウント値を取得し、格納先として指定されたアドレスに格納することにより、コマンド送信元が参照可能な形で出力する（図８参照）。
【００４２】
図６Ｄに示すのは一時記憶カウント値グループ取得コマンドである。このコマンドは、一時記憶カウント値取得コマンドと似ているが、カウント値構成データ１１０に含まれる全てのカウント値の集合を取得するためのコマンドである。このコマンドも第２の参照要求に該当する。引数としては、取得したカウント値の格納先及びカウント値構成データの識別ＩＤを指定する。
【００４３】
このコマンドを受け取ったカウンタ管理モジュール１０３は、カウント値一時記憶領域１３ａに記憶させたカウント値構成データ１１０のうち、指定された識別ＩＤを有するカウント値構成データ１１０から、そこに含まれる全てのカウンタのカウント値を取得し、格納先として指定されたアドレスにデータの集合として格納することにより、コマンド送信元が参照可能な形で出力する。
【００４４】
次に、カウンタ管理モジュールがコマンドを検出した場合に実行する処理についてより詳細に説明する。なお、以下に説明する処理は、ＣＰＵ１１が所要のプログラムを実行することによりカウンタ管理モジュール１０３の機能を実現するための処理の一環として行われるものであるが、説明を簡単にするためにカウンタ管理モジュール１０３が処理を実行するものとして説明する。
【００４５】
まず図９に、カウント値取得コマンドを検出した場合の処理のフローチャートを示す。
カウンタ管理モジュール１０３は、カウント値取得コマンドtId = GetCount (ID, &val)を検出すると、図９のフローチャートに示す処理を開始する。
そしてまずステップＳ１１で、カウンタ情報を参照し、引数として指定されたカウンタＩＤに係るカウンタがいずれかのグループに属するか否か判断する。そして、いずれかのグループ属する場合、カウント値構成データ１１０の生成に係るステップＳ１２以下の処理に進む。
【００４６】
次のステップＳ１２では、ステップＳ１１でカウンタが属すると判断したグループのカウンタ全てについて、カウントアップ処理を一時停止する。すなわち、それらのカウンタに係るカウントアップコマンドを受信した場合でもそのコマンドに応じたカウントアップ動作を保留するようにする。
【００４７】
その後、ステップＳ１３，Ｓ１７及びＳ１８で、カウンタが属すると判断したグループのカウンタを１つずつ順次処理対象としつつ、ステップＳ１４乃至Ｓ１６の処理を実行する。すなわち、まずステップＳ１４でカウンタ情報を参照して処理対象のカウンタに演算が定義されているか否か判断する。
定義されている場合、ステップＳ１５でＮＶＲＡＭ１７のカウント値記憶領域１７ａから必要なカウント値を読み出し、演算して処理対象のカウンタのカウント値を求める。定義されていない場合、ステップＳ１６でＮＶＲＡＭ１７のカウント値記憶領域１７ａから処理対象のカウント値を読み出す。
【００４８】
全てのカウンタについてこれらの処理を行うと、全てのカウンタについてカウント値が揃うため、ステップＳ１７からステップＳ１９に進む。そして、一意な識別ＩＤ、グループの全てのカウンタのカウント値、および現在時刻の情報を含むカウント値構成データ１１０を生成し、ＳＤＲＡＭ１３のカウント値一時記憶領域１３ａに書き込む。ここまでがカウント値構成データ１１０の生成に係る処理である。
【００４９】
その後、ステップＳ２０ではカウント値取得コマンドで指定されたカウンタＩＤのカウンタについてステップＳ１５またはＳ１６で取得したカウント値を、カウント値取得コマンドで指定された格納先に格納する。また、ステップＳ２１ではステップＳ１９で定めたカウント値構成データの識別ＩＤを、カウント値取得コマンドの戻り値としてコマンド送信元に返す。
以上でカウント値取得コマンドに応じたカウント値の参照が完了するので、ステップＳ２２でカウントアップ処理の一時停止を解除して処理を終了する。
【００５０】
一方、ステップＳ１１で指定されたカウンタＩＤに係るカウンタがグループに属しない場合、単に指定されたカウンタのカウント値を返せばよいので、処理はステップＳ２３に進む。
そして、ステップＳ２３で、指定されたカウンタＩＤに係るカウンタのカウント値をＮＶＲＡＭ１７のカウント値記憶領域１７ａから読み出して、カウント値取得コマンドで指定された格納先に格納する。さらに、ステップＳ２４で、カウント値取得コマンドの戻り値として格納完了を示す値（カウント値構成データを生成しなかったことを示すnull等の値でもよい）をコマンド送信元に返して、処理を終了する。
【００５１】
以上の処理により、カウンタ管理モジュール１０３は、カウント値がほかのカウンタと密接に関連するようなカウンタについて値の参照が要求された場合に、要求に応じてそのカウンタの値を出力すると共に、そのカウンタの値を、値が密接に関連する他のカウンタのカウント値とセットにして識別ＩＤを付して、後で参照可能なように保存することができる。
【００５２】
なお、カウント値取得コマンドの送信元モジュールは、カウンタ管理モジュール１０３から戻り値を得た後、コマンド送信時に指定した格納先を参照することにより、要求したカウント値を取得することができる。従って、図９に示した処理により、カウンタ管理モジュール１０３は、カウント値取得コマンドの送信元モジュールに対し要求に係るカウント値を供給することができると言える。
また、図示は省略したが、ステップＳ１１で指定されたカウンタＩＤに係るカウンタが複数のグループに属すると判断した場合は、ステップＳ１２からＳ１９までの処理を、その各グループについて実行すればよい。
【００５３】
次に図１０に、一時記憶カウント値取得コマンドを検出した場合の処理のフローチャートを示す。
カウンタ管理モジュール１０３は、一時記憶カウント値取得コマンドGetCountAtId(ID, &val, tId)を検出すると、図１０のフローチャートに示す処理を開始する。
そしてまず、ステップＳ３１で、一時記憶カウント値取得コマンドにおいて指定されたカウント値構成データ１１０の識別ＩＤをキーにカウント値一時記憶領域１３ａを検索する。
【００５４】
そして、ステップＳ３２で該当の識別ＩＤを持つカウント値構成データが発見されたか否か判断する。発見された場合、ステップＳ３３でそのカウント値構成データから一時記憶カウント値取得コマンドにおいて指定されたカウントＩＤのカウンタのカウント値を取得して、一時記憶カウント値取得コマンドにおいて指定された格納先に格納する。その後、ステップＳ３４でコマンド送信元に対して処理完了の応答を返して処理を終了する。
【００５５】
ステップＳ３２で発見されなかった場合、何もせずに処理完了の応答を返して処理を終了する。
以上の処理により、カウンタ管理モジュール１０３は、他のモジュールからの識別ＩＤ及びカウンタＩＤを指定した要求に応じて、図９の処理で保存しておいたカウント値を出力することができる。
【００５６】
なお、一時記憶カウント値取得コマンドの送信元モジュールは、カウンタ管理モジュール１０３から処理完了の応答を得た後、コマンド送信時に指定した格納先を参照することにより、要求したカウント値を取得することができる。従って、図１０に示した処理により、カウンタ管理モジュール１０３は、カウント値取得コマンドの送信元モジュールに対し要求に係るカウント値を供給することができると言える。
【００５７】
また、一時記憶カウント値グループ取得コマンドに応じた処理は、ステップＳ３３で格納するのが発見したカウント値構成データに含まれる全てのカウント値の集合である点が図１０の処理と異なるのみであるので、詳細な説明は省略する。
【００５８】
また、カウントアップコマンドを検出した場合にカウンタ管理モジュール１０３が実行する処理は、フローチャートの図示は省略するが、図１８のステップＳ１２２乃至Ｓ１２４に示す通りである。すなわち、カウント値記憶領域１７ａから、カウントアップコマンドで指定されたカウンタＩＤのカウンタのカウント値を読み出し（Ｓ１２２）、そのカウンタの値をカウントアップ要求で指定されたカウントアップ量だけインクリメントして（Ｓ１２３）、インクリメント後のカウント値をカウント値記憶領域１７ａに書き戻す（Ｓ１２４）。
【００５９】
以上の処理により、カウンタ管理モジュール１０３は他のモジュールからの要求に応じてカウンタによるカウントを行うことができる。なお、カウントアップ処理の停止中にカウントアップコマンドを受信した場合、その受信に応じた処理は、停止の解除後に行えばよい。
【００６０】
次に、以上説明したコマンドにより、カウントアップ依頼モジュール１０１がカウンタ管理モジュール１０３にカウンタのカウントアップを要求しつつ、カウント値取得モジュール１０２がカウンタ管理モジュール１０３からカウント値を取得する際の動作例について説明する。
【００６１】
まず図１１に、カウントアップ依頼モジュール１０１及びカウント値管理モジュール１０２ａ，１０２ｂがカウンタ管理モジュール１０３にコマンドを渡す手順例を示す。なお、図１１においては、カウント値管理モジュール１０２が２つ登場するので、これらを区別するため１０２ａ，１０２ｂの符号を用いた。これらを総称する場合には引き続き１０２の符号を用いる。
【００６２】
図１１の例では、まずカウント値取得モジュール１０２ａが出力面数トータル(ID=22111)のカウント値を要求するカウント値取得コマンドをカウンタ管理モジュール１０３に渡す（Ｓ５１）。
すると、カウンタ管理モジュール１０３は、図１２に示すように、この時点での出力面数コピー、出力面数ＦＡＸ、出力面数プリンタのカウント値に基づいて出力面数トータルのカウント値を算出し、カウント値取得コマンドで指定されたアドレス&valA1に格納する。また、図１３に示すようにカウント値構成データを生成し、ＳＤＲＡＭ１３のカウント値一時記憶領域１３ａに必要なサイズの領域を確保して記憶させる。また、このカウント値構成データの識別ＩＤ(0001234)は、変数tId1の値としてカウント値取得モジュール１０２ａに返す。カウント値取得モジュール１０２ａは、その後アドレス&valA1を参照することにより、出力面数トータルのカウント値を取得することができる。
【００６３】
次に、カウントアップ依頼モジュール１０１が、出力面数コピー(ID=22112)のカウント値の１カウントアップを要求するカウントアップコマンドをカウンタ管理モジュール１０３に渡す（Ｓ５２）。すると、カウンタ管理モジュール１０３は、出力面数コピーのカウント値を１増加させる。
【００６４】
次に、カウント値取得モジュール１０２ａが、ステップＳ５１のカウント値取得コマンドに応じて返された識別ＩＤtId1を指定して、出力面数コピー(ID=22112)のカウント値を要求する一時記憶カウント値取得コマンドをカウンタ管理モジュール１０３に渡す（Ｓ５３）。
すると、カウンタ管理モジュール１０３は、図１３に示したカウント値構成データから出力面数コピーのカウント値を読み出して、その値を一時記憶カウント値取得コマンドで指定されたアドレス&valA2に格納し、処理完了の応答を返す。カウント値取得モジュール１０２ａは、その後アドレス&valA2を参照することにより、出力面数コピーのカウント値を取得することができる。
【００６５】
なお、ステップＳ５３の時点では、カウント値記憶領域１７ａにおける出力面数コピーのカウント値はステップＳ５２の要求に応じてカウントアップされており、カウント値取得モジュール１０２ａがステップＳ５１の要求により取得した出力面数トータルのカウント値の算出に用いた値とは異なる値となっている。すなわち、以前に取得した出力面数トータルのカウント値と対応しない値となっている（図１４参照）。
【００６６】
しかし、カウント値一時記憶領域１３ａに記憶させたカウント値構成データはカウントアップの影響を受けないため、カウント値取得モジュール１０２ａは、カウントアップの後で一時記憶カウント値取得コマンドを渡しても、ステップＳ５１の要求により取得した出力面数トータルのカウント値の算出に用いた出力面数コピーのカウント値を取得することができる。
【００６７】
また、次にカウント値取得モジュール１０２ｂが出力面数トータル(ID=22111)のカウント値を要求するカウント値取得コマンドをカウンタ管理モジュール１０３に渡す（Ｓ５４）。
すると、カウンタ管理モジュール１０３は、図１４に示すように、この時点での出力面数コピー、出力面数ＦＡＸ、出力面数プリンタのカウント値に基づいて出力面数トータルのカウント値を算出し、アドレス&valB1に格納する。出力面数コピーのカウント値がカウントアップされているため、出力面数トータルのカウント値は図１２の例よりは１大きい値となる。
【００６８】
また、カウンタ管理モジュール１０３は図１５に示すようにカウント値構成データを生成し、ＳＤＲＡＭ１３のカウント値一時記憶領域１３ａに必要なサイズの領域を確保して、ステップＳ５１で生成したカウント値構成データとは別に記憶させる。また、このカウント値構成データの識別ＩＤ(0001235)は、ステップＳ５１で生成したカウント値構成データの識別ＩＤとは異なる値であり、変数tId2の値としてカウント値取得モジュール１０２ｂに返す。カウント値取得モジュール１０２ｂは、その後アドレス&valB1を参照することにより、出力面数トータルのカウント値を取得することができる。
【００６９】
次に、カウント値取得モジュール１０２ｂが、ステップＳ５４のカウント値取得コマンドに応じて返された識別ＩＤtId2を指定して、出力面数コピー(ID=22112)のカウント値を要求する一時記憶カウント値取得コマンドをカウンタ管理モジュール１０３に渡す（Ｓ５３）。
すると、カウンタ管理モジュール１０３は、図１５に示したカウント値構成データのうち識別ＩＤがtId2=0001235であるカウント値構成データから出力面数コピーのカウント値を読み出して、その値をアドレス&valB2に格納し、処理完了の応答を返す。カウント値取得モジュール１０２ｂは、その後アドレス&valB2を参照することにより、出力面数コピーのカウント値を取得することができる。
【００７０】
この場合も、カウント値取得モジュール１０２ｂは、ステップＳ５４で取得した出力面数トータルのカウント値の算出に用いた出力面数コピーのカウント値を問題なく取得することができる。
従って、カウント値取得モジュール１０２は、初めにカウント値を取得しようとする場合にカウンタＩＤを指定してカウント値取得コマンドをカウンタ管理モジュール１０３に渡し、その後そのカウント値と対応する（同じ時点の）別のカウンタのカウント値が必要である場合に、値が必要なカウンタのカウンタＩＤと、カウント値取得コマンドに応じて返された識別ＩＤとを指定して一時記憶カウント値取得コマンドをカウンタ管理モジュール１０３に渡すことにより、２つのコマンドの間におけるカウントアップの有無に関わらず、初めに取得したカウント値と対応する別のカウンタのカウント値を取得することができる。
【００７１】
なお、このような取得が可能なのは、初めのカウンタと後のカウンタとが同じグループに属する場合のみであるが、対応する値の取得が必要となるようなカウンタは全て同じグループに入れておけば、特に問題ない。
また、以上の機能を実現するに当たり、カウント値構成データは揮発性の記憶手段であるＳＤＲＡＭ１３に記憶させているため、頻繁にカウント値構成データを保存したとしても、書込回数に制限のある不揮発性記憶手段であるＮＶＲＡＭ１７の書込回数を徒に消耗することがない。カウント値は電源ＯＦＦ時でも保持する必要があるので不揮発性記憶手段に記憶させる必要があるが、カウント値構成データは電源ＯＦＦ時には消失して問題ないことを考えれば、カウント値構成データは揮発性記憶手段に記憶させることが好ましい。
【００７２】
また、一般に、揮発性記憶手段は安価であるため、カウント値構成データを多数記憶させて容量を多少多く使っても問題は少ない。ただ、容量に制限がある場合には、１つのグループに含めるカウンタの数を少なくしたり、記憶させて一定時間経ったカウント値構成データは随時削除する等の対応を行うことが好ましい。
【００７３】
次に、より具体的な動作例及び比較例を用いて、以上説明してきた実施形態の効果についてさらに説明する。
ここでは、操作表示部２０あるいは外部ＰＣのブラウザ等に、図１６に示すような画面を表示させる動作を例として採り上げる。この画面は、出力枚数トータル、出力枚数コピー、出力枚数ＦＡＸ及び出力枚数プリンタの４つのカウンタのカウント値を表示する画面である。従って、この画面を表示させる場合、これらの４つのカウント値を取得する必要がある。
【００７４】
しかし、この画面の表示専用に４つのカウント値を一度に取得するコマンドをカウンタ管理モジュール１０３のＡＰＩに用意することは現実的ではない。そこで、画面の表示を行うアプリケーションが備えるカウント値取得モジュールが、カウンタ管理モジュールに対して、カウンタ１つずつについてカウント値の供給を要求し、カウント値を取得することになる。
【００７５】
まず図１７及び図１８に、上述の実施形態を適用した場合のカウント値の取得手順の例を示す。
この場合、まずカウント値取得モジュール１０２が、カウンタ管理モジュール１０３に対して、４つのカウンタのいずれかのカウント値の取得を要求するカウント値取得コマンドを送信する。ここでは、出力面数トータルのカウント値を要求するものとした（Ｓ１０１）。
【００７６】
これを受けたカウンタ管理モジュール１０３は、出力面数トータルのカウント値を算出するため、出力面数コピー、出力面数ＦＡＸ及び出力面数プリンタの値をそれぞれＮＶＲＡＭ１７のカウント値記憶領域１７ａから読み出し（Ｓ１０２〜Ｓ１０４）、それらを合計して得た出力枚数トータルのカウント値を保持する（Ｓ１０５）。
【００７７】
また、カウント値構成データを生成するため、出力枚数トータルと同じグループに属する出力面数コピー、出力面数ＦＡＸ及び出力面数プリンタの値をそれぞれＮＶＲＡＭ１７のカウント値記憶領域１７ａから読み出し、これらも保持する（Ｓ１０６〜Ｓ１１１）。これらのカウント値としては、ステップＳ１０２〜Ｓ１０４で読み出したものを保持しておいてもよい。しかし、単に出力枚数トータルの値を取得するのみであれば、他のカウント値を保持しておく必要はないので、プログラムモジュールの単純化のため、ここでは、出力枚数トータルの値を取得するルーチンに演算に用いた他のカウンタのカウント値を保持するルーチンは設けず、別の用途でそれらの「他のカウンタ」のカウント値が必要な場合には再度読み出すようにしている。
【００７８】
カウンタ管理モジュール１０３は、必要なカウント値が揃うと、識別ＩＤを生成すると共に現在時刻情報を取得し（Ｓ１１２）、これらも含めたカウント値構成データを生成して、ＳＤＲＡＭ１３のカウント値一時記憶領域１３ａに記録する（Ｓ１１３）。
そして、カウント値構成データの識別ＩＤ及び、要求された出力面数トータルのカウント値を、コマンド送信元のカウント値取得モジュール１０２に供給する（Ｓ１１４）。カウント値の供給は、上述のように、指定されたアドレスに値を格納することによって行う。
【００７９】
次に、図１８のステップＳ１２１〜Ｓ１２５の処理は後述することにして、カウント値取得モジュール１０２は、先に要求した出力枚数トータル以外の３つのカウンタのカウント値を取得すべく、各カウンタについて一時記憶カウント値取得コマンドをカウンタ管理モジュール１０３に送信する（Ｓ１３１，Ｓ１４１，Ｓ１５１）。
カウンタ管理モジュール１０３は、それらの要求に応じて、カウント値一時記憶領域１３ａに記憶させたカウント値構成データから、指定されたカウンタのカウント値を読み出して（Ｓ１３２，Ｓ１４２，Ｓ１５２）、コマンド送信元に供給する（Ｓ１３３，Ｓ１４３，Ｓ１５３）。
【００８０】
ここで、以上の処理の途中でＳ１２１のようにカウントアップ依頼モジュール１０１からカウンタ管理モジュール１０３へカウントアップコマンド送信され、カウンタ管理モジュール１０３がカウンタのカウントアップを行った（Ｓ１２２〜Ｓ１２５）場合でも、カウント値一時記憶領域１３ａに記憶させたカウント値構成データには影響がない。
【００８１】
従って、カウントアップ後にカウント値を要求したとしても、カウントアップ前に出力面数トータルのカウント値の算出に用いた各カウンタのカウント値を取得することができる。このため、図１６に示した画面の表示において、４つのカウント値を別々のコマンドにより個別に取得する必要がある場合であっても、出力面数コピー、出力面数ＦＡＸ及び出力面数プリンタのカウント値の合計が、出力面数トータルの値と合わなくなるようなことは起こらない。
【００８２】
次に、図１９及び図２０に、比較例におけるカウント値取得手順の例を示す。図１９は、取得中にカウントアップが起こらない場合の例、図２０は、取得中にカウントアップが起こる場合の例である。また、上述した実施形態と対応する箇所には同じ符号を用いた。
この比較例は、カウント値一時記憶領域１３ａは設けておらず、カウント値構成データの生成及び記憶を行わない点が、上述した実施形態と異なるものである。なお、このため、カウンタのグループ分けも不要である。
【００８３】
この比較例の場合も、まずカウント値取得モジュール１０２が、カウンタ管理モジュール１０３に対して、４つのカウンタのいずれかのカウント値の取得を要求するカウント値取得コマンドを送信する。ここでも、出力面数トータルのカウント値を要求するものとした（Ｓ２０１）。なお、コマンドの記載内容は、カウント値構成データの識別ＩＤの戻り値は不要であるが、その他の点では図６Ｂに示したものと同じでよい。
【００８４】
これを受けたカウンタ管理モジュール１０３は、出力面数トータルのカウント値を算出するため、出力面数コピー、出力面数ＦＡＸ及び出力面数プリンタの値をそれぞれＮＶＲＡＭ１７のカウント値記憶領域１７ａから読み出し（Ｓ２０２〜Ｓ２０４）、それらを合計して出力枚数トータルのカウント値を得る（Ｓ２０５）。そして、そのカウント値を、コマンド送信元のカウント値取得モジュール１０２に供給する（Ｓ２０６）。
カウント値構成データは生成しないので、要求されたカウント値以外のカウント値を別途取得する必要はない。
【００８５】
次に、カウント値取得モジュール１０２は、先に要求した出力枚数トータル以外の３つのカウンタのカウント値を取得すべく、同じように各カウンタについてカウント値取得コマンドをカウンタ管理モジュール１０３に送信する（Ｓ２１１，Ｓ２２１，Ｓ２３１）。
カウンタ管理モジュール１０３は、それらの要求に応じて、カウント値記憶領域１７ａから、指定されたカウンタのカウント値を読み出して（Ｓ２１２，Ｓ２２２，Ｓ２３２）、コマンド送信元に供給する（Ｓ２１３，Ｓ２２３，Ｓ２３３）。
【００８６】
このように、４回のカウント値取得コマンドの間にいずれのカウンタにもカウントアップがない場合には、カウント値取得モジュール１０２は、面数トータルのカウント値の算出に用いた各カウンタのカウント値を取得することができる。従って、出力面数コピー、出力面数ＦＡＸ及び出力面数プリンタのカウント値の合計が、出力面数トータルの値と合わなくなるようなことは起こらない。
しかし、図２０のようにカウント値取得コマンドの間にカウントアップがあると、不具合が生じる場合がある。
【００８７】
図２０の例でも、ステップＳ２０１乃至Ｓ２０６は図１９の例と同じである。しかし、その後カウント値取得モジュール１０２が出力面数コピーについてカウント値取得コマンドを送信する前に、カウントアップ依頼モジュール１０１が出力面数コピーについてカウントアップコマンドをカウンタ管理モジュール１０３に送信する（Ｓ２４１）。
この場合、カウンタ管理モジュール１０３は、カウントアップコマンドに応じて、カウント値記憶領域１７ａに記憶させてある出力面数コピーのカウント値をカウントアップする（Ｓ２４２〜Ｓ２４５）。
【００８８】
そして、その後でカウント値取得モジュール１０２が出力面数コピーについてカウント値取得コマンドを送信すると（Ｓ２５１）、カウンタ管理モジュール１０３はその時点の出力面数コピーのカウント値をカウント値記憶領域１７ａから読み出してコマンド送信元へ供給する（Ｓ２５２，Ｓ２５３）。従って、カウント値取得モジュール１０２が取得するカウント値は、カウントアップ後の値となる。
なお、出力面数ＦＡＸ及び出力面数プリンタのカウント値取得については、図示を省略したが図１９の例と同様に行うことができる。
【００８９】
以上の手順により取得された各カウント値を用いて図１６に示すような画面の表示を行おうとすると、図２１に示すように、出力面数コピー、出力面数ＦＡＸ及び出力面数プリンタのカウント値の合計が、出力面数トータルの値と合わなくなってしまう。出力面数コピーのカウント値として、出力面数トータルのカウント値の算出に用いた値と異なる、カウントアップ後の値を表示してしまうことになるためである。
一方、上述した実施形態の構成を採用すれば、上述したように、このような不具合を防止することができる。
【００９０】
なお、不具合を防止するだけであれば、例えば、出力枚数トータルのカウント値を要求された段階で、その算出に用いたカウンタのカウントアップを停止させてしまうことも考えられる。しかし、出力枚数トータルの値が要求された場合でも、その後必ず算出に用いたカウンタのカウント値が要求されるとは限らず、いつまでカウントアップを停止させておけばよいかわからない。
【００９１】
また、出力枚数トータルのカウント値を要求された場合に、その算出に用いたカウンタのカウント値も一緒に要求元に供給してしまうことも考えられる。しかし、カウント値取得モジュールの側から見て、例えば出力枚数コピーのカウント値を要求した場合には１つのカウント値のみ返されるのに、出力枚数トータルのカウント値を要求した場合には４つのカウント値が返される、というように、指定するカウンタによって返されるデータの数が異なると、返されるデータの処理が複雑になってしまう。このため、ＡＰＩが提供する機能の設計思想として、このような動作は好ましくない。
以上を考慮すると、図１乃至図１８を用いて説明してきた本願実施形態の構成が、図１９及び図２０を用いて説明した比較例の問題を解決するためには好適であると考えられる。
【００９２】
以上で実施形態の説明を終了するが、この発明において、各部の具体的な構成や処理の内容、コマンドやデータの形式等は、実施形態で説明したものに限るものではない。
例えば、図３ではグループに属するカウンタとグループに属しないカウンタがある例について説明したが、全てのカウンタが同じグループに属するようにしてもよい。この場合には、グループに関する情報を記憶しておく必要はない。逆に、グループが複数あってもよい。
【００９３】
また、カウント値構成情報の識別ＩＤについて、時刻情報が複数のカウント値構成情報で同じにならないことが期待できる場合には、時刻情報を識別ＩＤとして用いてもよい。
また、上述の実施形態では、この発明を画像処理装置に適用した例について説明した。しかし、この発明は、複数のカウンタを備える装置であれば、ネットワーク家電，自動販売機，医療機器，電源装置，空調システム，ガス・水道・電気等の計量システム，自動車，航空機あるいは汎用コンピュータ等の任意の電子装置に適用可能である。
【００９４】
また、この発明のプログラムは、コンピュータに各種デバイスを制御させ、上述した画像処理装置１０、特にカウンタ管理モジュール１０３の機能を実現させるためのプログラムとして構成することができる。このようなプログラムは、予め画像処理装置等のメモリに記憶させておく他、記録媒体であるＣＤ−ＲＯＭあるいはフレキシブルディスク，ＳＲＡＭ，ＥＥＰＲＯＭ，メモリカード等の不揮発性記録媒体（メモリ）に記録したり、ネットワークを介してダウンロードできるようにしたりして提供することもできる。そして、そのプログラムをインストールしてＣＰＵに実行させるか、ＣＰＵにメモリあるいはダウンロードサーバからこのプログラムを取得させて実行させることにより、上述した各機能を実現させることができる。
また、以上説明してきた実施形態の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。
【符号の説明】
【００９５】
１０：画像処理装置      １１：ＣＰＵ      １２：ＲＯＭ      １３：ＳＤＲＡＭ
１３ａ：カウント値一時記憶領域      １４：ＨＤＤ      １５：ＡＳＩＣ
１６：書込回数カウンタ      １７：ＮＶＲＡＭ      １７ａ：カウント値記憶領域
１８：スキャナエンジン      １９：プリンタエンジン      ２０：操作表示部
２１：ネットワークＩ／Ｆ      ２２：ＦＡＸ通信部      ２３：システムバス
１０１：カウントアップ依頼モジュール      １０２：カウント値取得モジュール
１０３：カウンタ管理モジュール      １０４：カウンタ情報記憶部
１１０：カウント値構成データ
【先行技術文献】
【特許文献】
【００９６】
【特許文献１】特開２００５−２２９５９２号公報
【特許文献２】特開２００５−２２２１６１号公報
【図１】
2013065944.tif 000003
【図２】
2013065944.tif 000004
【図３】
2013065944.tif 000005
【図４】
2013065944.tif 000006
【図５】
2013065944.tif 000007
【図６Ａ】
2013065944.tif 000008
【図６Ｂ】
2013065944.tif 000009
【図６Ｃ】
2013065944.tif 000010
【図６Ｄ】
2013065944.tif 000011
【図７】
2013065944.tif 000012
【図８】
2013065944.tif 000013
【図９】
2013065944.tif 000014
【図１０】
2013065944.tif 000015
【図１１】
2013065944.tif 000016
【図１２】
2013065944.tif 000017
【図１３】
2013065944.tif 000018
【図１４】
2013065944.tif 000019
【図１５】
2013065944.tif 000020
【図１６】
2013065944.tif 000021
【図１７】
2013065944.tif 000022
【図１８】
2013065944.tif 000023
【図１９】
2013065944.tif 000024
【図２０】
2013065944.tif 000025
【図２１】
2013065944.tif 000026