(57)【要約】【課題】  上位装置がＰＤＦ及びＥＰＳ形式のファイルをＰＪＬ言語でラッピングするという無駄な処理を無くするとともに、上位装置から送信されてきたＰＤＦ及びＥＰＳ形式のファイルの印刷開始時間を短縮するようにする。【解決手段】  受信制御部１１０は、終端コードとなり得るコード列候補を検出すると、この終端コード列候補と、終端コード列比較テーブル１０５に記憶されている終端コード列とを比較し、コード列候補と一致する終端コード列が終端コード列比較テーブル１０５に登録されている場合に、先に検出した終端コード列を終端コード列と決定する。【選択図】    図１
2009202488.tif 000002
【特許請求の範囲】
【請求項１】
印刷媒体に印刷するために必要となるデータを上位装置から受信する画像形成装置において、
前記上位装置から受信したデータから終端コード列を検出するための検出用終端コード列を記憶する検出用終端コード列記憶部と、
前記上位装置から受信したデータから、前記終端コード列の候補となり得る終端コード列候補を検出するコード列候補検出部と、
前記コード列候補検出部により検出された前記終端コード列候補と、前記検出用終端コード列記憶部に記憶されている前記検出用終端コード列とを比較し、該終端コード列候補と一致する前記検出用終端コード列が該検出用終端コード列記憶部に登録されているか否かを判定する登録判定部と、
前記登録判定部により、前記終端コード列候補と一致する前記検出用終端コード列が前記検出用終端コード列記憶部に登録されていると判定された場合には、該終端コード列候補を前記終端コード列であると決定する終端コード列決定部と
を備えることを特徴とする画像形成装置。
【請求項２】
前記上位装置から送信されてくるデータの受信状況を示す受信状況情報を記憶する受信状況情報記憶部と、
前記上位装置からデータを受信すると、前記受信状況情報記憶部に記憶されている受信状況情報を受信中に設定する受信状況情報設定部と
を更に備え、
前記コード列候補検出部は、前記受信状況情報記憶部に記憶されている受信状況情報が前記受信状況情報設定部により受信中に設定されたのち、所定時間の間、前記上位装置から次のデータ列を受信しない場合、前記上位装置から最後に受信したデータの最後のコード列を終端コード列候補とすることを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記登録判定部により、前記終端コード列候補と一致する前記検出用終端コード列が前記検出用終端コード列記憶部に登録されていないと判定された場合には、該終端コード列候補を新たに追加する検出用終端コード列として、前記検出用終端コード列記憶部に登録する終端コード列登録部を更に備えることを特徴とする請求項１又は２記載の画像形成装置。
【請求項４】
前記検出用終端コード列記憶部は、前記検出用終端コード列以外に、更に、前記終端コード列候補と前記検出用終端コード列とを比較するか否かを判定するための判定条件を有しており、
前記コード列候補検出部により検出された前記終端コード列候補が、前記検出用終端コード記憶部に記憶されている判定条件を満たしているか否かを判定する条件判定部
を更に備え、
前記終端コード列決定部は、前記終端コード列候補が、前記検出用終端コード記憶部に記憶されている判定条件を満たしていると前記条件判定部により判定された場合で、かつ、前記終端コード列候補と一致する前記検出用終端コード列が前記検出用終端コード列記憶部に登録されていると前記登録判定部により判定された場合には、該終端コード列候補を前記終端コード列であると決定することを特徴とする請求項１乃至３のいずれかに記載の画像形成装置。
【請求項５】
前記検出用終端コード列記憶部は、前記検出用終端コード列を記憶する複数の記憶領域を有しており、
前記検出用終端コード列記憶部に有する前記記憶領域のうち、前記検出用終端コード列を記憶していない未使用の記憶領域を示す未使用領域情報を記憶する未使用領域情報記憶部を
更に備え、
前記終端コード列登録部は、前記終端コード列候補と一致する前記検出用終端コード列が前記検出用終端コード列記憶部に登録されていないと前記登録判定部により判定された場合には、前記未使用領域情報記憶部に記憶されている前記未使用領域情報に示された記憶領域に、該終端コード列候補を新たに追加する検出用終端コード列として登録することを特徴とする請求項３記載の画像形成装置。
【請求項６】
前記検出用終端コード列記憶部に有する前記記憶領域のうち、前記未使用の記憶領域を検出する未使用領域検出部と、
前記未使用領域検出部により検出された未使用の記憶領域を示す未使用領域情報を、前記未使用領域情報記憶部に登録する未使用領域情報登録部と
を更に備える請求項６記載の画像形成装置。
【請求項７】
複数のコードからなるデータを受信する受信部と、
前記データを解析する解析部と、
前記解析部の解析結果から終端コードとみなせるコード列を検出する終端コード検出部と、
入力部により入力された終端コード列を記憶する終端コード列記憶部と、
前記終端コード検出部の検出結果と前記終端コード列記憶部から読み出した終端コード列を比較する比較部と、
前記比較部の比較結果により前記データが終端コードを有すると判断する判断部と
を有することを特徴とする画像形成装置。
【請求項８】
複数のコードからなるデータを受信する受信部と、
前記データの受信タイムアウトの発生回数をカウントするカウント部と、
前記データを解析する解析部と、
前記解析部の解析結果から終端コードとみなせるコード列を検出する終端コード検出部と、
前記終端コード検出部の検出した前記コード列を記憶する履歴記憶部と、
前記終端コード検出部の検出結果と前記履歴記憶部に記憶されている前記コード列を比較する比較部と、
前記カウント部が所定カウント数以上カウントすると、前記比較部の比較結果により、前記データが終端コードを有すると判断する判断部と
を有することを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位装置から受信した印刷データを用いて印刷媒体に印刷を行う画像形成装置に関する。
【背景技術】
【０００２】
従来の画像形成装置は、印刷ジョブの受信を開始し始めると、受信したデータ中に終端コードが現れるか、又は、データの受信が予め決められた時間以上途切れた段階で、受信したデータ列を１つの印刷ジョブとして取り扱っている（例えば、特許文献１参照）。
【０００３】
前述の終端コードには、ＰＪＬ（Ｐｒｉｎｔｅｒ  Ｊｏｂ  Ｌａｎｇｕａｇｅ）言語のＵＥＬ（Ｕｎｉｖｅｒｓａｌ  Ｅｘｉｔ  Ｌａｎｇｕａｇｅ）コードや、任意のＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）言語における終端コード（例えば、ＰｏｓｔＳｃｒｉｐｔ言語の場合にはＣＴＲＬ−Ｄコード）等が挙げられる。
【０００４】
ところで、近年、画像形成装置は、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ファイルのダイレクト印刷機能や、ＤＴＰ（ＤｅｓｋＴｏｐ  Ｐｕｂｌｉｓｈｉｎｇ）分野で一般的な画像フォーマット形式であるＥＰＳ（Ｅｎｃａｐｓｕｌａｔｅｄ  Ｐｏｓｔ  Ｓｃｒｉｐｔ）ファイルのダイレクト印刷機能を使用することが一般化するようになってきた。
【特許文献１】特開２００４−２７２７６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したように従来の画像形成装置では、上位装置からダイレクト印刷機能でＰＤＦやＥＰＳのファイルを受信すると、ＰＤＦやＥＰＳのファイルに認識可能な終端コードがないので、印刷ジョブの終端を見つけることができず、ＰＤＦファイルやＥＰＳファイルを受信し終えた後、データ受信が予め決められた時間以上途切れたことを認識した時点で印刷ジョブの終端を見つけたと判断していたため、印刷を開始するのに時間を要するという問題点があった。
【０００６】
そこで、本発明は上述した問題点に鑑み、上位装置からダイレクト印刷機能でＰＤＦやＥＰＳのファイルを受信しても、このファイルの印刷開始時間を短縮することが可能な画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために第一の発明では、印刷媒体に印刷するために必要となるデータを上位装置から受信する画像形成装置において、上記上位装置から受信したデータから終端コード列を検出するための検出用終端コード列を記憶する検出用終端コード列記憶部と、上記上位装置から受信したデータから、上記終端コード列の候補となり得る終端コード列候補を検出するコード列候補検出部と、上記コード列候補検出部により検出された上記終端コード列候補と、上記検出用終端コード列記憶部に記憶されている上記検出用終端コード列とを比較し、該終端コード列候補と一致する上記検出用終端コード列が該検出用終端コード列記憶部に登録されているか否かを判定する登録判定部と、上記登録判定部により、上記終端コード列候補と一致する上記検出用終端コード列が上記検出用終端コード列記憶部に登録されていると判定された場合には、該終端コード列候補を前記終端コード列であると決定する終端コード列決定部とを備える。
【０００８】
また、第二の発明では、印刷媒体に印刷するために必要となるデータを上位装置から受信する画像形成装置において、複数のコードからなるデータを受信する受信部と、上記データを解析する解析部と、上記解析部の解析結果から終端コードとみなせるコード列を検出する終端コード検出部と、入力部により入力された終端コード列を記憶する終端コード列記憶部と、上記終端コード検出部の検出結果と上記終端コード列記憶部から読み出した終端コード列を比較する比較部と、上記比較部の比較結果により上記データが終端コードを有すると判断する判断部とを有する。
【０００９】
また、第三の発明では、印刷媒体に印刷するために必要となるデータを上位装置から受信する画像形成装置において、複数のコードからなるデータを受信する受信部と、上記データの受信タイムアウトの発生回数をカウントするカウント部と、上記データを解析する解析部と、上記解析部の解析結果から終端コードとみなせるコード列を検出する終端コード検出部と、上記終端コード検出部の検出した上記コード列を記憶する履歴記憶部と、上記終端コード検出部の検出結果と上記履歴記憶部に記憶されている上記コード列を比較する比較部と、上記カウント部が所定カウント数以上カウントすると、上記比較部の比較結果により、上記データが終端コードを有すると判断する判断部とを有する。
【発明の効果】
【００１０】
以上、本発明によれば、上位装置から受信したデータのコード列から、終端コード列候補と一致する検出用終端コード列が検出用終端コード列記憶部に登録されていると登録判定部により判定された場合には、終端コード列決定部がこの終端コード列候補を終端コード列であると決定するため、受信タイムアウトを待つことなく印刷開始できるようになるため、上位装置からダイレクト印刷機能でＰＤＦやＥＰＳのファイルを受信しても、このファイルの印刷開始時間を短縮することができる。
【発明を実施するための最良の形態】
【００１１】
次に、本発明を実施するための最良の形態を説明する。
【実施例１】
【００１２】
図１は、本発明に係る実施例１の画像形成装置の構成を示すブロック図である。図１に示すように、実施例１の画像形成装置１０は、上位装置としてのＰＣから受信したＰＪＬ言語若しくはＰＤＬ言語で記述された印刷ジョブ、又は、図２（ａ）に示すフォーマット形式のＰＤＦファイル、若しく、図２（ｂ）に示すフォーマット形式のＥＰＳファイルを用いて印刷媒体に印刷を行う装置である。
【００１３】
ここで、ＰＤＦファイル及びＥＰＳファイルを説明する。ＰＤＦファイルは、図２（ａ）に示すように、ファイル名、ファイルの作成日時、宛先情報等からなるヘッダデータが記述されたヘッダ（Ｈｅａｄｅｒ）領域と、印刷データが記述されたＢｏｄｙ領域と、印刷データに含まれる個々のオブジェクト情報にアクセスするための目次情報が記述されたＣｒｏｓｓ−ｒｅｆｅｒｅｎｃｅ  ｔａｂｌｅ領域と、最初のｃｒｏｓｓ−ｒｅｆｅｒｅｎｃｅ  ｔａｂｌｅの格納された位置情報（ファイル先端からのオフセット値）が記述されたＴｒａｉｌｅｒ領域から構成されており、Ｔｒａｉｌｅｒ領域の最後には、ファイル終端を示す一行「％％ＥＯＦ」が含まれている。なお、図２（ａ）中の終端コード列「％％ＥＯＦ」は、改行文字＜ＣＲ＞＜ＬＦ＞が省略されており、実際には、「＜ＣＲ＞＜ＬＦ＞％％ＥＯＦ＜ＣＲ＞＜ＬＦ＞」である。
【００１４】
ＥＰＳファイルは、図２（ｂ）に示すように、ファイルの内容をヘッダデータ（図２（ｂ）中の「％！ＰＳ−Ａｄｏｂｅ−３．０  ＥＰＳＦ−３．０〜％％ＥｎｄＣｏｍｍｅｎｔまでの情報」と、印刷データ（図２（ｂ）中の「ＰｏｓｔＳｃｒｉｐｔ  Ｃｏｄｅ  ｆｏｒ  ｉｌｌｕｓｔｒａｔｉｏｎの箇所」と、ファイルの終端を示す「％％ＥＯＦ」で示された終端コード列とを有している。なお、図２（ｂ）中の終端コード列「％％ＥＯＦ」は、改行文字＜ＣＲ＞＜ＬＦ＞が省略されており、実際には、「＜ＣＲ＞＜ＬＦ＞％％ＥＯＦ＜ＣＲ＞＜ＬＦ＞」である。以下、ＰＤＦファイル及びＥＰＳファイルを単にファイルという。
【００１５】
この画像形成装置１０は、受信バッファ１０１と、受信状況記憶部１０２と、内部処理情報記憶部１０３と、モード指定情報記憶部１０４と、終端コード列比較テーブル１０５と、ポインタ記憶部１０６と、カウント数記憶部１０７と、受信タイムアウト検出カウンタ１０８と、オペレーションパネル部１０９と、受信制御部１１０と、デコード処理部１１１と、編集／展開処理部１１２と、印刷処理部１１３とを備える。
【００１６】
受信制御部１１０、デコード処理部１１１、編集／展開処理部１１２、及び、印刷処理部１１３は、図示しないＣＰＵが図示しないＲＯＭに記憶されている制御プログラムを実行することにより生成され、後述する機能を有する。
【００１７】
受信バッファ１０１は、ＲＡＭ（図示せず）に形成され、ＰＣから送信されてきた印刷ジョブに記述された印刷データ、制御コード、及び終端コード、ＰＤＦファイルに記述されたヘッダデータ、印刷データ、制御コード、及び終端コード列、並びに、ＥＰＳファイルに記述されたヘッダデータ、印刷データ、及び終端コード列を記憶する。以下、上述した印刷データ、制御コード、及び、ヘッダデータを単にデータという。なお、構成及び動作において、必要が有れば、データを特定して説明する。
【００１８】
受信状況記憶部１０２は、ＲＡＭに形成され、ＰＣからのデータの受信状況を示す情報（以下、受信状況情報という）を記憶する。受信状況情報には、データの受信待ちであることを示す「データ受信待ち中」、及び、データを受信中であることを示す「データ受信中」がある。
【００１９】
内部処理情報記憶部１０３は、ＲＡＭに形成され、内部処理状態を示す内部処理情報を記憶している。この内部処理情報には、デコード処理部１１１がデータを解析中であることを示す「モード解析中」、及び、印刷ジョブに連続して記述されている印刷データを受信していることを示す「連続受信中」がある。
【００２０】
モード指定情報記憶部１０４は、ＲＡＭに形成され、上位装置から受信したデータを、通常モードで処理するか、又は、終端コード列検出モードで処理するかを指定するモード指定情報を記憶する。
【００２１】
通常モードとは、次のデータを受信するまでに予め決められた時間が経過したときに、予め決められた時間内にデータを受信しなかった状態にあることを示すモードである。終端コード列検出モードとは、印刷ジョブの終端に記述されているの終端コード、又は、ファイルの終端コード列を検出させる状態にあることを示すモードである。
【００２２】
終端コード列比較テーブル１０５は、フラッシュメモリ（図示せず）に形成され、図３に示すように、第１終端コード列、第２終端コード列、及び第３終端コード列を記憶する。第１終端コード列は、ＰＪＬ言語に記述された終端コード（ＵＥＬコード）の終端コード列である。第２終端コード列は、ＰＤＬ言語に記述された印刷ジョブの終端コード（ＣＴＲＬ−Ｄコード）の終端コード列である。第３終端コード列は、ＰＤＦ及びＥＰＳファイルの終端コード列である。ＰＤＦファイル及びＥＰＳファイルの第３終端コード列には、「＜ＣＲ＞＜ＬＦ＞％％ＥＯＦ＜ＣＲ＞＜ＬＦ＞」という終端コード列を有している。
【００２３】
ＰＤＦファイル及びＥＰＳファイルの第３終端コード列「＜ＣＲ＞＜ＬＦ＞％％ＥＯＦ＜ＣＲ＞＜ＬＦ＞」は、図４に示すように、終端コード列として「０ｘ０ｄ」、「０ｘ０ａ」、「０ｘ２５」、「０ｘ２５」、「０ｘ４５」、「０ｘ４ｆ」、「０ｘ４６」、「０ｘ０ｄ」、「０ｘ０ａ」として表されている。ここで、「０ｘ０ｄ」及び「０ｘ０ａ」は改行文字「＜ＣＲ＞＜ＬＦ＞を示し、「０ｘ２５」は「％」を示し、「０ｘ４５」は「Ｅ」を示し、「０ｘ４ｆ」は「Ｏ」を示し、「０ｘ４６」は「Ｆ」を示している。これら各文字は１バイトで形成されている。
【００２４】
ポインタ記憶部１０６は、ＲＡＭに形成され、終端コード列比較テーブル１０５中の第１終端コード列及び第２終端コード列のうちのいずれかと、受信バッファ１０１に記憶された最後に受信したデータとを比較するために使用される参照ポインタ、比較先ポインタ、及び、比較元ポインタを記憶する。
【００２５】
参照ポインタは、終端コード列比較テーブル１０５に記憶されている第１終端コード列、第２終端コード列、又は第３終端コード列を形成する先頭文字のアドレスが設定される。例えば、前述の例では、図４に示すように、参照ポインタには、改行文字「＜ＣＲ＞」の「０ｘ０ｄ」に割り当てられたアドレスとして「０ｘ０ｄ＊」（この表記は「０ｘ０ｄ」に割り当てられたアドレスを示す）が設定される。
【００２６】
比較先ポインタは、第１終端コード列、第２終端コード列、又は第３終端コード列を形成する文字列のうち最終文字に割り当てられたアドレスが設定される。例えば、前述の例では、図４に示すように、比較先ポインタには、改行文字「＜ＬＦ＞」の「０ｘ０ａ」に割り当てられたアドレスとして「０ｘ０ａ＊」が設定される。
【００２７】
比較元ポインタは、受信バッファ１０１に最後に記憶されたデータを形成する文字列のうち最終文字に割り当てられたアドレスが設定される。例えば、前述の例では、図４に示すように、比較元ポインタには、最終文字としての改行文字「＜ＬＦ＞」を示す「０ｘ０ａ」に割り当てられたアドレスとして「０ｘ０ａ＊＊」（この表記は「０ｘ０ａ」に割り当てられたアドレスを示す）が設定される。
【００２８】
カウント数記憶部１０７は、受信タイムアウト検出カウンタ１０８がタイムアウトを検出する基準となるタイムアウト値を記憶する。
【００２９】
受信タイムアウト検出カウンタ１０８は、受信制御部１１０からの起動要求に従い、所定時間毎にカウントし、カウント数記憶部１０７に記憶されているタイムアウト値になると、タイムアウトになったことを示す通知を受信制御部１１０に出力する。
【００３０】
オペレーションパネル部１０９は、装置自体の稼働状況や操作内容を表示する液晶装置からなる表示部と、操作内容を入力するキーボード、マウス等のポインティングデバイスからなる入力部とを備える。表示部及び入力部は、ユーザの操作により、「通常モード」又は「終端コード列検出モード」をモード指定情報記憶部１０４に登録する。
【００３１】
受信制御部１１０は、ＰＣからデータを受信し始めると、受信タイムアウト検出カウンタ１０８のカウント値を「０」に設定し、その後、受信したデータを受信バッファ１０１に記憶したのち、デコード処理部１１１にデータを受信した旨の通知を出力する。以後、受信制御部１１０は、ＰＣからデータを受信するごとに、受信したデータを受信バッファ１０１に記憶したのち、デコード処理部１１１にデータを受信した旨の通知を出力する。
【００３２】
また、受信制御部１１０は、先にデータを受信したのち、次のデータが受信しない場合には、受信状況記憶部１０２に記憶されている受信状況情報が「データ受信中」であるか否かを判定し、受信状況情報が「データ受信中」でないと判定した場合には、次の印刷ジョブ又はファイルのデータを受信するまで待機する。一方、受信制御部１１０は、受信状況記憶部１０２に記憶されている受信状況情報が「データ受信中」であると判定した場合には、モード指定情報記憶部１０４に記憶されているモード指定情報が「終端コード列検出モード」であるか、又は、「通常モード」であるかを判定する。
【００３３】
また、受信制御部１１０は、モード指定情報記憶部１０４に記憶されているモード指定情報が「終端コード列検出モード」であると判定した場合には、後述する終端コード列検出処理を実行し、一方、モード指定情報が「通常モード」であると判定した場合には、後述する通常モード処理を実行する。受信制御部１１０が行う終端コード列検出処理機能、及び、通常モード処理機能は、本発明に係る実施例１の画像形成装置の動作を説明する箇所に記載されている。
【００３４】
なお、ＰＣが終端コード列を画像形成装置１０の終端コード列比較テーブル１０５に登録・変更・追加し、また、画像形成装置１０の終端コード列比較テーブル１０５に登録されている終端コード列を読み出すときに用いる表示画面は、図５に示す終端コード列比較テーブル編集ツール画面が使用される。終端コード列比較テーブル編集ツール画面は、「ＯＫ」ボタン、「キャンセル」ボタン、「取得」ボタン、及び「設定」ボタンを有している。「取得」ボタンがクリックされると、画像形成装置１０の終端コード列比較テーブル１０５に登録されている終端コード列が表示画面上に表示される。終端コード列を登録したり、変更したり、新たに追加したい場合には、表示画面に登録・変更・追加する終端コード列を表示し、その後、「設定」ボタンがクリックされると、画像形成装置１０の終端コード列比較テーブル１０５に、表示画面に表示した終端コード列が登録・変更・追加が追加される。
【００３５】
デコード処理部１１１は、ＰＣからデータを受信し始めた旨の通知が受信制御部１１０から入力されると、内部処理情報として「コマンド解析中」を内部処理情報記憶部１０３に設定する。また、デコード処理部１１１は、受信制御部１１０からデータを受信した旨の通知が入力されるごとに、受信制御部１１０により受信バッファ１０１に書き込まれたデータを読み出し、このデータを解析する。そして、デコード処理部１１１は、解析したデータが、送信されてくる印刷データ量を指定する制御コード（印刷ジョブに記述されている制御コード）であった場合には、内部処理情報として「連続送信中」を内部処理情報記憶部１０３に設定する。
【００３６】
編集／展開処理部１１２は、デコード処理部１１１から解析結果が入力されると、この解析結果に基づき、受信バッファ１０１からデータを読み出し、この読み出したデータが印刷データの場合には、この印刷データをラスタデータに変換し、このラスタデータを図示しないラスタデータ記憶部に記憶する。また、編集／展開処理部１１２は、このラスタデータをラスタデータ記憶部に記憶したのち、印刷処理部１１３に制御の主体を移行する。
【００３７】
印刷処理部１１３は、ラスタデータ記憶部に記憶されているラスタデータを順次読み出し、このラスタデータを用いて印刷媒体に印刷を行う。
【００３８】
次に、本発明に係る実施例１の画像形成装置の動作を説明する。
【００３９】
図６は、本発明に係る実施例１の画像形成装置の動作を示すフローチャートである。
【００４０】
まず、画像形成装置の受信制御部１１０は、ＰＪＬ若しくはＰＤＬ言語で記述された印刷ジョブのデータ、又は、ＰＤＦファイル若しくはＥＰＳファイルのデータを受信したのち、次のデータを受信したか否かを判定する（ステップＳ１）。受信制御部１１０は、次のデータを受信したと判定した場合には（ステップＳ１；Ｙ）、受信状況記憶部１０２に記憶されている受信状況情報を読み出す。次に、受信制御部１１０は、読み出した受信状況情報が「データ受信中」であるか否かを判定する（ステップＳ２）。
【００４１】
受信制御部１１０は、読み出した受信状況情報が「データ受信中」でないと判定した場合には（ステップＳ２；Ｎ）、受信状況記憶部１０２に受信状況情報を「データ受信中」に設定したのち（ステップＳ３）、データを受信した旨の通知をデコード処理部１１１に出力する。
【００４２】
デコード処理部１１１は、前述の通知が受信制御部１１０から入力されると、内部処理情報記憶部１０３に記憶されている内部処理情報を「コマンド解析中」に設定し（ステップＳ４）、ステップＳ５に処理を移行させる。
【００４３】
ステップＳ２において、受信制御部１１０は、受信状況記憶部１０２から読み出した受信状況情報が「データ受信中」であると判定した場合には（ステップＳ２；Ｙ）、受信タイムアウト検出カウンタ１０８を０に設定する（ステップＳ５）。その後、受信制御部１１０は、ＰＣから受信したデータを受信バッファ１０１に書き込む（ステップＳ６）。次に、受信制御部１１０は、受信したデータがあった旨の通知をデコード処理部１１１に出力する（ステップＳ７）。
【００４４】
デコード処理部１１１は、前述の通知が受信制御部１１０から入力されると、受信バッファ１０１に最後に書き込まれたデータを読み出し、この読み出したデータが以後送信されてくる印刷データ量を指定する制御コードであるか否かを判定する（ステップＳ８）。
【００４５】
デコード処理部１１１は、受信バッファ１０１から読み出したデータが前述の制御コードでないと判定した場合には（ステップＳ８；Ｎ）、ステップＳ１に処理を移行させ、上述したと同様な処理を続行させる。一方、デコード処理部１１１は、前述の制御コードであると判定した場合には（ステップＳ８；Ｙ）、内部処理情報記憶部１０３に記憶されている「コマンド解析中」を「連続受信中」に設定し（ステップＳ９）、ステップＳ１に処理を移行させ、上述したと同様な処理を続行させる。
【００４６】
ステップＳ１において、受信制御部１１０は、次のデータを受信しないと判定した場合（ステップＳ１；Ｎ）、受信状況記憶部１０２に記憶されている受信状況情報が「データ受信中」であるか否かを判定する（ステップＳ１０）。受信制御部１１０は、受信状況記憶部１０２に記憶されている受信状況情報が「データ受信中」でないと判定した場合（ステップＳ１０；Ｎ）、すなわち、ＰＣから印刷ジョブ又はファイルのデータが送信されてきていないと判定した場合には、ステップＳ１に処理を移行させ、上述した動作と同様な処理を続行させる。
【００４７】
一方、受信制御部１１０は、受信状況記憶部１０２に記憶されている受信状況情報が「データ受信中」であると判定した場合（ステップＳ１０；Ｙ）、モード指定情報記憶部１０４からモード指定情報を読み出す。次に、受信制御部１１０は、読み出したモード指定情報が「終端コード列検出モード」であるか、又は「通常モード」であるかを判定する（ステップＳ１１）。
【００４８】
ＰＣから受信したデータがＰＤＦファイル又はＥＰＳファイルを形成するデータであって、次のデータが受信せず、かつ、受信状況記憶部１０２に記憶されている受信状況情報が「データ受信中」であると受信制御部１１０により判定された場合、最後に受信したデータは、終端コード列を検出するための候補となるデータである。
【００４９】
受信制御部１１０は、読み出したモード指定情報が「終端コード列検出モード」であると判定した場合には（ステップＳ１１；「終端コード列検出モード」）、内部処理情報記憶部１０３に内部処理情報として「コマンド解析中」が記憶されているか否かを判定する（ステップＳ１２）。受信制御部１１０は、内部処理情報記憶部１０３に「コマンド解析中」が記憶されていないと判定した場合（ステップＳ１２；Ｎ）、すなわち、内部処理情報記憶部１０３に「連続受信中」が記憶されている場合には、ステップＳ１９に処理を移行させる。
【００５０】
受信制御部１１０により、内部処理情報記憶部１０３に「コマンド解析中」が記憶されていないと判定された場合、すなわち、内部処理情報記憶部１０３に「連続受信中」が記憶されている場合には、ＰＣから受信したデータは印刷ジョブのデータであり、しかも、このデータは印刷データである。
【００５１】
一方、受信制御部１１０は、内部処理情報記憶部１０３に内部処理情報として「コマンド解析中」が記憶されていると判定した場合には（ステップＳ１２；Ｙ）、後述する図７のフローチャートに示す動作を行う終端コード列検出処理を行う（ステップＳ１３）。
【００５２】
ここで、受信制御部１１０により、内部処理情報記憶部１０３に「コマンド解析中」が記憶されていると判定された場合、ＰＣから受信したデータがＰＤＦファイル又はＥＰＳファイルを形成するデータのときには、この受信したデータは最後のデータであり、終端コード列を検出するための候補となるデータである。また、ＰＣから受信したデータがＰＪＬ又はＰＤＬ言語で記述された印刷ジョブのデータであるときには、このデータは終端コードである。
【００５３】
受信制御部１１０は、終端コード列検出処理を行ったのち、終端コード列を検出したか否かを判定する（ステップＳ１４）。受信制御部１１０は、終端コード列を検出しないと判定した場合には（ステップＳ１４；Ｎ）、ステップＳ１９に処理を移行させる。一方、受信制御部１１０は、終端コード列を検出したと判定した場合には（ステップＳ１４；Ｙ）、受信状況記憶部１０２に記憶されている受信状況情報を「データ受信待ち中」に設定する（ステップＳ１５）。次に、受信制御部１１０は、終端コード列を検出した旨の通知をデコード処理部１１１に出力する（ステップＳ１６）。
【００５４】
デコード処理部１１１は、前述の通知が受信制御部１１０から入力されると、編集／展開処理部１１２に解析結果を出力する。
【００５５】
編集／展開処理部１１２は、デコード処理部１１１から解析結果が入力されると、この解析結果に基づき、受信バッファ１０１からデータを読み出し、この読み出したデータが印刷データの場合には、この印刷データをラスタデータに変換し（ステップＳ１７）、このラスタデータを図示しないラスタデータ記憶部に記憶したのち、制御の主体を印刷処理部１１３に移行する。
【００５６】
印刷処理部１１３は、制御部の主体が自己に移行されると、ラスタデータ記憶部に記憶されているラスタデータを順次読み出し、このラスタデータを用いて印刷媒体に印刷を行い（ステップＳ１８）、処理を終了させる。
【００５７】
ステップＳ１１において、受信制御部１１０は、モード指定情報記憶部１０４に記憶されているモード指定情報が「通常モード」あると判定した場合には（ステップＳ１１；「通常モード」）、受信タイムアウト検出カウンタ１０８にカウントされているカウント値に１を加算する（ステップＳ１９）。
【００５８】
その後、受信制御部１１０は、受信タイムアウト検出カウンタ１０８にカウントされているカウント値がカウント数記憶部１０７に記憶されているタイムアウト値以下であるか否かを判定する（ステップＳ２０）。受信制御部１１０は、カウント値がタイムアウト値以下であると判定した場合には（ステップＳ２０；Ｙ）、１秒間待機し（ステップＳ２１）、ステップＳ１に処理を移行させ、上述したと同様な処理を続行させる。
【００５９】
一方、受信制御部１１０は、カウント値がタイムアウト値より大きいと判定した場合には（ステップＳ２０；Ｎ）、受信状況記憶部１０２に記憶されている受信状況情報を「データ受信待ち中」に設定したのち（ステップＳ２２）、タイムアウトした旨の通知をデコード処理部１１１に出力し（ステップＳ２３）、処理を終了させる。
【００６０】
ステップＳ１３における終端コード列検出処理の動作を説明する。
【００６１】
図７は、図６中のステップＳ１３における終端コード列検出処理の動作を示すフローチャートである。ステップＳ１２において、受信制御部１１０は、内部処理情報記憶部１０３に記憶されている内部処理情報が「コマンド解析中」に設定されていると判定した場合には（ステップＳ１２；Ｙ）、ＲＡＭ（図示せず）に記憶されている数値Ｉに０をセットする（ステップＳ１３１）。次に、受信制御部１１０は、数値Ｉが３より大きいか否かを判定する（ステップＳ１３２）。
【００６２】
受信制御部１１０は、数値Ｉが３未満であると判定した場合には（ステップＳ１３２；Ｎ）、ポインタ記憶部１０６中の参照ポインタに、終端コード列比較テーブル１０５に記憶されている第Ｉ（Ｉ＝１、２）終端コード列の先頭文字に割り当てられたアドレスを設定する（ステップＳ１３３）。
【００６３】
例えば、第Ｉ（Ｉ＝３）終端コード列が図４に示すように、「０ｘ０ｄ、０ｘ０ａ、０ｘ２５、０ｘ２５、０ｘ４５、０ｘ４ｆ、０ｘ４６、０ｘ０ｄ、０ｘ０ａ」である場合、第Ｉ終端コード列の先頭文字「０ｘ０ｄ」に割り当てられたアドレス「０ｘ０ｄ＊」がポインタ記憶部１０６の参照ポインタに設定される。
【００６４】
次に、受信制御部１１０は、ポインタ記憶部１０６中の比較先ポインタに第Ｉ終端コード列の最終文字に割り当てられたアドレスを設定する（ステップＳ１３４）。
【００６５】
前述の例では、第Ｉ終端コード列の最終文字に割り当てられたアドレス「０ｘ０ａ＊」がポインタ記憶部１０６の比較先ポインタに設定される。
【００６６】
その後、受信制御部１１０は、ポインタ記憶部１０６中の比較元ポインタに受信バッファ１０１中の最後に記憶されたデータを形成する最終文字に割り当てられたアドレスを設定する（ステップＳ１３５）。
【００６７】
前述の例では、受信バッファ１０１中の最後に記憶されたデータを形成する最終文字に割り当てられた「０ｘ０ａ＊＊」が比較元ポインタに設定される。
【００６８】
その後、受信制御部１１０は、ポインタ記憶部１０６の比較先ポインタにより指定されたアドレスの箇所に記述された文字と、比較元ポインタにより指定されたアドレスの箇所に記述された文字が等しいか否かを判定する（ステップＳ１３６）。受信制御部１１０は、ポインタ記憶部１０６の比較先ポインタにより指定されたアドレスの箇所に記述された文字と、比較元ポインタにより指定されたアドレスの箇所に記述された文字が等しくないと判定した場合には（ステップＳ１３６；Ｎ）、ＲＡＭに記憶されている数値Ｉに１を加算し（ステップＳ１３７）、ステップＳ１３２に処理を移行させ、上述したと同様な処理を続行させる。
【００６９】
一方、受信制御部１１０は、ポインタ記憶部１０６の比較先ポインタにより指定されたアドレスの箇所に記述された文字と、比較元ポインタにより指定されたアドレスの箇所に記述された文字が等しいと判定した場合には（ステップＳ１３６；Ｙ）、先に書き込んだアドレスの１つ前のアドレスをポインタ記憶部１０６の比較先ポインタに書き込む（ステップＳ１３８）。
【００７０】
前述の例では、第Ｉ終端コード列のアドレス「０ｘ０ｄ」がポインタ記憶部１０６の比較先に設定される。
【００７１】
その後、受信制御部１１０は、先に書き込んだアドレスの１つ前のアドレスを比較元ポインタに書き込む（ステップＳ１３９）。
【００７２】
前述の例では、受信バッファ１０１のアドレス「０ｘ０ｄ」がポインタ記憶部１０６の比較元に設定される。
【００７３】
次に、受信制御部１１０は、ポインタ記憶部１０６の参照ポインタに記憶されている先頭アドレスと、比較先ポインタに記憶されているアドレスが等しいか否かを判定する（ステップＳ１４０）。受信制御部１１０は、参照ポインタに記憶されている先頭アドレスと、比較先ポインタに記憶されているアドレスが異なると判定した場合には（ステップＳ１４０；Ｎ）、ステップＳ１３６に処理を移行し、上述したと同様な処理を続行する。一方、受信制御部１１０は、参照ポインタに記憶されている先頭アドレスと、比較先ポインタに記憶されているアドレスが等しいと判定した場合には（ステップＳ１４０；Ｙ）、終端コード列を検出し（ステップＳ１４１）、終端コード列を検出した旨の通知をデコード処理部１１１に出力し、処理を終了させる。
【００７４】
ステップＳ１３２において、受信制御部１１０は、数値Ｉが３より大きいと判定した場合（ステップＳ１３２；Ｙ）、すなわち、次の終端コード列がないと判定した場合には、終端コード列が検出できなかったことを認識し（ステップＳ１４２）、この旨の通知をデコード処理部１１１に出力し、終端コード列検出処理を終了させる。
【００７５】
実施例１によれば、受信制御部１１０が、ＰＣからのデータを受信しなくなり、受信状況記憶部１０２に記憶されている受信状況情報が「データ受信中」で、かつ、モード指定情報記憶部１０４のモード指定情報が「終端コード列検出モード」である場合には、受信したデータを終端コード列の候補として認識し、この終端コード列の候補と、終端コード列比較テーブル１０５に登録されている終端コード列とを比較し、その結果、終端コード列の候補と一致する終端コード列が終端コード列比較テーブル１０５に登録されているとき、検出した終端コード列の候補を終端コードであると決定するため、受信タイムアウトを待つことなく印刷開始できるようになるため、上位装置からダイレクト印刷機能でＰＤＦやＥＰＳのファイルを受信しても、このファイルの印刷開始時間を短縮することができる。
【００７６】
また、実施例１によれば、従来、上位装置から送信されてくるＰＤＦやＥＰＳ形式のファイルには、ファイル送信用のユーティリティを用いて、ＰＪＬ言語でラッピング（先頭部分に＠ＰＪＬ  ＥＮＴＥＲ  ＬＡＮＧＵＡＧＥを追加し、かつ、終端部分に終端コードとしてＵＥＬコードを追加）することで、画像形成装置側で、ＰＪＬ言語として終端コードを認識可能とする方法を用いていたが、受信制御部１１０が、上述したようにして終端コード列の候補を終端コード列と決定するので、ＰＪＬ言語でラッピングする処理をなくすことができる。
【実施例２】
【００７７】
図８は、本発明に係る実施例２の画像形成装置の構成を示すブロック図である。図８に示すように、実施例２の画像形成装置２０は、実施例１の画像形成装置１０と同様に、上位装置としてのＰＣから受信したＰＪＬ言語若しくはＰＤＬ言語で記述された印刷ジョブ、又は、ＰＤＦファイル若しくはＥＰＳファイルに記述された印刷データを用いて印刷媒体に印刷を行う装置である。
【００７８】
この画像形成装置２０は、受信バッファ２０１と、受信状況記憶部２０２と、内部処理情報記憶部２０３と、モード指定情報記憶部２０４と、履歴バッファ２０５と、終端コード列みなし回数記憶部２０６と、終端コード列みなしバイト数記憶部２０７と、未使用履歴領域番号記憶部２０８と、一致履歴領域番号記憶部２０９と、最大一致バイト数記憶部２１０と、最小一致回数記憶部２１１と、最小一致バイト数記憶部２１２と、最大履歴領域番号記憶部２１３と、カウント数記憶部２１４と、受信タイムアウト検出カウンタ２１５と、オペレーションパネル部２１６と、受信制御部２１７と、デコード処理部２１８と、編集／展開処理部２１９と、印刷処理部２２０とを備える。
【００７９】
受信制御部２１７、デコード処理部２１８、編集／展開処理部２１９、及び、印刷処理部２２０は、図示しないＣＰＵが図示しないＲＯＭに記憶されている制御プログラムを実行することにより生成され、後述する機能を有する。
【００８０】
受信バッファ２０１、受信状況記憶部２０２、内部処理情報記憶部２０３、モード指定情報記憶部２０４、カウント数記憶部２１４と、受信タイムアウト検出カウンタ２１５、オペレーションパネル部２１６、デコード処理部２１８、編集／展開処理部２１９、及び、印刷処理部２２０のそれぞれは、実施例１のものと同一である。
【００８１】
履歴バッファ２０５は、履歴領域０から履歴領域ｎの履歴領域を有しており、更に、各履歴領域ｉ（ｉ＝０、１、・・・、ｎ）は、図９に示すように、一致回数を記憶する一致回数記憶領域と、一致バイト数を記憶する一致バイト数記憶領域と、終端コード列を記憶する終端コード列記憶領域とを有している。一致回数記憶領域に記憶されている一致回数、一致バイト数記憶領域に記憶されている一致バイト数、及び、終端コード列記憶領域に記憶されている終端コード列は、終端コード列検出モード状態で、かつ、タイムアウトが発生したときに、最後に受信したデータの履歴を示している。なお、終端コード列記憶領域に記憶することが可能な終端コード列のバイト数は、終端コード列みなしバイト数記憶部２０７に登録されているバイト数である。
【００８２】
一致回数は、受信制御部２１７が受信バッファ２０１に記憶された最後のデータと、履歴バッファ２０５の履歴領域ｉに記憶されている終端コード列とを比較するか否かを判定するための判定条件である。すなわち、受信制御部２１７は、この一致回数が終端コード列みなし回数記憶部２０６に記憶されている回数（以下、終端コード列みなし回数という）以上の場合には、履歴領域ｉに記憶されている終端コード列と、受信バッファ２０１に記憶された最後のデータとを比較し、それ以外の場合には比較しない。
【００８３】
一致バイト数は、受信バッファ２０１に記憶された最後のデータと、履歴バッファ２０５の履歴領域ｉに記憶されている終端コード列とを、受信制御部２１７が比較するか否かを判定するための条件を示す。すなわち、受信制御部２１７は、この一致バイト数が終端コード列みなしバイト数記憶部２０７に記憶されているバイト数（以下、終端コード列みなしバイト数という）以上の場合には、履歴領域ｉに記憶されている終端コード列と、受信バッファ２０１に記憶された最後のデータとを比較し、それ以外の場合には比較しない。
【００８４】
図８に示す終端コード列みなし回数記憶部２０６は、前述の終端コード列みなし回数を記憶する。
【００８５】
終端コード列みなしバイト数記憶部２０７は、前述の終端コード列みなしバイト数を記憶する。
【００８６】
未使用履歴領域番号記憶部２０８は、履歴バッファ２０５の中で、未だ使用されていない履歴領域ｉを指定する番号（以下、履歴領域指定番号という）を記憶する。なお、履歴領域指定番号としての「−１」は、履歴領域０から履歴領域ｎのすべてが使用されていることを示している。
【００８７】
一致履歴領域番号記憶部２０９は、履歴バッファ２０５の中で、これから登録しようとしている終端コード列と、部分的に一致した終端コード列を記憶する履歴領域ｉを指定する番号を記憶する。なお、これから登録しようとしている終端コード列と、部分的に一致した終端コード列を記憶する履歴領域ｉがない場合には、「−１」が一致履歴領域番号記憶部２０９記憶される。
【００８８】
最大一致バイト数記憶部２１０は、履歴バッファ２０５に記憶されている一致バイト数に記憶させるバイト数（以下、最大一致バイト数という）を記憶する。この最大一致バイト数は、受信バッファ２０１に最後に書き込まれたデータと、該当する終端コード列との間で一致したバイト数である。
【００８９】
最小一致回数記憶部２１１は、履歴バッファ２０５中の履歴領域ｉに空きがない場合、履歴領域０〜履歴領域ｎの中から、受信バッファ２０１に最後に記憶されたデータを終端コード列として記憶させる履歴領域ｉを受信制御部２１７が決定するための情報としての最小一致回数を記憶する。すなわち、受信制御部２１７は、最小一致回数記憶部２１１に記憶されている最小一致回数以下の一致回数を記憶する履歴バッファ２０５の履歴領域ｉを、受信バッファ２０１に最後に記憶されたデータを終端コード列として記憶させる履歴領域ｉの候補として決定する。
【００９０】
最小一致バイト数記憶部２１２は、履歴バッファ２０５中の履歴領域ｉに空きがない場合、履歴領域０〜履歴領域ｎの中から、受信バッファ２０１に最後に記憶されたデータを終端コード列として記憶させる履歴領域ｉを受信制御部２１７が決定するための情報としての最小一致バイト数を記憶する。すなわち、受信制御部２１７は、最小一致バイト数記憶部２１２に記憶されている最小一致バイト数以下の一致バイト数を記憶する履歴バッファ２０５の履歴領域ｉを、受信バッファ２０１に最後に記憶されたデータを終端コード列として記憶させる履歴領域ｉとして決定する。
【００９１】
最大履歴領域番号記憶部２１３は、ＲＡＭに形成され、履歴バッファ２０５に取り得る履歴領域の中で最も大きい番号（以下、最大履歴領域番号という）を記憶する。図８に示す履歴バッファ２０５においては、この最大履歴領域番号は、「ｎ」である。
【００９２】
受信制御部２１７は、図１２のフローチャートに示す終端コード列検出処理、及び、図１３、図１４、及び図１５のフローチャートに示す終端コード列登録処理以外、実施例１の受信制御部１１０と同一な処理を行う。受信制御部２１７が行う終端コード列検出処理機能、及び、終端コード列登録処理機能は、本発明に係る実施例２の画像形成装置の動作を説明する箇所に記載されている。
【００９３】
次に、本発明に係る実施例２の画像形成装置の動作を説明する。
【００９４】
ステップＳ３１において、受信制御部２１７が、ＰＪＬ若しくはＰＤＬ言語で記述された印刷ジョブのデータ、又は、ＰＤＦファイル若しくはＥＰＳファイルのデータを受信したのち、次のデータを受信したか否かを判定する処理から、ステップＳ４２において、内部処理情報記憶部２０３に記憶されている内部処理情報が「コマンド解析中」であるか否かを判定する処理までの動作は、実施例１におけるステップＳ１の処理からステップＳ１２の処理までの動作と同一である。
【００９５】
受信制御部２１７は、内部処理情報記憶部２０３に記憶されている内部処理情報が「コマンド解析中」でないと判定した場合には（ステップＳ４２；Ｎ）、ステップＳ４９に処理を移行させる。一方、受信制御部２１７は、内部処理情報が「コマンド解析中」であると判定した場合には（ステップＳ４２；Ｙ）、後述する図１２のフローチャートに示す終端コード列検出処理を実行する。その後、ステップＳ４４において、受信制御部２１７は、終端コード列を検出したか否かを判定する処理から、ステップＳ４８において、印刷処理部２２０が印刷ジョブの印刷データ、又は、ファイルの印刷データを用いて印刷媒体に印刷を行う処理までの動作は、実施例１におけるステップＳ１４における処理からステップＳ４８における処理までの動作と同一である。
【００９６】
ステップＳ４１において、受信制御部２１７が、モード指定情報記憶部２０４に記憶されているモード指定情報が「通常モード」であると判定したのち、ステップＳ５２において、受信状況記憶部２０２に記憶されている受信状況情報を「データ受信待ち」に設定する処理間までの動作は、実施例１のステップ１１の処理からステップＳ２２の処理までの動作と同一である。
【００９７】
受信制御部２１７は、受信状況記憶部２０２に記憶されている受信状況情報を「データ受信待ち」に設定すると、モード指定情報記憶部２０４に記憶されているモード指定情報が「終端コード列検出モード」であるか否かを判定する（ステップＳ５３）。受信制御部２１７は、モード指定情報記憶部２０４に記憶されているモード指定情報が「終端コード列検出モード」であると判定した場合には（ステップＳ５３；Ｙ）、受信状況記憶部２０２に記憶されている受信状況情報が「コマンド解析中」であるか否かを判定する（ステップＳ５４）。
【００９８】
受信制御部２１７は、受信状況記憶部２０２に記憶されている受信状況情報が「コマンド解析中」でないと判定した場合（ステップＳ５４；Ｎ）、すなわち、「連続受信中」であると判定した場合には、ステップＳ５６に処理を移行させる。一方、受信制御部２１７は、受信状況情報が「コマンド解析中」であると判定した場合（ステップＳ５４；Ｙ）、後述する図１３、図１４、及び図１５のフローチャートに示す終端コード列登録処理を実行し、ステップＳ５６に処理を移行させる。
【００９９】
受信制御部２１７は、モード指定情報記憶部２０４に記憶されているモード指定情報が「終端コード列検出モード」でないと判定した場合（ステップＳ５３；Ｙ）、すなわち、「通常モード」の場合には、タイムアウトした旨の通知をデコード処理部１１１に出力し（ステップＳ５６）、処理を終了させる。
【０１００】
図１２は、図１０中のステップＳ４３における終端コード列検出処理を示すフローチャートである。ステップＳ１２において、受信制御部２１７は、内部処理情報記憶部２０３に記憶されている内部処理情報が「コマンド解析中」に設定されていると判定した場合には（ステップＳ４２；Ｙ）、受信制御部２１７は、ＲＡＭに記憶されている数値ｉに０を設定する（ステップＳ４３１）。
【０１０１】
ステップＳ４３における終端コード列検出処理の動作を説明する。
【０１０２】
図１２は、図１０中のステップＳ４３における終端コード列検出処理の動作を示すフローチャートである。受信制御部２１７は、内部処理情報記憶部２０３に記憶されている内部処理情報が「コマンド解析中」であると判定した場合には（ステップＳ４２；Ｙ）ＲＡＭに記憶されている数値ｉに「０」を設定する（ステップＳ４３１）。
【０１０３】
次に、受信制御部２１７は、終端コード列みなし回数記憶部２０６に記憶されている終端コード列みなし回数を読み出し、その後、履歴領域ｉの一致回数記憶領域に記憶されている一致回数が読み出した終端コード列みなし回数以上であるか否かを判定する（ステップＳ４３２）。受信制御部２１７は、一致回数記憶領域に記憶されている一致回数が読み出した終端コード列みなし回数未満であると判定した場合には（ステップＳ４３２；Ｎ）、ステップＳ４３７に処理を移行させる。
【０１０４】
受信制御部２１７は、一致回数記憶領域に記憶されている一致回数が読み出した終端コード列みなし回数以上であると判定した場合には（ステップＳ４３２；Ｙ）、終端コード列みなしバイト数記憶部２０７に記憶されている終端コード列みなしバイト数を読み出し、その後、履歴領域ｉの一致バイト数記憶領域に記憶されている一致バイト数が先に読み出したみなしバイト数以上であるか否かを判定する（ステップＳ４３３）。受信制御部２１７は、一致バイト数記憶領域に記憶されている一致バイト数が先に読み出した終端コード列みなしバイト数未満であると判定した場合には（ステップＳ４３３；Ｎ）、ステップＳ４３６に処理を移行させる。
【０１０５】
受信制御部２１７は、一致バイト数記憶領域に記憶されている一致バイト数が先に読み出した終端コード列みなしバイト数以上であると判定した場合には（ステップＳ４３３；Ｙ）、履歴領域ｉ中の終端コード列記憶領域に記憶されている終端コード列と、受信バッファ２０１に記憶されている最後に受信したデータを互いに、最後のバイトから比較し、不一致するまで順次前のバイトにさかのぼって比較する（ステップＳ４３４）。
【０１０６】
受信制御部２１７は、履歴領域ｉ中の終端コード列記憶領域に記憶されている終端コード列と、受信バッファ２０１に記憶されている最後に受信したデータを互いに比較した結果、一致したバイト数が終端コード列みなしバイト数記憶部２０７に記憶されている終端コード列みなしバイト数以上であるか否かを判定する（ステップＳ４３５）。
【０１０７】
受信制御部２１７は、一致したバイト数が前述のみなしバイト数以上であると判定した場合には（ステップＳ４３５；Ｙ）、終端コード列を検出したと認識し（ステップＳ４３６）、終端コード列検出処理を終了する。一方、受信制御部２１７は、一致したバイト数が前述のみなしバイト数未満であると判定した場合には（ステップＳ４３５；Ｎ）、ＲＡＭに記憶されている数値ｉに１を加算する（ステップＳ４３７）。
【０１０８】
次に、受信制御部２１７は、最大履歴領域番号記憶部２１３に記憶されている最大履歴領域番号ｎを読み出し、その後、ＲＡＭに記憶されている数値ｉが先に読み出した最大履歴領域番号未満であるか否かを判定する（ステップＳ４３８）。受信制御部２１７は、ＲＡＭに記憶されている数値ｉが先に読み出した最大履歴領域番号ｎ未満であると判定した場合には（ステップＳ４３８；Ｙ）、ステップＳ４３２に処理を移行し、上述したと同様な処理を続行させる。
【０１０９】
受信制御部２１７は、ＲＡＭに記憶されている数値ｉが先に読み出した最大履歴領域番号ｎ以上であると判定した場合には（ステップＳ４３８；Ｎ）、終端コード列を検出できなかったと認識し（ステップＳ４３９）、終端コード列検出処理を終了する。
【０１１０】
ステップＳ５５における終端コード列登録処理の動作を説明する。
【０１１１】
図１３、図１４、及び図１５は、図１１中のステップＳ５５における終端コード登録処理の動作を示すフローチャートである。ステップＳ５４において、受信制御部２１７は、内部処理情報記憶部２０３に記憶されている内部処理情報が「コマンド解析中」であると判定した場合には、未使用履歴領域番号記憶部２０８及び一致履歴領域番号記憶部２０９に「−１」を設定する（ステップＳ５５１）。
【０１１２】
次に、受信制御部２１７は、受信バッファ２０１に最後に記憶されたデータが履歴バッファ２０５の履歴領域ｉに記憶されている終端コード列と比較される条件として、最低３バイトを有する必要があることを示す「３」を最大一致バイト数として最大一致バイト数記憶部２１０に設定する（ステップＳ５５２）。その後、受信制御部２１７は、図示しないＲＡＭに記憶されている数値ｉを０に設定する（ステップＳ５５３）。
【０１１３】
その後、受信制御部２１７は、ＲＡＭに記憶されている数値ｉを０に設定したのち、履歴バッファ２０５中の履歴領域ｉが使用されているか否かを判定する（ステップＳ５５４）。受信制御部２１７は、履歴領域ｉが使用されていないと判定した場合には（ステップＳ５５４；Ｎ）、未使用履歴履歴番号記憶部２０８に履歴領域番号ｉを設定し（ステップＳ５５５）、ステップＳ５６０に処理を移行させる。
【０１１４】
一方、受信制御部２１７は、履歴領域ｉが使用されていると判定した場合には（ステップＳ５５４；Ｙ）、履歴領域ｉ中の終端コード列記憶領域に記憶されている終端コード列と、受信バッファ２０１に記憶されている最後に受信したデータを互いに、最後のバイトから比較し、不一致するまで順次前のバイトにさかのぼって比較する（ステップＳ５５６）。
【０１１５】
受信制御部２１７は、履歴領域ｉ中の終端コード列記憶領域に記憶されている終端コード列と、受信バッファ２０１に記憶されている最後に受信したデータを互いに比較した結果、一致したバイト数が最大一致バイト数記憶部２１０に記憶されている最大一致バイト数以上であるか否かを判定する（ステップＳ５５７）。
【０１１６】
受信制御部２１７は、一致したバイト数が最大一致バイト数記憶部２１０に記憶されている「３」以上であると判定した場合には（ステップＳ５５７；Ｙ）、一致履歴領域番号記憶部２０９に履歴領域番号ｉを設定する（ステップＳ５５８）。次に、受信制御部２１７は、最大一致バイト数記憶部２１０に記憶されている「３」を、受信バッファ２０１に最後に記憶したデータと、履歴領域ｉ中の終端コード列記憶領域に記憶されている終端コード列との間で一致したバイト数に上書きし（ステップＳ５５９）、ステップＳ５６０に処理を移行させる。
【０１１７】
ステップＳ５５７において、受信制御部２１７は、一致したバイト数が最大一致バイト数記憶部２１０に記憶されている「３」未満であると判定した場合には（ステップＳ５５７；Ｎ）、ＲＡＭに記憶されている数値ｉに１を加算する（ステップＳ５６０）。次に、受信制御部２１７は、ＲＡＭに記憶されている数値ｉが最大履歴領域番号記憶部２１３に記憶されている最大履歴領域番号ｎ未満であるか否かを判定する（ステップＳ５６１）。
【０１１８】
受信制御部２１７は、ＲＡＭに記憶されている数値ｉが最大履歴領域番号記憶部２１３に記憶されている最大履歴領域番号ｎ未満であると判定した場合には（ステップＳ５６１；Ｙ）、ステップ５５４に処理を移行させ、上述したと同様な処理を続行させる。一方、受信制御部２１７は、数値ｉが最大履歴領域番号記憶部２１３に記憶されている最大履歴領域番号以上であると判定した場合には（ステップＳ５６１；Ｎ）、一致履歴領域番号記憶部２０９に記憶されている一致履歴番号が「−１」であるか否かを判定する（ステップＳ５６２）。
【０１１９】
受信制御部２１７は、一致履歴領域番号記憶部２０９に記憶されている一致履歴番号が「−１」であると判定した場合には（ステップＳ５６２；Ｙ）、履歴領域ｉの一致回数記憶領域に記憶されている一致回数に１を加算する（ステップＳ５６３）。次に、受信制御部２１７は、最大一致バイト数記憶部２１０から最大一致バイト数を読み出し、この最大一致バイト数を履歴領域ｉの一致バイト数記憶領域に上書きし（ステップＳ５６４）、終端コード列登録処理を終了する。これにより、既に履歴バッファ２０５に登録されていた終端コード列に対し、一致回数及び一致バイト数が更新されたことになる。
【０１２０】
ステップＳ５６２において、受信制御部２１７は、一致履歴領域番号記憶部２０９に記憶されている一致履歴番号が「−１」でないと判定した場合には（ステップＳ５６２；Ｎ）、未使用履歴履歴番号記憶部２０８から未使用履歴番号を読み出し、この未使用履歴番号が「−１」であるか否かを判定する（ステップＳ５６５）。
【０１２１】
受信制御部２１７は、この未使用履歴番号が「−１」でないと判定した場合（ステップＳ５６５；Ｎ）、すなわち、履歴バッファ２０５の全ての履歴領域が使用済みでない場合には、ステップＳ５７４に処理を移行させる。一方、受信制御部２１７は、この未使用履歴番号が「−１」であると判定した場合（ステップＳ５６５；Ｙ）、すなわち、履歴バッファ２０５の全ての履歴領域が使用済みである場合には、最も終端コード列としての可能性が低い履歴領域を再利用するために、次のような処理を行う。
【０１２２】
すなわち、受信制御部２１７は、最小一致回数記憶部２１１及び最小一致バイト数記憶部２１２に「２５５」を書き込む（ステップＳ５６６）。次に、受信制御部２１７は、ＲＡＭに記憶されている数値ｉに０を設定する（ステップＳ５６７）。その後、受信制御部２１７は、最小一致回数記憶部２１１に記憶されている最小一致回数を読み出したのち、履歴領域ｉの一致回数記憶領域に記憶されている一致回数が先に読み出した最小一致回数以下であるか否かを判定する（ステップＳ５６８）。
【０１２３】
受信制御部２１７は、履歴領域ｉの一致回数記憶領域に記憶されている一致回数が先に読み出した最小一致回数より大きいと判定した場合には（ステップＳ５６８；Ｎ）、ステップＳ５７２に処理を移行する。一方、受信制御部２１７は、履歴領域ｉの一致回数記憶領域に記憶されている一致回数が先に読み出した最小一致回数以下であると判定した場合には（ステップＳ５６８；Ｙ）、最小一致バイト数記憶部２１２に記憶されている最小一致バイト数を読み出したのち、履歴領域ｉの一致バイト数記憶領域に記憶されている一致バイト数が先に読み出した最小一致バイト数以下であるか否かを判定する（ステップＳ５６９）。
【０１２４】
受信制御部２１７は、履歴領域ｉの一致バイト数記憶領域に記憶されている一致バイト数が先に読み出した最小一致バイト数より大きいと判定した場合には（ステップＳ５６９；Ｎ）、ステップＳ５７２に処理を移行する。一方、受信制御部２１７は、履歴領域ｉの一致バイト数記憶領域に記憶されている一致バイト数が先に読み出した最小一致バイト数以下であると判定した場合には（ステップＳ５６９；Ｙ）、未使用履歴領域番号記憶部２０８にＲＡＭに記憶されている数値ｉを設定する（ステップＳ５７０）。
【０１２５】
次に、受信制御部２１７は、最小一致回数記憶部２１１に記憶されている最小一致回数を読み出し、履歴領域ｉの一致回数記憶領域に先に読み出した最小一致回数を上書きし、更に、最小一致バイト数記憶部２１２に記憶されている最小一致バイト数を読み出し、履歴領域ｉの一致バイト数記憶領域に先に読み出した最小一致バイト数を上書きする（ステップＳ５７１）。
【０１２６】
その後、受信制御部２１７は、ＲＡＭに記憶されている数値ｉに１を加算したのち（ステップＳ５７２）、最大履歴領域番号記憶部２１３から最大履歴領域番号ｎを読み出す。そして、受信制御部２１７は、数値ｉが最大履歴領域番号ｎ未満であるか否かを判定する（ステップＳ５７３）。受信制御部２１７は、数値ｉが最大履歴領域番号ｎ未満であると判定した場合には（ステップＳ５７３；Ｙ）、ステップ５６８に処理を移行させ、上述したと同様な処理を続行する。
【０１２７】
一方、受信制御部２１７は、数値ｉが最大履歴領域番号ｎ以上であると判定した場合には（ステップＳ５７３；Ｎ）、受信制御部２１７は、終端コード列みなしバイト数記憶部２０７から終端コード列みなしバイト数を読み出す。次に、受信制御部２１７は、未使用履歴領域番号記憶部２０８に記憶されている未使用履歴領域番号を読み出す。その後、受信制御部２１７は、受信バッファ２０１に最後に書き込まれたデータのうち、最後の文字を含むようにして、先に読み出した終端コード列みなしバイト数分のデータを読み出す。そして、受信制御部２１７は、先に読み出した未使用履歴領域番号に該当する履歴領域ｉの終端コード列記憶領域に、先に読み出した終端コード列みなしバイト数分のデータを終端コード列として書き込む（ステップＳ５７４）。
【０１２８】
その後、受信制御部２１７は、先に読み出した未使用履歴領域番号に該当する履歴領域ｉの一致回数記憶領域に一致回数として「１」に設定する（ステップＳ５７５）。更に、受信制御部２１７は、先に読み出した未使用履歴領域番号に該当する履歴領域ｉの一致バイト数記憶領域に、先に読み出した終端コード列みなしバイト数に設定し（ステップＳ５７６）、終端コード列登録処理を終了する。
【０１２９】
実施例２によれば、受信制御部２１７は、ＰＣからのデータを受信しなくなり、受信状況記憶部２０２に記憶されている受信状況情報が「データ受信中」で、かつ、モード指定情報記憶部２０４のモード指定情報が「終端コード列検出モード」である場合には、受信したデータ列を終端コード列の候補として認識し、この終端コード列の候補と、履歴バッファ２０５の履歴領域ｉに登録されている終端コード列とを比較し、その結果、終端コード列の候補と一致する終端コード列が履歴バッファ２０５の履歴領域ｉに登録されているとき、検出した終端コード列の候補を終端コードであると決定するため、受信タイムアウトを待つことなく印刷開始できるようになるため、上位装置からダイレクト印刷機能でＰＤＦやＥＰＳのファイルを受信しても、このファイルの印刷開始時間を短縮することができる。
【０１３０】
また、実施例２によれば、従来、上位装置からの送信されてくるＰＤＦやＥＰＳ形式のファイルには、ファイル送信用のユーティリティを用いて、ＰＪＬ言語でラッピング（先頭部分に＠ＰＪＬ  ＥＮＴＥＲ  ＬＡＮＧＵＡＧＥ、終端部分に、終端コードとしてのＵＥＬコードを追加）することで、画像形成装置側で、ＰＪＬ言語として終端コードを認識可能とする方法を用いていたが、受信制御部１１０が、上述したようにして終端コード列の候補を終端コード列と決定するので、ＰＪＬ言語でラッピングする処理をなくすことができる。
【０１３１】
また、実施例２によれば、受信制御部２１７が、受信バッファ２０１に最後に記憶したデータを終端コード列として履歴バッファ２０５の履歴領域ｉに自動的に登録するので、ＰＤＦファイルやＥＰＳファイルなどの一般に既知である終端コード列だけでなく、社内システムなどの任意な終端コード列を有するファイルについても、印刷の開始時間を短縮することができる。また、新たに終端コード列を登録する毎に、制御プログラムを変更する作業をなくすことができる。
【０１３２】
実施例１の発明では、上位装置としてのＰＣが、終端コード列比較テーブル編集ツール画面を表示し、この画面を利用して終端コード列を画像形成装置１０の終端コード列比較テーブル１０５に登録・変更・追加し、また、画像形成装置１０の終端コード列比較テーブル１０５に登録されている終端コード列を読み出しているが、オペレーションパネル部１０９に終端コード列比較テーブル編集ツール画面を表示させ、この画面を利用して終端コード列を画像形成装置１０の終端コード列比較テーブル１０５に登録・変更・追加し、また、画像形成装置１０の終端コード列比較テーブル１０５に登録されている終端コード列を読み出し、この読み出した終端コード列をＰＣに送信するようにしてもよい。
【０１３３】
実施例１の発明において、更に、外部記憶装置（例えばＨＤＤ）、十分な容量を有するＥＥＰＲＯＭ、又はフラッシュメモリ等を備えれば、電源がオン及びオフのタイミングで、終端コード列比較テーブル１０５の内容を読み出し、また、書き込むことで、テーブル値を継続して利用することが可能である。
【０１３４】
実施例２の発明において、更に、外部記憶装置（例えばＨＤＤ）、十分な容量を有するＥＥＰＲＯＭ、又はフラッシュメモリ等を備えれば、電源がオン及びオフのタイミングで、履歴バッファ２０５の内容を読み出し、また、書き込むことで、始めに終端コード列を学習させえたのち、電源オン直後より、常にその終端コード列を認識可能な状態にすることが可能である。
【図面の簡単な説明】
【０１３５】
【図１】本発明に係る実施例１の画像形成装置の構成を示すブロック図である。
【図２】（ａ）ＰＤＦファイルの構成を示すブロック図であり、（ｂ）ＥＳＰファイルの構成を示すブロック図である。
【図３】終端コード列比較テーブルの構成を示すブロック図である。
【図４】終端コード列検出処理を説明する図である。
【図５】終端コード列比較テーブル編集ツール画面の一例を示す図である。
【図６】本発明に係る実施例１の画像形成装置の動作を示すフローチャートである。
【図７】図６中のステップＳ１３における終端コード列検出処理の動作を示すフローチャートである。
【図８】本発明に係る実施例２の画像形成装置の構成を示すブロック図である。
【図９】図８中の履歴領域を説明する図である。
【図１０】本発明に係る実施例２の画像形成装置の動作を示すフローチャート（その１）である。
【図１１】本発明に係る実施例２の画像形成装置の動作を示すフローチャート（その２）である。
【図１２】図１０中のステップＳ４３における終端コード列検出処理の動作を示すフローチャートである。
【図１３】図１１中のステップＳ５５における終端コード列登録処理の動作を示すフローチャート（その１）である。
【図１４】図１１中のステップＳ５５における終端コード列登録処理の動作を示すフローチャート（その２）である。
【図１５】図１１中のステップＳ５５における終端コード列登録処理の動作を示すフローチャート（その３）である。
【符号の説明】
【０１３６】
１０、２０  画像形成装置
１０１、２０１  受信バッファ
１０２、２０２  受信状況記憶部
１０３、２０３  内部処理情報記憶部
１０４、２０４  モード指定情報記憶部
１０５  終端コード列比較テーブル
１０６  ポインタ記憶部
１０７、２１３  カウント数記憶部
１０８、２１４  受信タイムアウト検出カウンタ
１０９、２１５  オペレーションパネル部
１１０、２１６  受信制御部
１１１、２１７  デコード処理部
１１２、２１８  編集／展開処理部
１１３、２１９  印刷処理部
２０５  履歴バッファ
２０６  終端コード列みなし回数記憶部
２０７  終端コード列みなしバイト数記憶部
２０８  未使用履歴領域番号記憶部
２０９  一致履歴領域番号記憶部
２１０  最大一致バイト記憶部
２１１  最小一致回数記憶部
２１２  最小一致バイト数記憶部
２１３  最大履歴領域番号記憶部
【図１】
2009202488.tif 000003
【図２】
2009202488.tif 000004
【図３】
2009202488.tif 000005
【図４】
2009202488.tif 000006
【図５】
2009202488.tif 000007
【図６】
2009202488.tif 000008
【図７】
2009202488.tif 000009
【図８】
2009202488.tif 000010
【図９】
2009202488.tif 000011
【図１０】
2009202488.tif 000012
【図１１】
2009202488.tif 000013
【図１２】
2009202488.tif 000014
【図１３】
2009202488.tif 000015
【図１４】
2009202488.tif 000016
【図１５】
2009202488.tif 000017