(57)【特許請求の範囲】
【請求項１】
プリントエンジンと通信するために適合されたプリントコントローラを含み、それによって前記プリントエンジンを制御する開発システムのためのプリントエンジンシミュレータであって、
前記プリントコントローラからの通信を階層的通信エレメントに翻訳する翻訳手段と、
前記通信に応答する、前記プリントエンジンの状態機械表現及び、
前記プリントコントローラからの通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するように適合された表示手段とを有することを特徴とするプリントエンジンシミュレータ。
【請求項２】
前記プリントコントローラからの通信がデータリンクレイヤパケット列を有し、
前記階層的通信エレメントが、
（ｉ）前記リンクレイヤパケット、
（ｉｉ）前記リンクレイヤパケットに関するヘッダ、
（ｉｉｉ）前記リンクレイヤパケットに関するチェックサム、
（ｉｖ）前記リンクレイヤパケットから形成されるアプリケーションレイヤパケット、
（ｖ）前記アプリケーションレイヤパケットに関するプリントエンジンコマンド、及び
（ｖｉ）前記プリントエンジンコマンドに関する引数
の少なくとも１つを有することを特徴とする請求項１記載のプリントエンジンシミュレータ。
【請求項３】
前記状態機械表現が、
各々が１つ又は複数の状態値を仮定可能な第１の複数のプリントエンジン状態と、
第２の複数の状態遷移及び関連する時間遅延とを有し、
前記プリントコントローラからの通信に応答する前記状態機械からの通信が、
・前記プリントエンジンシミュレータが前記プリントコントローラからの通信を受信する前の前記第１の複数のプリントエンジン状態値と、
・前記プリントコントローラからの通信及び、
・時間の満了
の少なくとも１つに依存することを特徴とする請求項１記載のプリントエンジンシミュレータ。
【請求項４】
前記表示手段が前記階層的通信エレメントの少なくとも１つを表示するように適合されていることを特徴とする請求項２記載のプリントエンジンシミュレータ。
【請求項５】
前記表示手段が、
前記少なくとも１つの階層的通信エレメントに関する静的情報を表示する非スクロール表示領域と、
前記プリントコントローラからの通信を動的に表示するスクロール領域とを有することを特徴とする請求項２記載のプリントエンジンシミュレータ。
【請求項６】
前記階層的通信エレメントの少なくとも１つにおける不正状態を検出するエラー検出手段と、
前記検出された不正状態を前記表示手段に提示するエラー表示手段及び、
前記プリントエンジンの前記状態機械表現をリセットするリセット手段とを更に有することを特徴とする請求項２記載のプリントエンジンシミュレータ。
【請求項７】
プリントエンジンと通信するために適合されたプリントコントローラを含み、それによって前記プリントエンジンを制御する開発システムのためのプリントエンジンシミュレータであって、
プログラムを格納するメモリ及び、
前記プログラムを実行するプロセッサを有し、前記プログラムが、
前記プリントコントローラからの通信に応答する、前記プリントエンジンの状態機械表現を提供するコードと、
前記プリントコントローラからの通信を階層的通信エレメントに翻訳するコード及び、
前記プリントコントローラからの通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するコードとを有することを特徴とするプリントエンジンシミュレータ。
【請求項８】
プリントエンジンシミュレータ及び、プリントエンジンとの通信に適合されたプリントコントローラであって、それによって前記プリントエンジンを制御するプリントコントローラ、を含む開発システムであって、
前記プリントエンジンシミュレータが、
前記プリントコントローラからの通信を階層的通信エレメントに翻訳する翻訳手段と、
前記通信に応答する、前記プリントエンジンの状態機械表現及び、
前記プリントコントローラからの通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するように適合された表示手段とを有することを特徴とする開発システム。
【請求項９】
プリントエンジンとの通信に適合されたプリントコントローラを含み、それによって前記プリントエンジンを制御する開発システムにおける前記プリントエンジンのシミュレート方法であって、
前記プリントコントローラからの通信に通信に応答する、前記プリントエンジンの状態機械表現を提供するステップと、
前記プリントコントローラからの通信を階層的通信エレメントへ翻訳するステップ及び、
前記プリントコントローラからの通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するステップとを有することを特徴とするシミュレート方法。
【請求項１０】
プリントエンジンとの通信に適合されたプリントコントローラを含み、それによって前記プリントエンジンを制御する開発システムにおける前記プリントエンジンのシミュレート方法を実行するようにプロセッサを導くコンピュータプログラムが記録されたコンピュータ読み取り可能な媒体を含むコンピュータプログラム製品であって、前記プログラムが、
前記プリントコントローラからの通信に応答する、前記プリントエンジンの状態機械表現を提供するコードと、
前記プリントコントローラからの通信を階層的通信エレメントに翻訳するコード及び、
前記プリントコントローラからの通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するコードとを有することを特徴とするコンピュータプログラム製品。
【請求項１１】
プリントエンジンとの通信に適合されたプリントコントローラを含み、それによって前記プリントエンジンを制御する開発システムにおける前記プリントエンジンのシミュレート方法を実行するようにプロセッサを導くコンピュータプログラムであって、
前記プリントコントローラからの通信に応答する、前記プリントエンジンの状態機械表現を提供するコードと、
前記プリントコントローラからの通信を階層的通信エレメントに翻訳するコード及び、
前記プリントコントローラからの通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するコードとを有することを特徴とするコンピュータプログラム。
【請求項１２】
前記プリントコントローラからの通信がデータリンクレイヤパケット列を有し、前記プリントコントローラからの通信を前記階層的通信エレメントに翻訳する前記コードが、
（ｉ）前記リンクレイヤパケットを翻訳するコード、
（ｉｉ）前記リンクレイヤパケットに関するヘッダを翻訳するコード、
（ｉｉｉ）前記リンクレイヤパケットに関するチェックサムを翻訳するコード、
（ｉｖ）前記リンクレイヤパケットから形成されるアプリケーションレイヤパケットを翻訳するコード、
（ｖ）前記アプリケーションレイヤパケットに関するプリントエンジンコマンドを翻訳するコード、及び
（ｖｉ）前記プリントエンジンコマンドに関する引数を翻訳するコード
の少なくとも１つを有することを特徴とする請求項１１記載のコンピュータプログラム。
【請求項１３】
前記状態機械表現を提供するコードが、
各々が１つ又は複数の状態値を仮定可能な第１の複数のプリントエンジン状態に対するコードと、
第２の複数の状態遷移及び関連する時間遅延とに対するコードを有し、
前記プリントコントローラからの通信に応答する前記状態機械からの通信が、
・前記プリントエンジンシミュレータが前記プリントコントローラからの通信を受信する前の前記第１の複数のプリントエンジン状態値と、
・前記プリントコントローラからの通信及び、
・時間の満了
の少なくとも１つに依存することを特徴とする請求項１１記載のコンピュータプログラム。
【請求項１４】
前記階層的通信エレメントの少なくとも１つにおける不正状態を検出するコードと、
前記検出された不正状態を前記表示手段に提示するコード及び、
前記プリントエンジンの前記状態機械表現をリセットするコードとを更に有することを特徴とする請求項１２記載のコンピュータプログラム。
【発明の詳細な説明】
【０００１】
［著作権について］
本特許出願は著作権保護対象物を含む。著作権者は関連特許庁ファイルからの、閲覧を目的とした本特許明細書又は関連物の複製については異議を唱えないが、それ以外の全著作権についてはいかなるものであれ権利を留保する。
【０００２】
［発明が属する技術分野］
本発明は全体としてソフトウェア開発システムシミュレータに関し、特に、プリントエンジンのシミュレータに関する。本発明はプリントエンジンをシミュレートする方法及び装置に関する。本発明はさらに、プリントエンジンをシミュレートするコンピュータプログラムを記録したコンピュータ読み取り可能な媒体を含む、コンピュータプログラム製品に関する。
【０００３】
［商標の認知について］
以下の説明には商品名又は商標、もしくはそれらであるとの主張を受ける語を含みうる。それら語の包含は、それらの語が法的目的において非独占的又は一般的な意味を獲得したことを暗示するものではない。さらに、それらの法的状態に関する判断も暗示しない。語に独占権が付属すると思われる場合、上付き文字proprによって表記するが、これはそれらの語に関する法的状態に関する判断を暗示しない。
【０００４】
［背景技術］
ソフトウェア開発は時間のかかる仕事となり得、様々なシステム構成要素が並行して開発される事実によりしばしば交錯する。プリントエンジンの開発が終了していない状態で、しかしながらプロジェクトスケジュールに合わせるため、そのプリントエンジンに対するプリントエンジンコントローラの開発は進めなければならないような状況でのプリントエンジンコントローラの開発はそのような開発の一例である。このようなプリントエンジンコントローラの開発を行う従来の方法は、開発中のプリントエンジンコントローラ及びプリントエンジンからデータ信号をキャプチャするためにプロトコルアナライザを用いるものである。プロトコルアナライザは基本的に、個々のビット及びフロー制御信号の両方について、キャプチャしたビットのデータ再構成、データストリームの記録を行うことができ、プリントエンジンコントローラ開発者に有用な情報を提供する。
【０００５】
しかし、万能非同期送受信器（ＵＡＲＴ）レベルにおける典型的な物理層通信はプリントエンジンコントローラの開発開始時に既に検証されているため、プロトコルアナライザは必要以上の情報を供給する。プロトコルアナライザはまた、一般にプログラミング性が限られており、カスタマイズされたイベントシーケンスの開発及び／又は制御に容易に適合させることができない。多種多様なメーカ独自のデータパケットについて正しくデータを送信するためには、プロトコルアナライザを１バイトずつプログラムする必要があるであろう。プリントコントローラから受信したデータ翻訳にも、プロトコルアナライザのカスタムプログラミングが必要であろう。
【０００６】
プロトコルアナライザは開発中のプリントエンジンコントローラと実際のプリントエンジンとの間を流れる生データの解析に用いることができる。各データパケットについて送信されたバイト値を手動でチェックすることにより、プロトコルアナライザはコントローラ及びエンジンにおける低レベル通信ソフトウェアのデバッグに使用可能である。これは、特にパケットが１６ビット及び／又は３２ビット値へ再組立する必要のあるバイトを多く含み、特にコントローラとエンジン間での低レベル通信ソフトウェア動作を確認するためにチェックサム値を手動計算する必要のある場合において、冗漫かつ繰り返しの多い作業となりうる。
【０００７】
この方法において生じるさらなる問題は、一旦低レベル通信ソフトウェアが完全にデバッグされても、プロトコルアナライザは個々のバイトレベルで動作しているため、依然として非常に多量のデータを供給することである。これは開発者を混乱させ、一般に開発者が関連する高位レイヤプロトコルメッセージをマスクしてしまう。
【０００８】
プリントエンジンコントローラの別の開発方法は開発中のプリントエンジンコントローラと合わせて実際のプリントエンジンを用いることである。このような方法の短所は、プリントエンジンがプリントエンジンコントローラに対して正しい方法で応答したと仮定しても、この方法はプリントエンジンコントローラとプリントエンジンの間で送信されつつあるデータパケットに関する情報表示を提供しない。低レベル通信ソフトウェア正しく動作していることを保証するため、開発者が個々のバイトをチェックする必要のある場合、コードデバックの初期段階にある開発者に対しては必須では無いが、そのような情報の表示は便利である。
【０００９】
［発明の要約］
本発明の１つの目的は、既存装置の１つ又は複数の短所を実質的に解消するか、少なくとも改善することにある。
【００１０】
本発明の第１の見地によれば、プリントエンジンと通信を行うように適合され、それによって前記プリントエンジンを制御するプリントコントローラを含む開発システムのための、前記プリントエンジンのシミュレートを行う方法を実行するようにプロセッサに指示するコンピュータプログラムであって、
前記プリントエンジンの状態機械表現を提供するコードであり、前記状態機械が前記プリントコントローラからの通信に応答し、
前記プリントコントローラからの前記通信を階層的な通信エレメントに翻訳するコードと、
前記プリントコントローラからの通信、階層的な通信エレメント及び状態機械からの関連する通信、の少なくとも１つを表示するコード、
を有するコンピュータプログラムが提供される。
【００１１】
本発明の別の見地によれば、プリントエンジンとの通信に適合され、それによって前記プリントエンジンを制御するプリントコントローラを有する開発システムのための、前記プリントエンジンをシミュレートする方法をプロセッサに実行させるコンピュータプログラムが記録されたコンピュータ読み取り可能な媒体を含むコンピュータプログラム製品であって、
前記プリントエンジンの状態機械表現表現を提供するコードであり、前記状態機械が前記プリントコントローラからの通信に応答し、
前記プリントコントローラからの前記通信を階層的な通信エレメントに翻訳するコードと、
前記プリントコントローラからの通信、階層的な通信エレメント及び状態機械からの関連する通信、の少なくとも１つを表示するコード、
を有するコンピュータプログラム製品が提供される。
【００１２】
本発明の別の見地によれば、プリントエンジンとの通信に適合され、それによって前記プリントエンジンを制御するプリントコントローラを有する開発システムのための、プリントエンジンシミュレータであって、
前記プリントコントローラからの通信を階層的な通信エレメントに翻訳するコードと、
前記プリントエンジンの状態機械表現であり、前記状態機械が前記通信に応答し、
前記プリントコントローラからの通信、前記階層的通信エレメント及び前記状態機械からの関連する通信の少なくとも１つを表示するように適合された表示手段とを有することを特徴とするプリントエンジンシミュレータが提供される。
【００１３】
本発明の別の見地によれば、プリントエンジンとの通信に適合され、それによって前記プリントエンジンを制御するプリントコントローラを有する開発システムのための、プリントエンジンシミュレータであって、
プログラムを格納するメモリと、
前記プログラムを実行するプロセッサを有し、
前記プログラムが、
前記プリントエンジンの状態機械表現を提供するコードであり、前記状態機械が前記プリントコントローラからの通信に応答し、
前記プリントコントローラからの前記通信を階層的な通信エレメントに翻訳するコードと、
前記プリントコントローラからの前記通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するコードとを含むプリントエンジンシミュレータが提供される。
【００１４】
本発明の別の見地によれば、プリントエンジンシミュレータと、プリントエンジンとの通信に適合されたプリントコントローラとを含む開発システムであって、
前記シミュレータが、
前記プリントコントローラからの通信を階層的な通信エレメントに翻訳する翻訳手段と、
前記プリントエンジンの状態機械表現であって、前記状態機械が前記通信に応答し、
前記プリントコントローラからの通信、前記階層的通信エレメント及び前記状態機械からの関連する通信の少なくとも１つの表示に適合した表示手段とを有する開発システムが提供される。
【００１５】
本発明の別の見地によれば、プリントエンジンと通信を行うように適合され、それによって前記プリントエンジンを制御するプリントコントローラを含む開発システムのための、前記プリントエンジンのシミュレートを行う方法であって、前記プリントエンジンの状態機械表現を提供するステップであり、前記状態機械が前記プリントコントローラからの通信に応答し、
前記プリントコントローラからの通信を階層的な通信エレメントに翻訳するステップと、
前記プリントコントローラからの通信、前記階層的通信エレメント及び、前記状態機械からの関連する通信の少なくとも１つを表示するステップとを有する方法が提供される。
【００１６】
［ベストモードを含む詳細な説明］
添付図面のいずれか１つ又は複数のステップ及び／又は機能に対してなされる参照において、逆の意図が開示されない限り、同一の参照数字が付与されたステップ及び／又は機能は本説明の目的において同一の機能又は動作を行う。
【００１７】
以下の説明のいくつかの部分は、コンピュータメモリ内部のデータに対するアルゴリズム及びシンボル表現という形式で明示的又は暗示的に表されている。これらのアルゴリズム的記述及び表現は、データ処理技術における当業者によって、それらの動作の実体を他の当業者に最も効率的に伝達するために用いられる手段である。アルゴリズムはここで、また一般的に、所望の結果を導く、自己一貫性を有するステップの系列であると想像される。ステップは物理量の物理操作を必要とする。通常、必須ではないけれども、それらの量は格納、転送、結合、比較及び他の操作が可能な電気的又は磁気的形式を有する。主に共通利用という理由から、時折便宜的にそれら信号をビット、値、要素、シンボル、文字、言葉、数字等として参照する。
【００１８】
しかしながら、上述の、又は類似の言葉は適切な物理量に関連するべきものであり、それら適用される便宜的なラベルに過ぎないことに留意されたい。別の意味で説明されない限り、また以下の説明から明らかなように、本明細書を通じて、「スキャン」、「計算」、「決定」、「置換」、「生成」、「初期化」、「出力」等の言葉を用いる検討は、コンピュータシステムのレジスタ及びメモリ内部の物理（電子）量として表されるデータを、コンピュータシステムメモリ、レジスタ又は他の情報記憶、伝送又は表示装置内部の物理量として同様に表される他のデータへの操作及び変形するコンピュータシステム又は類似の電子装置の動作又は処理を参照する。
【００１９】
本明細書は、本発明の方法の工程を実行するための装置をも開示する。そのような装置は必要とされる目的に対して特別に構築されても、コンピュータ内に格納されたコンピュータプログラムによって選択的に活性化される、あるいは再構成される汎用コンピュータや他の装置から構成されても良い。ここで示されるアルゴリズム及びディスプレイは特定のコンピュータ又は他の装置に本質的に関連しない。様々な汎用装置が本明細書の教示に従ったプログラムと共に利用可能である。代わりに、必要な方法のステップを実行するためのより特化した構成を用いることも好ましい。従来の汎用コンピュータの構成は以下の説明から明らかになるであろう。
【００２０】
さらに、本明細書は本発明の方法の工程を実行するためのコンピュータプログラムを有するコンピュータ装置読み取り可能な媒体をも開示する。ここで、コンピュータ装置読み取り可能な媒体には送信元と送信先との間でコンピュータプログラムを通信するための任意の伝送媒体を含みうる。伝送媒体は磁気又は光ディスク、メモリチップ、又は汎用コンピュータとのインタフェースに好適な他の記憶装置等の記憶装置を含みうる。伝送媒体はまた、インターネットシステムにおいて例示されるハードワイヤード媒体や、ＧＳＭ移動電話システムにおいて例示されるような無線媒体をも含みうる。コンピュータプログラムはいかなる特定のプログラム言語及びその実装への限定を意図されていない。様々なプログラミング言語及びそのコーディングが本明細書に含まれる開示の教示を実施するために利用可能である。
【００２１】
添付図面の任意の１つ又は複数において、ステップ及び／又は機能に参照がなされる場合、同一の参照数字を有するものは、特に断りのない限り、本明細書の目的上、同一の機能又は工程を有する。
【００２２】
ここで説明される好ましい方法の原理は、システム要素間においてシリアル又は他の通信を用いるシステムにおけるソフトウェア開発に広く適用可能である。しかし、説明を簡単にするため、好ましい方法のステップはプリントエンジンコントローラ及びプリントエンジンを有するシステムについて説明される。本発明を説明される方法に限定することは意図していない。
【００２３】
図１は、プリントエンジンコントローラ１００及びプリントエンジン１０６を有するプリンタ開発システム構成を示す。プリントエンジン１０６は、紙に記録する電気機械装置であり、コントローラ１００は典型的にはプリントエンジン１０６へシリアル接続を介して制御コマンドを送信する、マイクロプロセッサベースのシングルボードコンピュータである。図１におけるシリアル接続は一方向矢印１０２及び１０４でそれぞれ表される。プリントエンジン１０６は一般に標準的な非同期低速（９６００〜３８４００ビット／秒）シリアルリンクプロトコルを用いて制御され、ビデオデータは一般にパラレルインタフェース（図示せず）を用い、高速バス１０８によってプリントエンジンに供給される。
【００２４】
装置開発の過程では、プリントエンジン１０６が利用可能になる前にプリントエンジンコントローラ１００を開発しなくてはならないことがよくある。そのような場合、プリントエンジンシミュレータ１１０をプリントエンジンコントローラ１００の開発を補助するために利用することができる。シミュレータ１１０はシリアルリンク１０２、１０４（プリントエンジン１０６でなくシミュレータに接続される際には点線矢印１１４及び１１２で表される）を用いてプリントエンジンコントローラ１００に接続される。
【００２５】
図２はプリントエンジンコントローラ１００及びプリントエンジンシミュレータ１１０の内部を示す。プリントエンジンコントローラ１００は典型的には組み込みされた、ＬｉＮＵＸproprオペレーティングシステムが稼働するｐｏｗｅｒＰＣ２００を有し、ＰＣは接続２０２によってハードウェア描画アクセラレータ２０４へ接続される。本シナリオにおいて開発されるべき特定のソフトウェアはコントローラプロセッサ上で稼働するプリントジョブスケジュールソフトウェア２０６である。
【００２６】
プリントエンジンシミュレータ１１０は一般に、状態機械表現を用い、少なくともシリアルコマンドプロトコル及びプリントスケジュールについてシミュレートするＬｉｎｕｘpropr box２０８を用いて実現される。本明細書はＬｉｎｕｘproprオペレーティングシステムが稼働する特定のハードウェアプラットフォームを想定して説明するが、他のプラットフォーム及びオペレーティングシステムを用いることができる。従って、例えば、プリントエンジンシミュレータは図８に関連して説明されるような汎用コンピュータシステム７００上で実現することもできる。
【００２７】
通信コンセプト及び技術用語の簡単な概要は以後の説明についてのシーン設定において有用である。ＩＳＯ／ＯＳＩ(International Standard Organization's Open System Interconnect)は通信を７つのレイヤに分割し、物理的には１つのレイヤにのみ物理的に接続され、仮想的に他のレイヤ全てに接続される。
【００２８】
システム設計者はめったにこれらレイヤの全てを用いない。それらは非常に複雑な大規模システムにおいてのみ有用である。何人かの設計者は非常に薄いレイヤ表現や、より少ないレイヤを形成するため、複数のレイヤを結合したりする。これらレイヤのうち、３つのみ（レイヤ１，２及び７）が本発明において用いられる。
【００２９】
物理層（レイヤ１）はコントローラのシリアルポート１０２，１０４及びエンジンシミュレータ１１４，１１２との間を接続するために用いられるケーブルである。データリンクレイヤであるレイヤ２は、到着するデータが最大パケットサイズ、ヘッダ、チェックサム、確認及び再送方法を特定し、誤りなくデータが到着することを保証する。これはこれらエキストラにおけるカプセル化されたデータパケットとは独立している。Ｌａｙｅｒ２上のプロトコルはレイヤ７におけるプロトコルとは異なる、レイヤ２及びレイヤ７の両方は、一般に前もって指定された入力を開発処理に入力し、変更することはできない。
【００３０】
図３は上述した３層通信モデルによる通信フラグメントを示す。例として、コントローラ１００がＸバイトを有するパケット３００をエンジン／シミュレータ１０６、１１０におけるアプリケーションレイヤに送信するものと仮定する。最大データリンクレイヤパケットサイズはＮバイトに過ぎず、従ってソフトウェアが２つのパケット３０２，３０４に分割する。そして、送信のためにヘッダ３０８及びチェックサム３１０を各パケット３０２，３０４に付加する。エンジン／シミュレータ１０６／１００における受信機（図示せず）は生データをチェックサムの計算に十分になるまで組み立てる。ヘッダ３０８の情報から、受信機は高レベルデータパケットを完成するのに別のパケットが必要であることを知り、第２のパケットが受信されるのを待つ。そして、受信機は全データを組み立て、それをアプリケーションレイヤに渡す。アプリケーションレイヤはデータを最初の２バイトからなるコマンドに基づいて翻訳する。コマンドは、例えばエンジンから受信した所定のパラメータを設定する指示であって良い。
【００３１】
これらレイヤの両方におけるプロトコルは一般的にメーカ固有であるため、カスタマイズされたプログラミング無しでプロトコルを翻訳可能であるような、標準的なプロトコルアナライザは存在しない。しかし、説明した組み立て及び翻訳を実行し、並びに好ましくはデータバイト、ヘッダ及びチェックサムの値を表示するための専用コードを書くことは可能である。
【００３２】
プリントエンジンシミュレータ１１０の目的はコントローラ１００上でコードのデバッグを行うことであるため、コントローラ１００がデータリンクレイヤパケットを組み立てるための正しいバイトストリームを送信しているか否か、またコントローラ１００が入来バイトを正しく翻訳しているか否かを始めにチェックすることは有益である。そのような特定の処理を簡略化するため、シミュレータ１１０はシリアルポートで受信した１バイト毎に表示可能でなければならない。
【００３３】
図４は、所望のプリントエンジンシミュレータ機能を提供する、好適な処理６１２を示す。Ｌｉｎｕｘpropボックス２０８又はコンピュータシステム７００を用いて実現可能なシミュレータ１１０で稼働するシミュレーション処理６１２は、開始ステップ６００から始まる。その後、処理はステップ６０２でアプリケーションパケットを通信コネクション１１２、１１４から取得する。コネクション１１２上のアプリケーションパケットはシミュレータ１１０で稼働する状態機械表現によって生成され、コネクション１１４上のアプリケーションパケットはプリントエンジンコントローラ１００によって生成される。その後、ステップ６０４において、処理６１２はアプリケーションパケットを翻訳し、その後アプリケーションパケットの通信エレメントがステップ６０６で表示される。その後、判定ステップ６０８において、処理６１２を継続すべきであれば、処理は「はい」の矢印に従ってステップ６０２へ戻される。処理６１２が継続すべきでない場合には、処理は「いいえ」矢印に従って、処理６１２が終了するステップ６１０へ導かれる。
【００３４】
図５は、開発者が興味のある階層的通信エレメントを示す図である。図５はまた、エンジンシミュレータの１つの構成の機能を予め示し、開発者がシミュレータ使用時に呼び出し可能な複雑な５つの”レベル”４２４を示す。
【００３５】
要するに、大きなアプリケーションパケットが送信される際には、２つかそれより多いデータリンクレイヤパケットに分割される。これら個々のパケット４０４ａ、４１２ａはシミュレータにおいて別々に調べたり検査しても良い。プログラマはデータリンクレイヤでの動作に満足したら、スクリーン上の散乱物の総量を削減するため、レベル３へ再びデバッグレベルを１つ下げることができ、以下同様に動作する。図３と図５を併せて参照すると、コントローラにおけるアプリケーションレイヤによってエンジン／シミュレータのアプリケーションレイヤへ送信されたパケットがＸバイト長であり、データ４１６によって表されることに留意されたい。最大データリンクレイヤパケットサイズはＮバイトに過ぎず、通信ソフトウェアはアプリケーションパケットを参照数字４０４Ａ、４１２Ａで示される２つのパケットに分割する。通信ソフトウェアは、参照数字４００及び４０８で示されるように、上述のパケット４０４Ａ及び４１２Ａの各々に、ヘッダ及びチェックサムを付加する。以下、更に詳細に説明する。
【００３６】
コントローラコードがまさしく最初に動作する際、開発者はデータリンクレイヤのコードにバグがないことすら確証できず、そのため、開発者はシリアルポートで送信される各バイトの全てを調べる必要がある。最高デバッグレベル、すなわちレベル５に設定することにより、シミュレータ１１０はそれら生バイトを表示することができる。データリンクレイヤ（すなわち、レイヤ５）において、リンクパケット４００，４０８は、それぞれヘッダ４０２，４１０、データ４０４、４１２及びチェックサム４０６，４１４を含む。個々のリンクパケット４００及び４０８のこれら内容は、本構成が開発者に表示を許す最高レベルの階層通信エレメントである。図５において、これは「レベル５」シミュレーションレベルとして表され、利用可能なシミュレーションレベルの範囲が参照数字４２４により表されている。
【００３７】
シミュレータをレベル５に設定して使用しているコントローラ開発者が、データレイヤパケットが正しく組み立てられており、ヘッダが正しく、チェックサムが正しく計算されていることに満足した場合、開発者は送信される実データに注目を開始することが可能になる。そのため、デバッグレベルをレベル４へ１つ下げてもよい。レベル４においては、対応するデータ要素４０４Ａ及び４１２Ａのみが表示されるため、提供される内容(detail)の量を削減することによって、開発者にこれらパケット中のコマンドバイトの意味がどのようなものかを調べることを可能にする。しかしながら、実際は、データ要素４０４Ａには、そのデータ要素がレベル４シミュレーションにおいて表示されるべきデータ要素を表すため、新しい参照数字、すなわち４０４Ａを与えられている。
【００３８】
開発者がレベル４においてデバッグ作業を完了すると、開発者はレベル３へ落として再び提供される内容量を削減することが可能になる。レベル３においては、点線の箱４１６で表されるように、上述のデータ要素（４０４Ｂ及び４１２Ｂ）が再組立される。
【００３９】
上述したように、開発者がレベル３においてデバッグ作業を完了すると、レベルをレベル２へ落とすことが可能であり、レベル２では参照数字４１８で示すように、通信されたコマンドに付随する意味引数(semantics arguments)が表示される。次のレベル、すなわちレベル１では、コマンドそれ自身４２０の意味指定(semantic designation)のみが表示される。これは抽象化の最高レベルであることを示し、開発者に表示される内容量が最小であることと等しい。次のレベル、すなわちレベル０では、不正なコマンドコードや無効なコマンドシーケンス等のエラーが存在しない限り、付随データは全く表示されない。何かが表示される場合には常にタイムスタンプ４２２が表示される。
【００４０】
要するに、図５によって示される取り決めは、通信の階層的表現を選択的に開発者に見せることを可能にする。この手法はテキスト形式により付録Ａに示される。
【００４１】
操作の利便性という観点から、キーを押下することによりシミュレータレベルを都合良く変更することが可能であり、再コンパイルは不要である。
【００４２】
上述の機能を実現するための例示的な擬似コードが付録Ｂに与えられる。このコードはアプリケーションレイヤパケットへ戻るために、関数”GetApplPacket”をコールする。別の関数”InterpretPacket”はパケットを翻訳するために用いられる。GetApplPacket関数はデータリンクレイヤパケットを組み立てるのに十分なバイト数を集めるため、別の関数”GetLinkPacket”をコールする。
【００４３】
コントローラ及びシミュレータの両方が動作している際、リアルタイムで読まれるべきデータが多く生成されすぎる。特にシーケンスの初期にエラーが起きた場合、後でログファイルを読むのは面倒である。シミュレータが実際のエンジンのようには応答しないが、キーの押下に応答して特定のデータパケットをコントローラへ送信するモードを持たせるのは便利である。コントローラの「テンポラリデバッグプリントステータス」はこのモードにおいて受信した応答を表示可能である。
【００４４】
図６は要約された疑似スタティック情報及びダイナミック情報の両方を同時に表示するための表示配置を示す。
【００４５】
データリンクレイヤについての図６における例示的な画面表示は付録Ｃに記載される。画面表示のテキストの始めの４行は”スクロールしない”画面５００を表す。テキストの第１行は画面名、日付、時間（時／分／秒／１０分の１秒表記）及び切り捨てられた秒(truncated seconds)表記の時間を示す。第２行はシミュレータによって受信したバイト数及び対応するリンク数及びアプリケーションパケット数を示す。第３行はシミュレータが送信したバイト数及び対応するリンク数及びアプリケーションパケット数を示す。第４行は様々な制御ラインの論理状態を示す。
【００４６】
続く行は”スクロールする”画面５０２を表す。各行はミリ秒単位のタイムスタンプ、通信エレメントがシミュレータによって送信されたか受信されたかを示すタグ”Ｔｘ”又は”Ｒｘ”、通信エレメントに関連する具体的な応答メッセージ、印刷されたページのＩＤ番号及び、印刷結果を有する。
他の例示的な画面が付録Ｄで説明される。
【００４７】
シミュレータが単独のコントローラよりも多いサブシステムに接続されている場合、所望の内容量で２つの間のデータフローを表示するため、分離、独立して設定されたデバッグレベルを有する追加デバッグ画面モードを用いることができる。
【００４８】
上述の配置は以下のように更に拡張することが可能である。デアサートされた際に通信インタフェースをリセットするのはＤＴＲ／ＤＳＲ行の標準機能であるが、プリンタにおいて更にエンジン状態機械をリセットし、また再びレディ状態になった際に表示する。シミュレータはコントローラソフトウェアの開発中有用なこの機能を組み込む。不正な状態が検出された際、コントローラはエラーメッセージを表示し、シリアルポートを閉じて終了する。これはシミュレータをリセットする。この単純な処理はシミュレータを手動でリセットする代わりに、開発者がコントローラのデバッグに自由に集中できる状態に保つ。
【００４９】
図７は上述の構成の別の変形例を示し、ここでシミュレータはエンジンが応答するようには応答せず、シリアルポートのモニタ、ログの記録及びコマンドの時間記録のみを行う。これは、付録Ｂのコードにおける”モニタモードでないならば”ステートメントによって達成される。実際のコントローラ８０２及びプリントエンジン８０６間でのコマンドトラフィックを解析するため、モニタモードにあるシミュレータの２つのインスタンス８１４及び８１６は、より上位のプロトコルアナライザとほぼ同じ方法によって１つのLinuxproprボックス８０２で動作可能である。
【００５０】
プリントエンジンをシミュレートする方法は、図８に示すような汎用コンピュータシステム７００を用いて実施することが可能であり、図４の処理をコンピュータシステム７００内部で実行されるアプリケーションプログラム等のソフトウェアとして実装可能である。特に、プリントエンジンをシミュレートする方法のステップはコンピュータで実行されるソフトウェア中の命令によって成立する。ソフトウェアはプリントエンジン方法のシミュレートを行う部分と、ユーザインタフェース及びユーザ間の管理を行う部分の２つの部分に分割しても良い。ソフトウェアは例えば以下に記載する記憶装置を含む、コンピュータが読み取り可能な媒体に格納されても良い。ソフトウェアはコンピュータが読み取り可能な媒体からコンピュータへロードされ、コンピュータによって実行される。そのようなソフトウェアを有するコンピュータ読み取り可能な媒体又は、コンピュータ読み取り可能な媒体に記録されたコンピュータプログラムはコンピュータプログラム製品である。コンピュータプログラム製品の使用はプリントエンジンをシミュレートするために都合の良い装置を好適に実現する。
【００５１】
コンピュータシステム７００はコンピュータモジュール７０１、キーボード７０２及びマウス７０３等の入力装置、プリンタ７１５及び表示装置７１４を含む出力装置を有する。変復調器（モデム）送受信装置７１６は、例えば電話回線７２１や他の機能媒体(functional medium)を介して接続可能な、通信ネットワーク７２０との間で双方向通信を行うためにコンピュータモジュール７０１が使用する。モデム７１６はインターネットや、局所ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）等の他のネットワークへアクセスするために用いることが可能である。
【００５２】
コンピュータモジュール７０１は一般に少なくとも１つのプロセッサユニット７０５、例えば半導体ランダムアクセスメモリ（ＲＡＭ）及び読み出し専用メモリ（ＲＯＭ）から構成されるメモリユニット７０６、ビデオインタフェース７０７を含む入出力（Ｉ／Ｏ）インタフェース及び、キーボード７０２及びマウス７０３並びにオプションのジョイスティック（図示せず）用のインタフェース７１３及び、モデム７１６用のインタフェース７０８を含む。Ｉ／Ｏインタフェース７１３はエンジンコントローラ１００と、図８では点線で示されるコネクション１１２、１１４上で通信を行うために設けられている。一般にハードディスクドライブ７１０及びフロッピーディスクドライブ７１１を含む記憶装置７０９が設けられる。磁気テープドライブ（図示せず）もまた用いることができる。ＣＤ−ＲＯＭドライブ７１２は不揮発的なデータ源として一般に設けられる。コンピュータモジュール７０１の部品７０５〜７１３は一般に相互接続バス７０４を介し、関連技術分野に属する当業者に知られる、コンピュータシステム７００の従来の方法の動作における方法で通信する。説明した構成を実施可能なコンピュータの例にはＩＢＭ−ＰＣ及びその互換機、ＳｕｎＳｐａｒｃｓｔａｔｉｏｎ及びそれらから発展した同様のコンピュータシステムを含みうる。
【００５３】
一般に、アプリケーションプログラムはハードディスクドライブ７１０に常駐し、プロセッサ７０５による実行において読み込まれ、また制御される。プログラム及びネットワーク７２０からフェッチした任意のデータの中間記憶(intermediate storage)は、半導体メモリ７０６を用いて、おそらくはハードディスクドライブ７１０とともに用いて達成することができる。いくつかの例において、アプリケーションプログラムはＣＤ−ＲＯＭ又はフロッピーディスク上にエンコードされ、対応するドライブ７１２又は７１１を介して読み込まれるか、代わりにモデム装置７１６を介してネットワーク７２０からユーザによって読み込まれてユーザに供給されても良い。さらに、ソフトウェアは磁気テープ、ＲＯＭ又はＩＣ、光磁気ディスク、コンピュータモジュール７０１及び他の装置間の無線又は赤外線伝送チャネル、ＰＣＭＣＩＡカード等のコンピュータ読み取り可能なカード及び、電子メール伝送及びウェブサイト等に記録された情報を含むインターネット及びイントラネットからコンピュータシステム７００へロードされても良い。他のコンピュータ読み取り可能な媒体を代わりに用いてもよい。
【００５４】
プリントエンジンをシミュレートする方法はまた、プリントエンジンの機能又は副機能(subfunctions)を実行する１つ又は複数のＩＣ等の専用ハードウェアにおいて実施されても良い。このような専用ハードウェアはグラフィックプロセッサ、ディジタル信号プロセッサ、１つ又は複数のマイクロプロセッサと関連するメモリを含んでよい。
【００５５】
［産業上の用途］
上述の説明から明らかなように、説明された構成はコンピュータ及びデータ処理産業に適用可能である。
【００５６】
上述の説明は本発明の一部の実施形態のみを説明したものであり、本発明の範囲及び精神を離れることなく変形及び／又は変更が可能であって、実施形態は例示的かつ非限定的なものである。
【００５７】
付録Ａ
シミュレータ動作及び機能のテキスト形式例
例：
１６進数で表される、１６バイトから構成されるアプリケーションレイヤパケット
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
データリンクレイヤパケットは１０バイト長であるため、以下の２つのパケットに分割される
[00 11 22 33 44 55 66 77 88 99]  及び  [AA BB CC DD EE FF]
各パケットにヘッダ及びチェックサムを付加
[AA 55 01 0A] [00 11 22 33 44 55 66 77 88 99][45 3A]     及び
[AA 55 02 06] [AA BB CC DD EE FF][A4 F7]
標準的なプロトコルアナライザでの表示はこのようになる
AA 55 01 0A 00 11 22 33 44 55 66 77 88 99 45 3A AA 55 02 06 AA BB CC DD EE FF A4 F7
パケット間に切れ目がないので、混乱しやすい
【００５８】
デバッグレベル５が選択されると、表示はこのようになる
[AA 55 01 0A] [00 11 22 33 44 55 66 77 88 99][45 3A]  (ヘッダ及びチェックサムを有するリンクパケット１)
［００  １１  ２２  ３３  ４４  ５５  ６６  ７７  ８８  ９９］  (リンクパケット１)
［ＡＡ  ５５  ０２  ０６］  ［ＡＡ  ＢＢ  ＣＣ  ＤＤ  ＥＥ  ＦＦ］［Ａ４  Ｆ７］  (ヘッダ及びチェックサムを有するリンクパケット２)
［ＡＡ  ＢＢ  ＣＣ  ＤＤ  ＥＥ  ＦＦ］  (リンクパケット２)
［００  １１  ２２  ３３  ４４  ５５  ６６  ７７  ８８  ９９  ＡＡ  ＢＢ  ＣＣ  ＤＤ  ＥＥ  ＦＦ］  (アプリケーションパケット)
コマンド #1 + タイムスタンプ
パラメータ #1 = XXX
パラメータ #2 = YYY
パラメータ #3 = ZZZ
パラメータ #4 = ABC
パラメータ #5 = KLM
【００５９】
デバッグレベル４が選択されると、表示はこのようになる
[00 11 22 33 44 55 66 77 88 99]  (リンクパケット１)
［ＡＡ  ＢＢ  ＣＣ  ＤＤ  ＥＥ  ＦＦ］  (リンクパケット２)
［００  １１  ２２  ３３  ４４  ５５  ６６  ７７  ８８  ９９  ＡＡ  ＢＢ  ＣＣ  ＤＤ  ＥＥ  ＦＦ］  (アプリケーションパケット)
コマンド #1 + タイムスタンプ
パラメータ #1 = XXX
パラメータ #2 = YYY
パラメータ #3 = ZZZ
パラメータ #4 = ABC
パラメータ #5 = KLM
【００６０】
デバッグレベル３が選択されると、表示はこのようになる
[00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF]  (アプリケーションパケット)
コマンド #1 + タイムスタンプ
パラメータ #1 = XXX
パラメータ #2 = YYY
パラメータ #3 = ZZZ
パラメータ #4 = ABC
パラメータ #5 = 600 dpi
【００６１】
デバッグレベル２が選択されると、表示はこのようになる
コマンド #1 + タイムスタンプ
パラメータ #1 = XXX
パラメータ #2 = YYY
パラメータ #3 = ZZZ
パラメータ #4 = ABC
パラメータ #5 = 600 dpi
【００６２】
デバッグレベル１が選択されると、表示はこのようになる
コマンド #1 + タイムスタンプ
【００６３】
そして、デバッグレベル０ではエラー以外何も表示されない
全情報とともにタイムスタンプが表示され、以後の調査のためにログファイルへセーブされる。コードを簡単にするため、行中に現れる実際の順番は交換可能である。
【００６４】
付録Ｂ
0003652307.tif 000002
【００６５】
0003652307.tif 000003
【００６６】
0003652307.tif 000004
【００６７】
0003652307.tif 000005
【００６８】
0003652307.tif 000006
【００６９】
0003652307.tif 000007
【００７０】
付録Ｃ
例示的なシミュレータデータリンクレイヤ表示画面
リンクレイヤ  Wed 20/12/2000 13:19:21.2   2321056423
Ｒｘ：  Ｂｙｔｅｓ  ２１９８    LnkPk 138     Packs 95
Ｔｘ：  Ｂｙｔｅｓ  ２１５０    LnkPk 135     Packs 132
ＤＳＲ  １   CTS 1     DTR 1  RTS 1
５０８１３  Ｔｘ  応答#1. ページID 38  Result OK
５０９９３  Ｔｘ  応答#2. ページID 37  Status 0
51033 Tx 応答#3. ページID 38
５１０６３  Ｒｘ  コマンド#1 ページID = 38
５１０７３  Ｒｘ  コマンド#2 ページID = 39
５１８９３  Ｔｘ  応答#1. ページID 39  ResultOK
５２０７３  Ｔｘ  応答#2. ページID 38  Status 0
５２１１３  Ｔｘ  応答#3. ページID 39
５２１４３  Ｒｘ  コマンド#1 ページID = 39
５２１５３  Ｒｘ  コマンド#2 ページID = 40
５２９７３  Ｔｘ  応答#1. ページID 40  Result OK
５３１５３  Ｔｘ  応答#2. ページID 39  Status 0
５３１９３  Ｔｘ  応答#3. ページID 40
５３２２３  Ｒｘ  コマンド#1 ページID = 40
５３２３３  Ｔｘ  コマンド#2 ページID = 41
５４０５３  Ｔｘ  応答#1. ページID 41  Result OK
５４２３３  Ｔｘ  応答#2. ページID 40  Status 0
５４２７３  Ｔｘ  応答#3. ページID 41
５４３０３  Ｒｘ  コマンド#1 ページID = 41
５４３１４  Ｒｘ  コマンド#2 ページID = 42
５５１３３  Ｔｘ  応答#1. ページID 42  Result OK
５５３１３  Ｔｘ  応答#2. ページID 41  Status 0
５５３５３  Ｔｘ  応答#3. ページID 42
５５３８３  Ｒｘ  コマンド#1 ページID = 42
５６３９３  Ｔｘ  応答#2. ページID 42  Status 0
５６４２３  Ｒｘ  コマンド#3 ページID = 42
【００７１】
付録Ｄ
他のシミュレータ表示画面の例
データリンクレイヤ画面
この画面は低レベル通信に関する全ての結果を取り扱う。
非スクロール領域５００に、バイト数、送受信されたリンクレイヤパケット及びアプリケーションレイヤパケット等の事項を表示する。また、この画面はフロー制御ライン及びモデム制御ラインのステータスも表示する。
キーボードがモニタモード、すなわちパケットへの自動応答又はパケットの手動伝送のオン／オフを行う。
【００７２】
アプリケーションレイヤ画面
非スクロール領域５００はデータリンクレイヤ画面と同様の表示を行う。
画面は依然として通信を処理するが、異なるキーストロークとともに異なるパケットをコントローラへ送信する。例えば、
I = 応答 #1
Ｍ  ＝  応答 #2
Ｎ  ＝  応答 #3
Ｅ  ＝  応答 #4
等...
Ｄ／ｄ  ＝  図５に関連して説明され、擬似コード例によって例示される、通信のためのデバッグレベル上昇／低下
【００７３】
ステータス設定画面
この画面は時間及び、ステータス値が入力された際のユーザ入力を除き、非スクロール領域５００に表示すべき物があまり無い。
一部のパケット共にコントローラへ返送される以下のステータス値は、この画面モードに設定される。
g = 応答 #1
ｗ  ＝  応答 #2
ｏ  ＝  応答 #3
ｓ  ＝  応答 #4
【００７４】
ファイル及びエラー画面
以下の機能がこのモードで利用可能である。
f    （最新の要素を読見込み可能とするために）ログファイルを消去する
r = 応答#1
ｃ／Ｃ    応答#2の前／後にページキャンセルを導入
j/J    応答#3の前／後にジャムを導入
e      応答#4を送信
【００７５】
ページ保存画面
この画面はコマンドを持たないが、様々なページの状態を非スクロール領域５００に表示する。
状態は以下の通り：キャンセル、新規、ピックアップ、ビットマップ処理済み(Bitmap_Done)、印刷中、完了
このモードはシステム内の３ページまでを、そのページＩＤ番号と共に表示する。例えば、
3 ピックアップ
2 ビットマップ処理済み
1 完了
そして、数ミリ秒後に：
4 ピックアップ
3 ビットマップ処理済み
2 完了
【００７６】
コントローラエミュレーション画面
このモードは手動でコントローラコマンドを実際のプリントエンジンへ、あるいはシミュレータ自体の開発中に、シミュレータの振る舞いを実際にテストするためにシミュレータの他のインスタンスへ送信するために使用可能である。このモードはシミュレータ開発のブートストラップ法であり、プリントコントローラそれ自体のための簡単なシミュレータを提供するという更なる利点を有する。
【００７７】
プリントジョブを行うには：
e    コマンド#1 (そして応答#1を待機)
ｖ    コマンド#2 (そして応答#2及び応答#3を待機)
ｐ    コマンド#3 (そして応答#4を待機)
Ｐ    コマンド#4 (オプション)
【図面の簡単な説明】
【図１】開発中の印刷システムのブロック図である。
【図２】プリントエンジンコントローラ及びプリントエンジンシミュレータの詳細を示す図である。
【図３】コントローラ及びプリントエンジン間のパケット化された通信のフラグメントを示す図である。
【図４】プリントエンジンシミュレータの１構成によるシミュレーション手順を示す図である。
【図５】開発者に関心のある階層的な通信エレメントを示す図である。
【図６】疑似静的及び動的データの同時表示を提供する２部構成表示構成を示す図である。
【図７】プロトコル解析モードにおいて用いられるシミュレータの複数利用例を示す図である。
【図８】説明する構成を実施可能な汎用コンピュータを示す図である。
【図１】
0003652307.tif 000008
【図２】
0003652307.tif 000009
【図３】
0003652307.tif 000010
【図４】
0003652307.tif 000011
【図５】
0003652307.tif 000012
【図６】
0003652307.tif 000013
【図７】
0003652307.tif 000014
【図８】
0003652307.tif 000015