(57)【要約】【課題】  送信元からの画像データに適合するエミュレーションが画像形成装置内の用意された場所に見当らず、特定できない場合が生じたとき完全には一致しないエミュレーションが使われる場合が生じるため、送信元の利用者が指定した印刷内容と一部違った記載でプリントされるなど、指定通りのプリントができない問題があった。【解決手段】  本発明は、複数の送信元から画像データを受信して画像を形成するための異なる複数のエミュレーションを備えたプリンタ１において、前記複数のエミュレーションの中から前記画像データを解釈可能な少なくとも一つ以上のエミュレーションを抽出する言語判定部１３と、前記エミュレーション候補を表示して送信元の利用者にエミュレーションを選択可能とする選択部１４と、前記送信元を識別する情報を取得する送信元識別情報取得部１５とを含むこと。【選択図】    図１
2010274428.tif 000002
【特許請求の範囲】
【請求項１】
複数の送信元から画像データを受信して画像を形成するための異なる複数のエミュレーションを備えた画像形成装置において、
前記装置内には前記複数のエミュレーションの中から前記画像データを解釈可能な少なくとも一つ以上のエミュレーション候補を抽出する言語判定部と、
前記エミュレーション候補を表示して送信元の利用者にエミュレーションを選択可能とする選択部と、
前記送信元を識別する情報を取得する送信元識別情報取得部と、
を含むことを特徴とする画像形成装置。
【請求項２】
前記言語判定部は、複数のエミュレーションの中から前記画像データを解釈可能な一つのエミュレーションに特定する特定部と、
前記エミュレーションを特定できなかったとき少なくとも画像データの一部が解釈可能なエミュレーション候補を複数抽出する抽出部と、
を有することを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記複数のエミュレーション候補と前記選択されたエミュレーションと送信元識別する情報とは記憶部に関連付けられて記憶されていることを特徴とする請求項１又は請求項２に記載の画像形成装置
【請求項４】
前記特定部は前記抽出部で抽出した少なくとも一部が解釈できるエミュレーション候補と前記送信元識別情報取得部で取得した送信元識別情報に関連付けられて記憶された前記選択されたエミュレーションが存在する場合は前記選択されたエミュレーションを解釈可能な一つのエミュレーションと特定することを特徴とする請求項１〜請求項３に記載の画像形成装置。
【請求項５】
前記特定部は前記送信元から受信した画像データの先頭から所定サイズに含まれる制御コードを解析してエミュレーションを特定することを特徴とする請求項１〜請求項４に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータ等からの画像データを受信可能とする画像形成装置に関する。
【背景技術】
【０００２】
上記のような画像形成装置（以下、プリンタという）は、ホストコンピュータ（以下、単にホストという）と接続して使用する場合、夫々のホストが備えているプリンタドライバ（ＰＤＬ：ページ記述言語、ＨＢＰ：ホストベースプリンタ等）毎に適合するエミュレーションプログラム（以下、単にエミュレーションという）を複数備えている。
これにより、製造元や機種の異なる複数のホストを使用した場合においても、夫々のホストから画像データを受信した時にどの機種からでも同じように、画像データに応じたプリントが出来る。
例えば、従来この種のエミュレーションを備えたプリンタには、下記特許文献１の技術が考えられていた。
このプリンタは、その上位装置である複数のホストからの画像データを受信して、入力した画像データ中に含まれる画像様式や印字様式等からなる制御コードを検出及び解析して、その画像データが複数のエミュレーションの内の何れのものに合うか判断するためのエミュレーション判断手段と、このエミュレーション判断手段により過去に判断して使用した結果を順次記憶更新するエミュレーション履歴情報記憶手段とを備えたものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−６４２４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、従来の前記プリンタは、各ホストからの画像データを受信した際に、プリンタ内に保有しているエミュレーションの履歴情報記憶手段の中から各ホストの画像データをプリントするのに合うエミュレーションを順次見付け出して、これを適応してプリントしていた。
しかし、従来のプリンタでは、エミュレーション履歴情報記憶手段の中で最適なエミュレーションを特定できないときには、たとえ各ホストのプリンタドライバと適合するエミュレーションが別に存在する場合でも、エミュレーション履歴情報記憶手段の中から最適なものに近いエミュレーションを見つけ出して適用させていた。その結果、ホスト利用者が想定した印刷内容と異なる解釈の印刷が行われ、所望の画像形成ができない問題があった。
（発明の目的）
そこで本発明は、上記の如き問題に鑑みなされたもので、各利用者のホストに適合したエミュレーションを選択できる手段を設けることにより、各ホストに最適なエミュレーション処理が可能な画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は上記目的を達成するため、複数の送信元から画像データを受信して画像を形成するための異なる複数のエミュレーションを備えた画像形成装置において、前記装置本体には前記複数のエミュレーションの中から前記画像データを解釈可能な少なくとも一つ以上のエミュレーション候補を抽出する言語判定部と、前記エミュレーション候補を表示して送信元にエミュレーションを選択可能とする選択部と、前記送信元を識別する情報を取得する送信元（ホスト）識別情報取得部とを含むことを特徴としている。
【発明の効果】
【０００６】
上記のように構成することにより、本発明は各ホストからの画像データに適合するエミュレーションが画像形成装置内の用意された場所に見当らず、特定できない場合が生じても各利用者からの画像データとエミュレーションが適応できるように、エミュレーション候補を抽出する言語判定手段とエミュレーションの選択手段を設けることにより各利用者のホストに対して最適なエミュレーション処理が可能となる。そのため、利用者の指定通りの画像形成ができる利点を有する。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施例１の画像形成装置のブロック図である。
【図２】同実施例１のエミュレーションの動作プロセス構成図である。
【図３】同実施例１の操作パネルを示す。
【図４】同実施例１の操作パネルの表示例を示す。
【図５】同実施例１の言語選択テーブルの一例を示す。
【図６】同実施例１の印刷処理のフローチャートである。
【図７】同実施例１のエミュレーションのフローチャートである。
【図８】同実施例１の操作パネルの表示例を示す。
【図９】本発明の実施例２の画像形成装置のブロック図である。
【図１０】同実施例２のエミュレーションの動作プロセス構成図である。
【図１１】同実施例２の言語選択テーブルの一例を示す。
【図１２】同実施例２の操作パネルを示す。
【図１３】同実施例２の印刷処理のフローチャートである。
【図１４】同実施例２の操作パネルの表示例を示す。
【図１５】同実施例２の操作パネルの表示例を示す。
【図１６】同実施例２のエミュレーションのフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の画像形成装置をプリンタに適用した実施例を説明する。
【実施例１】
【０００９】
図１は、実施例１におけるプリンタ１の基本構成を示すブロック図である。
このプリンタ１は、装置全体を制御するＣＰＵ２と、ＲＯＭ、ＥＰＲＯＭ等の不揮発性メモリ（以下ＲＯＭという）３と、揮発性メモリ（ＲＡＭ）４と、印刷エンジン（プリンタ駆動部）５と、操作パネル６及び複数のホスト７に接続される各受信インタフェース（以下、受信Ｉ／Ｆという）８とから構成されている。
【００１０】
ＣＰＵ２は、制御部９、ＡＬＵ、カウンタ等から構成され、ＲＯＭ３内に格納されているプログラムに従って、送信元である各ホスト（ここではＡ，Ｂ，Ｃ，３台とする）７からの画像データをＲＡＭ４内の受信バッファ１０に一時的に格納し、その画像データにしたがって、ページバッファ１１を介して画像形成するプリント出力制御及び送信元識別情報処理、更には操作パネル６の入出力制御等を行う。
【００１１】
ＲＯＭ３には、受信Ｉ／Ｆ８が各ホスト７から受信した画像データを、ＣＰＵ２によってビットマップイメージに変換して、印刷エンジン５にその画像データを伝達するまで行う全てのプロセスのプログラムが格納されている。
ここでのビットマップイメージとは、画像データ信号を画像化する際、画像の濃淡や色彩に応じドット状に羅列して表現するためのデータである。
このＲＯＭ３には、図２のブロック図に示すように、複数の全エミュレーションが格納されている。
【００１２】
制御部９は、図２に示すように、エミュレーション動作の全体を制御する機能を有している。この制御部９は、ＣＰＵ２の機能の一つであり、受信部１２と、言語判定部１３と、表示選択部１４及びホスト識別情報取得部１５と接続され、ＲＯＭ３内に格納されるエミュレーションに基づいてエミュレータとして機能する。
【００１３】
受信部１２は、各ホスト７と接続される受信Ｉ／Ｆ８等からなる。この受信部１２の機能は、ホスト７毎に受信した画像データを受信Ｉ／Ｆ８毎に管理する受信バッファ１０に画像データを格納する他、受信バッファ１０内の画像データを破棄することなく読み出すデータリード処理、受信バッファ１０内の画像データを読み出すと共に破棄するデータ取得処理、前記処理で読み出している画像データがどのＩ／Ｆポートから受信したものであるかの情報を取得する受信Ｉ／Ｆ情報取得処理などを有する。
【００１４】
ホスト識別情報取得部１５は、現在読み出している画像データがどのホストの受信Ｉ／Ｆ８から受信したものであるかを受信部１２から検知し、言語判定部１３が受信Ｉ／Ｆ８から各利用者のホストとどのエミュレーションが対応するかを判断できるように設定されている。
【００１５】
言語判定部１３は、受信部１２の受信Ｉ／Ｆ８が各ホストから受信した画像データに含まれる制御コードに基づいて、複数のエミュレーションの中から画像データを解釈可能な一つのエミュレーションを特定する特定部１６と、この特定部１６が解釈可能な一つのエミュレーションに特定できなかったとき、制御コードの一部が解釈できるエミュレーション候補を複数抽出する抽出部１７を持つ。特定部１６によるエミュレーションの特定は、画像データの先頭から所定サイズに含まれる画像様式、印字様式等からなる制御コードを解析して行う。
【００１６】
表示選択部１４は、抽出部１７がＲＡＭ４内の言語選択テーブル１８から抽出した複数のエミュレーション候補を操作パネル６の表示パネル２０に表示したり、或いは、受信部１２からの画像データを解釈するエミュレーションが言語選択テーブル１８に見当たらない時には、ＲＯＭ３内からのエミュレーションを表示パネル２０に表示して利用者に選択させる。
【００１７】
各エミュレーションは、プログラム作成時に予めホストの機種毎のプリンタドライバに対応するように作成されており、図示しない対応表に、ホストの製造元や機種名に適応したエミュレーション名を列記してＲＯＭ３内に登録しておき、利用者は表示選択部１４から各自が使用しているホストに対応するエミュレーションを把握することができる。
ＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＢ及びＥｍｕｌａｔｉｏｎＣ等は、当初ＲＯＭ３に格納されているエミュレーションである。このＲＯＭ３内にはこれ以外のエミュレーションも格納され、各エミュレーションは、制御部９によって、各ホスト７からの画像データがどのプリンタドライバ（ＰＤＬ、ＨＢＬ）に基づいて生成されたものかを解析して、中間コードを生成する。
ここでの中間コードとは、エミュレーションによって画像データを解析した結果として生成するビットマップイメージになる前段階のイメージデータで制御コードの一種であり、
先行データのエミュレーション対応中において、他のホストから画像データを受信したとき、後続データのエミュレーションを一部並行して対応し中間コードバッファ１９内に格納される。
【００１８】
ＲＡＭ４は、図１に示すように、受信バッファ１０、言語選択テーブル１８、中間コードバッファ１９及びページバッファ１１などの記憶領域を有している。受信バッファ１０は各ホスト７から受信した画像データや印刷データを一時的に格納する。
【００１９】
言語選択テーブル１８は、ＲＡＭ４内の記憶媒体中の区分けされた領域の一つで、ＲＯＭ３内の複数のエミュレーションの中から受信Ｉ／Ｆ８ごとに利用者がプリンタ１を使用することによって、利用されたエミュレーションを履歴情報として順次格納し、常時利用し易いように保持する。
常時使用されないエミュレーションについては、ＲＯＭ３内に格納されており、履歴情報として言語選択テーブル１８に順次格納された元のエミュレーションについてもＲＯＭ３内にそのまま残る。図５は言語選択テーブル１８のイメージ構成例を示している。
この言語選択テーブル１８は、図５に示すように、表記内容名として「受信Ｉ／Ｆ」と「エミュレーション候補」と「ユーザ選択エミュレーション」を要素に持つ登録形式のテーブルであり、プリンタ１を起動した直後は空の状態であるが、ホストとの接続や使用に応じた表示内容にできる。この図５の例では、「受信Ｉ／Ｆ」欄にＰａｒａｌｌｅｌとＵＳＢが登録されている状態を示しており、ホストＡとホストＣから出力された画像データのエミュレーションの特定が行われ、ＲＯＭ３内の複数のエミュレーションの中から画像データを解釈するエミュレーションが夫々利用者によって選択されていることを示している。
【００２０】
中間コードバッファ１９は、何れかのエミュレーションによって画像データ又は印刷データを解析した結果として生成する中間的形式（ビットマップイメージになる前の段階の形式）のイメージデータが一時的に格納される領域である。
【００２１】
ページバッファ１１は、中間コードから変換されたページ単位の最終的なビットマップイメージ（ページイメージという）が一時的に格納される領域である。
【００２２】
印刷エンジン５は、図示しない印字ヘッドや用紙搬送機構などから構成され、ページバッハ１１からのページイメージを読み込み、ＣＰＵ２の制御に従って所定の用紙に印刷する。
【００２３】
操作パネル６は、プリンタ１の本体に設けられており、図３に示すように、各種設定メニューや装置の状態を表示するための表示パネル２０と、各種設定メニューに移行するための移動キー２１と、移動中の項目を選択するための選択キー２２と、メニュー移動や実行中の動作を中止するための中止キー２３と、ホストを特定するためのホスト選択キー２４が備えられている。利用者は表示パネル２０の表示に従って、移動キー２１等を操作することにより、最適なエミュレーションを選択することができる。
なお、エミュレーションの選択にあっては、プリンタ１の操作パネル６以外に各ホストのディスプレーにエミュレーション候補を表示して、利用者が手許でエミュレーション候補を見ながらホストの図示しないキーボードを操作してエミュレーションを選択できるようにしてもよく、各利用者がプリンタ１まで出向かなくてもエミュレーションの特定ができる。
【００２４】
次に、実施例１のプリンタ１の動作を説明する。
図６は実施例１でプリンタ１の印刷処理動作を示すフローチャートであり、図７は、エミュレーションのフローチャートである。
図２に示すプリンタ１の受信部１２が、例えば図１に示すホストＡ，Ｂ又はＣの何れかのホスト７から画像データを受信すると、ＣＰＵ２は、言語判定部１３に対して以下の処理を実行する。
【００２５】
（Ｓ６０１）
先ず、言語判定部１３は、受信した画像データに含まれる制御コードを基にエミュレーションを絞り込む処理を行う。この処理については、図７に示すフローチャートに従ってなされるため、ここで先にその説明をする。
【００２６】
（Ｓ７０１）
ＣＰＵ２は、プリンタ１内のＲＡＭ４に既に格納されているエミュレーション（ＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＢ及びＥｍｕｌａｔｉｏｎＣ等）をエミュレーション候補とし、データリードカウンタ（画像データ中の制御コード数）を０に初期化する。
【００２７】
（Ｓ７０２）
次に、ＣＰＵ２は、受信部１２のデータリード処理（コード化）された受信バッファ１０からの画像データを読み出し、かつ、言語判定部１３を介しその画像データ中に含まれるデータリードカウンタのカウントアップを行う。
【００２８】
（Ｓ７０３）
言語判定部１３は、画像データの中から制御コードの検出を順次行い、制御コードが検出されなかったり、或いは制御コード以外が検出された場合にはＳ７１１へ進む。一方、制御コードが検出された場合には、次の処理がなされる。
【００２９】
（Ｓ７０４）
言語判定部１３の特定部１６は、検出された制御コードがＥｍｕｌａｔｉｏｎＡで対応しているかの判断を行う。
【００３０】
（Ｓ７０５）
対応していない場合には、言語判定部１３の特定部１６はエミュレーション候補からＥｍｕｌａｔｉｏｎＡを削除する。
【００３１】
（Ｓ７０６）
続いて言語判定部１３の特定部１６は、検出された制御コードがＥｍｕｌａｔｉｏｎＢで対応しているかの判断を行う。
【００３２】
（Ｓ７０７）
対応していない場合には、言語判定部１３の特定部１６はエミュレーション候補からＥｍｕｌａｔｉｏｎＢを削除する。
【００３３】
（Ｓ７０８）
更に言語判定部１３の特定部１６は、検出された制御コードがＥｍｕｌａｔｉｏｎＣで対応しているかの判断を行う。
【００３４】
（Ｓ７０９）
対応していない場合には、言語判定部１３の特定部１６はエミュレーション候補からＥｍｕｌａｔｉｏｎＣを削除する。
【００３５】
（Ｓ７１０）
次に、言語判定部１３の特定部１６は、Ｓ７０３にて検出した制御コードを、ＲＡＭ４内の全てのエミュレーションで対応させた後で、エミュレーション候補が一つに絞られたかの判断を行う。
【００３６】
（Ｓ７１１）
Ｓ７１０にて特定部１６は、エミュレーション候補が一つ以外であると判断した場合には、言語判定部１３の抽出部１７は、Ｓ７０２にてデータリーダカウンタが読み出したデータ数の合計が所定バイト数（制御コードのバイト数）を超えたかの判断を行う。
データの読み出しが所定のバイト数以下である場合（制御コードが一つも見つからない）にはＣＰＵ２はＳ７０２に戻る判定をし、言語判定部１３の特定部１６は、続くデータに対して同様の処理を行う。
一方、Ｓ７１０にて特定部１６は、エミュレーション候補が一つであると判断した場合又はＳ７１１にてデータの読み出しが所定バイト数を超えていると判断した場合には、エミュレーションが見付かったとして図７のエミュレーションの絞込みを終了し、図６のＳ６０２に戻り処理を行う。
【００３７】
（Ｓ６０２）
ＣＰＵ２は、言語判定部１３によって絞り込まれたエミュレーション候補が一つであるかの判断を行う。ここでエミュレーション候補が一つである場合には、その特定されたエミュレーションに移行する（Ｓ６１５）。この時利用者は、プリンタ操作の必要は無い。
【００３８】
（Ｓ６０３）
一方、エミュレーション候補が一つ以外の場合には、言語判定部１３の抽出部１７は、続いて現在読み出しているデータがどの受信Ｉ／Ｆ８から受信したものであるかを検知し、受信部１２からの受信Ｉ／Ｆ情報取得処理（コード化）によって取得を行う。
【００３９】
（Ｓ６０４）
ＣＰＵ２は、その受信Ｉ／Ｆ８が言語判定テーブル１８に登録されているかの判定を行う。
言語判定テーブル１８に登録されていない場合、例えば、図５に示すように、ホストＡが言語判定テーブル１８中に未登録とした場合、ＣＰＵ２は以下の処理を行う。
先ず、Ｓ６０２で言語判定テーブル１８に登録されているエミュレーションの中から絞り込まれたエミュレーション候補を操作パネル６の表示パネル２０に表示する（Ｓ６１０）が、この時、エミュレーション候補が一つもないため、ＲＯＭ３に有する全てのエミュレーション（ＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＢ、ＥｍｕｌａｔｉｏｎＣ他）を候補とする（ＥｍｕｌａｔｉｏｎＡは、今、言語判定テーブル１８に未登録としている）。
また、表示パネル２０の表示は、図４の４０１に示すように、先ず受信中の利用者が誰か特定できるようにホスト名入力の指定表示がなされる。
次に、指定通り利用者が自分のホスト名をホスト選択キー２４から入力すると、表示パネル２０の表示は、「画像データを処理するエミュレーションを以下の候補の中から選択してください」というメッセージを付し、利用者に画像データを解釈させるエミュレーション言語を選択させる（４０２）。
これに従って、利用者は操作パネル６中の移動キー２１でＥｍｕｌａｔｉｏｎＡを選択し、選択キー２２を押下する。
これに伴い、ホスト識別情報取得部１５からエミュレーションが選択され、図４中の４０４に示すように、表示パネル２０にはＥｍｕｌａｔｉｏｎＡを言語判定テーブル１８に登録する処理が表示される。
その結果、図５に示すように、言語選択テーブル１８には、受信Ｉ／Ｆ８にホストＡとエミュレーション候補とユーザ選択されたエミュレーションとしてＥｍｕｌａｔｉｏｎＡが登録される（Ｓ６１２）。
その後、ユーザ選択されたエミュレーションのＥｍｕｌａｔｉｏｎＡは、ＲＡＭ４中のエミュレーションに移行する（Ｓ６１３）。
【００４０】
（Ｓ６０５）
一方、Ｓ６０４にて言語判定テーブル１８にＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＢ及びＥｍｕｌａｔｉｏｎＣが登録されていて、例えば、ホストＣの機種変更等があった場合には、以下の処理を行う。
ＣＰＵ２は、Ｓ６０２で絞り込まれたエミュレーション候補と言語判定テーブル１８に登録されている受信Ｉ／Ｆ８のエミュレーション候補の差異があるかの判断を行う。差異がないと判断した場合には、Ｓ６０９へ進み、一方、Ｓ６０５にてＣＰＵ２が差異があると判断した場合にはＳ６０６へ進む処理を行う。
【００４１】
（Ｓ６０６）
例えば、ホストＣからホストＣ’への機種変更に伴い、プリントドライバが変ると、言語判定テーブル１８には、ＥｍｕｌａｔｉｏｎＣ’が登録されていないため、この時、表示パネル２０には、ＲＯＭ３に有する全てのエミュレーションが候補として示される。この時、図３の表示パネル２０中には図８に示す４０２の表示のように「画像データを処理するエミュレーションを以下の候補の中から選択してください」というメッセージが表記されて、画像データを解釈させるエミュレーションを利用者に選択させる。
【００４２】
（Ｓ６０７）
利用者は、表示パネル２０に該当するエミュレーションを、移動キー２１、選択キー２２を操作してエミュレーションＥｍｕｌａｔｉｏｎＣ’を選択し表示パネル２０に該当するエミュレーションを表示する（４０４）。
【００４３】
（Ｓ６０８）
これに伴い、言語選択テーブル１８は、受信Ｉ／Ｆ８とホストＣ’、エミュレーション候補と、ユーザ選択されたエミュレーションとしてＥｍｕｌａｔｉｏｎＣ’が登録される。同時に、ＥｍｕｌａｔｉｏｎＣ’は、パネル表示してＳ６０７でユーザ選択されたＥｍｕｌａｔｉｏｎＣからＥｍｕｌａｔｉｏｎＣ’に更新される。
【００４４】
（Ｓ６０９）
その後、言語判定テーブル１８は、登録されているＥｍｕｌａｔｉｏｎＣ’でエミュレーションに移行する。
【００４５】
（Ｓ６１４）
以上の動作によって、プリンタ１は各ホストから画像データが送信された場合、エミュレーションの変更（Ｓ６０９）、エミュレーションが登録されていない（Ｓ６１３）及びエミュレーションが既に登録されている（Ｓ６１５）何れかの状況においても特定のエミュレーションへ移行する。
そして、これ等のエミュレーションは、受信部１２が受信してデータ取得処理（図示せず）された画像データに応じ言語判定部１３が読み出して解析を行い、印刷が実行され、エミュレーションの処理が終了すると、次の画像データを処理するためにＳ６０１に戻る。
【実施例２】
【００４６】
図９は実施例２に係るプリンタ１００の基本構成を示すブロック図である。
このプリンタ１００は、装置全体を制御するＣＰＵ１０１と、ＲＯＭ、ＥＰＲＯＭ等の不揮発性メモリ（以下ＲＯＭという）１０２と、揮発性メモリ（ＲＡＭ）１０３と、印刷エンジン（プリンタ駆動部）１０４と、操作パネル３００及び複数のホスト１１１に接続される各受信インタフェース（Ｉ／Ｆ）１１２、１１３とから構成されている。
【００４７】
ＣＰＵ１０１は、制御部２０１、ＡＬＵ、カウンタ等から構成され、ＲＯＭ１０２内に格納されているプログラムに従って、ホスト（ここではＡ，Ｄ，Ｅ，Ｆの４台とする）１１１からの画像データをＲＡＭ１０３内の受信バッファ１０６に一時的に格納し、その画像データにしたがって、ページバッファ１０９を介して画像形成するプリント出力制御及び送信元識別情報処理、更には操作パネル３００の入出力制御等を行う。
ホストＡはＰａｒａｌｌｅｌＩ／Ｆ１１２によって、又、ホストＤ、ホストＥ及びホストＦはＬＡＮを介してネットワークＩ／Ｆ１１３によってプリンタ１００と接続されている。
【００４８】
ＲＯＭ１０２には、ＣＰＵ１０１がホストから画像データを受信してビットマップイメージに変換し、印刷エンジン１０４に伝達するまでに行う全てのプロセスのプログラムが格納されている。
ここでのビットマップイメージとは、画像データ信号を画像化する際に、画像の濃淡や色彩に応じドットを羅列として表現するデータである。
ＲＯＭ１０２には、ＰａｒａｌｌｅｌＩ／Ｆ１１２、ネットワーク１１３が各ホストから受信した画像データをＣＰＵ１０１によってビットマップイメージに変換し、印刷エンジンに伝達するまで行う全てのプロセスのプログラムが格納されている。
このＲＯＭ１０２には、図１０のブロック図に示すエミュレーション動作プログラム２０８が格納されている。
【００４９】
制御部２０１は、図１０に示すように、エミュレーション動作の全体を制御する機能を有している。この制御部２０１には、受信部２０２、言語判定部２０３、表示選択部２０６、ホスト識別情報取得部２０７及びプリンタ１００が保有するエミュレーション２０８の全体を統括している。
【００５０】
受信部２０２は、各ホスト１１１と接続されるＰａｒａｌｌｅｌＩ／Ｆ１１２等からなる。この受信部２０２の機能は、ホスト毎に受信した画像データをＰａｒａｌｌｅｌＩ／Ｆ１１２、ネットワークＩ／Ｆ１１３毎に管理する受信バッファ１０６に画像データを格納する他、受信バッファ１０６内のデータを破棄することなく読み出すデータリード処理、受信バッファ１０６内のデータを読み出すと共に破棄するデータ取得処理、前記処理で読み出している画像データがどのＩ／Ｆポートから受信したものであるかの情報を取得する受信Ｉ／Ｆ情報取得処理、ネットワークＩ／Ｆ受信でのコネクション確立時に認識した接続ホストのＩＰアドレスを取得するホストＩＰアドレス情報取得処理などを有する。
【００５１】
ホスト識別情報取得部２０７は、現在読み出している画像データがどのＰａｒａｌｌｅｌＩ／Ｆ１１２等から受信したものであるかを受信部２０２から検知し、言語判定部２０３がＰａｒａｌｌｅｌＩ／Ｆ１１２等から各利用者のホストがどのエミュレーションと関連するかを判断できるように設定されている。
【００５２】
言語判定部２０３は、各ホスト１１１から受信した画像データに含まれる制御コードに基づいて、複数のエミュレーションの中から画像データを解釈可能な一つのエミュレーションを特定する特定部２０４と、この特定部２０４が解釈可能な一つのエミュレーションに特定できなかったとき、制御コードの一部が解釈できるエミュレーション候補を複数抽出する抽出部２０５を持つ。特定部２０４によるエミュレーションの特定は、画像データの先頭から所定サイズに含まれる制御コードを解析して行う。
【００５３】
表示選択部２０６は、抽出部２０５がＲＡＭ１０３内の言語判定テーブル５００から抽出した複数のエミュレーション候補を操作パネル３００の表示パネル３０１に表示したり、或いは、受信部２０２からの画像データを解釈するエミュレーションが言語判定テーブル５００に見当たらない時、ＲＯＭ１０２からのエミュレーションを利用者に選択させる。
【００５４】
各エミュレーションは、プログラム作成時に予めホスト１１１およびその端末の機種毎のプリンタドライバに対応するように作成されており、図示しない対応表に、ホストの製造元や機種名に対応したエミュレーション名を列記してＲＯＭ１０２内に登録しておき、利用者は表示選択部２０６から各自が使用しているホスト１１１または端末に対応するエミュレーションを把握することができる。
ＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＢ及びＥｍｕｌａｔｉｏｎＣは、ＲＯＭ１０２に格納されているエミュレーションである。なお、ＲＯＭ１０２内にはこれ以外のエミュレーションも格納され、各エミュレーションは、制御部２０１によって、各ホスト１１１からの画像データがどのプリンタドライバ（ＰＤＬ、ＨＢＬ）に基づいて生成されたものかを解析して、中間コードが生成される。
ここでの中間コードとは、実施例１同様、画像データを解析した結果として生成するビットマップイメージになる前段階のイメージデータである。
【００５５】
ＲＡＭ１０３は、受信バッファ１０６、言語選択テーブル５００、中間コードバッファ１０８及びページバッファ１０９などかの記憶領域を有している。受信バッファ１０６は各ホスト１１１からの受信した画像データや印刷データを一時的に格納する。
【００５６】
言語選択テーブル５００は、ＲＡＭ１０３内の記憶媒体中の区分けされた領域の一つで、ＲＯＭ１０２内の複数のエミュレーションの中からＰａｒａｌｌｅｌＩ／Ｆ１１２，ＮｅｔｗｏｒｋＩ／Ｆ１１３ごとに利用者がプリンタ１００を使用することによって、利用されたエミュレーションを履歴情報として順次格納し、保持する。
常時使用されないエミュレーションについては、ＲＯＭ１０２内に格納されており、履歴情報として言語選択テーブル１８に順次格納された元のエミュレーションについてもＲＯＭ１０２内にそのまま残る。図１１は、言語選択テーブル５００のイメージ構成例を示している。
この言語選択テーブル５００は、図１１に示すように、表記内容名として「受信Ｉ／Ｆ」と「ホストＩＰアドレス」と「エミュレーション候補」及び「ユーザ選択エミュレーション」を要素に持つ登録形式のテーブルであり、プリンタ１００を起動した直後は空の状態であるが、各ホスト１１１との接続や使用に応じた表示内容となる。この図１１の例では、「受信Ｉ／Ｆ」欄にＰａｒａｌｌｅｌとＮｅｔｗｏｒｋが登録されており、更に、ＮｅｔｗｏｒｋについてはホストＩＰアドレスに“１０，２０，３０，４２”と“１０，２０，３０，４３”が登録されている状態を示している。ホストＡとホストＥとホストＦから出力された画像データのエミュレーションの特定が行われ、ＲＯＭ１０２内の複数のエミュレーション候補の中から画像データを解釈するエミュレーションが利用者によって選択されていることを示している。
【００５７】
中間コードバッファ１０８は、何れかのエミュレーションによって画像データ又は印刷データを解析した結果として生成する中間的形式（ビットマップイメージになる前の段階の形式）のイメージデータが一時的に格納される領域である。
ページバッファ１０９は、中間コードから変換されたページ単位の最終的なビットマップイメージが一時的に格納される領域である。
【００５８】
印刷エンジン１０４は、印字ヘッドや用紙搬送機構などから構成され、ページバッファ１０９からのページイメージを読み込みＣＰＵ１０１の制御に従って所定の用紙に印刷する。
【００５９】
操作パネル３００は、プリンタ１００の本体に設けられ、図１２に示すように、各種設定メニューや装置の状態の表示を行うための表示パネル３０１と、各種設定メニューに移行するための移動キー３０２と、移動中の項目を選択するための選択キー３０３と、メニュー移動や実行中の動作を中止するための中止キー３０４とホスト選択キー３０５を備えている。
【００６０】
次に、実施例２のプリンタの動作を説明する。
図１３は実施例２でプリンタ１００のプリントの動作を示すフローチャートであり、図１６は、エミュレーションを示すフローチャートである。
プリンタ１００の受信部２０２がホストＡ、Ｄ、Ｅ又はＦの何れかのホストから画像データを受信するとＣＰＵ１０１は、言語判定部２０３に対し以下の処理を実行する。
先ず、言語判定部２０３は、受信した画像データに含まれる制御コードを基にエミュレーションを絞り込む処理を行うが、この処理については、図１６に示すフローチャートに従っている。
【００６１】
（Ｓ７０１）
ＣＰＵ１０１は、プリンタＲＡＭ１０３に既に格納されているエミュレーション（ＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＤ、ＥｍｕｌａｔｉｏｎＥ及びＥｍｕｌａｔｉｏｎＦ等）をエミュレーション候補とし、データリードカウンタを０に初期化する。
【００６２】
（Ｓ７０２）
次に、ＣＰＵ２は、受信部２０２のデータリード処理（図示せず）された受信バッファ１０６からの画像データを読み出し、かつ、その画像データ中に含まれるデータリードカウンタのカウントアップを行う。
【００６３】
（Ｓ７０３）
言語判定部２０３は、制御コードの検出を行い、制御コードが検出されなかったり、制御コード以外が検出された場合にはＳ７１１へ進む。一方、制御コードが検出された場合には、次の処理がなされる。
【００６４】
（Ｓ７０４）
言語判定部２０３の特定部２０４は、検出された制御コードがＥｍｕｌａｔｉｏｎＡで対応しているかの判断を行う。
【００６５】
（Ｓ７０５）
対応していない場合には、言語判定部２０３の特定部２０４はエミュレーション候補からＥｍｕｌａｔｉｏｎＡを削除する。
【００６６】
（Ｓ７０６）
続いて、言語判定部２０３の特定部２０４は、検出された制御コードがＥｍｕｌａｔｉｏｎＤで対応しているかの判断を行う。
【００６７】
（Ｓ７０７）
対応していない場合には、言語判定部２０３の特定部２０４はエミュレーション候補からＥｍｕｌａｔｉｏｎＤを削除する。
【００６８】
（Ｓ７０８）
更に言語判定部２０３の特定部２０４は、検出された制御コードがＥｍｕｌａｔｉｏｎＥで対応しているかの判断を行う。
【００６９】
（Ｓ７０９）
対応していない場合には、言語判定部２０３の特定部２０４はエミュレーション候補からＥｍｕｌａｔｉｏｎＥを削除する。
【００７０】
（Ｓ７１０）
言語判定部２０３の特定部２０４は、このようにＳ７０３以下順次検出した制御コードを全てのエミュレーションで対応させた後、エミュレーション候補が一つに絞られたかの判断を行う。
【００７１】
（Ｓ７１１）
Ｓ７１０にてエミュレーション候補が一つ以外である場合には、言語判定部２０３の抽出部２０５は、Ｓ７０２にて読み出したデータ数の合計が所定バイト数（制御コードのバイト数）を超えたかの判断を行う。
データの読み出しが所定のバイト数以下である場合（制御コードが一つも見つからない）には、Ｓ７０２に戻り、言語判定部２０３の特定部２０４は続くデータについて同様の処理を行う。
一方、Ｓ７１０にてエミュレーション候補が一つである場合又はＳ７１１にてデータの読み出しが所定バイト数を超えている場合には、図１６のエミュレーションの絞込みを終了し、図１３に示すＳ６０２に進む。
【００７２】
（Ｓ６０２）
ＣＰＵ１０１は、言語判定部２０３によって、図１３に示すＳ６０１にて絞り込まれたエミュレーション候補が一つであるかの判断を行う。ここでエミュレーション候補が一つである場合には、その特定されたエミュレーションのエミュレーションに移行する（Ｓ６１５）。この時利用者は、プリンタ操作の必要は無い。
【００７３】
（Ｓ６０３）
一方、エミュレーション候補が一つ以外の場合には、言語判定部２０３の抽出部２０５は、読み出しているデータがどのＩ／Ｆから受信したものであるかを、更にネットワークＩ／Ｆではネットワーク上のどのホストから受信したものであるかを検知し、受信部２０２からの受信Ｉ／Ｆ情報取得処理、ホストＩＰアドレス情報取得処理（各端末へのコード番号化処理）によって取得を行う。
【００７４】
（Ｓ６０４）
ＣＰＵ１０１は、その受信Ｉ／Ｆ、ホストＩＰアドレスが特定できる言語判定テーブル５００中に登録されているかの判断を行う。
言語判定テーブル５００に登録されていない場合、例えば、図１１に示すように、ホストＡが言語判定テーブル５００中に未登録の場合、ＣＰＵ１０１は、以下の処理を行う。
【００７５】
（Ｓ６１０）
先ず、図１３中のＳ６０２で言語判定テーブル５００に登録されているエミュレーションの中から絞り込まれたエミュレーション候補を操作パネル３００に表示するが、この時、エミュレーション候補が一つもないため、ＲＯＭ１０２に有する全てのエミュレーション（ＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＤ及びＥｍｕｌａｔｉｏｎＥ等）を候補とする（ＥｍｕｌａｔｉｏｎＡは言語判定テーブル５００内に未登録としている）。
また、表示パネル３０１の表示は、図１４の４０１に示すように、先ず受信中の利用者が誰か特定できるように、ホスト名入力の指定表示を利用者が行う。
次に、指定通り利用者が、自分のホスト名をホスト選択キー３０５から入力すると、表示パネル３０１の表示は、「画像データを処理するエミュレーションを以下の候補の中から選択してください」というメッセージを付し、利用者に対して画像データを解釈させるエミュレーションを選択をさせる。
【００７６】
（Ｓ６１１）
これに従って利用者は、図１２に示す操作パネル３００の移動キー３０２および選択キー３０３を操作してエミュレーションの中からＥｍｕｌａｔｉｏｎＡを選択し表示パネル３０１に表示する（４０４）。
る。
【００７７】
（Ｓ６１２）
ＣＰＵ１０１は、言語選択テーブル５００に送信元の受信Ｉ／Ｆとエミュレーション候補とユーザ選択されたエミュレーションにＥｍｕｌａｔｉｏｎＡを登録する。
【００７８】
（Ｓ６１３）
その後、ユーザ選択されたエミュレーションのエミュレーションに移行する。
【００７９】
（Ｓ６０５）
一方、Ｓ６０４にて言語判定テーブルに登録されていてネットワークを介して接続される、例えば、ホストＥの機種変更等があった場合には、以下の処理を行う。
ＣＰＵ１０１は、Ｓ６０２で絞り込まれたエミュレーション候補と言語判定テーブルに登録されている受信Ｉ／Ｆのエミュレーション候補の差異があるかの判断を行う。
差異がない場合には、Ｓ６０９へ進み、一方、Ｓ６０５にてＣＰＵ１０１が差異がある場合にはＳ６０６へ進む。
【００８０】
（Ｓ６０６）
例えば、ホストＥからホストＥ’への機種変更に伴い、プリントドライバが変ると、言語判定テーブル５００には、ＥｍｕｌａｔｉｏｎＥ’が登録されていないため、この時、表示パネル３０１には、ＲＯＭ３に有する全てのエミュレーションが候補として示される。この時、図１２の表示パネル３０１中には図１５に示す４０２に示すように「印刷データを処理するエミュレーションを以下の候補の中から選択してください」というメッセージが表記され、画像データを解釈させるエミュレーションを利用者に選択させる。
【００８１】
（Ｓ６０７）
利用者は操作パネル３００を該当するエミュレーションを、移動キー３０２選択キー３０３を操作して自己のホストＥに対応するエミュレーションを表示パネル３０１中から選択し、入力する。
【００８２】
（Ｓ６０８）
ＣＰＵ１０１は、言語選択テーブル５００の受信Ｉ／Ｆのエミュレーション候補とユーザ選択エミュレーションを、Ｓ６０６でパネル表示してＳ６０７でユーザ選択されたものに更新する。
【００８３】
（Ｓ６０９）
その後、言語判定テーブル５００に登録されている受信Ｉ／Ｆのユーザ選択エミュレーションにあるエミュレーションは移行する。
一方、Ｓ６０４にて言語判定テーブル５００にＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＢ及びＥｍｕｌａｔｉｏｎＣが登録されていて、例えば、ホストＥのＮｅｔｗｏｒｋ中の何れかの機種に変更等があった場合には、以下の処理を行う。
ＣＰＵ１０１は、Ｓ６０２で絞り込まれたエミュレーション候補と言語判定テーブル５００に登録されている受信Ｉ／Ｆのエミュレーション候補に差異があるかの判断を行う。
差異がないとＣＰＵ１０１が判断した場合には、Ｓ６０９へ進み、一方、差異があると判断した場合には、ＣＰＵ１０１はＳ６０６へ処理が進む。
【００８４】
（Ｓ６０６）
例えば、ホストＦの端末（ＩＰアドレス１０、２０、３０、４３）の中の何れかの端末に機種変更があった場合は、その変更された端末のプリントドライバに対応するエミュレーション言語が候補としてＲＡＭ１０３中に一つも見当たらないことになる。その時は、図１２中の表示パネル３０１にはＲＯＭ１０２中に有する全てのエミュレーションを候補としてＥｍｕｌａｔｉｏｎＡ、ＥｍｕｌａｔｉｏｎＤ、ＥｍｕｌａｔｉｏｎＥ及びＥｍｕｌａｔｉｏｎＦ等が示され、図１５に示す４０２の表示のように「画像データを処理するエミュレーションを以下の候補の中から選択してください」というメッセージが表記されて、画像データを解釈させるエミュレーションを利用者に選択させる。
【００８５】
（Ｓ６０７）
利用者は、表示パネル３０１に該当するエミュレーションを見付け出し、ホスト操作キー３０５を操作してエミュレーションを選択する（４０４）。
【００８６】
（Ｓ６０８）
これに伴い、言語選択テーブル５００は、受信Ｉ／ＦとホストＥ、エミュレーション候補と、ユーザ選択されたエミュレーションとしてＥｍｕｌａｔｉｏｎＦの端末１０、２０、３０、４３の内の変更された端末が登録される。
【００８７】
（Ｓ６０９）
その後、言語判定テーブル５００は、登録されているＥｍｕｌａｔｉｏｎＦで変更されたＩＰアドレスのエミュレーションに移行する。
【００８８】
（Ｓ６１４）
以上の動作によって、プリンタ１００は各ホストから画像データが送信された場合、エミュレーションの変更（Ｓ６０９）、エミュレーションが登録されていない（Ｓ６１３）及びエミュレーションが既に登録されている（Ｓ６１５）何れかの状況においても特定のエミュレーションへ移行する。
そして、これ等のエミュレーションは、受信部２０２が受信してデータ取得処理（図示せず）された画像データに応じ言語判定部２０３が読み出して解析を行い、印刷が実行され、エミュレーションの処理が終了すると、次の画像データを処理するためにＳ６０１に戻る。
【産業上の利用可能性】
【００８９】
本発明は、上記実施例においてプリンタについて説明したが、これに限らず、複写機やＭＦＰにも適用することができる。
【符号の説明】
【００９０】
１    プリンタ
２    ＣＰＵ
３    ＲＯＭ
４    ＲＡＭ
５    印刷エンジン
６    操作パネル
７    ホスト
８    インタフェース（Ｉ／Ｆ）
９    制御部
１０  受信バッファ
１１  ページバッファ
１２  受信部
１３  言語判定部
１４  表示選択部
１５  ホスト識別情報取得部
１６  特定部
１７  抽出部
１８  言語選択テーブル
１９  中間コードバッファ
２０  表示パネル
【図１】
2010274428.tif 000003
【図２】
2010274428.tif 000004
【図３】
2010274428.tif 000005
【図４】
2010274428.tif 000006
【図５】
2010274428.tif 000007
【図６】
2010274428.tif 000008
【図７】
2010274428.tif 000009
【図８】
2010274428.tif 000010
【図９】
2010274428.tif 000011
【図１０】
2010274428.tif 000012
【図１１】
2010274428.tif 000013
【図１２】
2010274428.tif 000014
【図１３】
2010274428.tif 000015
【図１４】
2010274428.tif 000016
【図１５】
2010274428.tif 000017
【図１６】
2010274428.tif 000018