(57)【要約】【課題】プリンタ装置のコントローラ部の動作検証を簡易に行う。【解決手段】媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証装置であって、画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行うリードライト処理部と、読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行うエミュレート処理部と、を有する検証装置が提供される。【選択図】図２
2020013243.tif 000002
【特許請求の範囲】
【請求項１】
媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証装置であって、
画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行うリードライト処理部と、
読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行うエミュレート処理部と、
を有する検証装置。
【請求項２】
前記エミュレート処理部は、読み込んだ前記コマンドに従い前記コントローラ部に対する応答を行うまでの時間を前記エンジン部の性能に応じて可変に制御する、
請求項１に記載の検証装置。
【請求項３】
読み込んだ前記コマンドに従いパネルへの表示状態をエミュレートし、エミュレートした前記パネルへの表示状態に応じて前記コントローラ部に対する応答の制御を行う表示処理部を有する、
請求項１又は２に記載の検証装置。
【請求項４】
前記エミュレート処理部は、前記エンジン部の異常状態をエミュレートし、エミュレートした前記エンジン部の異常状態に応じて前記コントローラ部に対する応答の制御を行う、
請求項１〜３のいずれか一項に記載の検証装置。
【請求項５】
媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証方法であって、
画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行い、
読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行う、
処理をコンピュータが実行する検証方法。
【請求項６】
媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証プログラムであって、
画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行い、
読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行う、
処理をコンピュータに実行させる検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、検証装置、検証方法及び検証プログラムに関する。
【背景技術】
【０００２】
プリンタ装置のエンジン部と協働して動作するコントローラ部の動作検証装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１８６６５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コントローラ部の動作検証では、エンジン部とコントローラ部とを協働して動作させるためのインターフェースのハードウェア機構（以下、「メカ部」ともいう。）が必要になる。しかし、コントローラ部の動作検証時にメカ部の開発が完了していない等、メカ部がない状態でコントローラ部の動作検証を行う場合がある。
【０００５】
そこで、１つの側面では、本開示は、プリンタ装置のコントローラ部の動作検証を簡易に行うことを提供する。
【課題を解決するための手段】
【０００６】
１つの実施態様では、媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証装置であって、画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行うリードライト処理部と、読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行うエミュレート処理部と、を有する検証装置が提供される。
【発明の効果】
【０００７】
１つの側面では、本開示は、プリンタ装置のコントローラ部の動作検証を簡易に行うことができる。
【図面の簡単な説明】
【０００８】
【図１】コントローラ部を含むプリンタ装置の構成の一例を示す図。
【図２】一実施形態に係るプリンタ装置の検証装置の機能構成の一例を示す図。
【図３】一実施形態に係る検証装置のハードウェア構成の一例を示す図。
【図４】一実施形態に係るリードライト処理の一例を示すフローチャート。
【図５】一実施形態に係るリードライト処理の一例を示すタイムチャート。
【図６】一実施形態に係るエミュレート処理の一例を示すフローチャート。
【図７】一実施形態に係るエミュレート処理の一例を示すタイムチャート。
【図８】一実施形態に係る表示処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、一実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【００１０】
［はじめに］
はじめに、図１を参照して、コントローラ部を含むプリンタ装置の構成の一例について説明する。プリンタ装置１００は、コントローラ部１１０、Ｉ／Ｏ  ＩＲＱ（interrupt request）１２０、ＦＰＧＡ（Field-programmable gate array）１３０、メカコントローラ１４０、装置パネル１５０及びエンジン部１６０を有する。以下、ＦＰＧＡ１３０、メカコントローラ１４０及び装置パネル１５０を、「メカ部」ともいう。
【００１１】
コントローラ部１１０は、ホストコンピュータのプリンタドライバから送られた印刷元データを出力に適した形式の画像データに変換する。また、コントローラ部１１０は、印刷要求のコマンド等、画像の形成に関するコマンド（命令）を生成する。エンジン部１６０は、コントローラ部１１０からのコマンドに応答し、コントローラ部からの画像データに基づき紙等の媒体に画像を形成する。
【００１２】
コントローラ部１１０とエンジン部１６０の間は、Ｉ／Ｏ  ＩＲＱ１２０を介してメカ部に接続されている。メカコントローラ１４０は、エンジン部１６０に接続され、エンジン制御を行う。また、装置パネル１５０は、ユーザオペレーション制御を行う。かかる構成により、メカ部は、エンジン制御とユーザオペレーション制御とを並行して制御できる。
【００１３】
エンジン制御では、メカコントローラ１４０により通知されるエンジン部１６０の状態（トレイの状態や印刷状態）が監視され、印刷指示が行われる。これらの指示や通知は、Ｉ／Ｏ  ＩＲＱ１２０が割込み制御する入出力（Ｉ／Ｏ）データの読込み（Ｉ／Ｏ  ｒｅａｄ）及び書込み（Ｉ／Ｏ  Ｗｒｉｔｅ）によって行われる。通知は、Ｉ／Ｏ  ＩＲＱ１２０によりイベントとして与えられ、詳細制御は、入出力データの読込みにより判断される。
【００１４】
ユーザオペレーション制御では、装置パネル１５０によるＬＣＤ（liquid crystal display）表示は、ＦＰＧＡ経由の書込み（Ｉ／Ｏ  Ｗｒｉｔｅ）でコマンドを発行することで行われる。またユーザがＫＥＹ入力を行いスイッチＳＷの押下を発生させると、装置パネル１５０によるＫＥＹの取得は、ＦＰＧＡ経由の読込み（Ｉ／Ｏ  ｒｅａｄ）でＫＥＹを読み込むことで行われる。
【００１５】
［検証装置］
次に、コントローラ部１１の動作検証を行う検証装置２０の一実施形態について、図２を参照しながら説明する。図２は、一実施形態に係るプリンタ装置１０内の検証装置２０の一例を示す。
【００１６】
プリンタ装置１０には、図１に示したメカ部がなく、図１のメカ部の機能を検証装置２０内のソフトウェアにより実現する。これにより、一実施形態に係る検証装置２０は、例えば、メカ部が開発中等であって動作検証時に使用できない場合、メカ部の動作をソフトウェアにて疑似的に行い、コントローラ部１１の動作検証を行うことができる。
【００１７】
［検証装置の機能構成］
具体的には、検証装置２０は、リードライト処理部１３、エミュレート処理部１４、表示処理部１５及び割込み処理部１８を有する。リードライト処理部１３は、主にＦＰＧＡ１３０の機能をソフトウェアにて実現する。エミュレート処理部１４は、主にメカコントローラ１４０の機能をソフトウェアにて実現する。表示処理部１５は、主に装置パネル１５０の機能をソフトウェアにて実現する。これにより、プリンタ装置１０のメカ部がなくても、プリンタ装置１０のコントローラ部１１の動作を検証することができる。
【００１８】
プリンタ装置１０内には、メカ部の機能を実現する上記ソフトウェアをＯＳ管理下に別スレッドとして配置させる。つまり、リードライト処理部１３及びエミュレート処理部１４と、リードライト処理部１３及び表示処理部１５とを別スレッドとして配置させる。よって、検証装置２０が行うコントローラ部１１の動作検証には、リードライト処理部１３及びエミュレート処理部１４が行うエンジン制御についての検証と、リードライト処理部１３及び表示処理部１５が行うユーザオペレーション制御についての検証がある。
【００１９】
コントローラ部１１は、例えば、印刷の対象となる画像データと画像データの形成に関するコマンドを生成する。生成された画像データ及びコマンドは、共有メモリ１２に一時的に保存される。
【００２０】
リードライト処理部１３は、共有メモリ１２のアクセス（データの読込み、書込み）、通知（プリンタ装置１０のＯＳ内のメッセージ発行）を行う。リードライト処理部１３は、通知内容に従い、共有メモリ１２の更新、エミュレート処理部１４又は表示処理部１５へのアクション要求の通知を行う。例えば、アクション要求の通知が印刷要求の場合、リードライト処理部１３は、共有メモリ１２に保存された画像データ及びコマンドを読み込み、エミュレート処理部１４に転送する。
【００２１】
リードライト処理部１３からの通知はプリンタ装置１０に実装されるエンジン部（図１参照）への実行コマンド要求に相当する。このため、エミュレート処理部１４は、読み込んだ通知内容（エンジン仕様に応じた内容）に従いエンジン部の状態をエミュレートする。エミュレート処理部１４は、エミュレートしたエンジン部の状態に応じてコントローラ部１１に対する応答の制御を行う。なお、「エンジン部の状態をエミュレートする」とは、エンジン部の状態を時系列に遷移させ、遷移させた状態の変化に伴い発生する様々なエンジン情報をコントローラ部１１へ通知するものである。この通知は、リードライト処理部１３への通知であり、リードライト処理部１３は共有メモリ１２にこのエンジン情報を書き込む。
【００２２】
このとき、エミュレート処理部１４は、共有メモリ１２への書込みの時間制御を可変に行うことができる。エミュレート処理部１４は、エミュレートするエンジン部の処理性能に応じて、コントローラ部１１からの印刷要求のコマンドの読込みからコントローラ部１１に対する応答の書込みまでの時間を可変に制御する。これにより、想定するエンジン部の処理性能に応じて、応答のタイミングを変えて動作検証をシュミレートできる。これにより、実際のプリンタ装置を使用した動作検証においても再現が難しい性能評価等を含むエンジン部の状態を再現できる。
【００２３】
エミュレート処理部１４には、ユーザインターフェース（入力手段）としてコンソール１６が接続されている。ユーザがコンソール１６を使用して動作検証に使用するＫＥＹ入力を行うと、エミュレート処理部１４はＫＥＹを取得し、リードライト処理部１３を経由してコントローラ部１１へ通知される。例えば、トレイオープン（Ｔｒａｙ  Ｏｐｅｎ）、用紙ＪＡＭ、トナー切れ等の異常状態はこのＫＥＹ入力で自由に設定し、コントローラ部１１へ通知することが可能である。これにより、エミュレート処理部１４は、様々なエンジン部の状態（正常及び異常状態）を設定し、設定した状態に応じたコントローラ部１１の動作検証を行うことで、様々な印刷状態（正常及び異常状態）に応じたテストパターンの生成が可能となる。以上の動作により、エンジン制御を疑似的に実現できる。
【００２４】
また、画像データの印字結果を確認するために、実際にはエンジン部へ転送される画像のｂｉｔイメージを、ｂｉｔＭａｐ  Ｆｉｌｅとして出力することが可能である。この出力機能は、コンソール１６によりオン・オフの設定が可能である。この機能をオンに設定すると、実際に画像を印刷しなくても、表示処理部１５によって描画結果をＷＥＢ−ＵＩアプリを用いてＰＣ等の端末上で確認できる。また、表示処理部１５は、エミュレートしたエンジン部の状態（印刷待機、印刷実行等）を表示する。
【００２５】
リードライト処理部１３から表示処理部１５への通知は、ＬＣＤへの表示要求のコマンドに相当するため、表示処理部１５は、その通知内容（パネル仕様に応じた内容）に従い、ＬＣＤへのパネル表示をエミュレートする。なお、「パネル表示をエミュレートする」とは、ＬＣＤへ表示する画像データ（ｂｉｔイメージ）をスタック（一時的に任意のメモリ領域に保存）し、ＬＣＤへの表示の通知に応じて表示データとしてｂｉｔＭａｐ  Ｆｉｌｅとして保存することをいう。ユーザは、このｂｉｔＭａｐ  ＦｉｌｅをＰＣ上で参照することで表示内容を確認できる。また、ユーザがリアルタイムに内容を確認できるように、ＷＥＢ−ＵＩアプリを利用してリアルタイムにｂｉｔＭａｐ  Ｆｉｌｅの内容をパネル表示させ、当該パネル表示により形成する画像を可視化させてもよい。なお、ＷＥＢ−ＵＩアプリによっても、所定のボタンの押下によって表示処理部１５への通知を可能としており、ＷＥＢ−ＵＩ上の画面イメージをそのままパネルイメージとして活用できる。
【００２６】
また、パネル表示に関するＫＥＹ入力については、エミュレート処理部１４と同様に、ユーザがコンソール１６を使用してＫＥＹ入力を行うとこれに応じて、入力されたＫＥＹが、リードライト処理部１３を経由してコントローラ部１１へ通知される。以上の動作により、ユーザインターフェース制御を疑似的に実現できる。
【００２７】
割込み処理部１８は、共有メモリ１２に保存されたデータの読込み又は書込みを要求する割込処理を実行する。かかる割込に応じてリードライト処理部１３は、共有メモリ１２から所定のデータを読込むか又は共有メモリ１２へ所定のデータを書込む。
【００２８】
かかる構成により、メカ部のない状態のプリンタ装置１０であっても、コントローラ部１１の動作評価を、一実施形態にかかる検証装置２０により疑似的に行う仕組みが構築される。
【００２９】
［検証装置のハードウェア構成］
次に、検証装置２０のハードウェア構成について、図３を参照しながら説明する。検証装置２０は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、入出力装置１０４及び表示装置１０５を有し、それぞれがバスＢによって相互に接続されている。
【００３０】
ＲＯＭ１０２は、電源を切っても内部データを保持することができる不揮発性の半導体メモリである。ＲＯＭ１０２には、基本プログラム及びデータが格納されている。ＲＡＭ１０３は、データを一時保持する揮発性の半導体メモリであり、例えば、検証プログラムを保持してもよい。ＣＰＵ１０１は、ＲＯＭ１０１及びＲＡＭ１０２に記憶されている基本プログラム、検証プログラム及び各種データを読み出し、装置全体の基本処理、リードライト処理、エミュレート処理、表示処理を実行することで、装置全体の制御や搭載機能を実現する。
【００３１】
入出力装置１０４は、検証装置２０への各操作を入出力するために用いられる。表示装置１０５は、ＬＣＤ等のディスプレイを含み、画像データや各種の処理結果を表示する。
【００３２】
なお、図２に示す検証装置２０はソフトウェアの機能に着目したブロック図を描いており、これらの機能ブロックで示した各部のソフトウェアを実行するプロセッサはハードウェアである。例えば、リードライト処理部１３、エミュレート処理部１４、表示処理部１５、割込み処理部１８の各機能は、検証プログラムをＣＰＵ１０１に実行させることでＣＰＵ１０１がリードライト処理、エミュレート処理、表示処理の各処理を実行することにより実現される。表示処理の結果は、表示装置１０５に表示してもよい。リードライト処理部１３の機能は、入出力装置１０４により実現してもよい。
【００３３】
［リードライト処理］
次に、一実施形態に係るリードライト処理の一例について図４及び図５を参照して説明する。図４は、一実施形態に係るリードライト処理の一例を示すフローチャートである。図５は、一実施形態に係るリードライト処理の一例を示すタイムチャートである。本処理では、Ｉ／Ｏデータのリードライトを制御を疑似的に実行する。
【００３４】
図４のリードライト処理が開始されると、リードライト処理部１３は、共有メモリ１２に一時保存されたデータの読込み又は書込みの通知を取得する（Ｓ１０）。図５のタイムチャートの例では、コントローラ部１１からＩ/Ｏのリードライト部を介して画像データや印刷要求のコマンド等が共有メモリ１２に書き込まれる（図５のＷｒｉｔｅ）。検証装置２０のリードライト処理部１３は、共有メモリ１２に書き込まれた画像データやコマンドを取得する（図５のＧＥＴ）。
【００３５】
図４に戻り、次に、リードライト処理部１３は、通知を解析し、通知内容を判定する（Ｓ１２）。リードライト処理部１３は、通知内容が書込み（Ｗｒｉｔｅ）の通知であると判定すると、共有メモリ１２の制御を行う（Ｓ１４）。共有メモリ１２の制御としては、読込みモード（Read Only Mode）の場合には書込み前の値に書き戻し、セットクリアモード（Set Clear Mode）の場合には書込み前の値に書き戻して該当箇所の要因をクリアすることが挙げられる。また、以降の処理は、書き戻す前の値で実行される。
【００３６】
次に、リードライト処理部１３は、書込み通知の内容を分析する（Ｓ１６）。分析した結果、リードライト処理部１３は、書込み通知の内容がエンジン制御の疑似処理であると判定すると、何も処理しないことを共有メモリ１２に書込み（Ｓ１８）、エミュレート処理部１４へデータ受信を通知し（Ｓ２０）、本処理を終了する。
【００３７】
Ｓ１６において分析した結果、リードライト処理部１３は、書込み通知の内容が表示制御の疑似処理であると判定すると、何も処理しないことを共有メモリ１２に書込み（Ｓ２２）、表示処理部１５へデータ受信を通知し（Ｓ２４）、本処理を終了する。
【００３８】
図５において、書込み通知に対してリードライト処理部１３からエミュレート処理部１４へデータ受信が通知されると、所定のタイミングにエミュレート処理部１４が、エンジン部の状態を示す情報（メカ情報）を共有メモリ１２に設定する（図５のＳＥＴ）。
【００３９】
割込み処理部１８が、所定のタイミングに割込みを発生させることで、リードライト処理部１３がコントローラ部１１から読込みの通知を取得する。これにより、共有メモリ１２内の情報が、リードライト処理部１３により読み込まれる（図５のＲｅａｄ→ＧＥＴ）。
【００４０】
図４に戻り、Ｓ１２において、リードライト処理部１３は、通知内容が読込み（Ｒｅａｄ）の通知であると判定すると、共有メモリ１２を制御する（Ｓ２６）。共有メモリ１２の制御としては、リードクリアモード（Read Clear Mode）の場合には該当箇所の要因をクリアすることが挙げられる。また、以降の処理は、書き戻す前の値で実行される。
【００４１】
次に、リードライト処理部１３は、読込み通知の内容を分析する（Ｓ２８）。分析した結果、リードライト処理部１３は、エンジン制御の疑似処理であると判定すると、エミュレート処理部１４へデータの送信完了を通知し（Ｓ３０）、本処理を終了する。Ｓ１６において分析した結果、リードライト処理部１３は、表示制御の疑似処理であると判定すると、表示処理部１５へデータの送信完了を通知し（Ｓ３２）、本処理を終了する。
【００４２】
［エミュレート処理］
次に、一実施形態に係るエミュレート処理の一例について図６及び図７を参照して説明する。図６は、一実施形態に係るエミュレート処理の一例を示すフローチャートである。図７は、一実施形態に係るエミュレート処理の一例を示すタイムチャートである。本処理では、エンジン制御を疑似的に実行する。
【００４３】
図６のエミュレート処理が開始されると、エミュレート処理部１４は、制御情報の初期化及びユーザインターフェース用領域の初期化を行う（Ｓ４０）。次に、エミュレート処理部１４は、通知を解析し、通知内容を判定する（Ｓ４２）。エミュレート処理部１４は、通知内容がデータ受信通知又はデータ送信完了通知のいずれかであると判定すると、通知された受信データ又は送信完了データに含まれるコマンドの内容を分析する（Ｓ４４）。
【００４４】
エミュレート処理部１４は、コマンドの内容が「エンジン始動」であると判定すると、Ｓ４６に進む。エミュレート処理部１４は、コマンドの内容が「印刷情報設定」であると判定すると、Ｓ４８に進む。エミュレート処理部１４は、コマンドの内容が「印刷（要求又は停止）」であると判定すると、Ｓ５０に進む。
【００４５】
エミュレート処理部１４は、コマンドの内容が「エンジン始動」の場合、エンジン部の状態（メカ部の疑似状態）を印刷待機（ＳＴＡＮＤＢＹ）から印刷準備完了（ＲＥＡＤＹ）へ遷移させ（Ｓ４６）、本処理を終了する。
【００４６】
エミュレート処理部１４は、コマンドの内容が「印刷情報設定」の場合、印刷情報を共有メモリ１２に保存させ（Ｓ４８）、本処理を終了する。印刷情報はエンジン部の仕様により定められるが、印刷情報の保存の一例としては８ページ分の印刷用の画像データの一時保存が挙げられる。
【００４７】
エミュレート処理部１４は、コマンドの内容が「印刷」の場合、印刷要求又は印刷停止のいずれかを判定する（Ｓ５０）。エミュレート処理部１４は、印刷停止であると判定すると、印刷実行を停止し（Ｓ６２）、本処理を終了する。エミュレート処理部１４は、印刷要求であると判定すると、エンジン部の状態を印刷準備完了（ＲＥＡＤＹ）から印刷実行（Ｒｕｎｎｉｎｇ）へ遷移させる（Ｓ５２）。次に、エミュレート処理部１４は、エンジン部の状態をエミュレーションする（Ｓ５４）。
【００４８】
エミュレート処理部１４は、エンジン部の異常状態をエミュレーションするか否かを判定する（Ｓ５６）。エミュレート処理部１４は、エンジン部の異常状態をエミュレーションしないと判定すると、エンジン部の正常状態のシーケンス状態を以下のように変化させる（Ｓ５８）。
シーケンス状態：印刷準備完了→給紙開始、給紙終了→描画開始、描画終了→排紙
また、エミュレート処理部１４は、想定するエンジン部の性能に応じた時間間隔で上記シーケンス状態を順次遷移させて通知し（Ｓ５８）、本処理を終了する。
【００４９】
エミュレート処理部１４は、エンジン部の異常状態をエミュレーションすると判定した場合、エンジン部のシーケンス状態に異常状態を含めて変化させる（Ｓ６０）。例えば、エンジン部のシーケンス状態を以下のように変化させる。ここでは、トレイオープンの状態が、異常状態である。ただし、異常状態はこれに限られず、用紙ＪＡＭ、トナー切れ等の異常状態を適宜設定できる。
シーケンス状態：印刷準備完了→給紙開始、給紙終了→描画開始→トレイオープン
そして、エミュレート処理部１４は、想定するエンジン部の性能に応じた時間間隔で上記シーケンス状態を順次遷移させて通知し（Ｓ６０）、本処理を終了する。
【００５０】
Ｓ４２において、エミュレート処理部１４は、通知内容がタイムアウト通知であると判定すると、シーケンス状態を現時点の状態に応じた次の状態に変化させて通知し（Ｓ６４）、本処理を終了する。
シーケンス状態：現時点の状態を左に示す。
印刷待機のとき→印刷準備完了へ遷移（エンジン始動を条件）
印刷準備完了のとき→印刷実行へ遷移（印刷開始を条件）
印刷実行のとき→給紙状態へ遷移し、給紙の開始の通知（データ送信開始）
給紙状態のとき→描画状態へ遷移し、イメージデータの転送依頼の通知（データ送信開始）
描画状態のとき→排紙状態へ遷移し、排紙の通知（データ送信開始）
排紙状態のとき→残りのイメージデータの印刷要求がある場合、印刷実行へ遷移（継続印刷）、残りのイメージデータの印刷要求がない場合、印刷準備完了へ遷移（印刷停止）
以上に説明したエミュレーション処理では、印刷シーケンスを任意の時間間隔で動作させることで、エンジン部の性能に応じて実際にメカ部を動作させる場合と同等のタイミングで印刷動作を実現し、その動作検証を行うことができる。
【００５１】
例えば、想定するエンジン部の性能に応じた時間間隔でシーケンス状態を変える一例を、図７を参照して説明する。図７は、一実施形態に係るエミュレート処理の一例を示すタイムチャートである。
【００５２】
コントローラ部１１がエンジン始動の状態（Ｃ１）のコマンドを生成すると、エミュレート処理部１４は、シーケンス状態を印刷待機（Ｕ１）から印刷準備完了（Ｕ２）へ遷移させる。
【００５３】
次に、コントローラ部１１が印刷情報の設定コマンド（Ｃ２）を生成すると、エミュレート処理部１４は、シーケンス状態を印刷準備完了（Ｕ２）から印刷実行（Ｕ３）へ遷移させる。
【００５４】
次に、コントローラ部１１が印刷要求（Ｃ３）のコマンドを生成すると、エミュレート処理部１４は、エンジン部の性能に応じた時間Ｔ１の経過後、シーケンス状態を印刷実行から給紙状態（Ｕ４）へ遷移させ、リードライト処理部１３を介して給紙の開始を通知（Ｕ５）する。
【００５５】
時間Ｔ２の経過後、エミュレート処理部１４は、シーケンス状態を、給紙状態から描画状態（Ｕ６）へ遷移させ、ビットマップに変換されたイメージデータの転送依頼を通知（Ｕ７）し、コントローラ部１１へイメージデータを送信する。これにより、コントローラ部１１は、共有メモリ１２に保存されたイメージデータの転送（Ｃ４）を開始する。
【００５６】
時間Ｔ３の経過後、エミュレート処理部１４は、シーケンス状態を、描画状態から排紙状態（Ｕ８）へ遷移させ、排紙の通知（Ｕ９）を行う。排紙完了時に給紙要求が待機されていれば、印刷実行（印刷継続）の状態（Ｕ３）に推移し、給紙要求が待機されていなければ、印刷を停止し、印刷準備完了状態（Ｕ２）に遷移する。
【００５７】
以上に説明したエミュレーション処理では、印刷シーケンスを任意の時間間隔Ｔ１、Ｔ２、Ｔ３、Ｔ４で動作させる。例えば、印刷要求（Ｃ３）から給紙開始通知（Ｕ５）までの印刷準備時間Ｔ１を、エンジン部の性能に応じて実際のメカ部の動任と同等に設定できる。時間間隔Ｔ２、Ｔ３、Ｔ４も同様に、エンジン部の性能に応じて実際のメカ部の動任と同等に設定できる。これにより、Ｔ１〜Ｔ４の合計時間を印刷時間とし、Ｔ１〜Ｔ４を実際にメカ部を動作させる場合と同等のタイミングで制御して印刷動作を実現し、その動作検証を行うことができる。
【００５８】
例えば、メカ動作時間（Ｔ１〜Ｔ４）が、Ｔ１＝３０ｍｓ、Ｔ２＝５０ｍｓ、Ｔ３＝１２００ｍｓ（４５ｐｐｍ（Page Par Minutes）の印刷性能を持つプリンタの場合）、Ｔ４＝５０ｍｓとする。この場合、Ｔ１〜Ｔ４の合計時間１３３０ｍｓを印刷時間とし、Ｔ１〜Ｔ４を上記タイミングで制御して印刷動作を実現することで、エンジン部の性能に応じて動作検証を行うことができる。
【００５９】
特に、Ｔ３の描画時間を短くすることで、任意の速度における連続印刷が可能か否かをの検証を行うことができる。例えば、上記タイミングで印刷動作を行い、印刷要求（Ｃ３）とイメージ転送開始（Ｃ４）の通知に応じて印刷が連続的に実行できることを検証できたとする。この場合、プリンタ装置１０が、４５ｐｐｍの印刷性能を有していることを検証できる。この場合、プリンタ装置１０が４５ｐｐｍの印刷性能を有していることを通知してもよい。
【００６０】
また、上記タイミングで印刷動作を行い、印刷要求（Ｃ３）とイメージ転送開始（Ｃ４）の通知に応じて印刷が連続的に実行できないことを検証できたとする。この場合、動作検証のプリンタ装置１０が限界性能に達し、４５ｐｐｍの印刷性能を有していないことを検証できる。この場合、プリンタ装置１０が限界性能に達した又は４５ｐｐｍの印刷性能を有していないことを通知してもよい。
【００６１】
［表示処理］
最後に、一実施形態に係る表示処理の一例について図８を参照して説明する。図８は、一実施形態に係る表示処理の一例を示すフローチャートである。本処理では、ユーザインターフェース制御を疑似的に実行する。
【００６２】
本処理が開始されると、表示処理部１５は、制御情報の初期化及びユーザインターフェース用領域の初期化を行う（Ｓ７０）。次に、表示処理部１５は、通知を解析し（Ｓ７２）、通知内容がデータ受信通知であると判定すると、データを受信中であるかを判定する（Ｓ７４）。表示処理部１５は、データを受信中であると判定すると、受信しているデータを任意の記憶領域に一時格納する（Ｓ７６）。次に、表示処理部１５は、データ受信のコマンドに従いパネルへの表示状態をエミュレートし、パネル表示の表示内容を「印刷待機→印刷中→印刷待機（又は異常発生（異常状態のエミュレーション時）」に順次遷移させ（Ｓ７８）、本処理を終了する。
【００６３】
Ｓ７４において、表示処理部１５は、データを受信中でないと判定すると、割込み処理部１８は、コントローラ部１１へ割込み処理を行い（Ｓ８０）、データ受信が完了したことを通知し、本処理を終了する。
【００６４】
Ｓ７２において、通知内容がデータ送信完了の通知であると判定されると、割込み処理部１８は、コントローラ部１１へ割込み処理を行い（Ｓ８２）、データ送信が完了したことを通知し、本処理を終了する。
【００６５】
以上に説明したように、一実施形態に係る検証装置２０によれば、メカ部の機能をソフトウェアで実現することで、プリンタ装置１０にメカ部がない場合でも、コントローラ部１１のアプリ層と言われる部分の動作確認を簡易に行うことができる。これにより、メカ部が完成する前に、印刷動作シーケンスの動作検証を疑似的に行うことでプリンタ装置１０に関する問題を早期に発見できる。
【００６６】
さらに、一実施形態に係る検証装置２０によれば、疑似的に印刷の異常状態を発生させることが可能なため、正常時のエンジン部の状態シーケンスでは発生しないエラー時の動作確認が可能になる。また、エンジン部の動作時間（印刷シーケンス時間）を調整可能なため、エンジン部の性能に応じて動作検証を行うことができる。また、コントローラ部１１の性能限界の測定が可能になる。
【００６７】
以上、検証装置、検証方法及び検証プログラムを上記実施形態により説明したが、本開示に係る検証装置、検証方法及び検証プログラムは上記実施形態に限定されるものではなく、本開示の範囲内で種々の変形及び改良が可能である。また、上記実施形態及び変形例が複数存在する場合、矛盾しない範囲で組み合わせることができる。
【００６８】
例えば、上記実施形態に係る検証装置２０の構成は一例であり、本開示の範囲を限定するものではなく、用途や目的に応じて様々なシステム構成例があることは言うまでもない。
【００６９】
以上の説明に関し、更に以下の項を開示する。
（付記１）
媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証装置であって、
画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行うリードライト処理部と、
読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行うエミュレート処理部と、
を有する検証装置。
（付記２）
前記エミュレート処理部は、読み込んだ前記コマンドに従い前記コントローラ部に対する応答を行うまでの時間を前記エンジン部の性能に応じて可変に制御する、
付記１に記載の検証装置。
（付記３）
読み込んだ前記コマンドに従いパネルへの表示状態をエミュレートし、エミュレートした前記パネルへの表示状態に応じて前記コントローラ部に対する応答の制御を行う表示処理部を有する、
付記１又は２に記載の検証装置。
（付記４）
前記エミュレート処理部は、前記エンジン部の異常状態をエミュレートし、エミュレートした前記エンジン部の異常状態に応じて前記コントローラ部に対する応答の制御を行う、
付記１〜３のいずれか一項に記載の検証装置。
（付記５）
媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証方法であって、
画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行い、
読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行う、
処理をコンピュータが実行する検証方法。
（付記６）
読み込んだ前記コマンドに従い前記コントローラ部に対する応答を行うまでの時間を前記エンジン部の性能に応じて可変に制御する、
付記５に記載の検証方法。
（付記７）
読み込んだ前記コマンドに従いパネルへの表示状態をエミュレートし、エミュレートした前記パネルへの表示状態に応じて前記コントローラ部に対する応答の制御を行う、
付記５又は６に記載の検証方法。
（付記８）
前記エンジン部の異常状態をエミュレートし、エミュレートした前記エンジン部の異常状態に応じて前記コントローラ部に対する応答の制御を行う、
付記５〜７のいずれか一項に記載の検証方法。
（付記９）
媒体に画像を形成するエンジン部と協働するコントローラ部の動作検証を行う検証プログラムであって、
画像の形成に関するコマンドを生成する前記コントローラ部からの前記コマンドの読込みと、前記コントローラ部に対する応答の書込みを行い、
読み込んだ前記コマンドに従い前記エンジン部の状態をエミュレートし、エミュレートした前記エンジン部の状態に応じて前記コントローラ部に対する応答の制御を行う、
処理をコンピュータに実行させる検証プログラム。
（付記１０）
読み込んだ前記コマンドに従い前記コントローラ部に対する応答を行うまでの時間を前記エンジン部の性能に応じて可変に制御する、
付記９に記載の検証プログラム。
（付記１１）
読み込んだ前記コマンドに従いパネルへの表示状態をエミュレートし、エミュレートした前記パネルへの表示状態に応じて前記コントローラ部に対する応答の制御を行う、
付記９又は１０に記載の検証プログラム。
（付記１２）
前記エンジン部の異常状態をエミュレートし、エミュレートした前記エンジン部の異常状態に応じて前記コントローラ部に対する応答の制御を行う、
付記９〜１１のいずれか一項に記載の検証プログラム。
【符号の説明】
【００７０】
１０  プリンタ装置
１１  コントローラ部
１２  共有メモリ
１３  リードライト処理部
１４  エミュレート処理部
１５  表示処理部
１６  コンソール
１８  割込み処理部
２０  検証装置
【図１】
2020013243.tif 000003
【図２】
2020013243.tif 000004
【図３】
2020013243.tif 000005
【図４】
2020013243.tif 000006
【図５】
2020013243.tif 000007
【図６】
2020013243.tif 000008
【図７】
2020013243.tif 000009
【図８】
2020013243.tif 000010