(57)【要約】【課題】バーコードの読み取り精度を高めること。【解決手段】キャラクタ（０〜９）を複数の黒バー、白バーにより表したバーコード４０を読み取って得られたパターンに基づいて、キャラクタを復調するバーコード読取装置１００１  であって、１キャラクタを構成するモジュール数が規定数（７モジュール）以外であると判定された場合、モジュール数に応じて予め設定された６モジュール用復調パターン表４１０Ａ等（復調パターン表）を用いて、当該キャラクタを復調する復調部１０８を備えている。【選択図】      図１
2004252903.tif 000002
【特許請求の範囲】
【請求項１】
キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取装置であって、
１キャラクタを構成するモジュール数を判定するモジュール数判定手段と、
前記モジュール数判定手段で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調手段と、
を備えたことを特徴とするバーコード読取装置。
【請求項２】
前記復調手段は、前記モジュール数判定手段により前記モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることを特徴とする請求項１に記載のバーコード読取装置。
【請求項３】
前記復調パターン表は、前記モジュール数が前記規定数より１つ少ない場合に対応しており、前記復調手段は、該復調パターン表で復調できないパターンの場合、ユーザにキャラクタの候補を提示し、選択させることを特徴とする請求項１または２に記載のバーコード読取装置。
【請求項４】
前記バーコードの読み取り信号に基づいて、該バーコードの単位モジュールに相当する基本周波数を抽出し、前記読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを出力するモジュール判定データ出力手段を備え、前記モジュール数判定手段は、前記モジュール判定データに基づいて、前記モジュール数を判定すること、を特徴とする請求項１〜３のいずれか一つに記載のバーコード読取装置。
【請求項５】
キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取方法であって、
１キャラクタを構成するモジュール数を判定するモジュール数判定工程と、
前記モジュール数判定工程で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調工程と、
を含むことを特徴とするバーコード読取方法。
【請求項６】
前記復調工程は、前記モジュール数判定工程により前記モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることを特徴とする請求項５に記載のバーコード読取方法。
【請求項７】
前記復調パターン表は、前記モジュール数が前記規定数より１つ少ない場合に対応しており、前記復調工程は、該復調パターン表で復調できないパターンの場合、ユーザにキャラクタの候補を提示し、選択させることを特徴とする請求項５または６に記載のバーコード読取方法。
【請求項８】
前記バーコードの読み取り信号に基づいて、該バーコードの単位モジュールに相当する基本周波数を抽出し、前記読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを出力するモジュール判定データ出力工程を含み、前記モジュール数判定工程では、前記モジュール判定データに基づいて、前記モジュール数を判定すること、を特徴とする請求項５〜７のいずれか一つに記載のバーコード読取方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バーコードを光学的に読み取るためのバーコード読取装置およびバーコード読取方法に関するものであり、特に、バーコードの読み取り精度を高めることができるバーコード読取装置およびバーコード読取方法を提供することを目的とする。
【０００２】
【従来の技術】
従来より、商品の流通分野においては、バーコード読取装置（バーコードスキャナ）により、商品に付されたバーコードを光学的に読み取って、読み取ったバーコード情報に基づいて、上位装置から、当該商品名、価格等の商品情報や、商品の期限等の情報を得るためのＰＯＳ（Ｐｏｉｎｔ  Ｏｆ  Ｓａｌｅｓ）システムが用いられている。
【０００３】
図１３は、従来のＰＯＳシステムの構成を示すブロック図である。同図において、バーコード読取装置１０１  〜１０ｎ  のそれぞれは、店舗内に配設されており、商品に付されたバーコードを光学的に読み取り、バーコード情報を上位装置２０へ送信する。
【０００４】
バーコードにおいては、商品に関する情報がキャラクタとしてコード化されており、黒データ（黒バー）と白データ（白バー）とが交互に組み合わされてなる。バーコード読取装置１０１  〜１０ｎ  では、バーコード上をレーザダイオード等から発光されたビーム光を走査させて、このビームの反射光を受光して、黒データおよび白データの幅に対応する電気信号からバーコード情報を読み取っている。バーコード情報としては、商品コードや賞味期限等を表す日付の期日情報等である。
【０００５】
上位装置２０は、バーコードがスキャンされる毎にバーコード読取装置１０１  〜１０ｎ  から順次送信されるバーコード情報をキーとして、商品コードに対応して商品名、価格等の商品情報が登録されたＰＬＵファイル３０を検索し、問い合わせ元のバーコード読取装置へ商品情報を返信する。
【０００６】
ここで、上述したバーコードは、ＪＡＮ（Ｊａｐａｎ  Ａｒｔｉｃｌｅ  Ｎｕｍｂｅｒ）コード、ＵＰＣ（Ｕｎｉｖｅｒｓａｌ  Ｐｒｏｄｕｃｔ  Ｃｏｄｅ）、ＥＡＮ（Ｅｕｒｏｐｅａｎ  Ａｒｔｉｃｌｅ  Ｎｕｍｂｅｒ）等のＷＰＣ（Ｗｏｒｌｄ  Ｐｒｏｄｕｃｔ  Ｃｏｄｅ）と、可変長のセカンドコードに大別される。
【０００７】
図１４には、ＪＡＮに対応するバーコード４０が図示されている。このバーコード４０は、左端に付加されるレフトガードバーＬＧＢ、中間部に挿入されるセンターバーＣＢ、および右端に付加されるライトガードバーＲＧＢを有している。また、バーコード４０は、ライトガードバーＲＧＢとセンターバーＣＢとの間に６キャラクタのデータキャラクタからなる右データブロックを有し、センターバーＣＢとレフトガードバーＬＧＢとの間に６キャラクタのデータキャラクタからなる左データブロックを有している。
【０００８】
このバーコード４０は、１３桁バーコードと呼ばれている。これは、左データブロック中の各キャラクタを、偶数（ＥＶＥＮ）パリティのキャラクタ（二本の黒データ（黒バー）のモジュール数が偶数であるキャラクタ）または奇数（ＯＤＤ）パリティのキャラクタ（二本の黒データ（黒バー）のモジュール数が奇数であるキャラクタ）とし、これら偶数パリティおよび奇数パリティの組み合わせに対応する数値を１３桁目のキャラクタ（フラグキャラクタ）とすることによって、１３桁の情報を保持しているバーコードである。
【０００９】
ここで、１３桁バーコードの構成を、図１５〜図１８を参照して詳述する。図１５に示したように、バーコード（１３桁バーコード）は、固定パターンのバー（それぞれ１モジュール（単位長）からなる黒、白、黒の３本のバー）からなるライトガードバーＲＧＢを右端に有し、同じく固定パターンのバー（それぞれ１モジュールからなる白、黒、白、黒、白の５本のバー）からなるセンターバーＣＢを中央に有し、同じく固定パターンのバー（それぞれ１モジュールからなる黒、白、黒の３本のバー）からなるレフトガードバーＬＧＢを左端に有する。
【００１０】
レフトガードバーＬＧＢとセンターバーＣＢとの間には、６キャラクタのデータキャラクタ（Ｃ１〜Ｃ６）からなる左データブロックを有している。また、センターバーＣＢとライトガードバーＲＧＢとの間には、６キャラクタのデータキャラクタ（Ｃ７〜Ｃ１２）からなる右データブロックを有している。
【００１１】
各データキャラクタ（Ｃ１〜Ｃ１２）は、図１６に示すように、７個のモジュール（各モジュールは単位長を有する）のそれぞれを適宜、白または黒に割り振って形成された２本の白データおよび２本の黒データの組合せからなる。つまり、１つのデータキャラクタは、７モジュールで構成される。
【００１２】
各データキャラクタを構成する４本のバーは、左データブロックを構成する各データキャラクタ（Ｃ１〜Ｃ６）において、レフトガードバーＬＧＢ側から白データ（ａ）、黒データ（ｂ）、白データ（ｃ）、黒データ（ｄ）の順で並んでいる。
【００１３】
一方、右データブロックを構成する各データキャラクタ（Ｃ７〜Ｃ１２）においては、ライトガードバーＲＧＢ側から白データ（ａ）、黒データ（ｂ）、白データ（ｃ）、黒データ（ｄ）の順で並ぶ。
【００１４】
図１７は、データキャラクタの各バー（ａ、ｂ、ｃ、ｄ）が採り得る全てのバー幅（モジュール数）パターンと、各バー幅パターンに対応する数値を示す表である。なお、数値に付された「Ｅ−」は偶数パリティのデータキャラクタ（両黒データ（ｂ、ｄ）のモジュール数の和が偶数となるキャラクタ）であることを示す。
【００１５】
一方、「Ｏ−」は奇数パリティのデータキャラクタ（両黒データ（ｂ、ｄ）のモジュール数の和が奇数となるキャラクタ）であることを示す。また、Ｔ１は、各データキャラクタにおけるセンターバーＣＢ側の黒データ（ｄ）と隣接する白データ（ｃ）とを合わせたバー幅（モジュール数）を示し、Ｔ２は、当該白データ（ｃ）とガードバー（ＲＧＢまたはＬＧＢ）側の黒データ（ｂ）とを合わせたバー幅（モジュール数）を示し、何れも「δディスタンス」と呼ばれる。
【００１６】
ここで、ＷＰＣコードの規約によると、右データブロックは、偶数パリティのデータキャラクタのみから構成され、左データブロックは、偶数パリティのデータキャラクタと奇数パリティのデータキャラクタとから構成される。
【００１７】
但し、左データブロックの６個のデータキャラクタが採りうる偶数パリティと奇数パリティとの組合せは、ＷＰＣコードの規約によって、図１８に示す１０通りに制限されている。そして、各組合せに対して、それぞれ、一意の数値（０〜９）、即ち、フラグキャラクタが定義されている。
【００１８】
なお、図１８から明らかなように、左データブロックの６個のデータキャラクタが採りうる偶数パリティまたは奇数パリティの区別（以下、「ＯＤＤ／ＥＶＥＮ構成」という）の各組合せパターンは、他の全ての組合せパターンと比較して、２キャラクタ以上において相違している。
【００１９】
また、上述した通り、ＷＰＣコードの規約によると、１３桁バーコードに含まれる１２個のデータキャラクタを、最も右側のものを奇数位置として順番に奇数位置または偶数位置に分類した場合（フラグキャラクタは奇数位置と分類する）、奇数位置にあるデータキャラクタの数値の総和の３倍と偶数位置にあるデータキャラクタの数値の総和との和は、１０の整数倍となる。
【００２０】
また、バーコードとしては、１３桁バーコードの他に、バーコードの印刷面積が小さい場合に用いられる８桁バーコードもある。この８桁バーコードは、左データブロックに４キャラクタからなるデータキャラクタを格納し、右データブロックに４キャラクタからなるデータキャラクタを格納している。
【００２１】
【特許文献１】
特開平０５−０５４２１１号公報
【特許文献２】
特開平０８−３２９３５０号公報
【特許文献３】
特開平１１−１２０２４０号公報
【００２２】
【発明が解決しようとする課題】
ところで、前述したように、従来のバーコード読取装置においては、図１６に示したように、１キャラクタデータが７モジュールで構成されている旨を述べた。
【００２３】
しかしながら、従来のバーコード読取装置では、バーコードの皺や、モジュール抽出時のエラー発生により、１キャラクタデータが６モジュール（７モジュールに対して１モジュール欠落）または８モジュール（７モジュールに対して１モジュール余分）として誤認識される場合があった。
【００２４】
このような場合には、当該キャラクタデータを復調することができず、エラー処理とされるため、バーコードの読み取り精度が悪化するという問題があった。
【００２５】
本発明は、上記に鑑みてなされたもので、バーコードの読み取り精度を高めることができるバーコード読取装置およびバーコード読取方法を提供することを目的とする。
【００２６】
【課題を解決するための手段】
上記目的を達成するために、本発明は、キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取装置であって、１キャラクタを構成するモジュール数を判定するモジュール数判定手段と、前記モジュール数判定手段で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調手段と、を備えたことを特徴とする。
【００２７】
また、本発明は、キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取方法であって、１キャラクタを構成するモジュール数を判定するモジュール数判定工程と、前記モジュール数判定工程で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調工程と、を含むことを特徴とする。
【００２８】
かかる発明によれば、１キャラクタを構成するモジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調することとしたので、バーコードの読み取り精度を高めることができる。
【００２９】
【発明の実施の形態】
以下、図面を参照して本発明にかかるバーコード読取装置およびバーコード読取方法の一実施の形態について詳細に説明する。
【００３０】
図１は、本発明にかかる一実施の形態の構成を示すブロック図である。この図に示したＰＯＳシステムにおいて、バーコード読取装置１００１  〜１００ｎ  のそれぞれは、店舗内に配設されており、商品に付されたバーコードを光学的に読み取り、バーコード情報を上位装置２００へ送信する。
【００３１】
上位装置２００は、バーコードがスキャンされる毎にバーコード読取装置１００１  〜１００ｎ  から順次送信されるバーコード情報をキーとして、商品コードに対応して商品名、価格等の商品情報が登録されたＰＬＵファイル３００を検索し、問い合わせ元のバーコード読取装置へ商品情報を返信する。
【００３２】
バーコード読取装置１００１  において、レーザダイオード１０１は、レーザ制御部１０２により制御され、走査用のレーザビーム光を発する。ポリゴンミラー１０３は、レーザダイオード１０１からのレーザビーム光を反射させる鏡面体により構成されており、モータ１０４により回転されて、ビーム光の反射方向を変化させることにより、複数種類の走査パターンを与えるものである。モータ制御部１０５は、モータ１０４を駆動制御する。
【００３３】
また、ポリゴンミラー１０３により反射されたレーザビーム光は、バーコード４０（図１４参照）の黒データおよび白データに、例えば左端から右端や、右端から左端に向かう複数の方向で照射される。
【００３４】
受光部１０６は、バーコード４０に照射されたレーザビーム光の反射光を受光し、その強弱に応じた振幅値の電気信号に光電変換する。受光部１０６は、光電変換信号をＡ／Ｄ変換部１０７へ出力する。Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ）変換部１０７は、受光部１０６からの光電変換信号（アナログ信号）をディジタルサンプリングし、ディジタルの読み取り信号に変換する。
【００３５】
復調部１０８は、バーコードのキャラクタパターン（キャラクタ列）を復調し、これを復調データ（バーコード情報）として出力する。より詳細には、復調部１０８は、Ａ／Ｄ変換部１０７からの読み取り信号に基づいて、バーコードの単位モジュール（１モジュール）に相当する基本周波数を抽出し、読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを得る機能を備えている。
【００３６】
また、復調部１０８は、上記モジュール判定データから１キャラクタのモジュール数（通常は、７モジュール）を認識（判定）する機能を備えている。
【００３７】
ここで、バーコードの皺やエラー発生により、復調部１０８は、１キャラクタを６モジュールや８モジュールと誤認識する場合がある。そこで、一実施の形態では、このような場合を想定し、７モジュール、６モジュール、８モジュールのいずれにも対応できるように構成されている。
【００３８】
すなわち、復調部１０８は、読み取り信号において１キャラクタが７モジュールで構成されていると認識した場合、図２に示した７モジュール用復調パターン表４００Ａ、または図３に示した７モジュール用復調パターン表４００Ｂを用いて、キャラクタを復調する。
【００３９】
７モジュール用復調パターン表４００Ａは、前述したＯＤＤ（奇数パリティ）の０〜９およびＥＶＥＮ（偶数パリティ）の０〜９の各キャラクタと、読み取り信号に対応する各モジュール（▲１▼〜▲７▼）の白黒パターンとの対応関係を表す表である。同図において、▲１▼は、当該キャラクタにおける第１モジュール、▲２▼は、第２モジュールを表す。以下、同様にして、▲７▼は、第７モジュールを表す。また、Ｗは、白データを表す。Ｂは、黒データを表す。
【００４０】
例えば、ＯＤＤの０は、▲１▼（第１モジュール）から▲７▼（第７モジュール）までが、Ｗ（白データ）、Ｗ、Ｗ、Ｂ（黒データ）、Ｂ、Ｗ、Ｂの復調パターンに対応している。
【００４１】
ここで、７モジュール用復調パターン表４００Ａは、第１モジュールが白データで始まる復調パターンに用いられる。図４（ａ）に示したように、１キャラクタは、通常、７モジュール構成（▲１▼（第１モジュール）〜▲７▼（第７モジュール））と認識される。同図に示した１キャラクタは、第１モジュールが白データから始まっている。
【００４２】
一方、図３に示した７モジュール用復調パターン表４００Ｂは、バーコードの読み取り方向が、７モジュール用復調パターン表４００Ａと逆の場合に適用されるチェック表であり、７モジュール用復調パターン表４００Ａの第７モジュール〜第１モジュールの順番を入れ替え、黒データから始まるように構成されている。
【００４３】
すなわち、７モジュール用復調パターン表４００Ｂの第１モジュール（▲１▼）は、７モジュール用復調パターン表４００Ａの第７モジュール（▲７▼）に対応している。また、７モジュール用復調パターン表４００Ｂの第２モジュール（▲２▼）は、７モジュール用復調パターン表４００Ａの第６モジュール（▲６▼）に対応している。以下同様にして、７モジュール用復調パターン表４００Ｂの第７モジュール（▲７▼）は、７モジュール用復調パターン表４００Ａの第１モジュール（▲１▼）に対応している。
【００４４】
ここで、７モジュール用復調パターン表４００Ｂは、第１モジュールが黒データで始まる復調パターンに用いられる。図４（ｂ）に示したように、１キャラクタは、通常、７モジュール構成（▲１▼（第１モジュール）〜▲７▼（第７モジュール））と認識される。同図に示した１キャラクタは、第１モジュールが黒データから始まっている。
【００４５】
また、前述したように、バーコードの皺やエラー発生により、１キャラクタが、通常の７モジュールではなく、６モジュールとして誤認識された場合に、６モジュール用復調パターン表４１０Ａ（図２参照）や６モジュール用復調パターン表４１０Ｂ（図３参照）が用いられる。
【００４６】
図２に示した６モジュール用復調パターン表４１０Ａは、６モジュール用のチェック表であり、前述したＯＤＤ（奇数パリティ）の０、４〜６、９およびＥＶＥＮ（偶数パリティ）の０、４〜６、９の各キャラクタと、読み取り信号に対応する各モジュール（▲１▼〜▲６▼）の白黒パターンとの対応関係を表す表である。
【００４７】
６モジュール用復調パターン表４１０Ａは、一例として、７モジュール用復調パターン表４００Ａの第３モジュール（▲３▼）を欠落させた場合のパターンに対応している。なお、６モジュール用復調パターン表４１０Ａ（６モジュール用復調パターン表４１０Ｂ：図３参照）は、上記第３モジュール以外の他の１モジュールを欠落させたパターンとしてもよい。
【００４８】
また、６モジュール用復調パターン表４１０Ａにおいて、ＯＤＤ（奇数パリティ）およびＥＶＥＮ（偶数パリティ）の１〜３、７、８については、一つのパターン（第１〜６モジュール）で複数のキャラクタの候補が出現するため、復調ＮＧ（パターン無し）として設定されている。
【００４９】
なお、一実施の形態においては、復調がＮＧである上記キャラクタ（ＯＤＤ（奇数パリティ）およびＥＶＥＮ（偶数パリティ）の１〜３、７、８）について、複数の候補をユーザに提示し、複数の候補の中からユーザに選択させることにより、キャラクタを決定してもよい。この場合には、バーコードの読み取りに関してユーザ支援を行うことができる。
【００５０】
一方、図３に示した６モジュール用復調パターン表４１０Ｂは、６モジュール用のチェック表であり、前述したＯＤＤ（奇数パリティ）の０、４〜６、９およびＥＶＥＮ（偶数パリティ）の０、４〜６、９の各キャラクタと、読み取り信号に対応する各モジュール（▲１▼〜▲６▼）の白黒パターンとの対応関係を表す表である。
【００５１】
６モジュール用復調パターン表４１０Ｂは、一例として、７モジュール用復調パターン表４００Ｂの第５モジュール（▲５▼）を欠落させた場合のパターンに対応している。
【００５２】
また、一実施の形態では、バーコードの皺やエラー発生により、１キャラクタが、通常の７モジュールではなく、８モジュールとして誤認識された場合に、８モジュール用復調パターン表４２０Ａ（図２参照）や８モジュール用復調パターン表４２０Ｂ（図３参照）が用いられる。
【００５３】
図２に示した８モジュール用復調パターン表４２０Ａは、８モジュール用のチェック表であり、前述したＯＤＤ（奇数パリティ）の０〜９およびＥＶＥＮ（偶数パリティ）の０〜９の各キャラクタと、読み取り信号に対応する各モジュール（▲１▼〜▲８▼）の白黒パターンとの対応関係を表す表である。
【００５４】
８モジュール用パターンチェック表４２０Ａは、一例として、７モジュール用復調パターン表４００Ａの第１モジュール（▲１▼）と第２モジュール（▲２▼）との間に余分な１モジュールを追加させた場合のパターンに対応している。なお、８モジュール用復調パターン表４２０Ａ（８モジュール用復調パターン表４２０Ｂ：図３参照）は、他の位置に１モジュールを追加させたパターンとしてもよい。
【００５５】
一方、図３に示した８モジュール用復調パターン表４２０Ｂも、８モジュール用のチェック表であり、前述したＯＤＤ（奇数パリティ）の０〜９およびＥＶＥＮ（偶数パリティ）の０〜９の各キャラクタと、読み取り信号に対応する各モジュール（▲１▼〜▲８▼）の白黒パターンとの対応関係を表す表である。
【００５６】
この８モジュール用復調パターン表４２０Ｂも、一例として、７モジュール用復調パターン表４００Ｂの第６モジュール（▲６▼）と第７モジュール（▲７▼）との間に余分な１モジュールを追加させた場合のパターンに対応している。
【００５７】
図１に戻り、主制御部１０９は、各部を制御する。タイマ１１０は、計時機能を備えており、現在の年月日時分に対応する現在日付情報を時々刻々出力する。バッテリ１１１は、タイマ１１０へバックアップ用の電力を供給する。
【００５８】
メモリ１１２は、主制御部１０９で実行されるファームウェアや、バーコード情報（復調データともいう）等を格納している。また、メモリ１１２は、図２に示した７モジュール用復調パターン表４００Ａ、６モジュール用復調パターン表４１０Ａ、８モジュール用復調パターン表４２０Ａや、図３に示した７モジュール用復調パターン表４００Ｂ、６モジュール用復調パターン表４１０Ｂ、８モジュール用復調パターン表４２０Ｂ等も格納している。
【００５９】
ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）１１３は、緑色、黄色等を発光する素子であり、主制御部１０９により、バーコードの読み取り成功時、期限切れ警告時、タイマ１１０への日付設定の完了時に点灯制御される。
【００６０】
スピーカ１１４は、聴覚用の報知手段であり、ＬＥＤ１１３に連動して、主制御部１０９により、パターンで、バーコードの読み取り成功時、期限切れ警告時、タイマ１１０への日付設定の完了時に鳴動制御される。
【００６１】
ディスプレイ１１５は、商品、小計、合計等の情報を表示する。通信Ｉ／Ｆ（インタフェース）１１６は、所定の通信プロトコルに従って、上位装置２００との間の通信を制御する。なお、バーコード読取装置１００２  〜１００ｎ  も、上述したバーコード読取装置１００１  と同一構成とされている。
【００６２】
つぎに、一実施の形態の動作について、図６〜図１２に示したフローチャートを参照しつつ説明する。
【００６３】
ここで、バーコードの読み取り方法としては、連続読み取り（図５（ａ）参照）、分割読み取り（図５（ｂ）参照）およびブロック読み取り（図５（ｃ）参照）という３通りの方法がある。
【００６４】
連続読み取りは、図５（ａ）に示したように、一回のバーコード走査によって両ガードバー（レフトガードバーＬＧＢおよびライトガードバーＲＧＢ）およびセンターバーＣＢを検出した場合に、各バーに挟まれたデータキャラクタを復調する方法である。
【００６５】
また、分割読み取りは、図５（ｂ）に示したように、最小限１個のガードバー（同図ではライトガードバーＲＧＢ）、センターバーＣＢに連接するデータキャラクタ列であってもバーコードとして認識し、それぞれ別個に読み出したこれらデータキャラクタの復調データの断片を合成し、一個のバーコード全体に対応する復調データを再現する方法である。
【００６６】
また、ブロック読み取りは、図５（ｃ）に示したように、一方のガードバーとセンターバーＣＢに囲まれたデータキャラクタのブロックのみをバーコードとして認識し、２つのブロックをそれぞれ別個に復調した後でこれら各ブロックの復調データを合成（結合）し、一個のバーコードに対応する復調データとして再現する方法である。
【００６７】
（連続読み取り）
はじめに、図５（ａ）に示した連続読み取りの場合の動作について説明する。この連続読み取りの場合、同図に示した走査方向（レフトガードバーＬＧＢ→センターバーＣＢ→ライトガードバーＲＧＢ）でバーコード４０が走査される。
【００６８】
ここで、バーコード４０の走査が開始されると、図６に示したステップＳＡ１では、復調部１０８は、走査ポインタをロードする。ステップＳＡ２では、復調部１０８は、走査が終了したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。なお、ステップＳＡ２の判断結果が「Ｙｅｓ」である場合、ステップＳＡ１８では、復調結果がＮＧ（エラー）とされる。
【００６９】
ステップＳＡ３では、復調部１０８は、Ａ／Ｄ変換部１０７からの読み取り信号が白、黒、白パターンであるか否かを判断する。この場合、図５（ａ）に示したレフトガードバーＬＧＢの左端が走査されたとすると、復調部１０８は、ステップＳＡ３の判断結果を「Ｙｅｓ」とする。
【００７０】
ステップＳＡ４では、復調部１０８は、レフトガードバーＬＧＢ（図５（ａ）参照）を検出したか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＡ５では、連続読み取り（図５（ａ）参照）により、キャラクタの読み取りデータに基づいて、キャラクタ復調を行うための連続読み取り復調処理が実行される。
【００７１】
具体的には、図７に示したステップＳＢ１では、復調部１０８は、連続フラグをクリアする。この連続フラグは、通常７モジュールのところを、６モジュールまたは８モジュールとして読みとられたキャラクタが連続する可能性があることを表すフラグである。この連続フラグがオンとされた場合、バーコード４０の復調結果がＮＧとされる。
【００７２】
ステップＳＢ２では、復調部１０８は、図５（ａ）に示したレフトガードバーＬＧＢからセンターバーＣＢまでの間の左データブロック（６キャラクタ）における一つ目のキャラクタを復調するためのキャラクタ復調処理Ａを実行する。
【００７３】
具体的には、図１１に示したステップＳＥ１では、復調部１０８は、上記左データブロックの一つ目のキャラクタ（図４（ａ）参照）に対応する第１モジュール（図４（ａ）の▲１▼）が白データであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＥ１の判断結果が「Ｎｏ」である場合、ステップＳＥ８では、復調部１０８は、当該のキャラクタ復調結果をＮＧ（復調不可）とする。
【００７４】
ステップＳＥ２では、復調部１０８は、当該キャラクタに対応する第８モジュール（図４（ａ）の▲８▼）が白データであるか否かを判断する。７モジュールで構成された正常なキャラクタの場合には、上記第８モジュール（この場合、つぎのキャラクタの第１モジュール）が白データである。
【００７５】
この場合、復調部１０８は、ステップＳＥ２の判断結果を「Ｙｅｓ」とする。ステップＳＥ３では、復調部１０８は、当該キャラクタ（７モジュール構成）における第１〜第７モジュール（図４（ａ）の▲１▼〜▲７▼）内に白および黒データが２つずつ存在しているか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＥ３の判断結果が「Ｎｏ」である場合、ステップＳＥ８では、当該キャラクタの復調結果をＮＧとする。
【００７６】
ステップＳＥ４では、復調部１０８は、図２に示した７モジュール用復調パターン表４００Ａを参照して、当該キャラクタの第１〜第７モジュールのパターンが、どのキャラクタ（ＯＤＤまたはＥＶＥＮの０〜９）に対応するかをチェックする。このチェック結果（ＯＤＤまたはＥＶＥＮの０〜９のいずれか一つ）は、キャラクタ復調データとされる。
【００７７】
ステップＳＥ５では、復調部１０８は、ステップＳＥ４でのチェック結果がＯＫ（該当するキャラクタが存在）であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＥ５の判断結果が「Ｎｏ」である場合、ステップＳＥ８では、復調部１０８は、当該キャラクタの復調結果をＮＧとする。
【００７８】
ステップＳＥ６では、復調部１０８は、連続フラグをクリアする。ステップＳＥ７では、復調部１０８は、当該キャラクタの復調結果をＯＫ（復調成功）とする。
【００７９】
図７に戻り、ステップＳＢ３では、復調部１０８は、一つ目のキャラクタに関して、キャラクタ復調処理Ａにおけるキャラクタ復調結果がＯＫであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ８では、復調部１０８は、キャラクタ復調データをメモリ１１２に格納する。
【００８０】
ステップＳＢ９では、復調部１０８は、図５（ａ）に示したバーコード４０の左データブロック（レフトガードバーＬＧＢ〜センターバーＣＢ）において６キャラクタを復調済みであるか否かを判断し、この場合、１キャラクタしか復調されていないため、判断結果を「Ｎｏ」とする。
【００８１】
ステップＳＢ２では、二つ目のキャラクタの復調に関するキャラクタ復調処理Ａが実行される。すなわち、図１１に示したステップＳＥ１では、復調部１０８は、上記左データブロックの二つ目のキャラクタ（図４（ａ）参照）に対応する第１モジュール（図４（ａ）の▲１▼）が白データであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【００８２】
ステップＳＥ２では、復調部１０８は、当該キャラクタに対応する第８モジュール（図４の▲８▼）が白データであるか否かを判断する。ここで、エラー発生により、当該キャラクタが６モジュール構成（１モジュール欠落）または８モジュール構成（１モジュール余分）として読み取られる場合がある。この場合の第８モジュールが黒データとすると、復調部１０８は、ステップＳＥ２の判断結果を「Ｎｏ」とする。
【００８３】
ステップＳＥ９では、復調部１０８は、連続フラグがオンであるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。なお、ステップＳＥ９の判断結果が「Ｙｅｓ」である場合、ステップＳＥ８でキャラクタ復調結果がＮＧとされる。
【００８４】
ステップＳＥ１０では、復調部１０８は、当該キャラクタにおける第７モジュールが白データであるか否かを判断する。この場合、当該キャラクタが６モジュール構成として読み取られたとすると、復調部１０８は、ステップＳＥ１０の判断結果を「Ｙｅｓ」とする。
【００８５】
ステップＳＥ１１では、復調部１０８は、当該キャラクタ（この場合、６モジュール構成とする）における第１〜第６モジュール（図４（ａ）の▲１▼〜▲６▼）内に白および黒データが２つずつ存在しているか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＥ１１の判断結果が「Ｎｏ」である場合、ステップＳＥ８の処理が実行される。
【００８６】
ステップＳＥ１２では、復調部１０８は、図２に示した６モジュール用復調パターン表４１０Ａを参照して、当該キャラクタの第１〜第６モジュールのパターンが、どのキャラクタ（ＯＤＤまたはＥＶＥＮの０、４〜６、９）に対応するかをチェックする。このチェック結果（ＯＤＤまたはＥＶＥＮの０、４〜６、９のいずれか一つ）は、キャラクタ復調データとされる。
【００８７】
ステップＳＥ１３では、復調部１０８は、ステップＳＥ１２でのチェック結果がＯＫ（該当するキャラクタが存在）であるか否かを判断する。この場合、当該キャラクタ（６モジュール構成）のパターンが、例えば、「Ｗ（白）、Ｗ（白）、Ｂ（黒）、Ｂ（黒）、Ｗ（白）、Ｂ（黒）」である場合、復調部１０８は、ＯＤＤの０をキャラクタ復調データ（チェック結果＝ＯＫ）として、ステップＳＥ１２の判断結果を「Ｙｅｓ」とする。
【００８８】
なお、チェック結果がＮＧである場合、すなわち、当該キャラクタのパターンがＯＤＤまたはＥＶＥＮの０、４〜６、９のいずれにも対応しない場合、復調部１０８は、ステップＳＥ１３の判断結果を「Ｎｏ」として、ステップＳＥ８でキャラクタの復調結果をＮＧとする。
【００８９】
ステップＳＥ１４では、復調部１０８は、連続フラグをオンに設定する。ステップＳＥ７では、復調部１０８は、当該キャラクタの復調結果をＯＫ（復調成功）とする。
【００９０】
図７に戻り、ステップＳＢ３では、復調部１０８は、二つ目のキャラクタに関して、キャラクタ復調処理Ａにおけるキャラクタ復調結果がＯＫであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ８では、復調部１０８は、キャラクタ復調データをメモリ１１２に格納する。
【００９１】
ステップＳＢ９では、復調部１０８は、図５（ａ）に示したバーコード４０の左データブロック（レフトガードバーＬＧＢ〜センターバーＣＢ）において６キャラクタを復調済みであるか否かを判断し、この場合、２キャラクタしか復調されていないため、判断結果を「Ｎｏ」とする。
【００９２】
ステップＳＢ２では、前述した動作と同様にして、三つ目のキャラクタの復調に関するキャラクタ復調処理Ａが実行される。以後、上述した動作が繰り返される。
【００９３】
ここで、図１１に示したステップＳＥ１０の判断結果が「Ｎｏ」である場合、ステップＳＥ１５では、復調部１０８は、当該キャラクタにおける第９モジュールが白データであるか否かを判断する。この場合、当該キャラクタが８モジュール構成として読み取られたとすると、復調部１０８は、ステップＳＥ１５の判断結果を「Ｙｅｓ」とする。なお、ステップＳＥ１５の判断結果が「Ｎｏ」である場合、ステップＳＥ８で当該キャラクタの復調結果がＮＧとされる。
【００９４】
ステップＳＥ１６では、復調部１０８は、当該キャラクタ（８モジュール構成）における第１〜第８モジュール（図４（ａ）の▲１▼〜▲８▼）内に白および黒データが２つずつ存在しているか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＥ１６の判断結果が「Ｎｏ」である場合、ステップＳＥ８の処理が実行される。
【００９５】
ステップＳＥ１７では、復調部１０８は、図２に示した８モジュール用復調パターン表４２０Ａを参照して、当該キャラクタの第１〜第８モジュールのパターンが、どのキャラクタ（ＯＤＤまたはＥＶＥＮの０〜９）に対応するかをチェックする。このチェック結果（ＯＤＤまたはＥＶＥＮの０〜９のいずれか一つ）は、キャラクタ復調データとされる。
【００９６】
ステップＳＥ１８では、復調部１０８は、ステップＳＥ１７でのチェック結果がＯＫ（該当するキャラクタが存在）であるか否かを判断する。この場合、当該キャラクタ（８モジュール構成）のパターンが、例えば、「Ｗ（白）、Ｗ（白）、Ｗ（白）、Ｗ（白）、Ｂ（黒）、Ｂ（黒）、Ｗ（白）、Ｂ（黒）」である場合、復調部１０８は、ＯＤＤの０をキャラクタ復調データ（チェック結果＝ＯＫ）として、ステップＳＥ１８の判断結果を「Ｙｅｓ」とする。
【００９７】
なお、チェック結果がＮＧである場合、すなわち、当該キャラクタのパターンがＯＤＤまたはＥＶＥＮのいずれにも対応しない場合、復調部１０８は、ステップＳＥ１８の判断結果を「Ｎｏ」として、ステップＳＥ８でキャラクタの復調結果をＮＧとする。
【００９８】
ステップＳＥ１９では、復調部１０８は、連続フラグをオンに設定する。ステップＳＥ７では、復調部１０８は、当該キャラクタの復調結果をＯＫ（復調成功）とする。
【００９９】
そして、左データブロックにおける６キャラクタの復調が終了すると、復調部１０８は、図７に示したステップＳＢ９の判断結果を「Ｙｅｓ」とする。ステップＳＢ１０では、復調部１０８は、図５（ａ）に示したバーコード４０のセンターバーＣＢが検出されたかをチェックする。
【０１００】
ステップＳＢ１１では、ステップＳＢ１０のチェック結果がＯＫ（センターバーＣＢを検出）であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＢ１１の判断結果が「Ｎｏ」である場合、ステップＳＢ２６（図８参照）の判断が行われる。
【０１０１】
ステップＳＢ１２では、復調部１０８は、センターバーＣＢ（図５（ａ）参照）が検出されたことを表すセンターバー検出フラグをオンに設定する。ステップＳＢ１３では、復調キャラクタ数（この場合、例えば、６キャラクタ）のデータをメモリ１１２に退避する。
【０１０２】
ステップＳＢ１４では、復調部１０８は、連続フラグをクリアする。ステップＳＢ１５では、復調部１０８は、図５（ａ）に示したセンターバーＣＢからライトガードバーＲＧＢまでの間の右データブロック（６キャラクタ）における一つ目のキャラクタを復調するためのキャラクタ復調処理Ｂを実行する。
【０１０３】
具体的には、図１２に示したステップＳＦ１では、復調部１０８は、上記右データブロックの一つ目のキャラクタに対応する第１モジュールが黒データであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＦ１の判断結果が「Ｎｏ」である場合、ステップＳＦ８では、復調部１０８は、当該キャラクタの復調結果をＮＧ（復調不可）とする。
【０１０４】
ステップＳＦ２では、復調部１０８は、当該キャラクタに対応する第８モジュールが黒データであるか否かを判断する。７モジュールで構成された正常なキャラクタの場合には、上記第８モジュール（この場合、つぎのキャラクタの第１モジュール）が黒データである。
【０１０５】
この場合、復調部１０８は、ステップＳＦ２の判断結果を「Ｙｅｓ」とする。ステップＳＦ３では、復調部１０８は、当該キャラクタ（７モジュール構成）における第１〜第７モジュール内に白および黒データが２つずつ存在しているか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＦ３の判断結果が「Ｎｏ」である場合、ステップＳＦ８では、当該キャラクタの復調結果をＮＧとする。
【０１０６】
ステップＳＦ４では、復調部１０８は、図３に示した７モジュール用復調パターン表４００Ｂを参照して、当該キャラクタの第１〜第７モジュールのパターンが、どのキャラクタ（ＯＤＤまたはＥＶＥＮの０〜９）に対応するかをチェックする。このチェック結果（ＯＤＤまたはＥＶＥＮの０〜９のいずれか一つ）は、キャラクタ復調データとされる。
【０１０７】
ステップＳＦ５では、復調部１０８は、ステップＳＦ４でのチェック結果がＯＫ（該当するキャラクタが存在）であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＦ５の判断結果が「Ｎｏ」である場合、ステップＳＦ８では、復調部１０８は、当該キャラクタの復調結果をＮＧとする。
【０１０８】
ステップＳＦ６では、復調部１０８は、連続フラグをクリアする。ステップＳＦ７では、復調部１０８は、当該キャラクタの復調結果をＯＫ（復調成功）とする。
【０１０９】
図７に戻り、ステップＳＢ１６では、復調部１０８は、一つ目のキャラクタに関して、キャラクタ復調処理Ｂにおけるキャラクタ復調結果がＯＫであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ１７では、復調部１０８は、キャラクタ復調データをメモリ１１２に格納する。
【０１１０】
ステップＳＢ１８では、復調部１０８は、図５（ａ）に示したバーコード４０の右データブロック（センターバーＣＢ〜ライトガードバーＲＧＢ）において６キャラクタを復調済みであるか否かを判断し、この場合、１キャラクタしか復調されていないため、判断結果を「Ｎｏ」とする。
【０１１１】
ステップＳＢ１５では、二つ目のキャラクタの復調に関するキャラクタ復調処理Ｂが実行される。すなわち、図１２に示したステップＳＦ１では、復調部１０８は、上記右データブロックの二つ目のキャラクタに対応する第１モジュールが黒データであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【０１１２】
ステップＳＦ２では、復調部１０８は、当該キャラクタに対応する第８モジュールが黒データであるか否かを判断する。ここで、エラー発生により、当該キャラクタが６モジュール構成（１モジュール欠落）または８モジュール構成（１モジュール余分）として読み取られる場合がある。この場合の第８モジュールが白データとすると、復調部１０８は、ステップＳＦ２の判断結果を「Ｎｏ」とする。
【０１１３】
ステップＳＦ９では、復調部１０８は、連続フラグがオンであるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。なお、ステップＳＦ９の判断結果が「Ｙｅｓ」である場合、ステップＳＦ８でキャラクタ復調結果がＮＧとされる。
【０１１４】
ステップＳＦ１０では、復調部１０８は、当該キャラクタにおける第７モジュールが黒データであるか否かを判断する。この場合、当該キャラクタが６モジュール構成として読み取られたとすると、復調部１０８は、ステップＳＦ１０の判断結果を「Ｙｅｓ」とする。
【０１１５】
ステップＳＦ１１では、復調部１０８は、ステップＳＥ１１（図１１参照）と同様にして、当該キャラクタ（６モジュール構成）における第１〜第６モジュール（図４（ｂ）の▲１▼〜▲６▼）内に白および黒データが２つずつ存在しているか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＦ１１の判断結果が「Ｎｏ」である場合、ステップＳＦ８の処理が実行される。
【０１１６】
ステップＳＦ１２では、復調部１０８は、図３に示した６モジュール用復調パターン表４１０Ｂを参照して、当該キャラクタの第１〜第６モジュールのパターンが、どのキャラクタ（ＯＤＤまたはＥＶＥＮの０、４〜６、９）に対応するかをチェックする。このチェック結果（ＯＤＤまたはＥＶＥＮの０、４〜６、９のいずれか一つ）は、キャラクタ復調データとされる。
【０１１７】
ステップＳＦ１３では、復調部１０８は、ステップＳＦ１２でのチェック結果がＯＫ（該当するキャラクタが存在）であるか否かを判断する。この場合、当該キャラクタ（６モジュール構成）のパターンが、例えば、「Ｂ（黒）、Ｗ（白）、Ｂ（黒）、Ｂ（黒）、Ｗ（白）、Ｗ（白）」である場合、復調部１０８は、ＯＤＤの０をキャラクタ復調データ（チェック結果をＯＫ）として、ステップＳＦ１２の判断結果を「Ｙｅｓ」とする。
【０１１８】
なお、チェック結果がＮＧである場合、すなわち、当該キャラクタのパターンがＯＤＤまたはＥＶＥＮの０、４〜６、９のいずれにも対応しない場合、復調部１０８は、ステップＳＦ１３の判断結果を「Ｎｏ」として、ステップＳＦ８でキャラクタの復調結果をＮＧとする。
【０１１９】
ステップＳＦ１４では、復調部１０８は、連続フラグをオンに設定する。ステップＳＦ７では、ステップＳＦ７では、復調部１０８は、当該キャラクタの復調結果をＯＫ（復調成功）とする。
【０１２０】
図７に戻り、ステップＳＢ１６では、復調部１０８は、二つ目のキャラクタに関して、キャラクタ復調処理Ｂにおけるキャラクタ復調結果がＯＫであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ１７では、復調部１０８は、キャラクタ復調データをメモリ１１２に格納する。
【０１２１】
ステップＳＢ１８では、復調部１０８は、図５（ａ）に示したバーコード４０の右データブロック（センターバーＣＢ〜ライトガードバーＲＧＢ）において６キャラクタを復調済みであるか否かを判断し、この場合、２キャラクタしか復調されていないため、判断結果を「Ｎｏ」とする。
【０１２２】
ステップＳＢ１５では、前述した動作と同様にして、三つ目のキャラクタの復調に関するキャラクタ復調処理Ｂが実行される。以後、上述した動作が繰り返される。
【０１２３】
ここで、図１２に示したステップＳＦ１０の判断結果が「Ｎｏ」である場合、ステップＳＦ１５では、復調部１０８は、当該キャラクタにおける第９モジュールが黒データであるか否かを判断する。
【０１２４】
この場合、当該キャラクタが８モジュール構成として読み取られたとすると、復調部１０８は、ステップＳＦ１５の判断結果を「Ｙｅｓ」とする。なお、ステップＳＦ１５の判断結果が「Ｎｏ」である場合、ステップＳＦ８で当該キャラクタの復調結果がＮＧとされる。
【０１２５】
ステップＳＦ１６では、復調部１０８は、ステップＳＥ１６（図１１参照）と同様にして、当該キャラクタ（８モジュール構成）における第１〜第８モジュール（図４（ｂ）の▲１▼〜▲８▼）内に白および黒データが２つずつ存在しているか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＦ１６の判断結果が「Ｎｏ」である場合、ステップＳＦ８の処理が実行される。
【０１２６】
ステップＳＦ１７では、復調部１０８は、図３に示した８モジュール用復調パターン表４２０Ｂを参照して、当該キャラクタの第１〜第８モジュールのパターンが、どのキャラクタ（ＯＤＤまたはＥＶＥＮの０〜９）に対応するかをチェックする。このチェック結果（ＯＤＤまたはＥＶＥＮの０〜９のいずれか一つ）は、キャラクタ復調データとされる。
【０１２７】
ステップＳＦ１８では、復調部１０８は、ステップＳＦ１７でのチェック結果がＯＫ（該当するキャラクタが存在）であるか否かを判断する。この場合、当該キャラクタ（８モジュール構成）のパターンが、例えば、「Ｂ（黒）、Ｗ（白）、Ｂ（黒）、Ｂ（黒）、Ｗ（白）、Ｗ（白）、Ｗ（白）、Ｗ（白）」である場合、復調部１０８は、ＯＤＤの０をキャラクタ復調データ（チェック結果をＯＫ）として、ステップＳＦ１２の判断結果を「Ｙｅｓ」とする。
【０１２８】
なお、チェック結果がＮＧである場合、すなわち、当該キャラクタのパターンがＯＤＤまたはＥＶＥＮのいずれにも対応しない場合、復調部１０８は、ステップＳＦ１８の判断結果を「Ｎｏ」として、ステップＳＦ８でキャラクタの復調結果をＮＧとする。
【０１２９】
ステップＳＦ１９では、復調部１０８は、連続フラグをオンに設定する。ステップＳＦ７では、ステップＳＦ７では、復調部１０８は、当該キャラクタの復調結果をＯＫ（復調成功）とする。
【０１３０】
そして、右データブロックにおける６キャラクタの復調が終了すると、復調部１０８は、図７に示したステップＳＢ１８の判断結果を「Ｙｅｓ」とする。ステップＳＢ１９では、復調部１０８は、図５（ａ）に示したバーコード４０のライトガードバーＲＧＢが検出されたかをチェックする。
【０１３１】
ステップＳＢ２０では、ステップＳＢ１９のチェック結果がＯＫ（ライトガードバーＲＧＢを検出）であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＢ２０の判断結果が「Ｎｏ」である場合、ステップＳＢ２６（図８参照）の判断が行われる。
【０１３２】
ステップＳＢ２１では、復調部１０８は、ライトガードバーＲＧＢ（図５（ａ）参照）が検出されたことを表すライトガードバー検出フラグをオンに設定する。
【０１３３】
図８に示したステップＳＢ２６では、復調部１０８は、センターバー検出フラグおよびライトガードバー検出フラグが共にオンであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＢ２７では、復調部１０８は、図５（ａ）に示したバーコード４０の復調結果をＯＫ（正常）とする。
【０１３４】
図６に戻り、ステップＳＡ６では、復調部１０８は、連続読み取り復調処理において正常に復調できたか（復調結果＝ＯＫ）否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
【０１３５】
ステップＳＡ１４では、主制御部１０９は、全キャラクタ分の復調データをメモリ１１２に格納する。ステップＳＡ１５では、復調部１０８は、ブロック毎の復調データをペアリングするというペアリング処理を実行する。ステップＳＡ１６では、復調データについて、モジュラス１０チェック処理を実行する。
【０１３６】
ここで、ＷＰＣコードの規約によると、１３桁バーコードに含まれる１２個のデータキャラクタを、最も右側のものを奇数位置として順番に奇数位置または偶数位置に分類した場合（フラグキャラクタは奇数位置と分類する）、奇数位置にあるデータキャラクタの数値の総和の３倍と偶数位置にあるデータキャラクタの数値の総和との和は、１０の整数倍となる。
【０１３７】
この規約を利用すると、ブロック読み取りして得られた復調データを合成する際に、バーコード全体に対応した復調データが再現されたか否かを容易に確認することができる。モジュラス１０チェック処理では、上記確認が行われる。
【０１３８】
ステップＳＡ１７では、主制御部１０９は、モジュラス１０チェック結果がＯＫであるか否かを判断し、この判断結果が「Ｙｅｓ」である場合、一連の処理を終了する。
【０１３９】
なお、ステップＳＡ１７の判断結果が「Ｎｏ」である場合、ステップＳＡ１３では、復調部１０８は、走査ポインタを１インクリメントした後、ステップＳＡ２の判断を行う。
【０１４０】
なお、図７に示したステップＳＢ３の判断結果が「Ｎｏ」である場合、ステップＳＢ４では、復調部１０８は、図５（ａ）に示したバーコード４０の左データブロック（レフトガードバーＬＧＢ〜センターバーＣＢ）において４キャラクタを復調済みであるか否かを判断する。ステップＳＢ４の判断結果が「Ｎｏ」である場合、ステップＳＢ２６（図８参照）の判断が行われる。
【０１４１】
一方、ステップＳＢ４の判断結果が「Ｙｅｓ」である場合、ステップＳＢ５では、復調部１０８は、図５（ａ）に示したバーコード４０のセンターバーＣＢが検出されたかをチェックする。
【０１４２】
ステップＳＢ６では、ステップＳＢ５のチェック結果がＯＫ（センターバーＣＢを検出）であるか否かを判断する。ステップＳＢ６の判断結果が「Ｎｏ」である場合、ステップＳＢ２６（図８参照）の判断が行われる。
【０１４３】
一方、ステップＳＢ６の判断結果が「Ｙｅｓ」である場合、ステップＳＢ７では、復調部１０８は、センターバー検出フラグをオンに設定する。以後、ステップＳＢ１３以降の処理が実行される。
【０１４４】
また、図７に示したステップＳＢ１６の判断結果が「Ｎｏ」である場合、図８に示したステップＳＢ２２では、復調部１０８は、図５（ａ）に示したバーコード４０の左データブロック（レフトガードバーＬＧＢ〜センターバーＣＢ）において４キャラクタを復調済みであるか否かを判断する。ステップＳＢ２２の判断結果が「Ｎｏ」である場合、ステップＳＢ２６の判断が行われる。
【０１４５】
一方、ステップＳＢ２２の判断結果が「Ｙｅｓ」である場合、ステップＳＢ２３では、復調部１０８は、図５（ａ）に示したバーコード４０のライトガードバーＲＧＢが検出されたかをチェックする。
【０１４６】
ステップＳＢ２４では、ステップＳＢ２３のチェック結果がＯＫ（ライトガードバーＲＧＢを検出）であるか否かを判断する。ステップＳＢ２４の判断結果が「Ｎｏ」である場合、ステップＳＢ２６の判断が行われる。
【０１４７】
一方、ステップＳＢ２４の判断結果が「Ｙｅｓ」である場合、ステップＳＢ２５では、復調部１０８は、ライトガードバー検出フラグをオンに設定する。以後、ステップＳＢ２６の判断が行われる。
【０１４８】
一方、ステップＳＢ２６の判断結果が「Ｎｏ」である場合、ステップＳＢ２８では、復調部１０８は、復調キャラクタ数が３以上であるか否かを判断する。この判断結果が「Ｙｅｓ」である場合、ステップＳＢ２７で復調結果がＯＫとされる。一方、ステップＳＢ２８の判断結果が「Ｎｏ」である場合、ステップＳＢ２９では、復調結果がＮＧとされる。
【０１４９】
（分割読み取り）
つぎに、図５（ｂ）に示した分割読み取りの場合の動作について説明する。この分割読み取りの場合、同図に示した走査方向（ライトガードバーＲＧＢ→センターバーＣＢ）でバーコード４０が走査される。
【０１５０】
ここで、バーコード４０の走査が開始されると、図６に示したステップＳＡ１では、復調部１０８は、走査ポインタをロードする。ステップＳＡ２では、復調部１０８は、走査が終了したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１５１】
ステップＳＡ３では、復調部１０８は、Ａ／Ｄ変換部１０７からの読み取り信号が白、黒、白パターンであるか否かを判断する。この場合、図５（ｂ）に示したライトガードバーＲＧＢの右端が走査されたとすると、復調部１０８は、ステップＳＡ３の判断結果を「Ｙｅｓ」とする。
【０１５２】
ステップＳＡ４では、復調部１０８は、レフトガードバーＬＧＢ（図５（ｂ）参照）を検出したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＡ７では、復調部１０８は、ライトガードバーＲＧＢ（図５（ｂ）参照）を検出したか否かを判断し、この場合、判断結果を「Ｙｅｓ」とし、ライトガードバー検出フラグをオンに設定する。
【０１５３】
ステップＳＡ８では、分割読み取り（図５（ｂ）参照）により、キャラクタの読み取りデータに基づいて、キャラクタ復調を行うための分割読み取り復調処理が実行される。
【０１５４】
具体的には、図９に示したステップＳＣ１では、復調部１０８は、連続フラグをクリアする。ステップＳＣ２では、復調部１０８は、図５（ｂ）に示したライトガードバーＲＧＢからセンターバーＣＢまでの間の右データブロック（６キャラクタ）における一つ目のキャラクタを復調するためのキャラクタ復調処理Ａ（図１１参照）を実行する。
【０１５５】
ステップＳＣ３では、復調部１０８は、一つ目のキャラクタに関して、キャラクタ復調処理Ａにおけるキャラクタ復調結果がＯＫであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＣ８では、復調部１０８は、キャラクタ復調データをメモリ１１２に格納する。
【０１５６】
ステップＳＣ９では、復調部１０８は、図５（ｂ）に示したバーコード４０の右データブロック（ライトガードバーＲＧＢ〜センターバーＣＢ）において６キャラクタを復調済みであるか否かを判断し、この場合、１キャラクタしか復調されていないものとし、判断結果を「Ｎｏ」とする。
【０１５７】
ステップＳＣ２では、二つ目のキャラクタの復調に関するキャラクタ復調処理Ａが実行される。
【０１５８】
そして、右データブロックにおける６キャラクタの復調が終了すると、復調部１０８は、ステップＳＣ９の判断結果を「Ｙｅｓ」とする。ステップＳＣ１０では、復調部１０８は、図５（ｂ）に示したバーコード４０のセンターバーＣＢが検出されたかをチェックする。
【０１５９】
ステップＳＣ１１では、ステップＳＣ１０のチェック結果がＯＫ（センターバーＣＢを検出）であるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＣ１１の判断結果が「Ｎｏ」である場合、ステップＳＣ１３の処理が実行される。
【０１６０】
ステップＳＣ１２では、復調部１０８は、センターバーＣＢ（図５（ｂ）参照）が検出されたことを表すセンターバー検出フラグをオンに設定する。ステップＳＣ１３では、復調キャラクタ数（この場合、例えば、６キャラクタ）のデータをメモリ１１２に退避する。ステップＳＣ１４では、復調部１０８は、連続フラグをクリアする。
【０１６１】
ステップＳＣ１５では、復調部１０８は、センターバー検出フラグおよびライトガードバー検出フラグが共にオンであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＣ１６では、復調部１０８は、図５（ｂ）に示したバーコード４０の復調結果をＯＫ（正常）とする。
【０１６２】
図６に戻り、ステップＳＡ９では、復調部１０８は、分割読み取り復調処理において正常に復調できたか（復調結果＝ＯＫ）否かを判断し、この場合、判断結果を「Ｙｅｓ」し、ステップＳＡ１４以降の処理を実行する。一方、ステップＳＡ９の判断結果が「Ｎｏ」である場合、ステップＳＡ１０の判断が行われる。
【０１６３】
なお、図９に示したステップＳＣ３の判断結果が「Ｎｏ」である場合、ステップＳＣ４では、復調部１０８は、図５（ｂ）に示したバーコード４０の右データブロック（ライトガードバーＲＧＢ〜センターバーＣＢ）において４キャラクタを復調済みであるか否かを判断する。ステップＳＣ４の判断結果が「Ｎｏ」である場合、ステップＳＣ１３の処理が実行される。
【０１６４】
一方、ステップＳＣ４の判断結果が「Ｙｅｓ」である場合、ステップＳＣ５では、復調部１０８は、図５（ｂ）に示したバーコード４０のセンターバーＣＢが検出されたかをチェックする。
【０１６５】
ステップＳＣ６では、ステップＳＣ５のチェック結果がＯＫ（センターバーＣＢを検出）であるか否かを判断する。ステップＳＣ６の判断結果が「Ｎｏ」である場合、ステップＳＣ１３の処理が実行される。
【０１６６】
一方、ステップＳＣ６の判断結果が「Ｙｅｓ」である場合、ステップＳＣ７では、復調部１０８は、センターバー検出フラグをオンに設定する。以後、ステップＳＣ１３以降の処理が実行される。
【０１６７】
また、ステップＳＣ１５の判断結果が「Ｎｏ」である場合、ステップＳＣ１７では、復調部１０８は、復調キャラクタ数が３以上であるか否かを判断する。この判断結果が「Ｙｅｓ」である場合、ステップＳＣ１６で復調結果がＯＫとされる。一方、ステップＳＣ１７の判断結果が「Ｎｏ」である場合、ステップＳＣ１８では、復調結果がＮＧとされる。
【０１６８】
（ブロック読み取り）
つぎに、図５（ｃ）に示したブロック読み取りの場合の動作について説明する。このブロック読み取りの場合、同図に示した二つの走査方向（センターバーＣＢ→レフトガードバーＬＧＢ、センターバーＣＢ→ライトガードバーＲＧＢ）でバーコード４０がそれぞれ走査される。
【０１６９】
ここで、バーコード４０の走査が開始されると、図６に示したステップＳＡ１では、復調部１０８は、走査ポインタをロードする。ステップＳＡ２では、復調部１０８は、走査が終了したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１７０】
ステップＳＡ３では、復調部１０８は、Ａ／Ｄ変換部１０７からの読み取り信号が白、黒、白パターンであるか否かを判断する。この場合、図５（ｃ）に示したセンターバーＣＢの右端が走査されたとすると、復調部１０８は、ステップＳＡ３の判断結果を「Ｙｅｓ」とする。
【０１７１】
ステップＳＡ４では、復調部１０８は、レフトガードバーＬＧＢ（図５（ｃ）参照）を検出したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＡ７では、復調部１０８は、ライトガードバーＲＧＢ（図５（ｃ）参照）を検出したか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
【０１７２】
ステップＳＡ１０では、復調部１０８は、センターバーＣＢ（図５（ｃ）参照）を検出したか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＡ１１では、ブロック読み取り（図５（ｃ）参照）により、キャラクタの読み取りデータに基づいて、キャラクタ復調を行うためのブロック読み取り復調処理が実行される。
【０１７３】
具体的には、図１０に示したステップＳＤ１では、復調部１０８は、連続フラグをクリアする。ステップＳＤ２では、復調部１０８は、図５（ｃ）に示したセンターバーＣＢからレフトガードバーＬＧＢまでの間の左データブロック（６キャラクタ）における一つ目のキャラクタを復調するためのキャラクタ復調処理Ａ（図１１参照）を実行する。
【０１７４】
ステップＳＤ３では、復調部１０８は、一つ目のキャラクタに関して、キャラクタ復調処理Ａにおけるキャラクタ復調結果がＯＫであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＤ３の判断結果が「Ｎｏ」である場合、ステップＳＤ６の処理が実行される。ステップＳＤ４では、復調部１０８は、キャラクタ復調データをメモリ１１２に格納する。
【０１７５】
ステップＳＤ５では、復調部１０８は、図５（ｃ）に示したセンターバーＣＢからレフトガードバーＬＧＢまでの間の左データブロックにおいて６キャラクタを復調済みであるか否かを判断し、この場合、判断結果を「Ｎｏ」として、ステップＳＤ２〜ステップＳＤ５が繰り返される。
【０１７６】
そして、ステップＳＤ５の判断結果が「Ｙｅｓ」になると、ステップＳＤ６では、復調部１０８は、復調キャラクタ数（この場合、例えば、６キャラクタ）のデータをメモリ１１２に退避する。ステップＳＤ７では、復調部１０８は、連続フラグをクリアする。
【０１７７】
ステップＳＤ８では、復調部１０８は、図５（ｃ）に示したセンターバーＣＢからライトガードバーＲＧＢまでの間の右データブロック（６キャラクタ）における一つ目のキャラクタを復調するためのキャラクタ復調処理Ｂ（図１２参照）を実行する。
【０１７８】
ステップＳＤ９では、復調部１０８は、一つ目のキャラクタに関して、キャラクタ復調処理Ｂにおけるキャラクタ復調結果がＯＫであるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。なお、ステップＳＤ９の判断結果が「Ｎｏ」である場合、ステップＳＤ１２の判断が行われる。ステップＳＤ１０では、復調部１０８は、キャラクタ復調データをメモリ１１２に格納する。
【０１７９】
ステップＳＤ１１では、復調部１０８は、図５（ｃ）に示したセンターバーＣＢからライトガードバーＲＧＢまでの間の右データブロックにおいて６キャラクタを復調済みであるか否かを判断し、この場合、判断結果を「Ｎｏ」として、ステップＳＤ８〜ステップＳＤ１１が繰り返される。
【０１８０】
そして、ステップＳＤ１１の判断結果が「Ｙｅｓ」になると、ステップＳＤ１２では、復調部１０８は、復調キャラクタ数（この場合、例えば、６キャラクタ）のデータをメモリ１１２に退避する。
【０１８１】
ステップＳＤ１３では、復調部１０８は、ステップＳＤ６で退避された復調キャラクタ数が３以上かつステップＳＤ１２で退避された復調キャラクタ数が１以上（またはステップＳＤ６で退避された復調キャラクタ数が１以上かつステップＳＤ１２で退避された復調キャラクタ数が３以上）であるか否かを判断する。
【０１８２】
ステップＳＤ１３の判断結果が「Ｙｅｓ」である場合、ステップＳＤ１４では、復調部１０８は、復調結果をＯＫとする。一方、ステップＳＤ１３の判断結果が「Ｎｏ」である場合、ステップＳＤ１５では、復調部１０８は、復調結果をＮＧとする。
【０１８３】
図６に戻り、ステップＳＡ１２では、復調部１０８は、ブロック読み取り復調処理において正常に復調できたか（復調結果＝ＯＫ）否かを判断し、この場合、判断結果を「Ｙｅｓ」として、ステップＳＡ１４以降の処理を実行する。なお、ステップＳＡ１２の判断結果が「Ｎｏ」である場合、ステップＳＡ１３の処理が実行される。
【０１８４】
以上説明したように、一実施の形態によれば、１キャラクタを構成するモジュール数が規定数である７モジュール以外（６または８モジュール）であると判定された場合、モジュール数に応じて予め設定された６モジュール用復調パターン表４１０Ａ、８モジュール用復調パターン表４２０Ａ、６モジュール用復調パターン表４１０Ｂ、８モジュール用復調パターン表４２０Ｂを用いて、当該キャラクタを復調することとしたので、バーコードの読み取り精度を高めることができる。
【０１８５】
また、一実施の形態によれば、連続フラグを用いて、モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることとしたので、重大な欠陥がある可能性が高い読み取り結果を除去することができる。
【０１８６】
以上本発明にかかる一実施の形態について図面を参照して詳述してきたが、具体的な構成例はこの一実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【０１８７】
【発明の効果】
以上説明したように、本発明によれば、１キャラクタを構成するモジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調することとしたので、バーコードの読み取り精度を高めることができるという効果を奏する。
【０１８８】
また、本発明によれば、モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることとしたので、重大な欠陥がある可能性が高い読み取り結果を除去することができるという効果を奏する。
【０１８９】
また、本発明によれば、復調パターン表を、モジュール数が規定数より１つ少ない場合に対応させ、該復調パターン表で復調できないパターンの場合、ユーザにキャラクタの候補を提示し、選択させることとしたので、バーコードの読み取りに関してユーザ支援を行うことができるという効果を奏する。
【０１９０】
また、本発明によれば、バーコードの読み取り信号に基づいて、単位モジュールに相当する基本周波数を抽出し、読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを出力し、モジュール判定データに基づいて、モジュール数を判定する場合にもバーコードの読み取り精度を高めることができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明にかかる一実施の形態の構成を示すブロック図である。
【図２】７モジュール用復調パターン表４００Ａ、６モジュール用復調パターン表４１０Ａおよび８モジュール用復調パターン表４２０Ａを示す図である。
【図３】７モジュール用復調パターン表４００Ｂ、６モジュール用復調パターン表４１０Ｂおよび８モジュール用復調パターン表４２０Ｂを示す図である。
【図４】バーコードにおけるキャラクタとモジュールとの対応関係を表す図である。
【図５】同一実施の形態における読み取り方法のパターンを説明する図である。
【図６】同一実施の形態の動作を説明するフローチャートである。
【図７】図６に示した連続読み取り復調処理を説明するフローチャートである。
【図８】図７に示した連続読み取り復調処理を説明するフローチャートである。
【図９】図６に示した分割読み取り復調処理を説明するフローチャートである。
【図１０】図６に示したブロック読み取り復調処理を説明するフローチャートである。
【図１１】図７、９および１０に示したキャラクタ復調処理Ａを説明するフローチャートである。
【図１２】図７および図１０に示したキャラクタ復調処理Ｂを説明するフローチャートである。
【図１３】従来のＰＯＳシステムの構成を示すブロック図である。
【図１４】バーコード４０を示す図である。
【図１５】バーコードのデータ構造を示す図である。
【図１６】バーコードにおけるキャラクタ構成を示す図である。
【図１７】バーコードに含まれるデータキャラクタのバー幅パターンと復調データとの組み合わせを示す図である。
【図１８】バーコードに含まれる各データキャラクタのＯＤＤ／ＥＶＥＮとフラグキャラクタとの組み合わせを示す図である。
【符号の説明】
４０  バーコード
１００１  、１００２  、１００ｎ  バーコード読取装置
１０８  復調部
１１２  メモリ
１０９  主制御部
４１０Ａ、４１０Ｂ  ６モジュール用復調パターン表
４２０Ａ、４２０Ｂ  ８モジュール用復調パターン表
【図１】
2004252903.tif 000003
【図２】
2004252903.tif 000004
【図３】
2004252903.tif 000005
【図４】
2004252903.tif 000006
【図５】
2004252903.tif 000007
【図６】
2004252903.tif 000008
【図７】
2004252903.tif 000009
【図８】
2004252903.tif 000010
【図９】
2004252903.tif 000011
【図１０】
2004252903.tif 000012
【図１１】
2004252903.tif 000013
【図１２】
2004252903.tif 000014
【図１３】
2004252903.tif 000015
【図１４】
2004252903.tif 000016
【図１５】
2004252903.tif 000017
【図１６】
2004252903.tif 000018
【図１７】
2004252903.tif 000019
【図１８】
2004252903.tif 000020