(57)【要約】【課題】単位時間当たりで送受信できる情報量を多くし、パケットの途中で実行不可能なコマンドがコントローラ部から送信された場合であっても、ユーザの意図しない動作を画像形成部が行わないように動作する画像形成装置を提供する。【解決手段】エンジン制御部１６０２が受信したコマンドパケット１７１５の途中に実行不可能なコマンドが含まれていた場合（Ｓ１０６  Ｙｅｓ）、以降のコマンドに対して実行せずに実行不可能エラーステータスを返信する（Ｓ１０９〜Ｓ１１１）。【選択図】図１８
2009288852.tif 000002
【特許請求の範囲】
【請求項１】
画像信号に応じた画像を形成する画像形成部を制御するエンジン制御部と、前記エンジン制御部と通信可能に接続されたコントローラ部と、を備え、前記エンジン制御部は、前記画像信号を受信する第１の通信制御部を有し、前記コントローラ部は、前記第１の通信制御部に前記画像信号を送信する第２の通信制御部を有し、前記第１の通信制御部と前記第２の通信制御部との間で通信を行う画像形成装置であって、
前記第２の通信制御部は、少なくとも１つ以上のコマンドデータを収めた第１のパケットを前記第１の通信制御部へ送信し、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のステータスデータが収められた第２のパケットを前記第１の通信制御部から受信し、
前記第１の通信制御部は、前記第２の通信制御部から送信された前記第１のパケットを受信し、前記第１のパケットに収められた前記少なくとも１つ以上のコマンドデータを取り出し、
前記エンジン制御部は、前記第１の通信制御部により取り出された前記少なくとも１つ以上のコマンドデータに対応するコマンドを所定の順序で実行し、前記少なくとも１つ以上のコマンドデータに対する前記少なくとも１つ以上のステータスデータを生成するコマンド実行部を有し、
前記第１の通信制御部は、前記コマンド実行部により生成された前記少なくとも１つ以上のステータスデータを前記第２のパケットに収めて前記第２の通信制御部へ送信することを特徴とする画像形成装置。
【請求項２】
前記コマンド実行部は、前記少なくとも１つ以上のコマンドデータを受信した順序で、前記コマンドデータに対応するコマンドを実行することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記第１の通信制御部と前記第２の通信制御部は、互いに調歩同期式のシリアル通信で通信を行うことを特徴とする請求項１又は２に記載の画像形成装置。
【請求項４】
前記コマンド実行部は、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のコマンドを順次実行する途中で、実行することが不可能なコマンドが現れた場合、前記実行することが不可能なコマンドの後に続くコマンドを実行しないことを特徴とする請求項１乃至３のいずれかに記載の画像形成装置。
【請求項５】
前記コマンド実行部は、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のコマンドを順次実行する途中で、実行することが不可能なコマンドが現れた場合、前記実行することが不可能なコマンド及び前記実行することが不可能なコマンドの後に続くコマンドに対してコマンドを実行することができなかったことを表すエラーステータスデータを生成することを特徴とする請求項１乃至４のいずれかに記載の画像形成装置。
【請求項６】
前記コマンド実行部は、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のコマンドを順次実行する途中で、実行することが不可能なコマンドが現れた場合、前記実行することが不可能なコマンドに対してコマンドを実行することができなかったことを表すエラーステータスデータを生成し、前記実行することが不可能なコマンドの後に続くコマンドに対して前記実行することが不可能なコマンドがあったために前記実行することが不可能なコマンドの後に続くコマンドを実行しなかったことを表すステータスデータを生成することを特徴とする請求項１乃至４のいずれかに記載の画像形成装置。
【請求項７】
前記コマンド実行部は、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のコマンドを順次実行する途中で、実行することが不可能なコマンドが現れた場合、前記実行することが不可能なコマンドの後に続くコマンドのうち、前記実行することが不可能なコマンドと関連のあるコマンドを実行せず、前記実行することが不可能なコマンドと関連のないコマンドを実行することを特徴とする請求項１乃至３のいずれかに記載の画像形成装置。
【請求項８】
前記コマンド実行部は、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のコマンドを順次実行する途中で、実行することが不可能なコマンドが現れた場合、前記実行することが不可能なコマンド及び前記実行することが不可能なコマンドの後に続くコマンドのうち、前記実行することが不可能なコマンドと関連のあるコマンドに対してコマンドを実行することができなかったことを表すエラーステータスデータを生成し、前記実行することが不可能なコマンドと関連のないコマンドに対してエラーではないステータスデータを生成することを特徴とする請求項１乃至３、７のいずれかに記載の画像形成装置。
【請求項９】
前記コマンド実行部は、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のコマンドを順次実行する途中で、実行することが不可能なコマンドが現れた場合、前記実行することが不可能なコマンドに対してコマンドを実行することができなかったことを表すエラーステータスデータを生成し、
前記実行することが不可能なコマンドの後に続くコマンドのうち、前記実行することが不可能なコマンドと関連のあるコマンドに対して前記実行することが不可能なコマンドがあったために前記実行することが不可能なコマンドと関連のあるコマンドを実行しなかったことを表すステータスデータを生成し、前記実行することが不可能なコマンドと関連のないコマンドに対してエラーではないステータスデータを生成することを特徴とする請求項１乃至３、７のいずれかに記載の画像形成装置。
【請求項１０】
前記コマンドには、前記画像形成部の状態を調べるためのステータス要求コマンドと前記画像形成部へ所定の動作を行うように指令する実行コマンドとが含まれ、
前記ステータス要求コマンドは、前記実行することが不可能なコマンドと関連のないコマンドであることを特徴とする請求項７乃至９のいずれかに記載の画像形成装置。
【請求項１１】
前記コマンドには、不揮発性メモリのデータを読み出し又は書き込みする実行コマンドが含まれ、
前記不揮発性メモリのデータを読み出し又は書き込みする実行コマンドは、前記実行することが不可能なコマンドと関連のないコマンドであることを特徴とする請求項７乃至９のいずれかに記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置に関するものであり、特にビデオコントローラ制御部とエンジン制御部とが分離されたプリンタ等の画像形成装置に関するものである。
【背景技術】
【０００２】
画像形成装置において、ビデオコントローラ制御部とエンジン制御部との間のインターフェースはビデオインターフェースと呼ばれる（例えば、特許文献１、２参照）。なお、ここでいう画像形成装置は、特にビデオコントローラ制御部（プリンタコントローラ、ビデオコントローラ、コントローラ部、コントローラ等と称されることもある）とエンジン制御部とが分離され、通信可能に接続されたプリンタ等の画像形成装置である。ビデオコントローラ制御部は、例えばホストコンピュータ等から受信した画像情報をビットマップデータに変換して画像信号を生成しエンジン制御部に送信する。画像信号を受信したエンジン制御部は、画像形成部（プリンタエンジン、エンジン、エンジン部とも称される）を制御することによりその画像信号に基づいて記録媒体上に画像形成を行う。
【０００３】
＜画像形成装置の各部の説明＞
図２３は、従来の画像形成装置をブロック図で示したものである。
【０００４】
１９０１はホストコンピュータとの間での通信と画像データの受信、及び受け取った画像データをプリンタが印刷可能な情報に展開すると共に、後述するエンジン制御部との間で信号のやり取り、及びシリアル通信を行うコントローラ制御部である。１９０２はコントローラ制御部１９０１との間で信号のやり取り、シリアル通信を介してプリンタエンジンの各ユニットの制御を行うエンジン制御部である。１９０３はカセット内の用紙サイズを検出しエンジン制御部１９０２へ情報を伝達する用紙サイズ検出部である。１９０４はカセット、手差し、オプションカセット、封筒フィーダの各給紙口の紙有無を検出し、エンジン制御部１９０２へ情報を伝達する給紙部紙有無検出部である。１９０５はオプションカセット、封筒フィーダの各オプションの接続状況を確認するためのオプション有無検出部、１９０６は用紙搬送制御を行う用紙搬送制御部である。１９０７はスキャナモータ、レーザ等の光学系の制御を行う光学系制御部、１９０８は定着器の温度制御、定着器の異常検出等を行う定着器温度制御部である。１９０９はオプションカセット、封筒フィーダの各オプションへの動作指示を行うオプション制御部、１９１０はレジスト、排紙、両面、反転など搬送路内の紙有無を検出するためのセンサ入力部である。
【０００５】
＜コントローラ制御部１９０１とエンジン制御部１９０２との間の信号について＞
コントローラ制御部１９０１とエンジン制御部１９０２との間の信号について説明する。１９１１はコントローラ制御部１９０１がエンジン制御部１９０２と通信できる状態にあることを示す／ＣＰＲＤＹ信号、１９１２はエンジン制御部１９０２がコントローラ制御部１９０１と通信できることを示す／ＰＰＲＤＹ信号である。１９１３はエンジン制御部１９０２がプリントできるスタンバイ状態にあることを示す／ＲＤＹ信号である。１９１４はエンジン制御部１９０２がコントローラ制御部１９０１に出力する垂直同期信号である／ＴＯＰ信号、１９１５はエンジン制御部１９０２がコントローラ制御部１９０１に出力する水平同期信号である／ＢＤ信号である。１９１６はシリアル通信のための同期クロック信号である／ＳＣＬＫ信号、１９１７はコントローラ制御部１９０１がエンジン制御部１９０２に指示をするためのコマンド信号である／ＣＭＤ信号である。１９１８はコマンド出力のためのストローブ信号である／ＣＢＳＹ信号、１９１９はコントローラ制御部１９０１からのコマンドに対して出力するエンジン内部のステータスを示す／ＳＴＳ信号、１９２０はステータス出力のための／ＳＢＳＹ信号である。
【０００６】
＜シリアル通信のタイミングチャート＞
図２４に従来の画像形成装置におけるシリアル通信のタイミングチャートを示す。コントローラ制御部１９０１のコマンドが出力されると、それに対応するステータスが１対１の関係でエンジン制御部１９０２から出力される。このコマンドには、プリンタエンジンのステータス（状態）を調べるためのステータスリクエストコマンドと、プリンタエンジンへ何らかの動作（例えば、プリントを実行させるような所定の動作）を行うように指令する実行コマンドが含まれている。また、同期クロック信号である／ＳＣＬＫ信号１９１６は、コントローラ制御部１９０１から出力される。ここでは、シリアル通信は１６ビット長である。
【０００７】
このような画像形成装置の通信においては、エンジン制御部１９０２はコントローラ制御部１９０１からコマンドを受信したか否かを所定時間毎にチェックしている。そして、コマンドを受信していればコマンド処理の実行を開始し、コマンドに対応した結果ステータスを返信する。従来の画像形成装置においては、図２４に示す時間ＴＢに約１０ｍｓの時間を要していた。ここで時間ＴＢは、エンジン制御部１９０２がコマンドを受信してからエンジン制御部１９０２の図示しないＣＰＵがコマンドを受信したことを認識するまで、及びエンジン制御部１９０２がコマンド処理の実行を開始しステータスを準備するまでの時間である。また、コントローラ制御部１９０１がエンジン制御部１９０２からステータスを受信してから、コントローラ制御部１９０１の図示しないＣＰＵがステータスを受信したことを認識するまでの時間（ＴＤ）として、およそ数ｍｓの時間を要していた。また、コントローラ制御部１９０１からエンジン制御部１９０２へコマンドを送信し始めてから、送信が終了するまでの時間（ＴＡ）としては数十〜数百μｓの時間がかかっていた。同様に、エンジン制御部１９０２からコントローラ制御部１９０１へステータス信号／ＳＹＳ信号を送信し始めてから、送信が終了するまでの時間（ＴＣ）としては数十〜数百μｓの時間がかかっていた。このように、それぞれの処理で時間がかかるために、１つのコマンド・ステータスを通信するのにおよそ十数ｍｓの時間を要していた。
【０００８】
コントローラ制御部１９０１は、／ＣＢＳＹ信号１９１８を“ｌｏｗ”にセットしてから、コントローラ制御部１９０１が出力する／ＳＣＬＫ信号１９１６に同期させて／ＣＭＤ信号１９１７によってエンジン制御部１９０２にコマンドを送出する。一方、このコマンドに対してエンジン制御部１９０２は、／ＳＢＳＹ信号１９２０を“ｌｏｗ”にしコントローラ制御部１９０１に対してステータスが準備できたことを報知する。そして、コントローラ制御部１９０１から出力される／ＳＣＬＫ信号１９１６に乗せて／ＳＴＳ信号１９１９を送出する。
【０００９】
このコントローラ制御部１９０１からのコマンドの一例として、プリントの給紙口を指定するコマンドのビット配置を図２５に示す。また、エンジン制御部１９０２からのステータスの一例として、指示されたプリントの給紙口（被指定給紙口）を返信するステータスのビット配置を図２６に示す。図２６において、ビット長１６ｂｉｔの中で、１ｓｔ  ｂｉｔはコマンドにエラーを検出した場合に、コントローラ制御部１９０１に対してコマンドエラー発生を伝えるためのもの（エラーコード）である。正常時におけるシリアル通信では、このビットは常に“０”になっている。
【特許文献１】特開２０００−１０３５３３号公報
【特許文献２】特開２００５−０８５２２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の画像形成装置においては、以下のような問題があった。
【００１１】
従来の画像形成装置においては、コマンド・ステータスの１回の通信にかかる時間が長く（十数ｍｓ）、単位時間当たりで送受信できる情報量が少なかった。このために、昨今のように画像形成装置の画像形成の能力が向上し、速いスピードで画像形成が行われるようになった際に、エンジン制御部１９０２の制御が難しくなってしまう場合があるという問題があった。また、単位時間で送受信できる情報量が少ないために、次のような問題があった。すなわち、エンジンが持っているフラッシュメモリやＮＶＲＡＭ（Ｎｏｎ  Ｖｏｌａｔｉｌｅ  ＲＡＭ）等、不揮発性メモリのデータの読み出しや書き込みの処理において、たくさんのデータの読み書きを行おうとすると比較的長い時間がかかるという問題があった。画像形成装置のスループット（単位時間あたりのプリント枚数）を向上させても制御を複雑にしないためには、１つのコマンド・ステータスの通信時間を短くする必要がある。また、同様に、エンジンが持っているフラッシュメモリやＮＶＲＡＭのデータの読み出しや書き込みの処理を短時間で行うためには、１つのコマンド・ステータスの通信時間を短くする必要がある。
【００１２】
また、１つのコマンド・ステータスの通信時間を短くするために、複数コマンド・複数ステータスを１つのパケットで送受信する画像形成装置において、下記のような問題があった。
【００１３】
例えば、排紙口指示、給紙口指示、プリントモード指示、プリント実行、のコマンドを１パケットで送信する際、給紙口指示コマンドで、実在しない給紙口（或いは排紙口）を指示された場合、次のような問題があった。すなわち、実在しない給紙口が指示された場合、給紙口指示コマンドに対しては実行せずに実行不可能エラーステータスを返信するものの、プリントモード指示、プリント実行コマンドを実行するため、パケット受信以前に設定されていた給紙口から給紙してしまう。このため、ユーザの意図しない給紙口から給紙されてしまうという問題があった。すなわち、実行不可能なコマンドの後に続くコマンドの中に、エンジンへ所定の動作を行うように指令する実行コマンドが含まれる場合には、このような問題が起こり得る。
【００１４】
本発明は以上の点に着目してなされたものであり、単位時間当たりで送受信できる情報量を多くした画像形成装置を提供することを課題とする。また、パケット内に複数コマンドが含まれ、パケット内の途中で実行不可能なコマンドがコントローラ制御部から送信された場合でも、ユーザの意図しない動作を画像形成部が行わないように動作させる画像形成装置を提供することを課題とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明の画像形成装置は以下のような構成を備える。
【００１６】
（１）画像信号に応じた画像を形成する画像形成部を制御するエンジン制御部と、前記エンジン制御部と通信可能に接続されたコントローラ部と、を備え、前記エンジン制御部は、前記画像信号を受信する第１の通信制御部を有し、前記コントローラ部は、前記第１の通信制御部に前記画像信号を送信する第２の通信制御部を有し、前記第１の通信制御部と前記第２の通信制御部との間でパケット単位のシリアル通信を行う画像形成装置であって、前記第２の通信制御部は、少なくとも１つ以上のコマンドデータを収めた第１のパケットを前記第１の通信制御部へ送信し、前記少なくとも１つ以上のコマンドデータに対応する少なくとも１つ以上のステータスデータが収められた第２のパケットを前記第１の通信制御部から受信し、前記第１の通信制御部は、前記第２の通信制御部から送信された前記第１のパケットを受信し、前記第１のパケットに収められた前記少なくとも１つ以上のコマンドデータを取り出し、前記エンジン制御部は、前記第１の通信制御部により取り出された前記少なくとも１つ以上のコマンドデータに対応するコマンドを所定の順序で実行し、前記少なくとも１つ以上のコマンドデータに対する前記少なくとも１つ以上のステータスデータを生成するコマンド実行部を有し、前記第１の通信制御部は、前記コマンド実行部により生成された前記少なくとも１つ以上のステータスデータを前記第２のパケットに収めて前記第２の通信制御部へ送信することを特徴とする画像形成装置。
【発明の効果】
【００１７】
本発明によれば、１つのパケットに複数のコマンド、及び複数のステータスを収めて送受信するので、単位時間当たりで送受信できる情報量を多くした画像形成装置を提供することができる。
【００１８】
また、パケットの途中で実行不可能なコマンドがコントローラ制御部から送信された場合であっても、ユーザの意図しない動作を画像形成部が行わないように動作させる画像形成装置を提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下本発明を実施するための最良の形態を、実施例により詳しく説明する。
【実施例１】
【００２０】
本発明の実施例１を以下に示す。本実施例の説明では、複数のコマンドを１つのパケットで送信することによって、１つのコマンド・ステータスあたりの通信にかかる時間を短縮することができる画像形成装置について説明する。
【００２１】
図１に本実施例の画像形成装置のコントローラ制御部とエンジン制御部のブロック図を示す。
図２に本実施例の画像形成装置でプリントを行うためにコントローラ制御部とエンジン制御部との通信のタイミングチャートを示す。
図３に本実施例のエンジン制御部の動作を説明するフローチャートを示す。
図４に本実施例のコントローラ制御部からエンジン制御部へ送信されるパケットのうち、コマンド数を送信する１６ビットデータのビット配置を示す。
図５に本実施例のコントローラ制御部からエンジン制御部へ送信される排紙口指定コマンドのビット配置を示す。
図６に本実施例のコントローラ制御部からエンジン制御部へ送信される給紙口指定コマンドのビット配置を示す。
図７に本実施例のコントローラ制御部からエンジン制御部へ送信されるプリントモード指定コマンドのビット配置を示す。
図８に本実施例のコントローラ制御部からエンジン制御部へ送信されるプリント実行コマンドのビット配置を示す。
図９に本実施例のエンジン制御部からコントローラ制御部へ送信されるパケットのうち、ステータス数を送信する１６ビットデータのビット配置を示す。
図１０に本実施例のエンジン制御部からコントローラ制御部へ送信される被指定排紙口ステータスのビット配置を示す。
図１１に本実施例のエンジン制御部からコントローラ制御部へ送信される被指定給紙口ステータスのビット配置を示す。
図１２に本実施例のエンジン制御部からコントローラ制御部へ送信される被指定プリントモードステータスのビット配置を示す。
図１３に本実施例のエンジン制御部からコントローラ制御部へ送信されるプリント実行結果ステータスのビット配置を示す。
図１４に本実施例のエンジン制御部からコントローラ制御部へ送信されるステータスのエラーコードの値と意味の関係を表す表を示す。
【００２２】
＜コントローラ制御部とエンジン制御部の構成＞
図１において、２０１はコントローラ制御部、２０２はエンジン制御部である。ここで、２０３はコントローラ制御部２０１のＣＰＵ、２０４はコントローラ制御部２０１の通信モジュール（第２の通信制御部）、２０５はコントローラ制御部２０１のＲＯＭ、２０６はコントローラ制御部２０１のＲＡＭである。また、２０７はエンジン制御部２０２のＣＰＵ、２０８はエンジン制御部２０２の通信モジュール（第２の通信制御部）、２０９はエンジン制御部２０２のＲＯＭ、２１０はエンジン制御部２０２のＲＡＭである。
【００２３】
次に、２１１はコントローラ制御部２０１の通信モジュール２０４からエンジン制御部２０２の通信モジュール２０８へ同期クロックを送信する／ＳＣＬＫ信号、２１２はコマンドパケットを送信する／ＣＭＤ信号である。また、２１３はコントローラ制御部２０１の通信モジュール２０４からエンジン制御部２０２の通信モジュール２０８へコマンドパケットを送信する際に“ｌｏｗ”レベルにする／ＣＢＳＹ信号である。さらに、２１４はエンジン制御部２０２の通信モジュール２０８からコントローラ制御部２０１の通信モジュール２０４へステータスパケットを送信する／ＳＴＳ信号である。２１５はエンジン制御部２０２の通信モジュール２０８からコントローラ制御部２０１の通信モジュール２０４へパケットを送信する際に“ｌｏｗ”レベルにする／ＳＢＳＹ信号である。
【００２４】
＜シリアル通信のタイミングチャート＞
図２において、３１３はコントローラ制御部２０１からエンジン制御部２０２へ送信されるコマンドパケット（少なくとも１つ以上のコマンドデータを収めた第１のパケット）である。また、３１４はエンジン制御部２０２からコントローラ制御部２０１へ送信されるステータスパケット（少なくとも１つ以上のステータスデータが収められた第２のパケット）である。３０１から３１２はそれぞれが１６ビットのデータである。３０１はパケットで送信するコマンド数を表す１６ビットのデータであり、図４に示すようなビット配置になっている。例えば、本実施例で送信するパケット内のコマンド数は４なので、送信されるデータは０８ｈｅｘ（ｈｅｘは１６進数であることを示す）である。なお、図４に示すとおり最下位ビットは使用しておらず、１０〜１５位ビットをコマンド数を表すために用いている。
【００２５】
また、３０２は排紙口指定コマンドであり、図５に示すようなビット配置になっている。３０３は給紙口指定コマンドであり、図６に示すようなビット配置になっている。３０４はプリントモード指定コマンドであり、図７に示すようなビット配置になっている。ここで、プリントモードとは、例えば薄紙や厚紙などの紙種類によって最適化された条件で画像形成を行うために、ユーザが設定した紙種類をコントローラ制御部２０１からエンジン制御部２０２へ伝えるために指定されるモードのことである。３０５はプリント実行コマンドであり、図８に示すようなビット配置になっている。３０６は３０１から３０５のデータのＣＲＣデータ（誤り検出のための巡回冗長符号）である。
【００２６】
一方、３０７はパケットで送信するステータス数を表す１６ビットのデータであり、図９に示すようなビット配置になっている。本実施例で送信するパケット内のコマンド数は４なので、送信されるデータは０８ｈｅｘである。３０８は排紙口指定コマンド３０２に対して返信される被指定排紙口ステータスあり、図１０に示すようなビット配置になっている。ここで、エンジン制御部２０２はコントローラ制御部２０１から排紙口指定コマンド３０２によって排紙口を指定されると、指定された排紙口を次にプリントする際の排紙口として設定し、設定した排紙口情報を被指定排紙口コード０から５で返信する。
【００２７】
ここで、１ｓｔ  ｂｉｔ、及び２ｎｄ  ｂｉｔの２ビットのエラーコードについて説明する。図１４はエラーコードとその意味を表した表である。図１４に示すように、エラーコード０とエラーコード１が共に０であれば、エラー無しであることを示す。また、エラーコード１が１、エラーコード０が０の場合は、対応するコマンドが実行不可能であったことを示す。例えば、エンジンが排紙口指定コマンド３０２で指定された排紙口を持っていない場合、エンジンはコントローラ制御部２０１から指定された排紙口を設定することができない。このため、このコマンドを実行せず、被指定排紙口ステータス３０８で実行不可能エラーが発生したことをコントローラ制御部２０１へ返信する。
【００２８】
３０９は給紙口指定コマンド３０３に対して返信される被指定給紙口ステータスであり、図１１に示すようなビット配置になっている。３１０はプリントモード指定コマンド３０４に対して返信される被指定プリントモードステータスであり、図１２に示すようなビット配置になっている。３１１はプリント実行コマンド３０５に対して返信されるステータスであり、図１３に示すようなビット配置になっている。ステータス３０９から３１１においては、被指定排紙口ステータス３０８と同様に実行不可能であった場合に実行不可能エラーを返信することができるエラーコードを含む。また、ステータス３０９から３１１においては、エンジン制御部２０２は被指定排紙口ステータス３０８と同様に指定された給紙口、プリントモードを次にプリントする際の給紙口、プリントモードに設定する。そして、設定した給紙口情報、プリントモード情報を被指定給紙口コード、被指定プリントモードコードで返信する。３１２は３０７から３１１のデータのＣＲＣデータ（誤り検出のための巡回冗長符号）である。
【００２９】
＜パケットを受信した場合のエンジン制御部２０２の動作＞
次に、コマンドパケット３１３を受信した場合のエンジン制御部２０２の動作を図３のフローチャートによって説明する。
【００３０】
まず、エンジン制御部２０２はコマンドパケット３１３を受信すると、ステップ４０１（Ｓ４０１と図示する）において最初の１６ビットデータ３０１によりパケット内のコマンド数を取得する。次に、ステップ４０２において、既にステップ４０１で取得したコマンド数だけコマンドを取得していればステップ４０４へ遷移し、まだステップ４０１で取得したコマンド数だけコマンドを取得していなければステップ４０３に遷移する。ステップ４０３においてコマンドを取得し、ステップ４０２へ戻る。ステップ４０４において、ＣＲＣデータ３０６を取得し、ステップ４０５へ遷移する。ステップ４０５において、ステップ４０３で取得したコマンド群のＣＲＣを算出し、算出したＣＲＣの値とステップ４０４で取得したＣＲＣの値とを比較し、一致すればステップ４０６へ遷移する。また、ステップ４０５においてＣＲＣの値が一致しなければ、取得したコマンド群に対してコマンドの実行やステータスの返信を行わずに処理を終了する。
【００３１】
ステップ４０６において、エンジン制御部２０２はステップ４０１で取得したコマンド数だけステータスを準備したかどうか判断し、まだコマンド数だけステータスを準備していなければステップ４０７へ遷移する。ステップ４０７において、ステップ４０３で取得した順序にコマンドを解析し、コマンドが実行可能かどうか判断する。ステップ４０７において、コマンドが実行可能であると判断するとステップ４０８へ遷移する。そして、ステップ４０８においてエンジン制御部２０２のＣＰＵ２０７（コマンド実行部）がコマンドを実行開始し、ステップ４０９においてコマンドに対するステータスとして結果ステータスを準備してステップ４０６へ戻る。ここで、ステップ４０９において結果ステータスを準備することはステータス情報をＲＡＭに記憶させることである。
【００３２】
次に、ステップ４０７においてコマンドが実行可能でないと判断すると、ステップ４１０に遷移し、ステップ４１０においてコマンドに対するステータスとして実行不可能ステータス（エラーステータスデータ）を準備し、ステップ４０６へ戻る。このように、コマンドを順次実行する途中で、実行することが不可能なコマンドが現れた場合、実行することが不可能なコマンドの後に続くコマンドは実行しないようにする。
【００３３】
ステップ４０６において、ステップ４０１で取得したコマンド数だけステータスを準備したと判断すると、ステップ４１１へ遷移する。ステップ４１１において、パケットで送信するステータス数３０７のデータと、既に準備したステータス情報からＣＲＣデータを算出し、ステータスパケット３１４を作成する。次にステップ４１２においてステータスパケット３１４を送信するように通信モジュール２０８にセットして処理を終了する。
【００３４】
ここで、図２において、コントローラ制御部２０１からエンジン制御部２０２へコマンドパケットを送信し始めてから送信が終了するまでの時間をＴ３Ａとする。また、エンジン制御部２０２がコントローラ制御部２０１からコマンドパケット３１３を受信してからステータスパケットを送信し始めるまでの時間をＴ３Ｂとする。さらに、エンジン制御部２０２がコントローラ制御部２０１へステータスパケット３１４を送信し始めてから送信が終了するまでの時間をＴ３Ｃとする。そうすると、Ｔ３Ａ、及びＴ３Ｃの時間はそれぞれ約１ｍｓ、Ｔ３Ｂの時間はコマンドパケット３１３内に納められたコマンドの数によっても変化するものの約１０ｍｓ以内である。この時間は、１つのコマンドを受信して１つのステータスを返信するのにかかっていた時間とほぼ同等である。これは、エンジン制御部２０２の通信モジュール２０８が１つのコマンドを受信してから、ＣＰＵ２０７がコマンドを受信したことを検知するまでの時間が１つのコマンドを受信した場合と複数のコマンドを受信した場合とであまり変わらないためである。これによって、１つのコマンド・ステータスのやり取りにかかる時間は、おおよそ（１＋１０＋１）／４＝約３ｍｓとなる。
【００３５】
このように、パケットに複数のコマンド、複数のステータスを収めて送受信することによって、１つのコマンド・ステータスあたりの通信にかかる時間を短縮することができる。
【００３６】
以上のように、本実施例では、複数のコマンドを１つのパケットで送信することによって、１つのコマンド・ステータスあたりの通信にかかる時間を短縮することができる画像形成装置について説明した。
【実施例２】
【００３７】
本発明の実施例２を以下に示す。本実施例の説明では、複数のコマンドを１つのパケットで送信することによって、１つのコマンド・ステータスあたりの通信にかかる時間を短縮することができる画像形成装置について説明する。特に、調歩同期式のシリアル通信を用いたインターフェースを持つ画像形成装置ついて説明する。
【００３８】
図１５に本実施例の画像形成装置のブロック図を示す。
【００３９】
＜コントローラ制御部とエンジン制御部の構成＞
図１５において、１６０１はコントローラ制御部、１６０１はエンジン制御部である。１６０３はコントローラ制御部１６０１のＣＰＵ、１６０４はコントローラ制御部１６０１の通信モジュール（第２の通信制御部）、１６０５はコントローラ制御部１６０１のＲＯＭ、１６０６はコントローラ制御部１６０１のＲＡＭである。１６０７はエンジン制御部１６０２のＣＰＵ、１６０８はエンジン制御部１６０２の通信モジュール（第１の通信制御部）、１６０９はエンジン制御部１６０２のＲＯＭ、１６１０はエンジン制御部１６０２のＲＡＭである。１６１１はコントローラ制御部１６０１の通信モジュール１６０４からエンジン制御部１６０２の通信モジュール１６０８へコマンドパケットを送信するＣＭＤ信号である。１６１２はエンジン制御部１６０２の通信モジュール１６０８からコントローラ制御部１６０１の通信モジュール１６０４へステータスパケットを送信するＳＴＳ信号である。
【００４０】
＜本実施例のタイミングチャート＞
図１６に本実施例の画像形成装置におけるタイミングチャートを示す。図１６は、排紙口指示、給紙口指示、プリントモード指示、プリント実行、のコマンドをコントローラ制御部１６０１の通信モジュール１６０４が１つのパケットで送信する場合のタイミングチャートである。かつ、それぞれのコマンドに対するステータスをエンジン制御部１６０２の通信モジュール１６０８が１つのパケットで返信する場合のタイミングチャートを示す。
【００４１】
１７０１はパケットの第１バイトであることを示すヘッダであり、１バイトで表される。１７０２は２バイトのデータで表される排紙口指定コマンドであり、図５に示すようなビット配置になっている。１７０３は２バイトデータで表される給紙口指定コマンドであり、図６に示すようなビット配置になっている。１７０４は２バイトデータで表されるプリントモード指定コマンドであり、図７に示すようなビット配置になっている。１７０５は２バイトデータで表されるプリント実行コマンドであり、図８に示すようなビット配置になっている。１７０６は１７０２から１７０５のデータのＣＲＣデータ（誤り検出のための巡回冗長符号）であり、２バイトで表される。１７０７はパケットの最終データであることを示すフッタであり、１バイトで表される。
【００４２】
１７０８はパケットの第１バイトであることを示すヘッダであり、１バイトで表される。１７０９は排紙口指定コマンド１７０２に対して返信される被指定排紙口ステータスあり、図１０に示すようなビット配置になっている。１７１０は給紙口指定コマンド１７０３に対して返信される被指定給紙口ステータスであり、図１１に示すようなビット配置になっている。１７１１はプリントモード指定コマンド１７０４に対して返信されるステータスであり、図１２に示すようなビット配置になっている。１７１２はプリント実行コマンド１７０５に対して返信されるステータスであり、図１３に示すようなビット配置になっている。ステータス１７１０から１７１２においては、被指定排紙口ステータス１７０９と同様に実行不可能であった場合に実行不可能エラーを返信することができるエラーコードを含む。また、ステータス１７１０から１７１２においては、エンジン制御部１６０２は被指定排紙口ステータス１７０９と同様に指定された給紙口、プリントモードを次にプリントする際の給紙口、プリントモードに設定する。かつ、設定した給紙口情報、プリントモード情報を被指定給紙口コード、被指定プリントモードコードで返信する。１７１３は１７０８から１７１２のデータのＣＲＣデータ（誤り検出のための巡回冗長符号）である。１７１４はパケットの最終データであることを示すフッタであり、１バイトで表される。
【００４３】
＜パケットを受信した場合のエンジン制御部２０２の動作＞
図１７に本実施例の画像形成装置において、コマンドパケット１７１５（少なくとも１つ以上のコマンドデータを収めた第１のパケット）を受信した場合のエンジン制御部１６０２の動作を表したフローチャートを示す。
【００４４】
まず、エンジン制御部１６０２の通信モジュール１６０８がコマンドパケット１７１５を受信すると、エンジン制御部１６０２のＣＰＵ１６０７は、通信モジュール１６０８から１バイトずつデータを読み込む。図１７のステップ１８０１（Ｓ１８０１と図示する）において、パケットの最終データ（フッタ  １７０７）まで取得したかどうか判断し（パケット終了か）、まだ最終データまで取得していなければステップ１８０２へ遷移する。ステップ１８０２において次のコマンドを取得する。ここで、まず１バイトのデータを取得し、ヘッダバイトのデータ（１７０１）、またはフッタバイト（１７０７）のデータであれば次のバイトデータを取得せずにステップ１８０１へ戻る。ヘッダバイト（１７０１）でもフッタバイト（１７０７）でもない場合は、さらに１バイトのデータを通信モジュール１６０８から取得し、２バイトデータのコマンド（１７０２〜１７０５）、またはＣＲＣデータ（１７０６）として取得してステップ１８０１へ戻る。
【００４５】
ステップ１８０１において、直前にステップ１８０２にてフッタバイト（１７０７）のデータを取得していた場合は、最終データまで取得したと判断してステップ１８０３へ遷移する。ステップ１８０３において、最初に取得した２バイトデータ（１７０２）から最後から一つ手前の２バイトデータ（１７０５）までのＣＲＣの値を算出する（計算する）。そして、コマンド群のＣＲＣ計算値と、最後に取得したＣＲＣの２バイトデータ（１７０６）とが一致すれば、パケットを正しく受信できたと判断してステップ１８０４へ遷移する。また、ＣＲＣの値が一致しない場合は通信エラーによりパケットを正しく受信できなかったと判断し、コマンドを実行せず、またステータスを送信せずに通信処理を終了する。
【００４６】
ステップ１８０４において、エンジン制御部１６０２はコマンド数だけステータスを準備できたか否か判断し、全てのステータスを準備していない場合はステップ１８０５へ遷移する。ステップ１８０５において、エンジン制御部１６０２は受信した順番にコマンドを解析し、実行可能かどうか判断する。ステップ１８０５において実行可能であると判断すると、エンジン制御部１６０２はステップ１８０６に遷移し、コマンドの実行を開始し、ステップ１８０７においてコマンドに対するステータスとして結果ステータスを準備し、ステップ１８０４に戻る。また、ステップ１８０５において実行不可能であると判断すると、ステップ１８０８においてコマンドに対するステータスとして実行不可能ステータスを準備してステップ１８０４に戻る。
【００４７】
ステップ１８０４において、受信した全てのコマンドに対してステータス（１７０９〜１７１２）を準備したと判断すると、ステップ１８０９へ遷移し、ステップ１８０７またはステップ１８０８で準備したステータス群のＣＲＣを算出する（１７１３）。そして、ヘッダバイト（１７０８）、フッタバイト（１７１４）を付加してステータスパケット１７１６（少なくとも１つ以上のステータスデータが収められた第２のパケット）を作成する。次にステップ１８１０においてステータスパケット１７１６をコントローラ制御部１６０１へ送信し、処理を終了する。
【００４８】
ここで、図１６において、コントローラ制御部１６０１からエンジン制御部１６０２へコマンドパケット１７１５を送信し始めてから送信が終了するまでの時間をＴ１７Ａとする。また、エンジン制御部１６０２がコントローラ制御部１６０１からコマンドパケットを受信してからステータスパケット１７１６を送信し始めるまでの時間をＴ１７Ｂとする。さらに、エンジン制御部１６０２がコントローラ制御部１６０１へステータスパケット１７１６を送信し始めてから送信が終了するまでの時間をＴ１７Ｃとする。Ｔ１７Ａ及びＴ１７Ｃの時間は通信スピードによっても変化するものの、１００ｋｂｐｓ以上の通信スピードであれば、それぞれ約１ｍｓ以内、Ｔ１７Ｂの時間はコマンドパケット内に納められたコマンドの数によっても変化するものの約１０ｍｓ以内である。この時間は、１つのコマンドを受信して１つのステータスを返信するのにかかっていた時間とほぼ同等である。これは、コマンドの受信からコマンドを受信したことの検知までの時間が１つのコマンドを受信した場合と複数のコマンドを受信した場合とであまり変わらないためである。詳しく述べると、エンジン制御部１６０２側の通信モジュール１６０８が１つのコマンドを受信してから、エンジン制御部１６０２のＣＰＵ１６０７がコマンドを受信したことを検知するまでの時間が、あまり変わらないためである。これによって、本実施例における１つのコマンド・ステータスのやり取りにかかる時間はおおよそ（１＋１０＋１）／４＝約３ｍｓとなる。
【００４９】
このように、調歩同期式のシリアル通信を用いた構成であっても、実施例１の場合と同様に、パケットに複数のコマンド、複数のステータスを収めて送受信することによって、１つのコマンド・ステータスあたりの通信にかかる時間を短縮することができる。
【００５０】
本実施例の説明では、複数のコマンドを１つのパケットで送信することによって、１つのコマンド・ステータスあたりの通信にかかる時間を短縮することができる画像形成装置について説明した。特に、調歩同期式のシリアル通信を用いたインターフェースを持つ画像形成装置について説明した。
【実施例３】
【００５１】
本発明の実施例３を以下に示す。本実施例の説明では、排紙口指示、給紙口指示、プリントモード指示、プリント実行、のコマンドを１つのパケットで送信する画像形成装置について説明する。そしてパケットの途中のコマンドが実行不可能であった場合、以降のコマンドに対して、実行せずに実行不可能エラーステータスを返信することにより、ユーザが意図しない動作をエンジンが実行してしまうことを防止できる画像形成装置ついて説明する。
【００５２】
本実施例の画像形成装置において、ブロック図は実施例２の場合と同様（図１５）であるため説明を省略し、以下同じ符号を用いて説明する。また、排紙口指示、給紙口指示、プリントモード指示、プリント実行、のコマンドをコントローラ制御部１６０１の通信モジュール１６０４が１つのパケットで送信する場合のタイミングチャートは実施例２の場合と同様（図１６）である。このためこのタイミングチャートについても説明を省略し、以下同じ符号を用いて説明する。同様に、それぞれのコマンドに対するステータスをエンジン制御部１６０２の通信モジュール１６０８が１つのパケットで返信する場合のタイミングチャートも実施例２の場合と同様（図１６）であるため、説明を省略し、以下同じ符号を用いて説明する。
【００５３】
図１８に本実施例の画像形成装置において、コマンドパケット１７１５を受信した場合のエンジン制御部１６０２の動作を表したフローチャートを示す。
【００５４】
まず、エンジン制御部１６０２の通信モジュール１６０８がコマンドパケット１７１５を受信すると、エンジン制御部１６０２のＣＰＵ１６０７は、通信モジュール１６０８から１バイトずつデータを読み込む。図１８のステップ１０１（Ｓ１０１と図示する）において、コマンドパケット１７１５の最終データまで取得したかどうか判断し、まだ最終データまで取得していなければステップ１０２へ遷移する。ステップ１０２において次のコマンドを取得する。ここで、まず１バイトのデータを取得し、ヘッダバイトのデータ（１７０１）、またはフッタバイトのデータ（１７０７）であれば次のバイトデータを取得せずにステップ１０１へ戻る。ヘッダバイト（１７０１）でもフッタバイト（１７０７）でもない場合は、さらに１バイトのデータを通信モジュール１６０８から取得し、２バイトデータのコマンド（１７０２〜１７０５）、またはＣＲＣデータ（１７０６）として取得して、ステップ１０１へ戻る。
【００５５】
ステップ１０１において、直前にステップ１０２にてフッタバイトのデータ（１７０７）を取得していた場合は、最終データまで取得したと判断してステップ１０３へ遷移する。ステップ１０３において、最初に取得した２バイトデータ（１７０２）から最後から一つ手前の２バイトデータ（１７０５）までのＣＲＣの値を算出する。そして、コマンド群のＣＲＣ計算値と、最後に取得したＣＲＣの２バイトデータ（１７０６）とが一致すれば、コマンドパケット１７１５を正しく受信できたと判断してステップ１０４へ遷移する。また、ＣＲＣの値が一致しない場合は通信エラーによりコマンドパケット１７１５を正しく受信できなかったと判断し、コマンドを実行せず、またステータスを送信せずに通信処理を終了する。
【００５６】
ステップ１０４において、エンジン制御部１６０２はコマンド数だけステータスを準備できたか否か判断し、全てのステータスを準備していない場合はステップ１０５へ遷移する。ステップ１０５において、エンジン制御部１６０２は受信した順番にコマンドを解析し、実行可能かどうか判断する。ステップ１０５において実行可能であると判断すると、エンジン制御部１６０２はステップ１０６に遷移し、ステップ１０６において既に解析済みのコマンドにおいて実行不可能なコマンドがあったかどうか判断する。そして、解析済みのコマンドにおいて実行不可能なコマンドがなかった場合は、ステップ１０７に遷移してコマンドの実行を開始し、ステップ１０８においてコマンドに対するステータスとして結果ステータスを準備し、ステップ１０４に戻る。
【００５７】
また、ステップ１０５において実行不可能であると判断した場合、またはステップ１０６において解析済みのコマンドに実行不可能なコマンドがあったと判断した場合、ステップ１０９に遷移する。ステップ１０９においてコマンドに対するステータスとして実行不可能ステータスを準備してステップ１０４に戻る。
【００５８】
ステップ１０４において、受信した全てのコマンドに対してステータスを準備したと判断すると、ステップ１１０へ遷移する。ステップ１１０では、ステップ１０８またはステップ１０９で準備したステータス群のＣＲＣを算出し（１７１３）、ヘッダバイト（１７０８）、フッタバイト（１７１４）を付加してステータスパケット１７１６を作成する。次にステップ１１１においてステータスパケット１７１６をコントローラ制御部１６０１へ送信し、処理を終了する。
【００５９】
このように、本実施例の画像形成装置においては、コマンドパケット１７１５の途中のコマンドが実行不可能であった場合、以降のコマンドに対して実行せずに実行不可能エラーを返信する。このため、例えばコマンドパケット１７１５のうち給紙口指定コマンド１７０３で実在しない給紙口を設定されていた場合に、給紙口指定コマンドに対して実行不可能エラーを返信する。さらに、これだけでなく、以降のプリントモード指定コマンドやプリント実行コマンドに対しても実行不可能エラーを返信する。このため、プリント実行コマンドを実行してしまうことによってユーザが意図しない給紙口から用紙を給紙してしまうなどの問題を発生させない、ユーザビリティの高い画像形成装置を提供することができる。
【００６０】
本実施例の説明では、ユーザが意図しない動作をエンジンが実行してしまうことを防止することができる画像形成装置について説明した。これは、排紙口指示、給紙口指示、プリントモード指示、プリント実行のコマンドを１つのパケットで送信し、パケットの途中のコマンドが実行不可能であった場合、以降のコマンドに対して実行せずに実行不可能エラーステータスを返信する構成により解決できる。
【実施例４】
【００６１】
本発明の実施例４を以下に示す。本実施例の説明では、複数のコマンドを１つのパケットで送信し、パケットの途中のコマンドが実行不可能であった場合、実行不可能であったコマンドに対しては実行せずに実行不可能エラーステータスを返信する画像形成装置について説明する。かつ、実行不可能であったコマンドよりも後に送信されたコマンドに対しては実行せずにパケット矛盾エラーステータスを返信する画像形成装置について説明する。
【００６２】
本実施例の画像形成装置において、ブロック図は実施例２の場合と同様（図１５）であるため説明を省略し、以下同じ符号を用いて説明する。排紙口指示、給紙口指示、プリントモード指示、プリント実行、のコマンドをコントローラ制御部１６０１の通信モジュール１６０４が１つのパケットで送信する場合のタイミングチャートは実施例２の場合と同様（図１６）である。このためタイミングチャートについても説明を省略し、以下同じ符号を用いて説明する。さらに、それぞれのコマンドに対するステータスをエンジン制御部１６０２の通信モジュール１６０８が１つのパケットで返信する場合のタイミングチャートも実施例２の場合と同様（図１６）であるため、説明を省略し、以下同じ符号を用いて説明する。
【００６３】
図１９に本実施例の画像形成装置において、コマンドパケット１７１５を受信した場合のエンジン制御部１６０２の動作を表したフローチャートを示す。
【００６４】
まず、エンジン制御部１６０２の通信モジュール１６０８がコマンドパケット１７１５を受信すると、エンジン制御部１６０２のＣＰＵ１６０７は、通信モジュール１６０８から１バイトずつデータを読み込む。図１９のステップ２３０１（Ｓ２３０１と図示する）において、コマンドパケット１７１５の最終データまで取得したかどうか判断し、まだ最終データまで取得していなければステップ２３０２へ遷移する。ステップ２３０２において次のコマンドを取得する。ここで、まず１バイトのデータを取得し、ヘッダバイトのデータ（１７０１）、またはフッタバイトのデータ（１７０７）であれば次のバイトデータを取得せずにステップ２３０１へ戻る。ヘッダバイト（１７０１）でもフッタバイト（１７０７）でもない場合は、さらに１バイトのデータを通信モジュール１６０８から取得し、２バイトデータのコマンド（１７０２〜１７０５）、またはＣＲＣデータ（１７０６）として取得する。ステップ２３０１において、直前にステップ２３０２にてフッタバイト（１７０７）のデータを取得していた場合は、最終データまで取得したと判断してステップ２３０３へ遷移する。
【００６５】
ステップ２３０３において、最初に取得した２バイトデータ（１７０２）から最後から一つ手前の２バイトデータ（１７０５）までのＣＲＣの値を算出する。そして、コマンド群のＣＲＣ計算値と最後に取得したＣＲＣの２バイトデータ（１７０７）とが一致すれば、コマンドパケット１７１５を正しく受信できたと判断してステップ２３０４へ遷移する。また、ＣＲＣの値が一致しない場合は通信エラーによりコマンドパケット１７１５を正しく受信できなかったと判断し、コマンドを実行せず、またステータスを送信せずに通信処理を終了する。
【００６６】
ステップ２３０４において、エンジン制御部１６０２はコマンド数だけステータスを準備できたか否か判断し、全てのステータスを準備していない場合はステップ２３０５へ遷移する。ステップ２３０５において、エンジン制御部１６０２は受信した順番にコマンドを解析し、実行可能かどうか判断する。ステップ２３０５において実行可能であると判断すると、エンジン制御部１６０２はステップ２３０６に遷移し、ステップ２３０６において既に解析済みのコマンドにおいて実行不可能なコマンドがあったかどうか判断する。そして、解析済みのコマンドにおいて実行不可能なコマンドがなかった場合はステップ２３０７に遷移してコマンドの実行を開始し、ステップ２３０８においてコマンドに対するステータスとして結果ステータスを準備し、ステップ２３０４に戻る。
【００６７】
また、ステップ２３０５において実行不可能であると判断した場合、ステップ２３０９においてコマンドに対するステータスとして実行不可能ステータスを準備してステップ２３０４に戻る。また、ステップ２３０６において解析済みのコマンドに実行不可能なコマンドがあったと判断した場合、ステップ２３１０に遷移する。ステップ２３１０において、コマンドパケット１７１５内の既に解析済みのコマンドで実行不可能なコマンドがあったためにこのコマンドを実行しなかったことを表すパケット矛盾ステータスを準備してステップ２３０４に戻る。
【００６８】
〜パケット矛盾ステータスを表すためのエラーコードについて〜
ここで、ステータスのビット配列のうち１ｓｔ  ｂｉｔ、及び２ｎｄ  ｂｉｔの２ビットでパケット矛盾ステータスを表すためのエラーコードについて説明する。図２０は本実施例のエンジン制御部１６０２からコントローラ制御部１６０１へ送信されるステータスのエラーコードの値と意味の関係を表す表である。図２０に示すように、エラーコード０とエラーコード１が共に１であれば、パケット矛盾エラーであったことを示す。
【００６９】
ステップ２３０４において、受信した全てのコマンドに対してステータスを準備したと判断すると、ステップ２３１１へ遷移する。ステップ２３１１では、ステップ２３０８またはステップ２３０９またはステップ２３１０で準備したステータス群のＣＲＣを算出し（１７１３）、ヘッダバイト（１７０８）、フッタバイト（１７１４）を付加してステータスパケット１７１６を作成する。次にステップ２３１２においてステータスパケット１７１６をコントローラ制御部１６０１へ送信し、処理を終了する。
【００７０】
このように、本実施例の画像形成装置においては、実施例３の画像形成装置に比べてコマンドエラーの内容をより詳細にステータスで伝えることができる。これにより、コントローラ制御部１６０１は送信したコマンドのうちどのコマンドが実行不可能であったのか、またパケット内に実行不可能なコマンドがあったために実行されなかったコマンドはどのコマンドなのかを明確に区別することが可能である。
【００７１】
本実施例では、複数のコマンドを１つのパケットで送信し、パケットの途中のコマンドが実行不可能であった場合、実行不可能であったコマンドに対しては実行せずに実行不可能エラーステータスを返信する画像形成装置について説明した。さらに、実行不可能であったコマンドよりも後に送信されたコマンドに対しては実行せずにパケット矛盾エラーステータスを返信する画像形成装置について説明した。
【実施例５】
【００７２】
本発明の実施例５を以下に示す。本実施例では、複数のコマンドを１つのパケットで送信し、パケットの途中のコマンドが実行不可能であった場合、実行できなかったコマンドに対して実行不可能エラーステータスを返信する画像形成装置について説明する。さらに、実行不可能であったコマンドよりも後に送信され、実行不可能であったコマンドと関連性のあるコマンドに対しては実行せずにパケット矛盾エラーステータスを返信する。そして、実行不可能であったコマンドよりも後に送信され、実行不可能であったコマンドと関連性のないコマンドに対しては実行して結果ステータスを返信し、ステータスリクエストコマンドに対しては状態ステータスを返信する画像形成装置について説明する。
【００７３】
本実施例の画像形成装置において、ブロック図は実施例２の場合と同様（図１５）であるため、説明を省略し、以下同じ符号を用いて説明する。排紙口指示、給紙口指示、プリントモード指示、プリント実行、のコマンドをコントローラ制御部の通信モジュール１６０４が１つのパケットで送信する場合のタイミングチャートは実施例２の場合と同様（図１６）である。このためタイミングチャートについても説明を省略し、以下同じ符号を用いて説明する。さらに、それぞれのコマンドに対するステータスをエンジン制御部１６０２の通信モジュール１６０８が１つのパケットで返信する場合のタイミングチャートも実施例２の場合と同様（図１６）であるため、説明を省略し、以下同じ符号を用いて説明する。
【００７４】
図２１に本実施例の画像形成装置において、コマンドパケット１７１５を受信した場合のエンジン制御部１６０２の動作を表したフローチャートを示す。
【００７５】
まず、エンジン制御部１６０２の通信モジュール１６０８がコマンドパケット１７１５を受信すると、エンジン制御部１６０２のＣＰＵ１６０７は、通信モジュール１６０８から１バイトずつデータを読み込む。図２１のステップ２５０１において、コマンドパケット１７１５の最終データまで取得したかどうか判断し、まだ最終データまで取得していなければステップ２５０２へ遷移する。ステップ２５０２において次のコマンドを取得する。ここで、まず１バイトのデータを取得し、ヘッダバイトのデータ（１７０１）、またはフッタバイトのデータ（１７０７）であれば次のバイトデータを取得せずにステップ２５０１へ戻る。ヘッダバイト（１７０１）でもフッタバイト（１７０７）でもない場合は、さらに１バイトのデータを通信モジュール１６０８から取得し、２バイトデータのコマンド（１７０２〜１７０５）、またはＣＲＣデータ（１７０６）として取得する。
【００７６】
ステップ２５０１において、直前にステップ２５０２にてフッタバイト（１７０７）のデータを取得していた場合は、最終データまで取得したと判断してステップ２５０３へ遷移する。ステップ２５０３において、最初に取得した２バイトデータ（１７０２）から最後から一つ手前の２バイトデータ（１７０５）までのＣＲＣの値を算出する。そして、コマンド群のＣＲＣ計算値と最後に取得したＣＲＣの２バイトデータ（１７０６）とが一致すれば、コマンドパケット１７１５を正しく受信できたと判断してステップ２５０４へ遷移する。また、ＣＲＣの値が一致しない場合は通信エラーによりコマンドパケット１７１５を正しく受信できなかったと判断し、コマンドを実行せず、またステータスを送信せずに通信処理を終了する。
【００７７】
ステップ２５０４において、エンジン制御部１６０２はコマンド数だけステータスを準備できたか否か判断し、全てのステータスを準備していない場合はステップ２５０５へ遷移する。ステップ２５０５において、エンジン制御部１６０２は受信した順番にコマンドを解析し、コマンドがステータス要求コマンドであるかどうか判断する。ステップ２５０５においてステータス要求コマンドであると判断すると、エンジン制御部１６０２はステップ２５１０に遷移し、エンジンの状態を伝える状態ステータスを準備してステップ２５０４に戻る。また、ステップ２５０５においてコマンドがステータス要求コマンドではないと判断すると、ステップ２５０６に遷移する。
【００７８】
ステップ２５０６において、エンジン制御部１６０２は受信した順番にコマンドを解析し、実行可能かどうか判断する。ステップ２５０６において実行可能であると判断すると、エンジン制御部１６０２はステップ２５０７に遷移する。そして、ステップ２５０７において既に解析済みのコマンドにおいて実行不可能なコマンドがあったかどうか判断し、解析済みのコマンドにおいて実行不可能なコマンドがなかった場合はステップ２５０８に遷移する。ステップ２５０８では、コマンドの実行を開始し、ステップ２５０９においてコマンドに対するステータスとして結果ステータスを準備し、ステップ２５０４に戻る。
【００７９】
また、ステップ２５０６においてコマンドが実行不可能であると判断した場合、ステップ２５１１においてコマンドに対するステータスとして実行不可能ステータスを準備してステップ２５０４に戻る。また、ステップ２５０７において解析済みのコマンドに実行不可能なコマンドがあったと判断した場合、ステップ２５１２に遷移する。ステップ２５１２においてコマンドパケット１７１５内の既に解析済みのコマンドで実行不可能なコマンドがあったために、このコマンドを実行しなかったことを表すパケット矛盾ステータスを準備してステップ２５０４に戻る。
【００８０】
ステップ２５０４において、受信した全てのコマンドに対してステータスを準備したと判断すると、ステップ２５１３へ遷移する。ステップ２５１３では、ステップ２５０９からステップ２５１２までのいずれかで準備したステータス群のＣＲＣを算出し（１７１３）、ヘッダバイト（１７０８）、フッタバイト（１７１４）を付加してステータスパケット１７１６を作成する。次にステップ２５１４においてステータスパケット１７１６をコントローラ制御部１６０１へ送信し、処理を終了する。
【００８１】
ここで、一例として本実施例の画像形成装置において次のような場合を説明する。すなわち、プリントのためのコマンド群をコントローラ制御部１６０１から１パケットで送信し、途中のコマンドが実行不可能であった場合のエンジン制御部１６０２が返信するステータスパケットの内容を図２２によって説明する。
【００８２】
図２２は、本実施例の画像形成装置においてプリントのためにコントローラ制御部１６０１からコマンド群を１つのパケットで送信した場合のタイミングチャートである。なおコマンド群とは、排紙口指示コマンド、給紙口指示コマンド、プリントモード指示コマンド、排紙口ステータスリクエストコマンド、給紙口ステータスリクエストコマンド、プリントモードステータスリクエストコマンド、プリント実行コマンドである。ここで、コマンドパケット２６２１のうち途中の給紙口指示コマンドで、実在しない給紙口（或いは排紙口）を指示されると、エンジン制御部１６０２は次のようなステータスパケット２６２２を返信する。まず、排紙口指示コマンドに対しては結果ステータスを返信し、給紙口指示コマンドに対しては実行不可能ステータスを返信し、プリントモード指示コマンド、プリント実行コマンドに対してはパケット矛盾ステータスを返信する。また、排紙口ステータスリクエスト、給紙口ステータスリクエスト、プリントモードステータスリクエストに対しては、実行不可能エラーを返信しない。実行不可能エラーを返信せずに、直前にコントローラ制御部１６０１によって指示された設定値、またはコントローラ制御部１６０１から指示されていない場合はエンジンの電源ＯＮ時の排紙口、給紙口、プリントモードの設定値の状態ステータスを返信する。
【００８３】
ここで、２６０１はコマンドパケット２６２１のヘッダ、２６０２は排紙口指示コマンド、２６０３は給紙口指示コマンドである。また、２６０４はプリントモード指示コマンド、２６０５は排紙口ステータスリクエストコマンド、２６０６は給紙口ステータスリクエストコマンドである。また、２６０７はプリントモードリクエストコマンド、２６０８はプリント実行コマンド、２６０９はＣＲＣデータ、２６１０はコマンドパケットのフッタである。
【００８４】
２６１１はステータスパケット２６２２のヘッダ、２６１２は排紙口指示コマンドに対する結果ステータス、２６１３は給紙口指示コマンドに対する実行不可能ステータス、２６１４はプリントモード指示コマンドに対するパケット矛盾ステータスである。また、２６１５は排紙口ステータスリクエストコマンドに対する状態ステータスとして、排紙口指示コマンド２６０２で指示された排紙口の情報が反映されたステータスである。２６１６は給紙口ステータスリクエストコマンドに対する状態ステータスとして、直前にコントローラによって指示されたか、またはコントローラから指示されていない場合はエンジンの電源ＯＮ時に設定された給紙口の情報が反映されたステータスである。２６１７はプリントモードリクエストコマンドに対する状態ステータスとして、直前にコントローラによって指示されたか、またはコントローラから指示されていない場合はエンジンの電源ＯＮ時に設定されたプリントモードの情報が反映されたステータスである。２６１８はプリント実行コマンドに対するパケット矛盾ステータス、２６１９はＣＲＣデータ、２６２０はステータスパケット１６２２のフッタである。
【００８５】
本実施例では、実行不可能コマンドより後に送信された実行コマンドに対しては実行せずにパケット矛盾ステータスを返信する画像形成装置について述べた。さらにこのような画像形成装置で、ステータスリクエストコマンドのように実行不可能になった実行コマンドに関連性のないコマンドに対しては状態ステータスを返信する画像形成装置について述べた。実行不可能になった実行コマンドに関連性のないコマンドとしては、ステータスリクエストコマンドだけでなく、フラッシュメモリやＮＶＲＡＭの読み出し、書き込みコマンドやなどもあり、これらのコマンドについても実行して結果ステータスを返信しても良い。
【００８６】
本実施例では、複数のコマンドを１つのパケットで送信し、パケットの途中のコマンドが実行不可能であった場合、実行できなかったコマンドに対して実行不可能エラーステータスを返信する画像形成装置について説明した。さらに、実行不可能であったコマンドよりも後に送信され、実行不可能であったコマンドと関連性のあるコマンドに対しては実行せずにパケット矛盾エラーステータスを返信する画像形成装置について説明した。さらに、実行不可能であったコマンドよりも後に送信され、実行不可能であったコマンドと関連性のないコマンドに対しては実行して結果ステータスを返信し、ステータスリクエストコマンドに対しては状態ステータスを返信する画像形成装置について説明した。これにより、ユーザが意図しない動作をエンジンが実行してしまうことを防止でき、実行不可能であったコマンドと関連性のあるコマンドに対しては実行せず、関連性のないコマンドに対しては実行することができる。
【図面の簡単な説明】
【００８７】
【図１】実施例１のコントローラ制御部とエンジン制御部の画像形成装置のブロック図
【図２】実施例１の画像形成装置でプリントを行うためのコントローラ制御部とエンジン制御部との通信のタイミングチャート
【図３】実施例１のエンジン制御部の動作を説明するフローチャート
【図４】実施例１のコントローラ制御部からエンジン制御部へ送信されるパケットのうち、コマンド数を送信する１６ビットデータのビット配置を示す図
【図５】実施例１〜５のコントローラ制御部からエンジン制御部へ送信される排紙口指定コマンドのビット配置を示す図
【図６】実施例１〜５のコントローラ制御部からエンジン制御部へ送信される給紙口指定コマンドのビット配置を示す図
【図７】実施例１〜５のコントローラ制御部からエンジン制御部へ送信されるプリントモード指定コマンドのビット配置を示す図
【図８】実施例１〜５のコントローラ制御部からエンジン制御部へ送信されるプリント実行コマンドのビット配置を示す図
【図９】実施例１のエンジン制御部からコントローラ制御部へ送信されるパケットのうち、ステータス数を送信する１６ビットデータのビット配置を示す図
【図１０】実施例１〜５のエンジン制御部からコントローラ制御部へ送信される被指定排紙口ステータスのビット配置を示す図
【図１１】実施例１〜５のエンジン制御部からコントローラ制御部へ送信される被指定給紙口ステータスのビット配置を示す図
【図１２】実施例１〜５のエンジン制御部からコントローラ制御部へ送信される被指定プリントモードステータスのビット配置を示す図
【図１３】実施例１〜５のエンジン制御部からコントローラ制御部へ送信されるプリント実行結果ステータスのビット配置を示す図
【図１４】実施例１〜５のエンジン制御部からコントローラ制御部へ送信されるステータスのエラーコードの値と意味の関係を表す表
【図１５】実施例２〜５の画像形成装置のブロック図
【図１６】実施例２〜５の画像形成装置においてプリントを行うためのコントローラ制御部とエンジン制御部との通信のタイミングチャート
【図１７】実施例２の画像形成装置において、コマンドパケットを受信した場合のエンジン制御部の動作を表したフローチャート
【図１８】実施例３の画像形成装置において、コマンドパケットを受信した場合のエンジン制御部の動作を表したフローチャート
【図１９】実施例４の画像形成装置において、コマンドパケットを受信した場合のエンジン制御部の動作を表したフローチャート
【図２０】実施例４、５のエンジン制御部からコントローラ制御部へ送信されるステータスのエラーコードの値と意味の関係を表す表
【図２１】実施例５の画像形成装置において、コマンドパケットを受信した場合のエンジン制御部の動作を表したフローチャート
【図２２】実施例５の画像形成装置においてプリントを行うためのコントローラ制御部とエンジン制御部との通信のタイミングチャート
【図２３】従来例の画像形成装置のブロック図
【図２４】従来例の画像形成装置においてプリントを行うためのコントローラ制御部とエンジン制御部との通信のタイミングチャート
【図２５】従来例のビデオコントローラ制御部からのコマンドの一例として、プリントの給紙口を指示するコマンドのビット配置を示す図
【図２６】従来例のエンジン制御部からのステータスの一例として、指示されたプリントの給紙口を返信するステータスのビット配置を示す図
【符号の説明】
【００８８】
２０１    コントローラ制御部（コントローラ部）
２０２    エンジン制御部
２０３    ＣＰＵ
２０４    通信モジュール（第２の通信制御手段）
２０５    ＲＯＭ
２０６    ＲＡＭ
２０７    ＣＰＵ（コマンド実行部）
２０８    通信モジュール（第１の通信制御手段）
２０９    ＲＯＭ
２１０    ＲＡＭ
【図１】
2009288852.tif 000003
【図２】
2009288852.tif 000004
【図３】
2009288852.tif 000005
【図４】
2009288852.tif 000006
【図５】
2009288852.tif 000007
【図６】
2009288852.tif 000008
【図７】
2009288852.tif 000009
【図８】
2009288852.tif 000010
【図９】
2009288852.tif 000011
【図１０】
2009288852.tif 000012
【図１１】
2009288852.tif 000013
【図１２】
2009288852.tif 000014
【図１３】
2009288852.tif 000015
【図１４】
2009288852.tif 000016
【図１５】
2009288852.tif 000017
【図１６】
2009288852.tif 000018
【図１７】
2009288852.tif 000019
【図１８】
2009288852.tif 000020
【図１９】
2009288852.tif 000021
【図２０】
2009288852.tif 000022
【図２１】
2009288852.tif 000023
【図２２】
2009288852.tif 000024
【図２３】
2009288852.tif 000025
【図２４】
2009288852.tif 000026
【図２５】
2009288852.tif 000027
【図２６】
2009288852.tif 000028