(57)【要約】【課題】エラー発生時の伝送効率の低下を抑制すること。【解決手段】送信側は、画像データを、主走査方向をｘ画素、副走査方向をｙラインで分割して送信する。各ラインには、ＣＲＣ符号を付加する。一方の受信側は、ライン毎にエラーの検知を行い、エラーが検知された場合、エラーの発生を示すエラー情報、及びエラーが検知されたラインを示すエラーライン情報を含むエラーヘッダー情報をペイロードに格納した応答を送信側に送信する。それにより、送信側は、このようなエラーヘッダー情報をペイロードに格納した応答を受信した場合、ｘ×ｙ画素の画像データに加えて、エラーヘッダー情報毎に、そのエラーヘッダー情報、及びエラーライン情報が示すラインの画像データをエラー再送領域に格納したペイロードを生成する。【選択図】図４
2017204738.tif 000002
【特許請求の範囲】
【請求項１】
データを分割して送信するデータ送信装置であって、
ヘッダ部分とデータ部分から構成されるパケットの送受信が可能な送受信部と、
前記データを記憶する記憶部と、
前記記憶部に記憶されているデータを第１の部分データに分割して抽出する抽出部と、
前記第１の部分データを複数の第２の部分データに分割し、該第２の部分データ毎に、該第２の部分データに発生するエラーを検知するための検知用情報を生成する情報生成部と、
前記第１の部分データ、及び前記情報生成部が生成した前記検知用情報を含むデータ部分を生成し、生成した前記データ部分に前記ヘッダ部分を付加したパケットを前記送受信部に送信させる送信制御部と、
を備えていることを特徴とするデータ送信装置。
【請求項２】
前記送信制御部は、前記パケットの送信先から前記エラーが検知された第２の部分データを示すエラー箇所情報をデータ部分に格納したパケットを前記送受信部が受信した場合、該エラー箇所情報、及び該エラー箇所情報が示す第２の部分データを含むデータ部分を生成して、該データ部分を含むパケットを前記送受信部に送信させる、ことを特徴とする請求項１に記載のデータ送信装置。
【請求項３】
前記送信制御部は、前記記憶部に未送信の第１の部分データが存在する場合、該未送信の第１の部分データ、及び前記検知用情報に、前記エラー箇所情報、及び該エラー箇所情報が示す第２の部分データを追加したデータ部分を生成して、該データ部分を含むパケットを前記送受信部に送信させる、ことを特徴とする請求項２に記載のデータ送信装置。
【請求項４】
分割されて送信されるデータに対応可能なデータ受信装置であって、
ヘッダ部分とデータ部分から構成されるパケットの送受信が可能な送受信部と、
前記送受信部が受信したパケットのデータ部分に格納されているデータを記憶する記憶部と、
前記データを分割して得られる第１の部分データ、及び該第１の部分データを分割して得られる第２の部分データ毎の該第２の部分データに発生するエラーを検知するための検知用情報を含むデータ部分を格納したパケットを前記送受信部が受信した場合に、前記第２の部分データ毎に対応する検知用情報を用いてエラーを検知するエラー検知部と、
前記送受信部が受信したパケットのデータ部分に格納されている第１の部分データを前記記憶部に格納する書込制御部と、
前記エラー検知部が前記エラーを検知した場合に、該エラー検知部が前記エラーを検知した第２の部分データを示すエラー箇所情報を格納した前記データ部分を生成して、該データ部分を含む応答用のパケットを前記送受信部に送信させる受信制御部と、
を備えていることを特徴とするデータ受信装置。
【請求項５】
前記書込制御部は、前記エラー箇所情報、及び該エラー箇所情報が示す第２の部分データがデータ部分に格納されているパケットを前記送受信部が受信した場合に、該第２の部分データを、前記記憶部上の該エラー箇所情報が示す第２の部分データとして置き換える、ことを特徴とする請求項４に記載のデータ受信装置。
【請求項６】
データの送受信のためのデータ送受信方法であって、
前記データの送信側は、
前記データを第１の部分データに分割すると共に、該第１の部分データを複数の第２の部分データに分割し、
前記第２の部分データ毎に、該第２の部分データに発生するエラーを検知するための検知用情報を生成し、
前記第１の部分データ、及び前記検知用情報を含むデータ部分を生成して、該データ部分にヘッダ部分を付加したパケットを送信し、
前記データの受信側は、
前記データ部分を格納したパケットを受信した場合に、該データ部分に含まれる前記第１の部分データを記憶部に格納し、
前記データ部分に格納された前記検知用情報を用いて、前記第２の部分データ毎にエラーの検知を行い、
前記エラーが検知された第２の部分データが存在する場合に、該エラーが検知された第２の部分データを示すエラー箇所情報を格納したデータ部分を生成して、該データ部分を含むパケットを応答として送信する、
ことを特徴とするデータ送受信方法。
【請求項７】
内部でデータの送受信を行う情報処理装置であって、
前記データを分割して送信するデータ送信装置、及び該データ送信装置が分割して送信するデータを受信するデータ受信装置、を有し、
前記データ送信装置は、
ヘッダ部分とデータ部分から構成されるパケットの送受信が可能な第１の送受信部と、
前記データを記憶する第１の記憶部と、
前記第１の記憶部に記憶されているデータを第１の部分データに分割して抽出する抽出部と、
前記第１の部分データを複数の第２の部分データに分割し、該第２の部分データ毎に、該第２の部分データに発生するエラーを検知するための検知用情報を生成する情報生成部と、
前記第１の部分データ、及び前記情報生成部が生成した前記検知用情報を含むデータ部分を生成し、生成した前記データ部分に前記ヘッダ部分を付加したパケットを前記第１の送受信部に送信させる送信制御部と、を備え、
前記データ受信装置は、
前記パケットの送受信が可能な第２の送受信部と、
前記送受信部が受信したパケットのデータ部分に格納されているデータを記憶する第２の記憶部と、
前記第１の部分データ、及び前記第２の部分データ毎の該第２の部分データに発生するエラーを検知するための検知用情報を含むデータ部分を格納したパケットを前記第２の送受信部が受信した場合に、前記第２の部分データ毎に対応する検知用情報を用いてエラーを検知するエラー検知部と、
前記第２の送受信部が受信したパケットのデータ部分に格納されている第１の部分データを前記第２の記憶部に格納する書込制御部と、
前記エラー検知部が前記エラーを検知した場合に、該エラー検知部が前記エラーを検知した第２の部分データを示すエラー箇所情報を格納したデータ部分を生成して、該データ部分を含む応答用のパケットを前記第２の送受信部に送信させる受信制御部と、
を備えていることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ送信装置、データ受信装置、データ送受信方法、及び情報処理装置に関する。
【背景技術】
【０００２】
情報処理装置には、その用途に応じて必要な装置が搭載、或いは接続される。接続された装置間では、データの送受信が行われ、各装置はそれぞれ必要な処理を実行する。この結果、情報処理装置は、ユーザの所望する機能を提供することができる。
【０００３】
装置間で送受信されるデータは、パケット（或いはフレーム）にペイロードとして格納される。ペイロードとして格納できるデータ量には上限がある。そのため、上限を超えるデータを送信する場合、送信元装置（データ送信装置）はデータを分割して、複数回に分けてデータを送信するようになっている（例えば特許文献１参照）。
【０００４】
データ（パケット）の送受信では、伝送中にそのデータの少なくとも一部に誤り（エラー）が発生する場合がある。このことから、パケット単位のデータの送受信では、送信先装置（データ受信装置）にエラーの発生の有無を確認させ、エラーの発生が確認されたパケットの再送を送信先装置に行わせることができるようになっている。
【０００５】
パケットに発生したエラーは、ペイロードのデータを確認しなくとも検出することが可能である。しかし、送信するデータ、或いは送信元装置への要求、等の理由から、ペイロードにエラー検出用のデータ（例えばＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）符号。以降、ＣＲＣ符号と表記する）を併せて格納することにより、アプリケーション層でエラーを検出させることも行われている（例えば特許文献１参照）。
【０００６】
アプリケーション層でのエラー検出では、データの再送を制御することができる。その制御により、複数に分割して送信するデータでは、その送信中に発生したエラーにより、予め定めた箇所、例えば先頭からのデータの再送も行わせることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、アプリケーション層での制御でも、エラーの発生によるパケットの再送はパケット単位で行われている。分割して送信するデータは、データ量が大きく、１パケットのデータ量も大きい。そのため、エラーの発生時に伝送効率が大きく低下するという問題がある。
【０００８】
エラーは繰り返し発生する可能性がある。そのエラーが繰り返し発生した場合、全体の伝送効率も大きく低下することになる。このことからも、エラー発生時の伝送効率の低下を抑制することが重要と思われる。
【０００９】
本発明は、このような課題を解決するためになされたものであり、エラー発生時の伝送効率の低下を抑制することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の一態様は、データを分割して送信するデータ送信装置であって、ヘッダ部分とデータ部分から構成されるパケットの送受信が可能な送受信部と、前記データを記憶する記憶部と、前記記憶部に記憶されているデータを第１の部分データに分割して抽出する抽出部と、前記第１の部分データを複数の第２の部分データに分割し、該第２の部分データ毎に、該第２の部分データに発生するエラーを検知するための検知用情報を生成する情報生成部と、前記第１の部分データ、及び前記情報生成部が生成した前記検知用情報を含むデータ部分を生成し、生成した前記データ部分に前記ヘッダ部分を付加したパケットを前記送受信部に送信させる送信制御部と、を備えていることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、エラー発生時の伝送効率の低下を抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態による情報処理装置の構成例を説明する図である。
【図２】画像読取装置、及び画像処理装置がそれぞれ備える汎用ＬＳＩの機能構成例を説明する図である。
【図３】画像データの分割方法例を説明する図である。
【図４】１パケットのペイロードに格納されるデータを説明する図である。
【図５】圧縮管理テーブルの内容例を説明する図である。
【図６】１パケットのペイロードに格納されるデータを説明する図である（変形例）。
【図７】画像転送処理を示すフローチャートである。
【図８】画像受信処理を示すフローチャートである。
【図９】エラー再送領域処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の実施形態を詳細に説明する。図１は、本実施形態による情報処理装置の構成例を説明する図である。データ送信装置、及び本実施形態によるデータ受信装置が適用された画像形成装置の構成例を説明する図である。
【００１４】
この情報処理装置１は、例えば複写機、プリンター、イメージスキャナ、或いはファクシミリとして使用することが可能な画像形成装置、つまりＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）である。このことから、以降、情報処理装置１は「ＭＦＰ」とも表記する。本実施形態によるデータ送信装置、及び本実施形態によるデータ受信装置は、このＭＦＰ１に搭載させる形で適用されている。
【００１５】
ＭＦＰ１は、図１に示すように、画像読取装置２、画像処理装置３、及びＭＦＰ本体４を備えている。それにより、ＭＦＰ１は、画像読取装置２が画像を読み取って出力する画像データに対し、画像処理装置３による画像処理を行うことができ、その画像処理を行って得られる画像データをＭＦＰ本体４が記録媒体上に出力できるようになっている。
【００１６】
画像読取装置２は、図１に示すように、撮像部２１、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２２、汎用ＬＳＩ（Ｌａｒｇｅ−Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）２３、及びメモリ２４を備えている。
【００１７】
撮像部２１は、原稿画像を光学的に読み取り、その画像データを出力するモジュールである。その画像データは、データ量が比較的に大きく、１パケットで送信することはできない。そのため、汎用ＬＳＩ２３は、撮像部２１から入力した画像データを複数に分割して画像処理装置３に送信する。パケットは、ヘッダ部分とデータ部分（ペイロード）から構成される送信単位データであり、画像データはペイロードに格納される。
【００１８】
図３は、画像データの分割方法例を説明する図である。原稿画像は、主走査方向上はＸ画素、副走査方向上はＹラインにそれぞれ分割されて読み取られる。その読み取りにより得られる画像データ（Ｘ×Ｙ画素の画像データ）の代表的な分割方法としては、副走査方向を複数に分割する第１の分割方法、並びに、主走査方向、及び副走査方向を共に複数に分割する第２の分割方法を挙げることができる。図３中に表記の「ｐｉｘ」はｐｉｘｅｌの略記である。
【００１９】
第１の分割方法では、分割後の画像データは、Ｘ×ｙ（Ｙ＞ｙ）画素のデータ量となる。第２の分割方法では、分割後の画像データは、ｘ（Ｘ＞ｘ）×ｙ画素のデータ量となる。図３では、主走査方向を２分割にしているが、３分割以上であっても良い。以降、「ｘ」は、分割後の画像データによって表現される主走査方向上の画素数を指す意味で用いる。また、分割後の画像データは以降「分割画像データ」と表記する。この分割画像データは第１の部分データに相当する。
【００２０】
図１の説明に戻る。上記汎用ＬＳＩ２３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２３ａ、Ｉ／Ｆ（ＩｎｔｅｒＦａｃｅ）コントローラ２３ｂ、及びメモリコントローラが実装されたデバイスである。ＰＲＯＭ２２には、ＣＰＵ２３ａが実行する各種プログラム、及び各種データが格納されている。それにより、ＣＰＵ２３ａは、ＰＲＯＭ２２に格納されているプログラムを実行することにより、撮像部２１から入力する画像データを画像処理装置３に転送するための処理を行う。
【００２１】
Ｉ／Ｆコントローラ２３ｂは、画像処理装置３との間でデータの送受信を行うコントローラである。それにより、画像読取装置２から画像処理装置３への画像データの送信は、このＩ／Ｆコントローラ２３ｂを介して行われる。
【００２２】
メモリ２４は、汎用ＬＳＩ２３のワークに用いられる。撮像部２１から入力した画像データは、このメモリ２４に一旦、保存される。それにより、このメモリ２４は、本実施形態における記憶部に相当する。このメモリ２４へのアクセスは、汎用ＬＳＩ２３に搭載されているメモリコントローラを介して行われる。
【００２３】
このように、画像読取装置２から画像処理装置３への画像データの送信は、ＰＲＯＭ２２に格納されているプログラムを実行する汎用ＬＳＩ２３により、メモリ２４を使用して行われる。このことから、ＰＲＯＭ２２、汎用ＬＳＩ２３、及びメモリ２４は、本実施形態によるデータ送信装置の構成要素に相当する。
【００２４】
一方、画像処理装置３は、図１に示すように、汎用ＬＳＩ３１、ＰＲＯＭ３２、メモリコントローラ３３、画像処理部３４、及びＩ／Ｆコントローラ３５を備えている。
【００２５】
汎用ＬＳＩ３１は、画像読取装置２との間でデータの送受信を行うデバイスであり、ＣＰＵ２３ａ、及びＩ／Ｆコントローラ等が実装されている。それにより、その送受信は、ＣＰＵ２３ａがＰＲＯＭ３２に格納されているプログラムを実行することで実現される。このことから、汎用ＬＳＩ３１、及びＰＲＯＭ３２は、本実施形態によるデータ受信装置の構成要素に相当する。
【００２６】
画像処理装置３には、メモリ２４と比較して容量が大きいメモリ５が接続されている。そのメモリ５にアクセスするために、画像処理装置３は、メモリコントローラ３３を備えている。汎用ＬＳＩ３１は、メモリコントローラ３３を介して、画像読取装置２から受信した画像データをメモリ５に保存する。それにより、このメモリ５は、本実施形態における記憶部に相当する。
【００２７】
メモリ５に保存された画像データは、画像処理部３４によって読み出され、必要な画像処理が行われる。画像処理部３４が出力する画像データは、Ｉ／Ｆコントローラ３５を介してＭＦＰ本体４に送信される。
【００２８】
ＭＦＰ本体４は、例えば電子写真方式により記録媒体上に画像形成を行う。そのＭＦＰ本体４には、各種操作子、及び表示装置を有する操作部、電話回線を介してファクシミリ通信を行うための通信デバイス、等も搭載されている。
【００２９】
図２は、画像読取装置、及び画像処理装置がそれぞれ備える汎用ＬＳＩの機能構成例を説明する図である。この機能構成例は、各汎用ＬＳＩ２３、及び３１がそれぞれＰＲＯＭ２２、及び３２に格納されているプログラムを実行することで実現されるものである。
【００３０】
始めに、画像読取装置２に搭載された汎用ＬＳＩ２３の機能構成例について具体的に説明する。この汎用ＬＳＩ２３は、機能構成として、図２に示すように、入力部２３１、アクセス部２３２、送信制御部２３３、及び送受信部２３４を備えている。
【００３１】
入力部２３１は、撮像部２１から出力される画像データを入力するための機能である。アクセス部２３２は、メモリ２４にアクセスするための機能である。それにより、入力部２３１が入力した画像データは、アクセス部２３２を介してメモリ２４に書き込まれる。
【００３２】
送信制御部２３３は、メモリ２４に保存された画像データを画像処理装置３に送信するための機能であり、パケットはこの送信制御部２３３により生成される。送信制御部２３３が生成したパケットは、送受信部２３４を介して画像処理装置３、つまり汎用ＬＳＩ３１に送信される。
【００３３】
送信制御部２３３は、図２に示すように、機能構成として、パケット生成部２４１、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）符号計算部２４２、画像抽出部２４３、及びエラーライン抽出部２４４を備えている。
【００３４】
パケット生成部２４１は、画像抽出部２４３によってメモリ２４から抽出された画像データ、エラーライン抽出部２４４によって抽出された画像データ、及びＣＲＣ計算部２４２が生成したＣＲＣ符号をペイロードに格納したパケットを生成する。このＣＲＣ計算部２４２は、本実施形態における情報生成部に相当する。
【００３５】
図４は、１パケットのペイロードに格納されるデータを説明する図である。上記のように、分割画像データは、ｘ×ｙ画素のデータである。本実施形態では、１ライン分の画像データ毎に、エラー検出用のデータとしてＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）符号を付加している。それにより、１ライン分の画像データ、つまりｘ画素のデータは、本実施形態における第２の部分データに相当し、ＣＲＣ符号は、本実施形態における検知用情報に相当する。
【００３６】
なお、エラー検出用のデータはＣＲＣ符号に限定されない。そのデータは、誤り訂正を行えるものであっても良い。
【００３７】
各ラインのＣＲＣ符号のデータ量はｗ画素分としている。それにより、本実施形態では、１ライン分のデータ量はｘ＋ｗ画素データ分としている。
【００３８】
分割画像データはｙライン分である。本実施形態では、更に最大でｈライン分のデータをペイロードに格納可能にしている。このｈライン分は、エラーが発生したラインの画像データの再送用である。図４中に「エラー再送領域」を表記した箇所は、その再送用に確保されたデータ領域である。また、図４中に表記の「再送データ」は、再送される１ライン分の画像データを表している。
【００３９】
エラー再送領域では、２ラインで１ライン分の画像データを再送するようになっている。１ライン目には、エラーヘッダー情報が格納され、２ライン目には、再送データ、及びＣＲＣ符号が格納される。
【００４０】
図５は、エラーヘッダー情報の構成例を説明する図である。このエラーヘッダー情報は、直前に送信したパケットに発生したエラーを表す情報であり、図５に示すように、エラー情報、エラーライン情報、及びヘッダーエンド（Ｅｎｄ）符号を含む。図５中に「Ｉｎｖａｌｉｄ」を表記した領域は、情報として意味のない無効領域を表している。
【００４１】
エラー情報は、８ビットの情報であり、直前に送信したパケットにエラーが発生したか否かを表す。エラーライン情報は、１６ビットの情報であり、エラーが発生したラインを表す。ヘッダーエンド符号は、８ビットの情報であり、エラーヘッダー情報部分の終了を表す。１ライン分のデータ量は固定としていることから、このヘッダーエンド符号は付さなくとも良い。
【００４２】
上記のように、ペイロードに格納する分割画像データには、ライン毎にＣＲＣ符号を付加する。それにより、パケットの受信側は、ライン毎にエラーの発生の有無を確認することができる。
【００４３】
本実施形態では、そのような確認を可能にして、受信側には、エラーの発生の有無を表す情報（以降、これも「エラー情報」と表記する）をペイロードに格納した応答（以降「応答パケット」と表記する）を送信させるようにしている。エラー発生時は、その応答にはエラーが発生したライン（１ライン分の画像データ）を表す情報（以降、「エラーライン情報」と表記する）を格納させるようにしている。図４に示すエラー再送領域は、その応答に応じて、エラーライン情報が示すラインの画像データを再送するために設けている。
【００４４】
このようにして、本実施形態では、ライン毎にエラーの発生の有無を受信側に確認させて、ライン毎に画像データの再送を行うようにしている。このため、パケット単位で再送を行う場合と比較して、エラー発生時の伝送効率の低下を抑制することができる。エラー発生が或る程度の頻度で発生する通信環境では、１パケットで伝送するデータ量が増大しても、このエラー発生時の伝送効率の低下の抑制により、全体での伝送効率も向上することになる。
【００４５】
本実施形態では、１度に画像データを再送するライン数に上限を設けている。また、ペイロードのデータ量を不要に増大させないために、エラー再送領域は、再送が必要なライン分のみとしている。受信側が再送データの有無を確認できるように、例えエラーが発生していなくとも、エラー再送領域の１ライン目のエラーヘッダー情報は格納するようにしている。
【００４６】
なお、本実施形態では、エラー情報、エラーライン情報、及び再送データは２ライン分のデータとしてペイロードに格納しているが、図６に示すように、これらは１ライン分のデータとしても良い。エラー情報、及びエラーライン情報のデータ量をｗ画素分以下のデータ量とすることにより、エラー情報、エラーライン情報、及び再送データを１ライン分のデータとすることができる。
【００４７】
これらを１ライン分のデータとした場合、ペイロードのデータ量をより低減することができる。言い換えれば、１パケットでより多くのラインの画像データを再送することができる。このようなことから、伝送効率をより向上させるうえで有効である。
【００４８】
また、本実施形態では、１ライン毎にＣＲＣ符号を付加しているが、ＣＲＣ符号は２ライン以上の画像データを対象に付加させても良い。そのＣＲＣ符号は対象となる画像データの後に配置しているが、配置の仕方は特に限定されない。再送データでは、ＣＲＣ符号の代わりに、誤り訂正用のデータを付加しても良い。誤り訂正用のデータを付加した場合、受信側はより適切な画像データを再現することができる。
【００４９】
図２の説明に戻る。パケット生成部２４１は、図４に示すようなペイロードにヘッダ部分を付加したパケットを生成する。このヘッダ部分に格納される送信元アドレス、及び宛先アドレスは、それぞれ、汎用ＬＳＩ２３に割り当てられたアドレス、及び汎用ＬＳＩ３１に割り当てられたアドレス、である。
【００５０】
画像抽出部２４３は、アクセス部２３２を介して、送信対象とする分割画像データをメモリ２４から読み出し、読み出した分割画像データをパケット生成部２４１、及びＣＲＣ計算部２４２に出力する。それにより、ＣＲＣ計算部２４２は、ライン毎に、そのラインの画像データを用いてＣＲＣ符号を計算し、得られたＣＲＣ符号をパケット生成部２４１に出力する。
【００５１】
生成したパケットの送信、及び応答パケットの受信は、送受信部２３４によって行われる。受信された応答パケットは、送信制御部２３３ではパケット生成部２４１、及びエラーライン抽出部２４４に出力される。
【００５２】
エラーライン抽出部２４４は、応答パケット中のエラー情報、更にはエラーライン情報を確認して、再送すべき画像データをライン毎にアクセス部２３２を介してメモリ２４から読み出し、パケット生成部２４１に出力する。
【００５３】
このようにして、パケット生成部２４１は、１分割画像データ、そのＣＲＣ符号を取得し、必要に応じて、再送すべきライン分の画像データを取得する。再送すべき画像データが存在しない場合、パケット生成部２４１は、エラー再送領域として、エラーが発生していないことを表すエラー情報を格納したエラーヘッダー情報を追加する。再送すべき画像データが存在する場合、パケット生成部２４１は、１ライン分の画像データ毎に、エラーヘッダー情報を付加して、エラー再生領域のデータを生成する。それにより、図４に示すようなデータをペイロードに格納したパケットが生成される。
【００５４】
画像データの分割、上記のようなパケットの生成、等は、ＰＲＯＭ２２に格納されている設定情報２２ｂに従って行われる。このため、その設定情報２２ｂの変更により、画像データの分割の仕方、ペイロードのデータ構造、等も変更することができる。
【００５５】
上記アクセス部２３２は、例えばメモリコントローラによって実現される。送受信部２３４は、例えばＩ／Ｆコントローラ２３ｂによって実現される。残りは例えばＣＰＵ２３ａによって実現される。そのＣＰＵ２３ａは、上記のように、メモリ２４をワークに用い、ＰＲＯＭ２２に格納されているプログラムを実行する。このことから、送信制御部２３３は、広義には、ＰＲＯＭ２２、汎用ＬＳＩ２３、及びメモリ２４によって実現される。
【００５６】
一方、パケットの受信側である画像読取装置２の汎用ＬＳＩ３１は、機能構成として、図２に示すように、送受信部３１１、及び受信制御部３１２を備えている。
【００５７】
送受信部３１１は、画像読取装置２、つまり汎用ＬＳＩ２３と通信するための機能である。受信制御部３１２は、画像読取装置２からの画像データの受信を制御する機能である。この受信制御部３１２は、図２に示すように、機能構成として、エラー検知部３２１、エラー情報保存部３２２、画像書込部３２３、応答部３２４、訂正位置算出部３２５、及びエラーライン訂正部３２６を備えている。
【００５８】
エラー検知部３２１は、パケットのペイロードに格納されている分割画像データに発生しているエラーをライン毎に検出する機能である。エラー情報保存部３２２は、検出されたエラーに係わる情報を保存する機能である。具体的には、エラー情報保存部３２２は、エラーが検出されたラインの計数を行うと共に、そのラインを示す情報（エラーライン情報）を保存する。ラインの計数を行うのは、ペイロードのエラー再送領域は有限だからである。
【００５９】
画像書込部３２３は、ペイロードに格納されている分割画像データをメモリ５に保存するための機能である。実際の分割画像データのメモリ５への保存は、メモリコントローラ３３を介して行われる。
【００６０】
応答部３２４は、エラー情報保存部３２２が計数したライン数、更にはそのエラー情報保存部３２２が保存したエラーライン情報を参照して、上記応答パケットを生成する機能である。ここでは、説明上、便宜的に、その応答パケットのペイロードには、エラーが検出されたライン毎に、エラーヘッダー情報が格納されると想定する。
【００６１】
訂正位置算出部３２５は、ペイロードのエラー再送領域に格納されている再送データを書き込むべきメモリ５上の位置を計算する機能である。その位置の計算は、対応するエラーヘッダー情報中のエラーライン情報を用いて行われる。
【００６２】
エラーライン訂正部３２６は、訂正位置算出部３２５が計算したメモリ５上の位置に、対応する再送データを書き込ませることにより、エラーが発生しているラインの画像データを訂正する機能である。
【００６３】
このようにして、汎用ＬＳＩ３１は、受信したパケットのペイロードに格納されている分割画像データをメモリ５に保存し、エラーが発生しているラインは応答パケットにより送信側に通知する。
【００６４】
その通知により、送信側は、ペイロードのエラー再送領域に再送データを格納したパケットを送信する。それにより、汎用ＬＳＩ３１は、エラー再送領域に再送データが格納されている場合、その再送データをメモリ５上の書き込むべき位置に書き込む。その結果、パケット単位で再送を行わなくとも、メモリ５上には、送信側が送信した画像データが保存されることとなる。
【００６５】
ペイロードからの再送データの抽出、及びその再送データを書き込むべき位置の計算、等を行えるように、ＰＲＯＭ３２には、ＰＲＯＭ２２上の設定情報２２ｂと同じ情報、或いは受信側を想定した設定情報が格納されている。それにより、汎用ＬＳＩ３１は、受信側から送信されるパケットを適切に処理することができる。
【００６６】
メモリ５への画像データの格納は、画像書込部３２３、訂正位置算出部３２５、及びエラーライン訂正部３２６によって行われる。このことから、これらは本実施形態における書込制御部に相当する。エラー情報保存部３２２、及び応答部３２４は、本実施形態における受信制御部に相当する。
【００６７】
上記送受信部３１１は、例えばＩ／Ｆコントローラによって実現される。受信制御部３１２は、ＣＰＵ３１ａによって実現される。そのＣＰＵ３１ａは、上記のように、ＰＲＯＭ３２に格納されているプログラムを実行する。このことから、受信制御部３１２は、広義には、ＰＲＯＭ３２、及び汎用ＬＳＩ３１によって実現される。
【００６８】
以降は、図７〜図９に示す各フローチャートを参照して、２つの汎用ＬＳＩ２３、及び３１の動作について更に詳細に説明する。
【００６９】
図７は、画像転送処理を示すフローチャートである。汎用ＬＳＩ２３は、上記のように、撮像部２１が原稿画像を読み取る毎に出力する画像データを一旦、メモリ２４に保存して画像処理装置３に転送する。原稿画像の読み取り自体は、ＭＦＰ本体４からの指示により行われる。このことから、この画像転送処理は、例えばＭＦＰ本体４からの原稿画像の読み取り指示、或いは１分割画像データ分以上の画像データのメモリ２４への格納を契機に、ＣＰＵ２３ａがＰＲＯＭ２２上の転送用プログラム２２ａを実行することで実現される。
【００７０】
なお、原稿画像の読み取りは、連続して行われる場合も多い。しかし、画像データの転送自体は、画像データ単位で行われる。このことから、図７では、１画像データの転送を行う場合を想定したフローチャートとしている。
【００７１】
この転送用プログラム２２ａに制御が渡った場合、先ず、ＣＰＵ２３ａは、変数Ｍに１を代入する（Ｓ７０１）。画像データは、図３に示すように、複数の分割画像データに分割されて送信される。変数Ｍは、送信対象とする分割画像データを管理するための変数であり、ここで代入される１は、先頭に位置する分割画像データが送信対象であることを示す値である。
【００７２】
次に、ＣＰＵ２３ａは、変数Ｍの値に対応する分割画像データをメモリ２４から切り出す（Ｓ７０２）。その後、ＣＰＵ２３ａは、切り出した分割画像データに、ライン毎にＣＲＣ符号を計算して付加する（Ｓ７０３）。
【００７３】
次に、ＣＰＵ２３ａは、変数Ｍの値が１か否か判定する（Ｓ７０４）。変数Ｍの値が１でない場合、つまり送信対象が先頭に位置する分割画像データでない場合、Ｓ７０４の判定はＮＯとなってＳ７１３に移行する。その変数Ｍの値が１であった場合、Ｓ７０４の判定はＹＥＳとなってＳ７０５に移行する。
【００７４】
Ｓ７０５では、ＣＰＵ２３ａは、エラーが発生していないことを示すエラー情報を格納したエラーヘッダー情報のみをエラー再送領域のデータとして追加する。その後、ＣＰＵ２３ａは、分割画像データ、そのＣＲＣ符号、及びエラーヘッダー情報をペイロードに格納したパケットを送信させる（Ｓ７０６）。なお、このようなエラーヘッダー情報のみを無条件で追加するのは、先頭に位置する分割画像データを送信する場合、その前に送信した分割画像データは存在しないからである。
【００７５】
パケットを送信させたＣＰＵ２３ａは、次に、上記応答パケットが受信されるのを待つ（Ｓ７０７）。その応答パケットが受信された場合、ＣＰＵ２３ａは、Ｓ７０８に移行して、エラーが発生したか否か判定する。受信した応答パケットがエラーの発生を示していた場合、Ｓ７０８の判定はＹＥＳとなってＳ７０９に移行する。その応答パケットがエラーの発生を示していない場合、Ｓ７０８の判定はＮＯとなってＳ７１１に移行する。
【００７６】
本実施形態では、上記のように、画像データの受信側は、エラーが検出されたライン毎に、エラーヘッダー情報をペイロードに格納する。エラーが何れのラインでも検出されなかった場合、エラーが発生していないことを示すエラー情報を有するエラーヘッダー情報を１つペイロードに格納する。その一方、エラーが検出されたラインの数が所定の上限値を超えた場合、受信側は、パケット自体の再送、例えば先頭に位置する分割画像データからの再送を要求するコマンド（データ）をペイロードに格納した応答パケットを送信する。このようなことから、受信側がエラーを通知する応答パケットは２種類に大別される。
【００７７】
Ｓ７０９では、ＣＰＵ３１ａは、受信した応答パケットは再送を要求するものか否か判定する。応答パケットのペイロードにエラーヘッダー情報が格納されていない場合、Ｓ７０９の判定はＹＥＳとなり、上記ＳＳ７０１に戻る。それにより、先頭に位置する分割画像データからの再送を行う。一方、応答パケットのペイロードにエラーヘッダー情報が格納されている場合、Ｓ７０９の判定はＮＯとなってＳ７１０に移行する。
【００７８】
Ｓ７１０では、ＣＰＵ３１ａは、ペイロードに格納されているエラーヘッダー情報を、例えばメモリ２４に確保した領域内に保存する。次に、ＣＰＵ２３ａは、画像データの送信が終了したか否か判定する（Ｓ７１１）。現在の変数Ｍの値が最後に位置する分割画像データを指す値（以降「分割数」と表記）であった場合、Ｓ７１１の判定はＹＥＳとなり、ここで画像転送処理が終了する。その変数Ｍの値が分割数未満であった場合、Ｓ７１１の判定はＮＯとなり、Ｓ７１２で変数Ｍの値をインクリメントした後、上記Ｓ７０２に戻る。それにより、送信対象を次に送信すべき分割画像データに変更して、同様の処理が実行される。
【００７９】
上記Ｓ７０４の判定がＮＯとなって移行するＳ７１３では、ＣＰＵ２３ａは、前回（直前）に送信したパケットにエラーが発生したか否か判定する。エラーヘッダー情報を１つ以上、保存していた場合、つまり、そのパケットの応答パケットの受信により、Ｓ７１０の処理を実行していた場合、Ｓ７１３の判定はＹＥＳとなってＳ７１４に移行する。保存しているエラーヘッダー情報が存在しない場合、Ｓ７１３の判定はＮＯとなって上記Ｓ７０５に移行する。それにより、エラーが発生していないことを示すエラー情報を格納したエラーヘッダー情報のみがエラー再送領域のデータとして追加される。
【００８０】
Ｓ７１４では、ＣＰＵ２３ａは、保存しているエラーヘッダー情報毎に、そのエラーライン情報が示すラインの画像データをメモリ２４から読み出して追加する。図４に示すように、追加する画像データ（再送データ）には、ＣＲＣ符号、及びエラーヘッダー情報が付加される。
【００８１】
このようにして、ペイロードには、応答パケットに格納されていたエラーヘッダー情報の数分、再送データが格納される。それにより、エラー発生時に再送する画像データのデータ量は抑制され、伝送効率の低下も抑制される。
【００８２】
図８は、画像受信処理を示すフローチャートである。次に、図８を参照して、受信側である汎用ＬＳＩ３１の動作について詳細に説明する。
【００８３】
この画像受信処理は、上記画像転送処理を送信側が実行することにより送信されるパケットの受信に対応するための処理である。送信側は、分割画像データの送信を開始する前に、受信側との通信を確立する。この画像受信処理は、例えばその通信の確立を契機に、ＣＰＵ３１ａがＰＲＯＭ３２上の受信制御用プログラム３２ａを実行することで実現される。ここでも便宜的に、図８では、１画像データの受信を想定したフローチャートとしている。
【００８４】
この受信制御用プログラム３２ａに制御が渡った場合、先ず、ＣＰＵ３１ａは、変数Ｍ、及びＬにそれぞれ１を代入する（Ｓ８０１）。この変数Ｍは、受信する分割画像データを管理するための変数であり、ここで代入される１は、先頭に位置する分割画像データが次の受信対象であることを示す値である。他方の変数Ｌは、ペイロードに格納される分割画像データ中で対象とすべきラインを管理するための変数であり、ここで代入される値は、先頭に位置するラインが対象であることを示す値である。
【００８５】
次に、ＣＰＵ３１ａは、分割画像データを格納したパケットの受信を待つ（Ｓ８０２）。そのパケットが受信された場合、Ｓ８０２からＳ８０３に移行する。Ｓ８０３〜Ｓ８０８では、分割画像データから抽出するラインを変更しつつ、抽出した画像データに発生したエラーの有無の確認、その確認結果の保存、及びその画像データの保存のための一連の処理が行われる。
【００８６】
Ｓ８０３では、ＣＰＵ３１ａは、変数Ｌの値で指定されるラインの画像データをリードする。次に、ＣＰＵ３１ａは、リードした画像データにエラーが発生しているか否か判定する。リードした画像データから計算したＣＲＣ符号がその画像データに付加されているＣＲＣ符号と一致しない場合、Ｓ８０４の判定はＹＥＳとなってＳ８０５に移行する。それらのＣＲＣ符号が一致した場合、Ｓ８０４の判定はＮＯとなってＳ８０６に移行する。
【００８７】
Ｓ８０５では、ＣＰＵ３１ａは、エラーが発生したラインの数を計数するための変数の値をインクリメントし、エラーが発生したラインを示すエラーライン情報、例えば変数Ｌの値を保存する。その後に、ＣＰＵ３１ａは、リードした画像データをメモリ５に保存させる（Ｓ８０６）。この変数には、例えば上記Ｓ８０１で０が代入される。以降、便宜的に、この変数をカウンタと表記する。
【００８８】
次に、ＣＰＵ３１ａは、全ラインの画像データの処理が終了したか否か判定する（Ｓ８０７）。全ラインの画像データの処理が終了していた場合、つまり変数Ｌの値が最後のラインを示す値であった場合、Ｓ８０７の判定はＹＥＳとなってＳ８０９に移行する。全ラインの画像データの処理が終了していない場合、Ｓ８０７の判定はＮＯとなり、Ｓ８０８でＣＰＵ３１ａが変数Ｌの値をインクリメントした後、上記Ｓ８０３に戻る。
【００８９】
Ｓ８０９への移行は、分割画像データの処理が終了したことを意味する。このことから、Ｓ８０９では、ＣＰＵ３１ａは、エラー再送領域のデータを対象とするエラー再送領域処理を実行する。その実行後はＳ８１０に移行する。
【００９０】
図９は、そのエラー再送領域処理を示すフローチャートである。ここで図９を参照して、そのエラー再送領域処理について詳細に説明する。
【００９１】
このエラー再送領域処理では、先ず、ＣＰＵ３１ａは、変数Ｌの値をインクリメントする（Ｓ９０１）。次に、ＣＰＵ３１ａは、エラー再送領域のなかで変数Ｌの値により指定される１ライン分のデータをリードさせる（Ｓ９０２）。
【００９２】
このとき、リードされるデータはエラーヘッダー情報である。そのリードを行った後、ＣＰＵ３１ａは、リードしたエラーヘッダー情報中のエラー情報はエラーの発生を示しているか否か判定する（Ｓ９０３）。そのエラー情報がエラーの発生を示していた場合、Ｓ９０３の判定はＹＥＳとなってＳ９０４に移行する。そのエラー情報がエラーの発生を示していない場合、Ｓ９０３の判定はＮＯとなり、ここでエラー再生領域処理が終了する。
【００９３】
Ｓ９０４では、リードしたエラーヘッダー情報中のエラーライン情報を用いて、メモリ５上の再送データを書き込むべき位置（図９中「訂正位置」と表記）を特定する。その特定後、ＣＰＵ３１ａは、変数Ｌの値をインクリメントすると共に、このエラーヘッダー情報の次に位置する再送データをメモリ５上の特定した位置に上書きする（Ｓ９０５）。
【００９４】
この上書きにより、エラーが発生した画像データは再送データに置き換えられる。その置き換えにより、メモリ５には、エラーが発生したラインが存在しない、或いはそのラインがより少ない画像データが格納されることとなる。
【００９５】
再送データを上書きした後に移行するＳ９０６では、ＣＰＵ３１ａは、エラー再生領域の全ラインを処理したか否か判定する。上記のように、エラー再送領域に上限値とするライン数分のデータを格納しない場合、エラーの発生を示さないエラー情報を有するエラーヘッダー情報を格納するようにしている。このことから、その上限値をＮとすると、変数Ｌの値が、Ｌ＝ｙ＋Ｎ、の関係を満たす場合（図４参照）、Ｓ９０６の判定はＹＥＳとなり、ここでエラー再送領域処理が終了する。その関係が満たされていない場合、つまり、Ｌ＜ｙ＋Ｎ、の関係が満たされている場合、Ｓ９０６の判定はＮＯとなって上記Ｓ９０１に戻る。
【００９６】
このようにして、エラー再送領域処理でも、エラー再送領域から１ラインずつ、データを読み出して処理が行われる。エラーの発生を示さないエラー情報を有するエラーヘッダー情報は、エラー再送領域中で有効な範囲の特定に用いられる。
【００９７】
図８の説明に戻る。このエラー再生領域処理の実行後に移行するＳ８１０では、ＣＰＵ３１ａは、今回、受信した分割画像データにエラーが発生したか否か判定する。上記カウンタは、エラーが発生したラインの数を計数するための変数である。このことから、そのカウンタの値が１以上であった場合、Ｓ８１０の判定はＹＥＳとなってＳ８１１に移行する。そのカウンタの値が０であった場合、Ｓ８１０の判定はＮＯとなってＳ８１６に移行する。
【００９８】
Ｓ８１１では、ＣＰＵ３１ａは、このカウンタの値が上限値以下か否か判定する。カウンタの値が上限値以下であった場合、Ｓ８１１の判定はＹＥＳとなってＳ８１３に移行する。そのカウンタの値が上限値を超えていた場合、Ｓ８１１の判定はＮＯとなってＳ８１２に移行する。
【００９９】
Ｓ８１２では、ＣＰＵ３１ａは、分割画像データの再送を先頭から要求するためのコマンドをペイロードに格納した応答パケットを送信させる。その応答パケットの送信により、メモリ５に格納した画像データは全て消去させる。そのような処理を実行した後、上記Ｓ８０１に戻る。それにより、先頭から送信される分割画像データの受信に備える。
【０１００】
エラーが検出されたラインの数が多いほど、通信環境が悪いと推定することができる。通信環境の悪化は、一時的に発生している可能性がある。一方、再送する画像データのライン数に上限を設定しない場合、ペイロードに格納すべきデータの量が大きくなって、１つのパケットで送信できなくなる可能性がある。その可能性に対応させる場合、制御が更に複雑になる。また、伝送効率が大きく低下する可能性もあり得る。これらのことから、本実施形態では、再送する画像データのライン数に上限を設定し、その上限を超える数のラインにエラーが発生した場合、分割画像データを先頭から再送するようにしている。
【０１０１】
Ｓ８１３では、ＣＰＵ３１ａは、ライン単位で画像データの再送を要求する応答パケット、つまりペイロードにエラーヘッダー情報を格納した応答パケットを送信させる。続いて、ＣＰＵ３１ａは、分割画像データの受信が終了したか否か判定する（Ｓ８１４）。現在の変数Ｍの値が上記分割数と一致している場合、Ｓ８１４の判定はＹＥＳとなり、ここで画像受信処理が終了する。それらが一致していない場合、Ｓ８１４の判定はＮＯとなり、Ｓ８１５でＣＰＵ３１ａは変数Ｍの値をインクリメントすると共に、変数Ｌに１を代入した後、上記Ｓ８０３に戻る。それにより、次に受信するパケットに備える。
【０１０２】
上記Ｓ８１０の判定がＮＯとなって移行するＳ８１６では、ＣＰＵ３１ａは、正常受信を通知する応答パケット、つまりエラーの発生を示していないエラー情報を有するエラーヘッダー情報をペイロードに格納した応答パケットを送信させる。その後は上記Ｓ８１４に移行する。
【０１０３】
なお、本実施形態は、情報処理装置１として画像形成装置であるＭＦＰに本発明を適用したものである。しかし、情報処理装置１は、ＭＦＰのような画像形成装置に限定されない。本発明は、分割する必要のあるデータを内部で送受信する情報処理装置に幅広く適用することができる。このことから、データも画像データに限定されない。また、本発明のデータ送受信方法を適用させる箇所の数も限定されない。
【０１０４】
また、本実施形態では、ＣＲＣ符号はライン（行）単位で生成しているが、ラインではなく、カラム（列）単位で生成しても良い。このこともあり、第２の部分データの分割方法も特に限定されない。
【０１０５】
また、本実施形態では、受信側、及び送信側が共に、エラーヘッダー情報を送信するようにしているが、エラーライン情報のみを送受信するようにしても良い。これは、エラーライン情報が有効な情報か否かにより、エラーの発生の有無を送信先に判断させることも可能だからである。例えばｙより大きい値を示すエラーライン情報は、エラーが発生していない情報として用いることができる。
【０１０６】
また、本実施形態では、再送する画像データのラインは直前のパケットで送信した分割データのもののみとしているが、そのような限定をしなくとも良い。つまり２つ以上前のパケットで送信した分割画像データのライン単位の再送を行えるようにしても良い。これは、例えばエラーライン情報に、分割画像データを表す情報を含ませることで実現できる。そのようにした場合、再送データに発生したエラーにも対応することができることから、エラーの発生していない画像データを確実に記録媒体上に出力させることができる。このことから、エラー箇所情報は、エラーライン情報に限定されない。
【符号の説明】
【０１０７】
１    ＭＦＰ
２    画像読取装置
３    画像処理装置
４    ＭＦＰ本体
５、２４    メモリ
２１    撮像部
２２、３２    ＰＲＯＭ
２２ａ    プログラム
２２ｂ    設定情報
２３、３１    汎用ＬＳＩ
２３ａ、３１ａ    ＣＰＵ
２３ｂ、３５    Ｉ／Ｆコントローラ
３３    メモリコントローラ
３４    画像処理部
２３１    入力部
２３２    アクセス部
２３４、３１１    送受信部
２４１    パケット生成部
２４２    ＣＲＣ計算部
２４３    画像抽出部
２４４    エラーライン抽出部
３１２    受信制御部
３２１    エラー検知部
３２２    エラー情報保存部
３２３    画像書込部
３２４    応答部
３２５    訂正位置算出部
３２６    エラーライン訂正部
【先行技術文献】
【特許文献】
【０１０８】
【特許文献１】特開２０１２−１２０１５８号公報
【図１】
2017204738.tif 000003
【図２】
2017204738.tif 000004
【図３】
2017204738.tif 000005
【図４】
2017204738.tif 000006
【図５】
2017204738.tif 000007
【図６】
2017204738.tif 000008
【図７】
2017204738.tif 000009
【図８】
2017204738.tif 000010
【図９】
2017204738.tif 000011