しかしながら、従来の複合機では、ユーザのオペレーションパネルからのキー操作と、キー操作による動作とをデバッグするための機能は設けられていなかった。これは、従来の複合機は、その内部にプリンタ、コピー、スキャナおよびファクシミリ装置に対応する機能単位のソフトウェアをそれぞれ別個に設けた単純な構成となっているため、ユーザのキー操作を監視して各機能の動作確認を行わなくても、各機能単位のソフトウェアごとにデバッグ作業を行うことで、十分な品質を維持することができるためである。
ところで、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置(複合機)を発明した。この画像形成装置によれば、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
このような複合機では、アプリケーションの少なくとも2つが共通的に必要とするサービスを提供するコントロールサービスを有し、しかも多数のソフトウェアが複雑に絡み合って動作するという特徴的な構成となっているため、各ソフトウェアごとにデバッグ作業を行うだけでは、ユーザのキー操作に応じた動作が正常に実現されているか否かを判断することが困難となるという問題がある。特に、ユーザのキー操作による動作中に障害が発生した場合に、障害のあるソフトウェアの特定が困難となり、複合機のデバッグ作業に多大な労力を要するという問題がある。
この発明は上記に鑑みてなされたもので、デバッグ作業の効率化を図ることができるキー操作監視方法、描画情報取得方法、キー操作再生方法、これらの方法をコンピュータで実行するためのプログラムおよび画像形成装置を得ることを目的とする。
上記の課題を解決するために、本発明は、オペレーションパネルと、画像形成にかかる処理を実行するアプリケーションプロセスとして動作するアプリケーションと、オペレーションパネルで行われたキー操作をキーイベント情報として受信し、当該キーイベント情報をプロセス間通信により前記アプリケーションプロセスに送信するキー操作送受信プロセスとして動作するサービスプログラムと、を備えた画像形成装置において、前記オペレーションパネルで行われたキー操作を再生するキー操作再生方法であって、前記画像形成装置における保存データ取得手段が、前記オペレーションパネルに対するキー操作の経時的な複数のキーイベント情報を含むキー履歴データを格納した記憶手段から、前記キー履歴データを取得する保存データ取得ステップと、前記画像形成装置における再生手段が、前記保存データ取得手段により取得したキー履歴データに基づいて前記キーイベント情報を含む再生情報を生成し、前記再生情報を前記アプリケーションプロセスに送信してキー操作を再生する再生ステップと、を含んだことを特徴とするキー操作再生方法として構成できる。
この発明によれば、オペレーションパネルに対するキー操作の経時的な複数のキーイベント情報を含むキー履歴データを格納した記憶手段からキー履歴データを取得する保存データ取得ステップと、保存データ取得ステップにより取得したキー履歴データに基づいてキーイベント情報を含む再生情報を生成し、再生情報を前記アプリケーションに送信してキー操作を再生する再生ステップとを含んだことで、特定のキー操作の再生を繰り返し実行して評価する際に、操作の再現および自動化を容易に行うことができ、デバッグ作業効率および評価効率の向上を図ることができる。
また、前記保存データ取得ステップにおいて、前記保存データ取得手段は、時刻情報が付加されたキーイベント情報を含むキー履歴データを取得し、前記再生ステップにおいて、前記再生手段は、前記時刻情報に基づいた間隔で、前記再生情報を前記アプリケーションプロセスに送信することとしてもよい。
この発明によれば、保存データ取得ステップが時刻情報が付加されたキーイベント情報を含むキー履歴データを取得し、再生ステップが時刻情報に基づいた間隔で再生情報をアプリケーションに送信することで、一連のキー操作を実際にユーザが行ったキー操作の間隔で自動的に再生することができ、デバッグ作業効率および評価効率のさらなる向上を図ることができる。
また、前記保存データ取得ステップにおいて、前記保存データ取得手段は、前記オペレーションパネルに出力した複数の経時的な描画情報を含む描画履歴データを前記記憶手段から取得し、前記再生ステップにおいて、前記再生手段は、再生されたキー操作により前記アプリケーションプロセスから送信された描画情報と前記保存データ取得ステップにより取得した描画履歴データの描画情報とを比較し、一致していない場合にはその旨をユーザに通知することとしてもよい。
この発明によれば、保存データ取得ステップがオペレーションパネルに出力した複数の経時的な描画情報を含む描画履歴データを記憶手段から取得し、再生ステップが再生されたキー操作によりアプリケーションから送信された描画情報と保存データ取得ステップにより取得した描画履歴データの描画情報とを比較し、一致していない場合にはその旨をユーザに通知することで、アプリケーションがオペレーションパネルに表示する描画情報が正常か否かを自動的に判断することができ、デバッグ効率および評価効率をさらに向上することができる。
また、前記再生ステップにおいて、前記再生手段は、前記再生情報を、前記キー操作送受信プロセスを介して送信することとしてもよい。
この発明によれば、キー操作の再生をより実際の動作に適合させてデバッグ作業を行うことができる。
また、前記再生ステップにおいて、前記再生手段は、キー操作の再生要求があったときに、前記キー操作送受信プロセスに対して、前記画像形成装置を前記再生情報のみを受け付ける再生モードに切り替えるモード切替関数の呼び出しを行うこととしてもよい。
この発明によれば、再生ステップがキー操作の再生要求があったときに、キー操作送受信プロセスに対して再生情報のみを受け付ける再生モードに切り替えるモード切替関数の呼び出しを行うことで、関数呼び出しにより自動的に再生モードに移行するので、キー操作再生に不要なオペレーションパネルからのキーイベントの入力を阻止することができる。
上記キー操作再生方法において、前記キー操作の再生要求を、前記オペレーションパネルから予め定めた複数のキーの入力があったときに発生させることとしてもよい。
この発明によれば、複数のキーを入力することにより、再生モードに移行することができる。
また、キー操作の再生要求があったときに、前記キー操作送受信プロセスによって、前記再生ステップを実行する再生手段としてのプロセスを起動させる起動関数を実行する起動ステップと、を含むこととしてもよい。
この発明によれば、キー操作の再生要求があったときにキー操作送受信プロセスによって再生ステップを実行するプロセスを起動させる起動関数を実行する起動ステップを含んだことで、キー操作再生処理を行う際に画像形成装置を再起動させる必要がなくなり、デバッグ作業時のユーザビリティを向上させることができる。
また、前記画像形成装置が、キー操作の再生処理が終了したときに、前記キー操作送受信プロセスに対し、停止要求通知を行う通知ステップと、前記キー操作送受信プロセスが前記停止要求通知を受信したときに、前記再生ステップを実行する再生手段としてのプロセスを終了させる停止ステップと、をさらに含んでもよい。
この発明によれば、キー操作の再生処理が終了したときにキー操作送受信プロセスに対し、停止要求通知を行う通知ステップと、キー操作送受信プロセスが前記停止要求通知を受信したときに再生ステップを実行するプロセスを終了させる停止ステップとを含んだことで、キー操作再生処理終了時に、自動的にキー監視ステップを実行するプロセスを終了させることができ、デバッグ作業時のユーザビリティを向上させることができる。
また、本発明は、上記キー操作再生方法における各ステップををコンピュータに実行させるプログラムとして構成することもできる。
また、本発明は、オペレーションパネルと、画像形成にかかる処理を実行するアプリケーションプロセスとして動作するアプリケーションと、オペレーションパネルで行われたキー操作をキーイベント情報として受信し、当該キーイベント情報をプロセス間通信により前記アプリケーションプロセスに送信するキー操作送受信プロセスとして動作するサービスプログラムと、を備えた画像形成装置であって、前記キー操作に対応するキーイベント情報を、キー履歴データとして格納した記憶手段と、前記キー履歴データに基づいて前記キーイベント情報を含む再生情報を生成し、前記再生情報を前記アプリケーションプロセスに送信してキー操作を再生する再生手段と、を備えたことを特徴とする画像形成装置として構成してもよい。
この発明によれば、キー操作に対応するキーイベント情報をキー履歴データとして格納した記憶手段と、キー履歴データに基づいてキーイベント情報を含む再生情報を生成し、再生情報を前記アプリケーションに送信してキー操作を再生する再生手段とを備えたことで、特定のキー操作の再生を繰り返し実行して評価する際に、操作の再現性および自動化を容易に行うことができ、デバッグ作業効率および評価効率の向上を図ることができる。
前記キー履歴データは、時刻情報が付加されたキーイベント情報を含むものであり、前記再生手段は、前記時刻情報に基づいた間隔で、前記再生情報を前記アプリケーションプロセスに送信することとしてもよい。
この発明によれば、キー履歴データが時刻情報が付加されたキーイベント情報を含み、再生手段が時刻情報に基づいた間隔で再生情報を送信することで、一連のキー操作を実際にユーザが行ったキー操作の間隔で自動的に再生することができ、デバッグ作業効率および評価効率のさらなる向上を図ることができる。
また、前記記憶手段は、さらに前記オペレーションパネルに出力した描画情報を、描画履歴データとして格納したものであり、
前記再生手段は、再生されたキー操作により前記アプリケーションプロセスから送信された描画情報と前記描画履歴データの描画情報とを比較し、一致していない場合にはその旨をユーザに通知することとしてもよい。
この発明によれば、記憶手段がさらにオペレーションパネルに出力した描画情報を描画履歴データとして格納したものであり、保存データ取得手段が記憶手段に格納された描画履歴データを取得し、再生手段が再生されたキー操作によりアプリケーションから送信された描画情報と描画履歴データの描画情報とを比較し、一致していない場合にはその旨をユーザに通知することで、キー操作再生処理によりアプリケーションがオペレーションパネルに表示する描画情報が正常か否かを自動的に判断することができ、デバッグ効率および評価効率をさらに向上することができる。
また、前記再生手段は、前記再生情報を前記キー操作送受信プロセスを介して送信することとしてもよい。
この発明によれば、キー操作の再生をより実際の動作に適合させてデバッグ作業を行うことができる。
また、前記キー操作送受信プロセスとして動作するサービスプログラムは、前記画像形成装置を、前記再生手段から送信された再生情報のみを受け付ける再生モードに切り替えるモード切替関数を定義しており、前記再生手段は、キー操作の再生要求があったときに、前記キー操作送受信プロセスに対して、前記モード切替関数の呼び出しを行うこととしtもよい。
この発明によれば、前記キー操作送受信プロセスとして動作するサービスプログラムが再生手段から送信された再生情報のみを受け付ける再生モードに切り替えるモード切替関数を定義しており、再生手段がキー操作の再生要求があったときに、モード切替関数の呼び出しを行うことで、関数呼び出しにより自動的に再生モードに移行するので、キー操作再生に不要なオペレーションパネルからのキーイベントの入力を阻止することができる。
また、前記オペレーションパネルから予め定めた複数のキーの入力があったときに前記キー操作の再生要求を発生させる手段を有することとしてもよい。
この発明によれば、複数のキーを入力することにより、再生モードに移行することができる。
また、前記キー操作送受信プロセスとして動作するサービスプログラムは、前記再生手段のプロセスを起動する起動関数を定義しており、前記キー操作送受信プロセスは、キー操作の再生要求があったときに、前記起動関数を実行することとしてもよい。
この発明によれば、キー操作送受信プロセスとして動作するサービスプログラムが再生手段のプロセスを起動する起動関数を定義しており、キー操作の再生要求があったときに起動関数を実行することで、キー操作再生処理を行う際に画像形成装置を再起動させる必要がなくなり、デバッグ作業時のユーザビリティを向上させることができる。
また、前記再生手段は、キー操作の再生処理が終了したときに、前記キー操作送受信プロセスに対し、停止要求通知を行い、前記キー操作送受信プロセスは、前記停止要求通知を受信したときに、前記再生手段のプロセスを終了させることとしてもよい。
この発明によれば、再生手段がキー操作の再生処理が終了したときに、キー操作送受信プロセスに対し停止要求通知を行い、キー操作送受信プロセスは記停止要求通知を受信したときに再生手段のプロセスを終了させることで、キー操作再生処理終了時に、自動的に再生手段のプロセスを終了させることができ、デバッグ作業時のユーザビリティを向上させることができる。
また、上記の課題を解決するために、本発明を次のように構成することも可能である。
本発明は、オペレーションパネルを備えた画像形成装置において、前記オペレーションパネルからのキー操作を監視するキー操作監視方法であって、キー監視手段が前記キー操作をキーイベント情報として取得するキー監視ステップを有することを特徴とする。
この発明によれば、キー操作をキーイベント情報として取得するので、障害発生時のキー操作を容易に再現することが可能となり、画像形成装置のデバッグ作業を効率的に行うことができる。
上記キー操作監視方法において、前記キー監視ステップは、前記オペレーションパネルの通信ドライバにより配信されたキーイベント情報を前記キー監視手段が受信するステップを有することとしてもよい。
この発明によれば、通信ドライバを用いてキーイベント情報を配信することができる。
また、上記キー操作監視方法において、前記画像形成装置は、画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスに固有の処理を行うアプリケーションとを有し、更に前記アプリケーションと前記ハードウェア資源との間に前記オペレーションパネルの制御を行うシステムコントロールサービスを有し、前記キー監視ステップは、前記システムコントロールサービスによって、前記キー操作をキーイベント情報として取得するキーイベント取得ステップと、前記キーイベント取得ステップによって取得したキーイベント情報を、前記キー監視手段が前記システムコントロールサービスからプロセス間通信によって受信するステップとを含んだこととしてもよい。
この発明によれば、システムコントロールサービスによってキー操作をキーイベント情報として取得するキーイベント取得ステップと、キーイベント取得ステップによって取得したキーイベント情報をシステムコントロールサービスとのプロセス間通信によって受信するキー監視ステップと、を含んだことによって、多数のソフトウェアが動作する画像形成装置においてキー操作によるキーイベント情報をプロセス間通信を利用して容易に取得することができ、デバッグ情報をとして利用することができる。このため、障害発生時のキー操作を容易に再現することができ、画像形成装置のデバッグ作業を効率的に行うことができる。
また、前記キー監視ステップは、前記受信した複数のキーイベント情報を、キー履歴データとして記憶手段に格納するキーイベント保存ステップをさらに含んでもよい。
この発明によれば、キー監視ステップが受信した複数のキーイベント情報を、キー履歴データとして記憶手段に格納するキーイベント保存ステップを含んだことで、一連のキー操作による経時的なキーイベント情報を履歴データとして残しておくことができ、障害発生時の動作を一連のキー操作で再現することが容易となり、デバッグ作業の効率化をさらに向上することができる。
また、前記キー監視ステップは、前記受信したキーイベント情報に時刻情報を付加するキーイベント処理ステップをさらに含み、前記キーイベント保存ステップは、前記時刻情報が付加されたキーイベント情報を前記キー履歴データとして前記記憶手段に格納することとしてもよい。
この発明によれば、キー監視ステップが受信したキーイベント情報に時刻情報を付加するキーイベント処理ステップをさらに含み、キーイベント保存ステップが時刻情報が付加されたキーイベント情報をキー履歴データとして記憶手段に格納することで、時刻情報に基づいて一連のキー操作のタイミングを認識することができ、実際のキー操作とソフトウェアの動作の同期をとってキー操作を再現することができ、デバッグ作業効率の向上をさらに図ることができる。
また、前記キーイベント保存ステップは、さらに前記キー履歴データをネットワークに接続された端末に送信することとしてもよい。
この発明によれば、キーイベント保存ステップがキー履歴データをネットワークに接続された端末に送信することで、キーイベント情報の履歴データをデバッグ作業を行うユーザなどが使用するリモート端末に直接残すことができ、画像形成装置と離れた場所でデバッグ作業を行う場合のユーザビリティを向上することができる。
また、本発明は、画像形成処理にかかるユーザサービスのための処理を行うアプリケーションと、オペレーションパネルとを備えた画像形成装置において、前記オペレーションパネルに出力される描画情報を取得する描画情報取得方法であって、描画情報取得手段が、前記描画情報を、プロセス間通信によって前記アプリケーションから受信する描画情報取得ステップを含んだことを特徴とする描画情報取得方法として構成することもできる。
この発明によれば、前記描画情報を、プロセス間通信によって前記アプリケーションから受信する描画情報取得ステップを含んだことで、多数のソフトウェアが動作する画像形成装置において、オペレーションパネルへの表示内容(描画情報)を容易に取得することができる。このため、このような描画情報をデバッグ情報をとして利用することにより、障害発生時のオペレーションパネルへの描画情報を容易に再現することができ、画像形成装置のデバッグ作業を効率的に行うことができる。
また、上記描画情報取得方法において、前記描画情報取得ステップは、前記オペレーションパネルを管理する関数と対応した描画情報送信関数の呼び出しを前記アプリケーションから受けることにより、前記描画情報を受信することとしてもよい。
この発明によれば、描画情報取得ステップがオペレーションパネルを管理する関数と対応した描画情報送信関数の呼び出しをアプリケーションから受けることにより、描画情報を受信することで、関数呼び出しという簡易なプロセス間通信によって、デバッグ作業に有益な描画情報を容易に取得することができる。
また、この発明によれば、オペレーションパネルを管理する関数と対応した描画情報送信関数を用いて描画情報を受信できるので、アプリケーションの開発段階で、描画情報の通知を描画情報取得モジュールに行うことを意識する必要がなく、アプリケーション開発の効率化も図ることができる。
また、上記描画情報取得方法において、前記アプリケーションから受信した複数の描画情報を、描画履歴データとして記憶手段に格納する描画情報保存ステップをさらに含んでもよい。
この発明によれば、アプリケーションから受信した複数の描画情報を描画履歴データとして記憶手段に格納する描画情報保存ステップを含んだことで、オペレーションパネルに表示する描画情報を経時的な履歴データとして残しておくことができ、障害発生時のオペレーションパネルへの一連の表示を再現することが容易となり、デバッグ作業の効率化をさらに向上することができる。
また、前記描画情報取得ステップは、前記受信した描画情報に時刻情報を付加する描画情報処理ステップをさらに含んでおり、前記描画情報保存ステップは、さらに前記時刻情報が付加された描画情報を、前記描画履歴データとして前記記憶手段に格納することとしてもよい。
この発明によれば、描画情報取得ステップが受信した描画情報に時刻情報を付加する描画情報処理ステップをさらに含んでおり、描画情報保存ステップが時刻情報が付加された描画情報を描画履歴データとして記憶手段に格納することで、時刻情報に基づいて一連のオペレーションパネルへの表示のタイミングを認識することができ、実際のオペレーションパネルへの表示とソフトウェアの動作の同期をとってオペレーションパネルへの表示を再現することができ、デバッグ作業効率の向上をさらに図ることができる。
また、前記描画情報保存ステップは、さらに前記描画履歴データをネットワークに接続された端末に送信することとしてもよい。
この発明によれば、描画情報保存ステップが描画履歴データをネットワークに接続された端末に送信することで、オペレーションパネルの描画情報の履歴データをデバッグ作業を行うユーザなどが使用するリモート端末に直接残すことができ、画像形成装置と離れた場所でデバッグ作業を行う場合のユーザビリティを向上することができる。
また、本発明は、オペレーションパネルを備え、そのオペレーションパネルからのキー操作に基づいて画像形成処理にかかるユーザサービスを提供する画像形成装置であって、前記キー操作をキーイベント情報として取得するキー監視手段を備えたことを特徴とする画像形成装置として構成することもできる。
この発明によれば、キー操作をキーイベント情報として取得するので、障害発生時のキー操作を容易に再現することが可能となり、画像形成装置のデバッグ作業を効率的に行うことができる。
前記キー監視手段は、前記オペレーションパネルの通信ドライバにより配信されたキーイベント情報を受信することとしてもよい。
この発明によれば、通信ドライバを用いてキーイベント情報を配信することができる。
また、前記画像形成装置は、画像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスに固有の処理を行うアプリケーションとを有し、更に前記アプリケーションと前記ハードウェア資源との間に前記オペレーションパネルの制御を行うシステムコントロールサービスを有し、前記システムコントロールサービスは前記オペレーションパネルからのユーザのキー操作をキーイベント情報として取得し、前記キー監視手段は、前記システムコントロールサービスとのプロセス間通信によって、前記システムコントロールサービスから前記キーイベント情報を受信することとしてもよい。
この発明によれば、コントロールサービスに含まれてオペレーションパネルからのユーザのキー操作をキーイベント情報として取得するシステムコントロールサービスと、システムコントロールサービスとのプロセス間通信によってシステムコントロールサービスからキーイベント情報を受信するキー監視手段とを備えたことで、多数のソフトウェアが動作する画像形成装置においてキー操作によるキーイベント情報をプロセス間通信を利用して容易に取得することができ、デバッグ情報として利用することができる。このため、障害発生時のキー操作を容易に再現することができ、画像形成装置のデバッグ作業を効率的に行うことができる。
また、上記画像形成装置において、前記システムコントロールサービスから受信した複数のキーイベント情報を、キー履歴データとして記憶手段に格納するキーイベント保存手段をさらに備えたこととしてもよい。
この発明によれば、システムコントロールサービスから受信した複数のキーイベント情報をキー履歴データとして記憶手段に格納するキーイベント保存手段をさらに備えたことで、一連のキー操作による経時的なキーイベント情報を履歴データとして残しておくことができ、障害発生時の動作を一連のキー操作で再現することが容易となり、デバッグ作業の効率化をさらに向上することができる。
また、前記キー監視手段は、前記受信したキーイベント情報に時刻情報を付加するキーイベント処理手段をさらに備え、前記キーイベント保存手段は、前記時刻情報が付加されたキーイベント情報を前記キー履歴データとして前記記憶手段に格納することとしてもよい。
この発明によれば、キー監視手段が受信したキーイベント情報に時刻情報を付加するキーイベント処理手段をさらに備え、キーイベント保存手段は、時刻情報が付加されたキーイベント情報をキー履歴データとして記憶手段に格納することで、時刻情報に基づいて一連のキー操作のタイミングを認識することができ、実際のキー操作とソフトウェアの動作の同期をとってキー操作を再現することができ、デバッグ作業効率の向上をさらに図ることができる。
また、前記キーイベント保存手段は、さらに前記キー履歴データをネットワークに接続された端末に送信することとしてもよい。
この発明によれば、キーイベント保存手段がキー履歴データをネットワークに接続された端末に送信することで、キーイベント情報のキー履歴データをデバッグ作業を行うユーザなどが使用するリモート端末に直接残すことができ、画像形成装置と離れた場所でデバッグ作業を行う場合のユーザビリティを向上することができる。
また、前記キー監視手段と前記キーイベント保存手段は互いに異なるプロセスとして動作し、前記キー監視手段と前記キーイベント保存手段のプロセス間通信によって、前記キー履歴データの送受信を行うこととしてもよい。
この発明は、キー監視手段とキーイベント保存手段は互いに異なるプロセスとして動作し、キー監視手段とキーイベント保存手段のプロセス間通信によってキー履歴データの送受信を行うことで、キーイベント保存手段をキー監視手段から独立して設けることができ、キー監視手段の構成の複雑化を防止することができる。
また、前記キーイベント処理手段は、前記キー監視手段のプロセス内部で生成されたスレッドであることとしてもよい。
この発明によれば、キーイベント処理手段がキー監視手段のプロセス内部で生成されたスレッドであるので、短時間に、またはほぼ同時にキー操作と他のデータ処理が行われた場合でも、両方のデータ処理を並列に実行することができ、デバッグ作業を実際の動作と同じ状況で実現することができる。また、キーイベント情報に時刻情報を付加する場合においても、実際の時刻とずれてしまうことがない。このため、デバッグ作業の正確性を担保することができる。
また、本発明は、画像形成処理にかかるユーザサービスのための処理を行うアプリケーションと、オペレーションパネルとを備え、そのオペレーションパネルからのキー操作に基づいて画像形成処理にかかるユーザサービスを提供する画像形成装置であって、前記アプリケーションが前記オペレーションパネルに出力する描画情報を、プロセス間通信によって前記アプリケーションから受信する描画情報取得手段を備えたことを特徴とする画像形成装置として構成することもできる。
この発明によれば、アプリケーションがオペレーションパネルに出力する描画情報をプロセス間通信によってアプリケーションから受信する描画情報取得手段を備えたことで、オペレーションパネルへの表示内容(描画情報)を容易に取得することができる。このため、このような描画情報をデバッグ情報をとして利用することにより、障害発生時のオペレーションパネルへの描画情報を容易に再現することができ、画像形成装置のデバッグ作業を効率的に行うことができる。
また、前記描画情報取得手段は、前記アプリケーションをクライアントとしたサーバプロセスとして動作し、前記アプリケーションは、前記オペレーションパネルを制御する関数と対応した描画情報送信関数を定義したオペパネコントロールサービスライブラリを備え、前記描画情報送信関数を実行することにより、前記描画情報を前記描画情報取得手段に送信することとしてもよい。
この発明によれば、描画情報取得手段がアプリケーションをクライアントとしたサーバプロセスとして動作し、アプリケーションはオペレーションパネルを制御する関数と対応した描画情報送信関数を定義したオペパネコントロールサービスライブラリを備え、描画情報送信関数を実行することにより描画情報を描画情報取得手段に送信することで、関数呼び出しという簡易なプロセス間通信によって、デバッグ作業に有益な描画情報を容易に取得することができる。
また、上記画像形成装置において、前記アプリケーションから受信した複数の描画情報を、描画履歴データとして記憶手段に格納する描画情報保存手段をさらに備えてもよい。
この発明によれば、アプリケーションから受信した複数の描画情報を描画履歴データとして記憶手段に格納する描画情報保存手段を備えたことで、オペレーションパネルに表示する描画情報を経時的な履歴データとして残しておくことができ、障害発生時のオペレーションパネルへの一連の表示を再現することが容易となり、デバッグ作業の効率化をさらに向上することができる。
また、前記描画情報取得手段は、前記受信した描画情報に時刻情報を付加する描画情報処理手段をさらに備え、前記描画情報保存手段は、さらに前記時刻情報が付加された描画情報を、前記描画履歴データとして前記記憶手段に格納することとしてもよい。
この発明によれば、描画情報取得手段が受信した描画情報に時刻情報を付加する描画情報処理手段をさらに備え、描画情報保存手段が時刻情報が付加された描画情報を描画履歴データとして記憶手段に格納することで、時刻情報に基づいて一連のオペレーションパネルへの表示のタイミングを認識することができ、実際のオペレーションパネルへの表示とソフトウェアの動作の同期をとってオペレーションパネルへの表示を再現することができ、デバッグ作業効率の向上をさらに図ることができる。
また、前記描画情報保存手段は、さらに前記描画履歴データをネットワークに接続された端末に送信することとしてもよい。
この発明によれば、描画情報保存手段が描画履歴データをネットワークに接続された端末に送信することで、オペレーションパネルの描画情報の描画履歴データをデバッグ作業を行うユーザなどが使用するリモート端末に直接残すことができ、画像形成装置と離れた場所でデバッグ作業を行う場合のユーザビリティを向上することができる。
また、上記画像形成装置において、前記描画情報取得手段と前記描画情報保存手段は互いに異なるプロセスとして動作し、前記描画情報取得手段と前記描画情報保存手段のプロセス間通信によって、前記描画履歴データの送受信を行うこととしてもよい。
この発明によれば、描画情報取得手段と描画情報保存手段は互いに異なるプロセスとして動作し、描画情報取得手段と描画情報保存手段のプロセス間通信によって描画履歴データの送受信を行うことで、画像情報保存手段を描画情報取得手段から独立して設けることができ、描画情報取得手段の構成の複雑化を防止することができる。
また、前記描画情報処理手段は、前記描画情報取得手段のプロセス内部で生成されたスレッドであることとしてもよい。
この発明によれば、描画情報処理手段が描画情報取得手段のプロセス内部で生成されたスレッドであるので、短時間に、またはほぼ同時に描画情報のオペレーションパネルに対する出力と他のデータ処理が行われた場合でも、両方のデータ処理を並列に実行することができ、デバッグ作業を実際の動作と同じ状況で実現することができる。また、描画情報に時刻情報を付加する場合においても、実際の時刻とずれてしまうことがない。このため、デバッグ作業の正確性を担保することができる。
以上説明したように、本発明によれば、操作の再現を容易に行うことができ、デバッグ作業効率および評価効率の向上を図ることができる。
以下に添付図面を参照して、この発明にかかるキー操作監視方法、描画情報取得方法、キー操作再生方法、これらの方法をコンピュータに実行させるプログラムおよび画像形成装置の好適な実施の形態を詳細に説明する。
(実施の形態1)
図1は、この発明の実施の形態1である画像形成装置(以下、「複合機」という)の構成を示すブロック図である。図1に示すように、複合機100は、白黒ラインプリンタ(B&W LP)101と、カラーラインプリンタ(Color LP)102と、スキャナ103と、ファクシミリ104と、ハードディスク105と、ネットワークインタフェース106などのハードウェアリソースを有するとともに、プラットホーム120とアプリケーション130とから構成されるソフトウェア群110とを備えている。
プラットホーム120は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)123と、汎用OS121とを有する。
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)122と、ECS(エンジンコントロールサービス)124と、MCS(メモリコントロールサービス)125と、FCS(ファックスコントロールサービス)127と、NCS(ネットワークコントロールサービス)128とキーモニタ117とから構成される。なお、このプラットホーム120は、あらかじめ定義された関数により前記アプリケーション130から処理要求を受信可能とするアプリケーションプログラムインタフェース(API)を有する。
汎用OS121は、UNIX(登録商標)などの汎用オペレーティングシステムであり、プラットホーム120並びにアプリケーション130の各ソフトウェアをそれぞれプロセスとして並列実行する。
キーモニタ117は、オペレーションパネル210からのユーザのキー操作をキーイベント情報としてSCS122から受信するとともに、各アプリがオペレーションパネル210に表示する描画情報を各アプリから受信する。そして、キーモニタ117は、受信したキーイベント情報および描画情報にタイムスタンプ(時刻情報)などを付加し、履歴データとしてハードディスク105に格納する。また、キーモニタ117は、この履歴データに基づいてキーイベントをSCS122に送信してキー操作の再生処理を行う。このキーモニタ117は本発明におけるキー監視手段、描画情報取得手段および再生手段を構成する。
SRM123のプロセスは、SCS122とともにシステムの制御およびリソースの管理を行うものである。SRM123のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394 I/F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
具体的には、このSRM123は、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM123は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。
SCS122のプロセスは、アプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御などを行う。また、SCS122のプロセスは、オペレーションパネル210からのキー操作をキーイベントとして取得して、各アプリに送信するとともに、キーモニタ117に送信する。また、SCS122は、モード切替関数を実装している。このモード切替関数は、キーモニタ117からの関数呼び出しにより実行される。モード切替関数の実行により、SCSプロセス122は、オペレーションパネル210からのキーイベントを遮断して、キーモニタ117からのキーイベント情報のみを受け付ける再生モードに移行する。
ECS124のプロセスは、白黒ラインプリンタ(B&W LP)101、カラーラインプリンタ(Color LP)102、スキャナ104、ファクシミリ104などからなるハードウェアリソースのエンジンの制御を行う。
MCS125のプロセスは、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行う。
FCS127のプロセスは、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供する。
NCS128は、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。
アプリケーション130は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ111と、コピー用アプリケーションであるコピーアプリ112と、ファクシミリ用アプリケーションであるファックスアプリ113と、スキャナ用アプリケーションであるスキャナアプリ114と、ネットワークファイル用アプリケーションであるネットファイルアプリ115とを有している。
プリンタアプリ111と、コピーアプリ112と、ファックスアプリ113と、スキャナアプリ114は、その内部にOCSライブラリ126を備えている。すなわち、これらの各アプリのプログラムは、OCSライブラリ126とリンク(結合)した実行可能ファイルとなっている。ここで、OCSライブラリ126は、オペレータ(ユーザ)と本体制御間の情報伝達手段となるオペレーションパネル(操作パネル)の制御を行う各種関数を登録したものであり、各アプリがOCSライブラリ126に登録されている描画関数を実行することによって、オペレーションパネルの表示部にウィンドウ、ボタン、その他文字、図形などの描画情報を表示するようになっている。
図2は、図1に示した実施の形態1の複合機100のハードウェア構成図である。図2に示すように、この複合機100は、CPU202、SDRAM203、SRAM208、フラッシュメモリ204、およびHD205などをASIC201に接続したコントローラボード200と、オペレーションパネル210と、ファックスコントロールユニット(FCU)220と、USB230と、IEEE1394 240と、プリンタ250とから構成されている。オペレーションパネル210はASIC201に直接接続され、FCU220、USB230、IEEE1394 240およびプリンタ250はPCIバスを介してASIC201に接続されている。フラッシュメモリ204には、上述の各アプリ、プラットホーム120を構成する各コントロールサービスやSRM123の各プログラムが格納されている。
オペレーションパネル210は、ユーザが複合機100に対して機能選択などの指示を与える操作パネルである。オペレーションパネル210は、タッチパネルなどの表示部を備えており、この表示部にプリンタアプリ111、コピーアプリ112、ファックスアプリ113およびスキャナアプリ114から各機能の選択指示、倍率指定、ソート、ステイプルなどの機能選択指示、OK、キャンセルなどの選択指示のボタンや、ウィンドウ、その他文字、図形などの描画データがOCSライブラリ126経由で表示される。
また、オペレーションパネル210の表示部(タッチパネル)に表示されたボタンなどのキーをユーザが押下する(触れる)ことによって、ユーザが押下したキー操作がSCS122においてキーイベントとして通知される。
図3は、実施の形態1にかかるキーモニタ117の構成を示すブロック図である。図3に示すようにキーモニタ117は、メッセージキュー311と、SCSデータ処理部301と、OCSデータ処理部302と、リモートデータ処理部303と、データ判定処理部304と、保存データ読み込み部305と、データ再生部306と、データ印刷部307と、データ保存部308とを備えた構成となっている。ここで、SCSデータ処理部301は本発明におけるキーイベント処理手段を、OCSデータ処理部302は本発明における描画情報処理手段を、保存データ読み込み部305は本発明における保存データ取得手段を、データ再生部306は本発明における再生手段を、データ保存部308は本発明におけるキーイベント保存手段および描画情報保存手段をそれぞれ構成する。
メッセージキュー311は、SCSプロセス122、アプリケーション130(各アプリ111〜114)、NCS128から送信されてきたメッセージを蓄積しておくものである。このメッセージキュー311には、SCSプロセス122からはキーイベント情報が送信され、アプリ111〜114からは描画情報が送信されて格納される。また、LANなどのネットワーク330に接続されたリモートPC320から送信されたコマンドがNCSプロセス128を介してメッセージキュー311に格納される。
図4は、メッセージキュー311に送信されるメッセージのデータ構造図である。図4に示す通り、メッセージは、メッセージの発信元を示す発信元と、キーイベントや描画情報を生成、使用するアプリケーションを示すアプリIDと、メッセージの種類を示すデータ属性と、データの各フィールドとから構成される。
発信元フィールドには「SCS」、「OCS」、「内部」、「リモート」のコードが各発信元で格納されて送信される。ここで、メッセージがリモートPC320から送信されたコマンドである場合には、発信元に「リモート」が設定される。なお、発信元が「内部」の場合には、ハードディスク105に格納された履歴データであることを示すが、実施の形態1のキーモニタ117では、履歴データがメッセージキュー311には送信されることはない。
データ属性フィールドには、「キーイベント」、「描画」、「コマンド」の各コードが発信元で格納される。「キーイベント」の場合にはメッセージがキーイベント情報であることを、「描画」である場合にはメッセージが描画情報であることを、「コマンド」である場合にはメッセージがコマンドであることを示す。ここで、データ属性が描画情報である場合には、その発信元は「OCS」である場合と、「内部」である場合の2通りがある。「内部」である場合とは、ハードディスク105に格納された履歴データの中の描画情報のときが該当する。
データフィールドは、キーイベント情報、描画情報、コマンドの各データ属性によって格納されるデータが異なっている。図5(a)は、メッセージキュー311に格納される(すなわち、SCSデータ処理部301による処理前の)キーイベント情報のデータ構造図である。図5(a)に示すように、キーイベント情報では、発信元フィールドに「SCS」が、データ属性フィールドに「キーイベント」が発信元のSCSで設定される。また、キーコードフィールドには、オペレーションパネル210で操作されたキーの識別コードであるキーコードが設定されており、キー押下状態フィールドではキーが押下されたか否かを、キー有効/無効フィールドではキーコードに対応するキーが有効であるか否かを示すコードが設定されている。
図6(a)は、メッセージキュー311に格納される(すなわち、OCSデータ処理部302による処理前の)描画情報のデータ構造図である。図6(a)に示すように、描画情報では、発信元フィールドに「OCS」が、データ属性フィールドに「描画」が発信元のアプリ111〜114のOCSライブラリ126で設定される。描画データフィールドには、ウィンドウID、ボタンなどの網掛け表示などの属性を示すアイテムID、文字情報、図形情報などの描画データが発信元のアプリ111〜114のOCSライブラリ126で設定される。
図7は、メッセージキュー311に格納されるコマンドのデータ構造図である。図7に示すように、コマンドの場合には発信元フィールドに「リモート」が、データ属性フィールドに「コマンド」が発信元のリモートPC320で設定される。また、コマンドデータフィールドには、記録コマンド、再生コマンドなどのコマンドごとの識別データが発信元のリモートPC320で設定される。
SCSデータ処理部301は、キーモニタ117のプロセス内で生成され動作するスレッドであり、メッセージキュー311からキーイベント情報を取得して、データ解析、タイムスタンプの付加を行う。
OCSデータ処理部302は、キーモニタ117のプロセス内で生成され動作するスレッドであり、メッセージキュー311から描画情報を取得して、データ解析、タイムスタンプの付加を行う。
図9は、SCSデータ処理部301およびOCSデータ処理部302で行われるデータ処理の手順を示すフローチャートである。まず各データ処理部301、302では、一定間隔ごとにメッセージキュー311から処理すべきデータ(メッセージ)を検索して、処理すべきデータがある場合にはそのデータを読み出す(ステップS901)。
具体的には、SCSデータ処理部301では、メッセージキュー311から発信元「SCS」とデータ属性「キーイベント」であるデータを検索し、かかるデータがSCS122から送信されたキーイベント情報であると判断して読み出す。また、OCSデータ処理部302では、メッセージキュー311から発信元「OCS」とデータ属性「描画」であるデータを検索し、かかるデータがアプリ111〜114がOCSライブラリ126を利用して送信された描画情報であると判断して読み出す。
つぎに、複合機100に設けられたタイマーなどからタイムスタンプとして現在時刻を取得する(ステップS902)。そして、ステップS901で読み出したデータが各データ処理部301、302で処理すべきデータの構造に適合しているか否かのデータ解析を行う(ステップS903)。
具体的には、SCSデータ処理部301では読み出したデータが図5(a)に示すキーイベント情報のデータ構造となっているかを、OCSデータ処理部302では読み出したデータが図6(a)に示す描画情報のデータ構造となっているかを解析する。
そして、データ解析により、読み出したデータが正しいものであるか否かを判断し(ステップS904)、正しくない場合にはその後の処理を行わずに終了する。
データが正しいものである場合には、ステップS902で取得した現在時刻をタイムスタンプとしてデータに付加し、さらにデータ長を付加した上で(ステップS905)、データ処理判定部304に受け渡す(ステップS906)。なお、データ判定処理部304での判定処理をより容易にするために、キーイベント情報に、データ再生、データ印刷またはデータ保存などの識別子をさらに付加する処理を行っても良い。
図5(b)は、SCSデータ処理部301による処理後のキーイベント情報のデータ構造図であり、図6(b)は、OCSデータ処理部302による処理後の描画情報のデータ構造図である。図5(b)、図6(b)に示すように、SCSデータ処理部301によるキーイベント情報の処理、OCSデータ処理部302による描画情報の処理の結果、データ長とタイムスタンプのデータが先頭に付加される。
リモートデータ処理部303は、リモートPC320からネットワーク経由で送信されてきたコマンドのデータ処理を行うものであり、キーモニタ117のプロセス内で生成され動作するスレッドである。ただし、SCSデータ処理部301やOCSデータ処理部302で行うタイムスタンプおよびデータ長の付加は行われない。リモートデータ処理部303では、メッセージキュー311から発信元「リモート」であるデータを検索し、かかるデータがリモートPC320から送信されたコマンドであると判断して読み出す。そして、読み出したデータの構造が図7に示すコマンドのデータ構造に適合しているか否かのデータ解析を行って、データが正しい場合には読み出したデータをデータ判定処理部304に受け渡す。
データ判定処理部304は、各データ処理部301、302、303から受け渡されたデータに対して、発信元フィールド、データ属性フィールドまたはデータフィールドをチェックして、データ再生部306、データ印刷部307、データ保存部308に受け渡すものである。具体的には、発信元が「内部」または「OCS」である場合、および発信元が「リモート」でかつデータ属性が「コマンド」でデータの内容が再生コマンドである場合には、データをデータ再生部306に受け渡す。従って、データ再生部306には、履歴データ、図6(b)に示す描画情報および図7の構造の再生コマンドが入力される。
データ判定処理部304は、発信元が「SCS」または「OCS」である場合には、データをデータ印刷部307およびデータ保存部308に受け渡す。従って、データ印刷部307とデータ保存部308には、図5(b)および図6(b)に示すタイムスタンプが付加されたキーイベント情報および描画情報が入力される。
データ保存部308は、このタイムスタンプが付加されたキーイベント情報および描画情報を履歴データとしてハードディスク(HD)105に格納する。この際、各データの発信元フィールドを「内部」に設定した上で格納する。図8(a)は、履歴データ(内部データ)の各レコードのデータ構造図である。図8(a)に示すように、履歴データの発信元フィールドには「内部」が設定され、データフィールドはキーイベント情報または描画情報と同様のデータとなっている。ここで、履歴データは、図8(a)に示すデータを1レコードとして、経時的に収集された複数レコードから構成されている。
データ印刷部307は、リモートPC320から印刷コマンドが送信されたときに、キーイベント情報や描画情報をプリンタ101、102で印刷するものである。
保存データ読み込み部305は、後述する再生モードのときに、ハードディスク105から図8(a)に示す履歴データを読み出して、データ判定処理部304に受け渡すものである。
データ再生部306は、再生モード時に、SCSプロセス122に対し再生モードへ切り替えるモード切替関数の呼び出しを行い、履歴データから再生情報を生成してSCSプロセス122に送信して、履歴データに基づいたキー操作の再生を行うものである。
図10は、実施の形態1のキーモニタ117のデータ再生部306によるキー操作再生処理の手順を示すフローチャートである。図10に示すように、データ再生部306は、まずデータ判定処理部304から入力したデータのデータ属性をチェックする(ステップS1001)。そしてデータ属性が「コマンド」であり、データフィールドが再生コマンドである場合には、SCSプロセス122に対して、モード切替関数呼び出しを行う(ステップS1002)。これにより、SCSプロセス122ではモード切替関数が実行されて、オペレーションパネル210からのキーイベントを遮断して、キーモニタ117からの再生情報(キーイベント情報)だけを受け付ける再生モードに移行する。
データ属性が「キーイベント」である場合には、データ判定処理部304から入力されたデータがキーイベント情報の履歴データであるため、履歴データからデータ長およびタイムスタンプを削除した再生情報を生成する(ステップS1003)。図8(b)は、生成された再生情報のデータ構造図である。この再生情報は、「内部」である点のみが図5(a)に示すキーイベント情報と発信元が異なっている。そして、生成した再生情報をSCSプロセス122に送信する(ステップS1004)。この処理は、履歴データに含まれるすべてのレコードのキーイベント情報について行われる。また、このような複数の再生情報の送信は、ステップS1003で削除したタイムスタンプと次の履歴データ中のレコードのタイムスタンプとの差の時間の間隔で行われる。従って、実際にユーザがオペレーションパネル210でキー操作した間隔と同一間隔でのキー操作が再生されることになり、より実際の操作に適合したデバッグ作業が行えることになる。
一方、データ属性が「描画」である場合には、データ判定処理部304から入力されたデータが履歴データの中の描画情報とアプリ111〜114からOCSライブラリ126経由で受信した描画情報、すなわちキー操作の再生でアプリ111〜114が実行された結果生成された描画情報である。このため、両方の描画情報を比較して(ステップS1005)、一致するか否かを判断する(ステップS1006)。
比較の結果、一致している場合にはキー操作再生によるオペレーションパネル210への描画情報の表示が正常であると判断する。一方、一致していない場合には、キー操作再生によるオペレーションパネル210への描画情報の表示に異常があると判断し、オペレーションパネル210またはリモートPC320のユーザに対しエラー表示を行う(ステップS1007)。
次に、以上のように構成されたキーモニタ117を含む複合機100によりキー操作記録処理について説明する。図11は、キー操作記録処理におけるオペレーションパネル210、キーモニタ117、SCS122およびアプリ間のデータの流れを示す説明図である。図12は、キー操作記録処理の主としてキーモニタ117内部のデータの流れを示す説明図である。
まず、リモートPC320から記録コマンドが送信されると(ステップS1201)、複合機100のNCSプロセス128はネットワーク経由で記録コマンドを受信して、キーモニタ117のメッセージキュー311に登録する(ステップS1202)。
キーモニタ117のリモートデータ処理部303は、メッセージキュー311からこの記録コマンドを取得して(ステップS1203)、データ解析を行い、これによりキー操作記録処理が開始する。この記録コマンドはデータ判定処理部304に出力される(ステップS1204)。
オペレーションパネル210でユーザのキー操作があった場合には、操作したキーのキーイベント情報がSCSプロセス122に通知される(ステップS1205)。SCSプロセス122は、通知されたキーイベント情報をそのアプリIDで指定されたアプリ111〜114に送信するとともに、メッセージ送信あるいは関数呼び出しなどのプロセス間通信によってキーモニタ117のメッセージキュー311に登録する(ステップS1206)。
キーモニタ117のSCSデータ処理部301では、メッセージキュー311からキーイベント情報を取得して(ステップS1207)、前述したデータ解析およびタイムスタンプの付加を行って、キーイベント情報をデータ判定処理部304に受け渡す(ステップS1208)。
データ判定処理部304では、キーイベント情報の発信元を判断して、キーイベント情報をデータ保存部308に出力する。そして、データ保存部308により、発信元を「内部」に設定した履歴データをハードディスク105に格納する。
以上のような、キーイベント情報の取得、履歴データの格納処理は、オペレーションパネル210におけるキー操作のたびに行われ、履歴データには複数のキーイベント情報が順次記録されていくことになる。
一方、SCSプロセス122からキーイベント情報を受信したアプリ111〜114ではアプリ固有の処理を行うがこの際オペレーションパネル210に対して描画情報が出力される場合がある(ステップS1209)。このとき、アプリ111〜114は、OCSライブラリ126の描画情報送信関数を実行する。この描画情報送信関数は、アプリ111〜114が描画情報をオペレーションパネル210に出力するOCSライブラリ126の関数と一対となった関数であり、オペレーションパネル210に出力した描画情報と同一の描画情報をキーモニタ117のメッセージキュー311に送信するものである。このため、オペレーションパネル210に出力した描画情報はキーモニタ117のメッセージキュー311にも送信すされることになる(ステップS1210)。
キーモニタ117のOCSデータ処理部302では、メッセージキュー311から描画情報を取得して(ステップS1211)、前述したデータ解析およびタイムスタンプの付加を行って、描画情報をデータ判定処理部304に受け渡す(ステップS1212)。
データ判定処理部304では、描画情報の発信元を判断して、キーイベント情報をデータ保存部308に出力する(ステップS1213)。そして、データ保存部308により、発信元を「内部」に設定した履歴データをハードディスク105に格納する(ステップS1214)。
以上のような、描画情報の取得、履歴データの格納処理は、アプリ111〜114におけるオペレーションパネル210に対する描画情報の送信が実行されるたびに行われ、履歴データには複数の描画情報が順次記録されていくことになる。
また、実施の形態1のキーモニタ117では、SCSデータ処理部301とOCSデータ処理部302がいずれもスレッドとして動作しているので、SCSデータ処理部301によるデータ処理とOCSデータ処理部302によるデータ処理が並列に実行される。従って、短時間の間、またはほぼ同時にキー操作と描画情報のオペレーションパネル210に対する出力が行われた場合でも、両データ処理を並列に実行することができ、さらにはタイムスタンプが実際の時刻とずれてしまうことがない。このようなキー操作記録処理によって、キーイベント情報および描画情報からなる履歴データがハードディスク105に格納されることになる。
次に、実施の形態1にかかるキーモニタ117を含む複合機100によりキー操作再生処理について説明する。図13は、キー操作再生処理におけるオペレーションパネル210、キーモニタ117、SCS122およびアプリ間のデータの流れを示す説明図である。図14は、キー操作再生処理の主としてキーモニタ117内部のデータの流れを示す説明図である。
まず、キー操作再生処理を行う場合には、複合機100を再起動させる。そして、すべてのプロセスとキーモニタ117が再起動したときに、リモートPC320から再生コマンドを送信する(ステップS1401)。複合機100のNCSプロセス128はネットワーク経由で再生コマンドを受信して、キーモニタ117のメッセージキュー311に登録する(ステップS1402)。
キーモニタ117のリモートデータ処理部303は、メッセージキュー311からこの再生コマンドを取得して(ステップS1403)、データ解析を行ってデータ判定処理部304に出力する(ステップS1404)。
データ判定処理部304では、入力されたデータの発信元が「リモート」であり、データ属性が「コマンド」で、かつコマンドデータが再生コマンドであることを認識して、再生コマンドをデータ再生部306に受け渡す(ステップS1405)。
データ再生部306では、入力されたデータが再生コマンドであるために、SCSプロセス122に対してモード切替関数呼び出しを行い、SCS122に対して再生モードへの切替要求を行う(ステップS1406)。
SCSプロセス122では、モード切替関数を実行して、再生モードに移行する。これにより、図13に示すように、SCSプロセス122は、キーモニタ117からの再生情報のみを入力して、オペレーションパネル210からのキー操作を遮断した再生モードの状態となる。
次に、保存データ読み込み部305が、ハードディスク105に格納されている履歴データを読み込んで(ステップS1407)、データ判定処理部304へ受け渡す(ステップS1408)。履歴データは、発信元が「内部」となっているため、データ判定処理部304は履歴データをデータ再生部306へ受け渡す(ステップS1409)。
データ再生部306では、入力された履歴データの各レコードごとに、データ属性を判断し、データ属性が「キーイベント」である場合にはデータ長およびタイムスタンプを削除した再生情報を生成し、SCSプロセス122にメッセージ送信というプロセス間通信によって再生情報を送信する(ステップS1410)。
SCSプロセス122では、受信した再生情報のキーコードをアプリ111〜114に送信し、これにより履歴データに基づいたキー操作再生処理が行われる。このような、データ再生部306によるSCSプロセス122に対する再生情報の送信は、履歴データを構成するレコードの中のデータ属性が「キーイベント」のすべてのレコードについて再生情報を生成して行う。このとき、再生情報の送信は、前の再生情報の生成処理で削除したタイムスタンプに示された時刻と、現在送信しようとする再生情報から削除されたタイムスタンプに示された時刻とにより算出される間隔をおいて行われる。すなわち、実際のユーザのキー操作の時間間隔をおいて、再生情報が送信され、キー操作が再生されることになる。
なお、データ再生部306はデータ属性が「キーイベント」の場合に再生情報を生成しているが、データ属性が「描画」で、かつ発信元が「内部」である場合には再生処理をせず、保持しておく。
SCSプロセス122では、データ再生部306から受信した再生情報の中のキーイベントをアプリ111〜114に送信することにより、キー操作の再生を行うが、これによりアプリ111〜114がオペレーションパネル210に表示するボタンなどの描画情報を送信した場合(ステップS1411)、図12で説明したキー操作記録処理と同様に、描画情報をキーモニタ117で受信する(ステップS1412、S1413、S1414)。
アプリ111〜114から受信した描画情報は、発信元が「OCS」となっているため、データ判定処理部304によりデータ再生部306に送られる(ステップS1415)。この描画情報は、発信元が「OCS」で、かつデータ属性が「描画」であるため、データ再生部306では、この描画情報と履歴データの描画情報と比較して一致しているか否かを判断する。一致している場合は、キー操作によりアプリ111〜114でオペレーションパネル210に表示される描画情報は正常であると判断するが、不一致の場合には、アプリ111〜114などで異常が生じていると判断し、オペレーションパネル210またはリモートPC320にエラーの通知を行う。このように、キー操作の再生により、オペレーションパネル210に表示される描画情報が正常がどうかを判断することができるようになっている。
このように、実施の形態1にかかる複合機100では、キーモニタ117がオペレーションパネル210からSCSプロセス122経由で、キーイベント情報をプロセス間通信によって取得し、またアプリ111〜114からオペレーションパネル210への描画情報をプロセス間通信によって取得し、タイムスタンプを付加してハードディスク105に経時的な履歴データとして格納しているので、タイムスタンプの間隔で一連のキー操作を容易に再現することができ、有益なデバッグ情報を得ることができる。
また、実施の形態1の複合機100では、履歴データから再生情報を生成してSCSプロセス122に送信してキー操作の再生を行っているので、一連のキー操作の再生を繰り返し自動的に実行してすることができ、デバッグ作業効率および評価効率の向上を図ることができる。
なお、上記の実施の形態にかかる複合機100では、キー操作再生処理を開始するに際し、再生コマンドをリモートPC320から複合機100に対して送信し、複合機100がその再生コマンドを受信することによりモード切替関数の呼び出しが行われるが、これ以外の方法により、複合機100において再生コマンドを生成し、モード切替関数の呼び出しを行うこともできる。
例えば、オペレーションパネルから特別な組み合わせのキー入力(例:“[クリア]”+“1”+“2”+“3”+“[クリア]”)があったときにモード切替関数の呼び出しをしたり、複合機100に専用キーを設け、その専用キーが押されたときにモード切替関数の呼び出しをする。
(実施の形態2)
実施の形態1にかかる複合機100は、キーイベント情報および描画情報の履歴データをハードディスク105に格納するものであったが、この実施の形態2にかかる複合機100は、さらに履歴データをリモートPC320に送信するものである。
実施の形態2にかかる複合機100の構成およびハードウェア構成は、図1および図2に示した実施の形態1の複合機100と同様であるため説明を省略する。
図15は、主としてキーモニタ117の構成およびキー操作記録時のデータの流れを示した説明図である。図15に示すように実施の形態2の複合機100では、共有メモリ107とログ生成部129とを備えている点が実施の形態1の複合機100と異なる。
ログ生成部129は複合機100で動作するプロセスであり、後述する共有メモリ107からキーイベント情報および描画情報を取得して履歴データを生成し、生成された履歴データをNCSプロセス128を介してネットワークに接続されたリモートPC320に送信するとともに、ハードディスク105に格納する。また、ログ生成部129は、ハードディスク105に格納された履歴データを共有メモリ107に格納する。このログ生成部129は本発明におけるキーイベント保存手段および描画情報保存手段を構成する。なお、ログ生成部129を、リモートPC320から履歴データを受信して共有メモリ107に格納するように構成しても良い。
共有メモリ107は、SDRAM203に確保され、キーモニタ117のプロセスとログ生成部129のプロセスから共通にアクセス可能な領域である。
つぎに、このように構成された実施の形態2にかかる複合機100におけるキー操作記録処理について説明する。リモートPC320からの記録コマンドの送信からキーイベント情報および描画情報のデータ保存部308への受け渡しまでの処理(ステップS1501〜S1513)については、実施の形態1の複合機100で説明した図12の処理と同様であるため説明を省略する。
データ保存部308は、タイムスタンプが付加されたキーイベント情報(図5(b))および描画情報(図6(b))を共有メモリ107を利用したプロセス間通信によってログ生成部129に送信する。すなわち、データ保存部308は、タイムスタンプが付加されたキーイベント情報(図5(b))および描画情報(図6(b))を共有メモリ107に書き込む(ステップS1514)。一方、ログ生成部129のプロセスは、共有メモリ107にアクセスして共有メモリ107からキーイベント情報および描画情報を取得することにより(ステップS1515)、両者のプロセス間通信によるキーイベント情報および描画情報の受け渡しが行われる。
ログ生成部129は、共有メモリ107から読み込んだ複数のキーイベント情報および複数の描画情報をまとめて履歴データを生成する。そして、この履歴データをハードディスク105に格納するとともに(ステップS1516)、リモートPC320のネットワークアドレスを指定して、NCSプロセス128を介してネットワーク経由でリモートPC320に送信する(ステップS1517、S1518)。
一方、キー操作再生処理において、キーモニタ117が履歴データを読み出す場合には、まずログ生成部129がハードディスク105から履歴データを読み込んで(ステップS1519)、共有メモリ107に書き込む(ステップS1520)。そして、キーモニタ117の保存データ読み込み部305が共有メモリ107をアクセスして、共有メモリ107に記憶されている履歴データを読み出す(ステップS1521)、というログ生成部129のプロセスとキーモニタ117のプロセス間通信によって、履歴データが取得される。これ以降のキー操作再生処理の手順は、図14で説明した実施の形態1の複合機100の場合と同様であるので説明を省略する。
このように実施の形態2にかかる複合機100では、履歴データをネットワークに接続されたリモートPC320に送信しているので、キーイベント情報や描画情報の履歴データをデバッグ作業を行うユーザが使用するリモートPC320に直接残すことができ、複合機100と離れた場所でデバッグ作業を行う場合にユーザにとって便宜なものとなる。
(実施の形態3)
実施の形態1および2にかかる複合機100は、キー操作再生処理の実行前に、複合機100を再起動して再生モードに移行する必要があったが、この実施の形態3にかかる複合機100は動的に再生モードに移行してキー操作再生処理を行うものである。
実施の形態3にかかる複合機100の構成およびハードウェア構成は、図1および図2に示した実施の形態1の複合機100と同様であるため説明を省略する。ただし、実施の形態3の複合機100において、SCS1622は、キーモニタ117を起動させる起動要求関数と、キーモニタ117のプロセスを終了する停止関数を実装している。
図16は、実施の形態3の複合機100におけるキー操作再生処理の初期手順を示す説明図である。キーモニタ117によりキー操作再生処理を行う場合には、まずリモートPC320から再生コマンドを送信する(ステップS1601)。このとき、複合機100を再起動させる必要はない。
複合機100のNCSプロセス1628が再起動コマンドをネットワーク経由で受信すると(ステップS1602)、NCSプロセス1628はSCSプロセス1622に対し、キーモニタ起動要求関数呼び出しを行う(ステップS1603)。
要求を受けたSCSプロセス1622では、キーモニタ起動要求関数を実行し、これにより複合機100内でキーモニタ117のプロセスが生成され、起動される(ステップS1604)。
一方、キー操作再生処理が終了した場合には、キーモニタ117のデータ再生部1666は、SCSプロセス1622に対して、終了通知イベントメッセージを送信する(ステップS1605)。この終了通知イベントメッセージを受信したSCSプロセス1622は、停止関数を実行し、これによりキーモニタ117のプロセスが消滅する(ステップS1606)。
このように実施の形態3にかかる複合機100では、SCS1622がキーモニタ117を起動する起動関数を備えているので、キー操作再生処理を行う際に起動関数を実行することで、複合機100を再起動させる必要がなくなり、デバッグ作業時のユーザビリティを向上させることができる。
また、実施の形態3にかかる複合機100では、キーモニタ117がキー操作の再生処理が終了したときにSCSプロセス1622に対し停止要求通知を行い、かかる要求を受けてSCSプロセス1622がキーモニタ117のプロセスを終了させているので、キー操作再生処理終了時に、自動的にキーモニタ117のプロセスを終了させることができ、デバッグ作業時のユーザビリティを向上させることができる。
(実施の形態4)
実施の形態1〜3にかかる複合機100では、オペレーションパネル210から入力されたキーイベント情報は、SCS122を介してアプリケーション及びキーモニタ117に配信されるが、SCS122を介さずにオペレーションパネル210のドライバがキーイベント情報をアプリケーション及びキーモニタ177に配信する構成とすることも可能である。この構成について図17、図18を用いて説明する。
図17は、図1に示した複合機100と同じ複合機100を、エンジンI/Fの部分をより詳細にして示した図である。
同図に示したように、各ハードウェアに対応してハードウェア側のドライバとOS側のドライバが備えられており、これらのドライバがエンジンI/Fを構成する。同図に示すように、実施の形態4では、OS側のOCSドライバ2102がハードウェア側のOCSドライバ2101からキーイベント情報を受信し、OS側のOCSドライバ2102がSCS122を介さずに各アプリケーション及びキーモニタ117に配信する。
図18は、OCSドライバ2101、2102の構成を詳細に示した図である。同図に示すように、ハードウェア側のOCSドライバ2101では、キー操作機能部2103がオペレーションパネル210から入力されたキー操作を検出して、それをキーイベント情報として通信ドライバ2104に送信する。また、描画機能部2105が描画情報を通信ドライバ2104から受信して、オペレーションパネル210に描画データの表示を行う。また、通信ドライバ2104は、OS側のOCSドライバ2102における通信ドライバ2106にキーイベント情報を送信する。
OS側のOCSドライバ2102では、通信ドライバ2106がキーイベント情報を各アプリケーション及びキーモニタ117に配信する。また、アプリケーションからの描画情報は、ライブラリ関数2107を利用して、通信ドライバ2106からハードウェア側のOCSドライバ2101に送られる。
なお、同図の点線の丸で囲んだ部分は、実施の形態1〜3における構成である。この場合には、キーイベント情報がSCS122に渡され、そこから各アプリケーションに配信される。今回の実施の形態4では、キーイベント情報の配信に関しては点線の丸で囲んだ部分の機能は使用されない。
上記のように、実施の形態4によれば、SCS122を介さなくても、キーイベント情報をアプリケーション及びキーモニタ117に配信することが可能となる。なお、キーイベント情報をSCS122を介さずにアプリケーション及びキーモニタ117に送る部分以外は、実施の形態1〜3と同じ構成をとることができる。
なお、実施の形態1〜3にかかる複合機100では、キーイベント情報や描画情報に付加されたタイムスタンプからキー操作の間隔を算出しているが、履歴データ作成時に、あらかじめタイムスタンプからキー操作の間隔を算出して、履歴データ中に格納するように構成することができる。
実施の形態1〜3にかかる複合機100では、いずれもキーモニタ117をコントロールサービス層に設け、アプリケーションとのデータの送受信においてアプリケーションプログラムインタフェースを利用可能な構成となっているが、この他、アプリケーション層に例えばキーモニタアプリとして設けるように構成しても良い。