(57)【要約】【課題】動作処理の予約実行に際し現在時刻の補正に伴う不具合を解消する。【解決手段】動作実行手段（ＣＰＵ１０１）は、現在時刻補正手段により現在時刻が補正された場合に、動作が先行動作と関連づけられた動作であるか判定し、関連づけられた動作である場合に、前記先行動作が直ちに実行される動作であるか判定し、直ちに実行される動作である場合に、動作の実行時刻を、補正後の現在時刻に、前記実行時刻から前記先行動作の実行時刻を引いた時間を、足した値に、補正する。【選択図】図４
2012117840.tif 000002
【特許請求の範囲】
【請求項１】
実行が予約された動作を、実行時刻と、当該動作に先行して実行されるべき先行動作の情報と、関連づけて登録する登録手段と、
前記動作及び前記先行動作を実行するプログラムが保持する現在時刻を、基準時刻に基づいて補正する現在時刻補正手段と、
前記現在時刻補正手段により前記現在時刻が補正された場合に、補正後の前記現在時刻が予約された実行時刻を過ぎた動作について、直ちに実行する動作実行手段と、を有し、
前記動作実行手段は、
前記現在時刻補正手段により前記現在時刻が補正された場合に、前記動作が前記先行動作と関連づけられた動作であるか判定し、関連づけられた動作である場合に、前記先行動作が直ちに実行される動作であるか判定し、直ちに実行される動作である場合に、前記実行時刻を、
補正後の現在時刻に、前記実行時刻から前記先行動作の実行時刻を引いた時間を、足した値に、
補正することを特徴とする電子機器。
【請求項２】
前記登録手段は、前記先行動作について、該先行動作に関連づけて登録された前記動作を後続動作として、関連づけて登録することを特徴とする請求項１記載の電子機器。
【請求項３】
前記登録手段は、前記動作の各々について、次に実行されるべき動作の情報をと、関連づけて登録してリンクリストを構成することを特徴とする請求項１又は２記載の電子機器。
【請求項４】
前記動作実行手段は、補正後の前記現在時刻が予約された実行時刻を過ぎた動作が、繰り返し実行する動作である場合に、前記繰り返しの１周期分を前記実行時刻に加算して、前記実行時刻を補正することを特徴とする請求項１から３のいずれか１項記載の電子機器。
【請求項５】
前記動作実行手段は、前記現在時刻補正手段により前記現在時刻が補正された場合に、補正後の前記現在時刻が予約された実行時刻を過ぎた動作について、実行時刻が過ぎたことの判定を終えた時点で、直ちに実行することを特徴とする請求項１から４のいずれか１項記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器に関し、特に、電子機器が内部に保持する現在時刻を外部の基準時刻に合わせて補正した際に生じる不具合を解消する技術に関する。
【背景技術】
【０００２】
携帯端末装置や画像形成装置など、一般に電子機器では、内部に現在時刻を保持している。機器の制御ソフトウェアは、この情報を利用して、所定の時刻、時間経過後に必用な動作を行ったり、ユーザへの時刻通知を行っている。
【０００３】
また、指定時刻に特定の動作を行うために、ソフトウェアが指定時刻と動作を行うためのプログラムの先頭番地をメモリの所定の位置に登録しておき、オペレーティングシステム（以下、「ＯＳ」と呼ぶ）などのシステムソフトウェアが現在時刻を監視して、登録された時刻になったら登録されたプログラムを実行するという技術が、従来知られている。
【０００４】
現在時刻を知るために、このような装置では、電源ＯＮ中は、中央演算装置（以下、「ＣＰＵ」と呼ぶ）などのクロックをカウントして、電源ＯＮ時からの経過時間を計測していることが多い。また、電源ＯＮ時にＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）やネットワークのＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）などを使って、電源ＯＮ時の時刻を取得して基準時刻として保持しておき、電源ＯＮ時からの経過時間と足して、現在時刻として使用している。
【０００５】
このとき、クロックの周波数には誤差があり、単純にカウントしているのみでは徐々に誤差が大きくなっていくため、適時ＲＴＣやＮＴＰから時刻を取得し直して現在時刻を補正する必要があることが、従来知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところが、現在時刻を補正することによって、矛盾が生じて不具合につながるケースがある。ある先行動作のあと所定の時間をおいた後で実行するように実行予約されている動作（以下、「後続動作」と呼ぶことがある）については、実行前に現在時刻の補正が生じ、先行動作が直ちに実行されてしまったりすると、所定の時間間隔を置けなくなってしまう動作がある。
【０００７】
極端な場合では、本来は先行動作との間に所定の間隔を置いて実行すべき動作であっても、現在時刻の補正に伴い、実行時刻が経過しているすべての動作を一気に行ってしまう。これは、補正後の現在時刻が、一度に多くの動作の実行時刻を越えてしまうような場合で起きる。
【０００８】
そこで本発明は、上記実情に鑑みて、動作処理の予約実行に際し現在時刻の補正に伴う不具合を解消することが可能な電子機器を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明は、第１の態様として、実行が予約された動作を、実行時刻と、当該動作に先行して実行されるべき先行動作の情報と、関連づけて登録する登録手段と、前記動作及び前記先行動作を実行するプログラムが保持する現在時刻を、基準時刻に基づいて補正する現在時刻補正手段と、前記現在時刻補正手段により前記現在時刻が補正された場合に、補正後の前記現在時刻が予約された実行時刻を過ぎた動作について、直ちに実行する動作実行手段と、を有し、前記動作実行手段は、前記現在時刻補正手段により前記現在時刻が補正された場合に、前記動作が前記先行動作と関連づけられた動作であるか判定し、関連づけられた動作である場合に、前記先行動作が直ちに実行される動作であるか判定し、直ちに実行される動作である場合に、前記実行時刻を、補正後の現在時刻に、前記実行時刻から前記先行動作の実行時刻を引いた時間を、足した値に、補正することを特徴とする電子機器を提供するものである。
【発明の効果】
【００１０】
本発明によれば、動作処理の予約実行に際し現在時刻の補正に伴う不具合を解消することが可能な電子機器を提供することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る電子機器のハードウェア構成例を示すブロック図である。
【図２】本実施形態の登録されている動作のデータ構造例を示す図である。
【図３】図２に示した各動作の先行・後続動作関係を説明するための図である。
【図４】本実施形態において、現在時刻の補正があった場合の動作の取り扱いについてまとめた表を示す図である。
【図５】本実施形態における全体の処理の流れを示すフローチャートである。
【図６】図５のステップＳ１０３の詳細な処理の流れを示すフローチャートである。
【図７】図５のステップＳ１０４の詳細な処理の流れを示すフローチャートである。
【図８】図５のステップＳ１０５の詳細な処理の流れを示すフローチャートである。
【図９】本実施形態の変形実施例を説明するための図（その１）である。
【図１０】本実施形態の変形実施例を説明するための図（その２）である。
【図１１】本実施形態の変形実施例を説明するための図（その３）である。
【発明を実施するための形態】
【００１２】
図１に、本実施形態に係る電子機器のハードウェア構成例を示す。
図１に示すように、電子機器１は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＲＴＣ１０４、ネットワークインターフェイス１０５を備える。
【００１３】
ＣＰＵ１０１は、演算処理装置である。ＲＯＭ１０２は、２次記憶装置である。ＲＡＭ１０３は、１次記憶装置である。ＲＴＣ１０４は、ボタン電池などを用いて電子機器１に電源供給されていないときであっても常に時を刻み、現在時刻を電子機器１に供給するものである。電子機器１は、ネットワークインターフェイス１０５を介して外部の機器と通信を行い、本実施形態では、ＮＴＰサーバ２０１と通信する。
【００１４】
なお、本実施形態においては、ＮＴＰサーバ２０１との通信によりＲＴＣ１０４が補正されており、ＮＴＰサーバ２０１とＲＴＣ１０４の現在時刻の間にズレはない。このＮＴＰサーバ２０１やＲＴＣ１０４が供給する現在時刻を「基準時刻」と呼ぶこととする。
【００１５】
ＣＰＵ１０１上では１又は複数のプログラムが実行されており、各プログラムが内部に「現在時刻」を保持している。この現在時刻は、ＮＴＰサーバ２０１やＲＴＣ１０４が供給する「基準時刻」（基準時刻は各プログラムが適時監視して取得する）に、ＣＰＵ１０１のクロックをカウントするなどして計測した電源ＯＮ時からの経過時間を足した時刻情報である。
【００１６】
なお、複数プログラムが同じ現在時刻を共通して保持していてもよい。以下の実施形態では、プログラムとして電子機器１の基本ソフトウェアであるオペレーションシステム（以下、ＯＳ）、現在時刻として当該ＯＳが保持する時刻情報であることとする。
【００１７】
（動作の登録）
ＣＰＵ１０１上で作動しているプログラムが、所定の時刻もしくは時間に所定の動作（処理）を実行する必要が生じた場合、プログラムは、当該動作をＲＡＭ１０３に登録する。
【００１８】
（現在時刻の補正）
一方で、プログラムは、現在時刻を基準時刻に基づいて補正する場合がある。前述のように、現在時刻は、過去のある時点で取得した基準時刻にＣＰＵ１０１のクロックカウントなどにより計測した電源ＯＮ時からの経過時間を足して計測する。ところが、電源ＯＮしてから長時間が経過すると基準時刻から徐々に乖離し始め誤差が生じる。当該誤差を解消するために現在時刻の補正をする。
【００１９】
（現在時刻の補正に伴う後処理）
現在時刻の補正により、登録した動作の実行に不具合がでる可能性があるので、登録した動作の実行時刻も補正する。補正の結果、補正前は実行時刻前であって未実行であった動作が、補正後に実行時刻が到来したことになる場合は、当該動作を直ちに実行する。なお、実行済みの動作については登録を削除する。
【００２０】
また、登録した動作の中には、先行動作を有するものがある。先行動作の何らかの処理の結果を受けて後続動作をするようなケースである。なお、先行動作と後続動作の間に他の関係のない動作が実行されてもかまわない。
【００２１】
図２に、ＲＡＭ１０３に登録されている動作のデータ構造例を示す。
登録された動作は、各々、プログラムのアドレスと、実行時刻、先行動作に関する情報を有する。これらの値は、動作を登録したいプログラムによって与えられる。
【００２２】
図２の例では、Ｔ１→Ｔ２→Ｔ３→Ｔ４→Ｔ５→Ｔ６→Ｔ７の順により大きく（より未来の時刻へと）なっていくものとする。なお、動作０は、既に実行済みであるものとする。
【００２３】
また、図２の例では、図中の矢印で示したように、動作１が動作３の先行動作、動作３が動作５の先行動作、動作６が動作７の先行動作という先行動作・後続動作関係になっている。
【００２４】
図３に、図２の例における先行動作・後続動作関係を示す。
図３において、矢印で結ばれている２つの動作のうち、矢印の先の動作が先行動作、矢印の元の動作が後続動作である。
【００２５】
図２及び図３に示した例において、現在時刻の補正があった場合の各動作の取り扱いについて、具体的な例を示して説明する。本例では、補正前の現在時刻がＴ１よりも前の時刻であって、補正後の現在時刻がＴ３とＴ４の間の時刻であるような場合である。すなわち、時刻の前後関係は、次の通りである。
Ｔｘ→Ｔ１→Ｔ２→Ｔ３→Ｔｙ→Ｔ４→Ｔ５→Ｔ６→Ｔ７
ただし、Ｔｘ：補正前の現在時刻
Ｔｙ：補正後の現在時刻
【００２６】
本例においては、現在時刻の補正に伴う後処理の態様に基づいて各動作を、下記のように数パターンに分類できる。
・先行動作がなく、且つ、補正後の現在時刻（Ｔｙ）が実行時刻を過ぎてしまう動作（動作１、動作２）
・先行動作があり、且つ、当該先行動作が直ちに実行される動作（動作３）
・先行動作があり、且つ、当該先行動作の実行時刻が補正される動作（動作５）
・先行動作がなく、且つ、補正後の現在時刻が（Ｔｙ）が実行時刻を過ぎていない動作（動作４、動作６）
・先行動作があり、且つ、当該先行動作が実行されておらず、実行時刻の補正もない動作（動作７）
【００２７】
図４に、現在時刻の補正があった場合の動作の取り扱いについてまとめた表を示す。なお、動作の取り扱いとは、後処理の処理内容のことである。
図４に示すように、先行動作あるか否か、先行動作が直ちに実行されるものであるか否か、等の条件によって、異なる処理内容の後処理を、本実施形態は実行する。具体的には、ある動作について、先行動作があり、先行動作が直ちに実行される場合は、実行時刻の補正をする。また、先行動作があり、先行動作が直ちに実行されるものではなく、先行動作が実行時刻の補正がされた場合は、実行時刻の補正をする。また、先行動作があり、先行動作が直ちに実行されるものではなく、先行動作が実行時刻の補正がされない場合は、何もしない。また、先行動作がなく、補正後の現在時刻が実行時刻を過ぎている場合は、直ちに実行する。また、先行動作がなく、補正後の現在時刻が実行時刻を過ぎていない場合は、何もしない。
【００２８】
（実行時刻の補正）
本実施形態では、先行動作が直ちに実行された場合や、先行動作の実行時刻が補正された場合（つまり、先行動作の実行時刻が変更された場合）、所定の間隔を開けて実行されるべき後続動作において、先行動作の実行時刻の変更によって、その所定の間隔が開かないために起きる不具合を解消することが課題である。本実施形態における先行動作・後続動作関係（例えば、図３における動作１−３間、動作３−５間、動作６−７間）は、先行動作と後続動作の間に所定の時間間隔が開くものとする。そして、上記の場合に、実行時刻を補正する場合（例えば、図３における動作３、５）、当初の間隔を保つように、実行時刻を樫木の通りに補正する。
更新時刻＝補正後の現在時刻＋（動作の実行時刻−先行動作の実行時刻）
なお、「動作の実行時刻−先行動作の実行時刻」は、先行動作と後続動作の間隔に相当する。
【００２９】
以下、本実施形態の電子機器１が実行する処理の流れを説明する。
図５に、全体の処理の流れを示す。
電子機器１は、まず、動作の登録を行い（ステップＳ１０１）、任意のタイミングで現在時刻の補正を行う（ステップＳ１０２／Ｙｅｓ）。
【００３０】
現在時刻の補正が発生すると、まずはじめに、登録されているすべての動作に対して、どの動作を直ちに実行すべきかを調査したり、直ちに実行しなくても実行時刻を補正するべき動作の実行時刻を補正する（ステップＳ１０３）。
【００３１】
次に、直ちに実行すべき動作を実行し（ステップＳ１０４）、実行した動作の登録の削除や、削除動作に関連する先行動作情報の削除など、登録されている動作に関する情報の更新を行う（ステップＳ１０５）。
以下、ステップＳ１０３、Ｓ１０４、Ｓ１０５について、さらに詳しく説明する。
【００３２】
図６に、図５のステップＳ１０３の詳細な処理の流れを示す。
図６に示すように、ステップＳ１０３においては、登録されている各動作の一つ一つについて、実行時刻の早い順に、図４に示したような条件により判定を行い、直ちに実行する動作とする（ステップＳ２１０）か、実行時刻の補正をする（ステップＳ２０５、Ｓ２０８）か、何もしないかの処理を行う。処理対象動作は、現在の処理対象動作よりも後で実行する動作の中で、最も実行時刻が速い動作を次の処理対象動作として設定する（ステップＳ２０７）。最初の処理対象動作は、すべての動作の中から一番最初に実行する動作とする（ステップＳ２０１）。
【００３３】
なお、直ちに実行する動作とする（ステップＳ２１０）処理ステップは、処理対象動作をすぐには実行せず、直ちに実行するべき動作であることをＲＡＭ１０３に一時的に記憶しておく。
【００３４】
図７に、図５のステップＳ１０４の詳細な処理の流れを示す。
本処理も図６と同様に、登録されている各動作の一つ一つについて、実行時刻の早い順に、処理対象動作が直ちに実行するべき動作であるか否かを判定し（ステップＳ３０２）、直ちに実行するべき動作である場合に実行する（ステップＳ３０３）。
【００３５】
図８に、図５のステップＳ１０５の詳細な処理の流れを示す。
本処理も図６や図７と同様に、登録されている各動作の一つ一つについて、実行時刻の早い順に、処理対象動作が実行された動作であるか否かを判定し（ステップＳ４０２）、実行された動作である場合に、まず、先行動作情報の削除を行い（ステップＳ４０３）、次に、処理対象動作の削除を行う（ステップＳ４０４）。
【００３６】
ここで、先行動作情報の削除とは、削除する処理対象動作を先行動作としている動作があれば、当該後続動作の先行情報から削除することをいう。先行動作情報の削除の際は、すべての動作の先行動作情報について、現在の処理対象動作を先行動作としているか否かを調べ、先行動作としている場合は、先行動作無しと補正する。先行情報から削除することにより、先行動作が実行されるのを待っている状態から、自分自身が動作する状態に変わったことが分かる。
【００３７】
以上に説明した本実施形態によれば、動作処理の予約実行に際し現在時刻の補正に伴う不具合を解消することが可能になる。
また、上記実施形態は、下記のように種々の変形実施が可能である。
【００３８】
（変形実施形態１）
図７のステップＳ３０３のように、ある動作について、後続の動作があるか否かを知る必要がある場合がある。そこで、処理時間の短縮のため、個々の動作の後続動作に関する情報を登録の際にＲＡＭ１０３に格納してもよい。図９に例を示す。この構成によれば、処理時間の低減が可能になる。
【００３９】
（変形実施形態２）
登録されている動作について、実行時刻が速い動作から順番に処理することが多いため、実行時刻に関する［リンクリスト］と呼ばれるデータ構造をとってもよい。図１０に例を示す。図１０に示すように、各動作には実行時刻の順で自分の次に実行する動作への参照を持つようにする。この構成によれば、実行時刻が速い動作から順番に処理するためにかかる処理時間を低減することが可能になる。
【００４０】
（変形実施形態３）
図８に示した実施形態では、実行した動作については不要なので削除している。しかし、繰り返し実行するような処理を登録できるようにして、そのような処理については実行後に削除せず、一周期分後の時刻を実行時刻として設定するとよい。図１１に例を示す。ステップＳ５０１に示すように、実行時刻に一周期分の時間を加算して、登録された動作を削除せずに残す。
【００４１】
（変形実施形態４）
図５と図６に示した実施形態では、直ちに実行するべき動作をすべて抽出してからまとめて実行している。しかしながら、この場合であると、補正後の実行時刻（＝補正後の現在時刻＋（動作の実行時刻−先行動作の実行時刻））と若干離れてしまう場合がある。したがって、直ちに実行するべき動作であるか判定をしつつ、直ちに実行するべき動作であることが判明したら判明し次第実行するように構成してもよい。
【００４２】
以上、本発明の好適な実施の形態について説明したが、本発明はこれに限定されるものではなく、要旨を逸脱しない範囲内で種々の変形実施が可能である。
なお、本発明は、方法やプログラムとしても実行できる。
【符号の説明】
【００４３】
１    電子機器
１０１    ＣＰＵ
１０２    ＲＯＭ
１０３    ＲＡＭ
１０４    ＲＴＣ
１０５    ネットワークインターフェイス
２０１    ＮＴＰサーバ
【先行技術文献】
【特許文献】
【００４４】
【特許文献１】特開２０１０−１５１６４５号公報
【特許文献２】特開２００７−０１８２５７号公報
【図１】
2012117840.tif 000003
【図２】
2012117840.tif 000004
【図３】
2012117840.tif 000005
【図４】
2012117840.tif 000006
【図５】
2012117840.tif 000007
【図６】
2012117840.tif 000008
【図７】
2012117840.tif 000009
【図８】
2012117840.tif 000010
【図９】
2012117840.tif 000011
【図１０】
2012117840.tif 000012
【図１１】
2012117840.tif 000013