JP4170111B2 - バーコード読取装置およびバーコード読取方法 - Google Patents
バーコード読取装置およびバーコード読取方法 Download PDFInfo
- Publication number
- JP4170111B2 JP4170111B2 JP2003045080A JP2003045080A JP4170111B2 JP 4170111 B2 JP4170111 B2 JP 4170111B2 JP 2003045080 A JP2003045080 A JP 2003045080A JP 2003045080 A JP2003045080 A JP 2003045080A JP 4170111 B2 JP4170111 B2 JP 4170111B2
- Authority
- JP
- Japan
- Prior art keywords
- character
- demodulation
- module
- barcode
- modules
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Cash Registers Or Receiving Machines (AREA)
Description
【発明の属する技術分野】
本発明は、バーコードを光学的に読み取るためのバーコード読取装置およびバーコード読取方法に関するものであり、特に、バーコードの読み取り精度を高めることができるバーコード読取装置およびバーコード読取方法を提供することを目的とする。
【0002】
【従来の技術】
従来より、商品の流通分野においては、バーコード読取装置(バーコードスキャナ)により、商品に付されたバーコードを光学的に読み取って、読み取ったバーコード情報に基づいて、上位装置から、当該商品名、価格等の商品情報や、商品の期限等の情報を得るためのPOS(Point Of Sales)システムが用いられている。
【0003】
図13は、従来のPOSシステムの構成を示すブロック図である。同図において、バーコード読取装置101 〜10n のそれぞれは、店舗内に配設されており、商品に付されたバーコードを光学的に読み取り、バーコード情報を上位装置20へ送信する。
【0004】
バーコードにおいては、商品に関する情報がキャラクタとしてコード化されており、黒データ(黒バー)と白データ(白バー)とが交互に組み合わされてなる。バーコード読取装置101 〜10n では、バーコード上をレーザダイオード等から発光されたビーム光を走査させて、このビームの反射光を受光して、黒データおよび白データの幅に対応する電気信号からバーコード情報を読み取っている。バーコード情報としては、商品コードや賞味期限等を表す日付の期日情報等である。
【0005】
上位装置20は、バーコードがスキャンされる毎にバーコード読取装置101 〜10n から順次送信されるバーコード情報をキーとして、商品コードに対応して商品名、価格等の商品情報が登録されたPLUファイル30を検索し、問い合わせ元のバーコード読取装置へ商品情報を返信する。
【0006】
ここで、上述したバーコードは、JAN(Japan Article Number)コード、UPC(Universal Product Code)、EAN(European Article Number)等のWPC(World Product Code)と、可変長のセカンドコードに大別される。
【0007】
図14には、JANに対応するバーコード40が図示されている。このバーコード40は、左端に付加されるレフトガードバーLGB、中間部に挿入されるセンターバーCB、および右端に付加されるライトガードバーRGBを有している。また、バーコード40は、ライトガードバーRGBとセンターバーCBとの間に6キャラクタのデータキャラクタからなる右データブロックを有し、センターバーCBとレフトガードバーLGBとの間に6キャラクタのデータキャラクタからなる左データブロックを有している。
【0008】
このバーコード40は、13桁バーコードと呼ばれている。これは、左データブロック中の各キャラクタを、偶数(EVEN)パリティのキャラクタ(二本の黒データ(黒バー)のモジュール数が偶数であるキャラクタ)または奇数(ODD)パリティのキャラクタ(二本の黒データ(黒バー)のモジュール数が奇数であるキャラクタ)とし、これら偶数パリティおよび奇数パリティの組み合わせに対応する数値を13桁目のキャラクタ(フラグキャラクタ)とすることによって、13桁の情報を保持しているバーコードである。
【0009】
ここで、13桁バーコードの構成を、図15〜図18を参照して詳述する。図15に示したように、バーコード(13桁バーコード)は、固定パターンのバー(それぞれ1モジュール(単位長)からなる黒、白、黒の3本のバー)からなるライトガードバーRGBを右端に有し、同じく固定パターンのバー(それぞれ1モジュールからなる白、黒、白、黒、白の5本のバー)からなるセンターバーCBを中央に有し、同じく固定パターンのバー(それぞれ1モジュールからなる黒、白、黒の3本のバー)からなるレフトガードバーLGBを左端に有する。
【0010】
レフトガードバーLGBとセンターバーCBとの間には、6キャラクタのデータキャラクタ(C1〜C6)からなる左データブロックを有している。また、センターバーCBとライトガードバーRGBとの間には、6キャラクタのデータキャラクタ(C7〜C12)からなる右データブロックを有している。
【0011】
各データキャラクタ(C1〜C12)は、図16に示すように、7個のモジュール(各モジュールは単位長を有する)のそれぞれを適宜、白または黒に割り振って形成された2本の白データおよび2本の黒データの組合せからなる。つまり、1つのデータキャラクタは、7モジュールで構成される。
【0012】
各データキャラクタを構成する4本のバーは、左データブロックを構成する各データキャラクタ(C1〜C6)において、レフトガードバーLGB側から白データ(a)、黒データ(b)、白データ(c)、黒データ(d)の順で並んでいる。
【0013】
一方、右データブロックを構成する各データキャラクタ(C7〜C12)においては、ライトガードバーRGB側から白データ(a)、黒データ(b)、白データ(c)、黒データ(d)の順で並ぶ。
【0014】
図17は、データキャラクタの各バー(a、b、c、d)が採り得る全てのバー幅(モジュール数)パターンと、各バー幅パターンに対応する数値を示す表である。なお、数値に付された「E−」は偶数パリティのデータキャラクタ(両黒データ(b、d)のモジュール数の和が偶数となるキャラクタ)であることを示す。
【0015】
一方、「O−」は奇数パリティのデータキャラクタ(両黒データ(b、d)のモジュール数の和が奇数となるキャラクタ)であることを示す。また、T1は、各データキャラクタにおけるセンターバーCB側の黒データ(d)と隣接する白データ(c)とを合わせたバー幅(モジュール数)を示し、T2は、当該白データ(c)とガードバー(RGBまたはLGB)側の黒データ(b)とを合わせたバー幅(モジュール数)を示し、何れも「δディスタンス」と呼ばれる。
【0016】
ここで、WPCコードの規約によると、右データブロックは、偶数パリティのデータキャラクタのみから構成され、左データブロックは、偶数パリティのデータキャラクタと奇数パリティのデータキャラクタとから構成される。
【0017】
但し、左データブロックの6個のデータキャラクタが採りうる偶数パリティと奇数パリティとの組合せは、WPCコードの規約によって、図18に示す10通りに制限されている。そして、各組合せに対して、それぞれ、一意の数値(0〜9)、即ち、フラグキャラクタが定義されている。
【0018】
なお、図18から明らかなように、左データブロックの6個のデータキャラクタが採りうる偶数パリティまたは奇数パリティの区別(以下、「ODD/EVEN構成」という)の各組合せパターンは、他の全ての組合せパターンと比較して、2キャラクタ以上において相違している。
【0019】
また、上述した通り、WPCコードの規約によると、13桁バーコードに含まれる12個のデータキャラクタを、最も右側のものを奇数位置として順番に奇数位置または偶数位置に分類した場合(フラグキャラクタは奇数位置と分類する)、奇数位置にあるデータキャラクタの数値の総和の3倍と偶数位置にあるデータキャラクタの数値の総和との和は、10の整数倍となる。
【0020】
また、バーコードとしては、13桁バーコードの他に、バーコードの印刷面積が小さい場合に用いられる8桁バーコードもある。この8桁バーコードは、左データブロックに4キャラクタからなるデータキャラクタを格納し、右データブロックに4キャラクタからなるデータキャラクタを格納している。
【0021】
【特許文献1】
特開平05−054211号公報
【特許文献2】
特開平08−329350号公報
【特許文献3】
特開平11−120240号公報
【0022】
【発明が解決しようとする課題】
ところで、前述したように、従来のバーコード読取装置においては、図16に示したように、1キャラクタデータが7モジュールで構成されている旨を述べた。
【0023】
しかしながら、従来のバーコード読取装置では、バーコードの皺や、モジュール抽出時のエラー発生により、1キャラクタデータが6モジュール(7モジュールに対して1モジュール欠落)または8モジュール(7モジュールに対して1モジュール余分)として誤認識される場合があった。
【0024】
このような場合には、当該キャラクタデータを復調することができず、エラー処理とされるため、バーコードの読み取り精度が悪化するという問題があった。
【0025】
本発明は、上記に鑑みてなされたもので、バーコードの読み取り精度を高めることができるバーコード読取装置およびバーコード読取方法を提供することを目的とする。
【0026】
【課題を解決するための手段】
上記目的を達成するために、本発明は、キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取装置であって、1キャラクタを構成するモジュール数を判定するモジュール数判定手段と、前記モジュール数判定手段で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調手段と、を備えたことを特徴とする。
【0027】
また、本発明は、キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取方法であって、1キャラクタを構成するモジュール数を判定するモジュール数判定工程と、前記モジュール数判定工程で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調工程と、を含むことを特徴とする。
【0028】
かかる発明によれば、1キャラクタを構成するモジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調することとしたので、バーコードの読み取り精度を高めることができる。
【0029】
【発明の実施の形態】
以下、図面を参照して本発明にかかるバーコード読取装置およびバーコード読取方法の一実施の形態について詳細に説明する。
【0030】
図1は、本発明にかかる一実施の形態の構成を示すブロック図である。この図に示したPOSシステムにおいて、バーコード読取装置1001 〜100n のそれぞれは、店舗内に配設されており、商品に付されたバーコードを光学的に読み取り、バーコード情報を上位装置200へ送信する。
【0031】
上位装置200は、バーコードがスキャンされる毎にバーコード読取装置1001 〜100n から順次送信されるバーコード情報をキーとして、商品コードに対応して商品名、価格等の商品情報が登録されたPLUファイル300を検索し、問い合わせ元のバーコード読取装置へ商品情報を返信する。
【0032】
バーコード読取装置1001 において、レーザダイオード101は、レーザ制御部102により制御され、走査用のレーザビーム光を発する。ポリゴンミラー103は、レーザダイオード101からのレーザビーム光を反射させる鏡面体により構成されており、モータ104により回転されて、ビーム光の反射方向を変化させることにより、複数種類の走査パターンを与えるものである。モータ制御部105は、モータ104を駆動制御する。
【0033】
また、ポリゴンミラー103により反射されたレーザビーム光は、バーコード40(図14参照)の黒データおよび白データに、例えば左端から右端や、右端から左端に向かう複数の方向で照射される。
【0034】
受光部106は、バーコード40に照射されたレーザビーム光の反射光を受光し、その強弱に応じた振幅値の電気信号に光電変換する。受光部106は、光電変換信号をA/D変換部107へ出力する。A/D(Analog/Digital)変換部107は、受光部106からの光電変換信号(アナログ信号)をディジタルサンプリングし、ディジタルの読み取り信号に変換する。
【0035】
復調部108は、バーコードのキャラクタパターン(キャラクタ列)を復調し、これを復調データ(バーコード情報)として出力する。より詳細には、復調部108は、A/D変換部107からの読み取り信号に基づいて、バーコードの単位モジュール(1モジュール)に相当する基本周波数を抽出し、読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを得る機能を備えている。
【0036】
また、復調部108は、上記モジュール判定データから1キャラクタのモジュール数(通常は、7モジュール)を認識(判定)する機能を備えている。
【0037】
ここで、バーコードの皺やエラー発生により、復調部108は、1キャラクタを6モジュールや8モジュールと誤認識する場合がある。そこで、一実施の形態では、このような場合を想定し、7モジュール、6モジュール、8モジュールのいずれにも対応できるように構成されている。
【0038】
すなわち、復調部108は、読み取り信号において1キャラクタが7モジュールで構成されていると認識した場合、図2に示した7モジュール用復調パターン表400A、または図3に示した7モジュール用復調パターン表400Bを用いて、キャラクタを復調する。
【0039】
7モジュール用復調パターン表400Aは、前述したODD(奇数パリティ)の0〜9およびEVEN(偶数パリティ)の0〜9の各キャラクタと、読み取り信号に対応する各モジュール(▲1▼〜▲7▼)の白黒パターンとの対応関係を表す表である。同図において、▲1▼は、当該キャラクタにおける第1モジュール、▲2▼は、第2モジュールを表す。以下、同様にして、▲7▼は、第7モジュールを表す。また、Wは、白データを表す。Bは、黒データを表す。
【0040】
例えば、ODDの0は、▲1▼(第1モジュール)から▲7▼(第7モジュール)までが、W(白データ)、W、W、B(黒データ)、B、W、Bの復調パターンに対応している。
【0041】
ここで、7モジュール用復調パターン表400Aは、第1モジュールが白データで始まる復調パターンに用いられる。図4(a)に示したように、1キャラクタは、通常、7モジュール構成(▲1▼(第1モジュール)〜▲7▼(第7モジュール))と認識される。同図に示した1キャラクタは、第1モジュールが白データから始まっている。
【0042】
一方、図3に示した7モジュール用復調パターン表400Bは、バーコードの読み取り方向が、7モジュール用復調パターン表400Aと逆の場合に適用されるチェック表であり、7モジュール用復調パターン表400Aの第7モジュール〜第1モジュールの順番を入れ替え、黒データから始まるように構成されている。
【0043】
すなわち、7モジュール用復調パターン表400Bの第1モジュール(▲1▼)は、7モジュール用復調パターン表400Aの第7モジュール(▲7▼)に対応している。また、7モジュール用復調パターン表400Bの第2モジュール(▲2▼)は、7モジュール用復調パターン表400Aの第6モジュール(▲6▼)に対応している。以下同様にして、7モジュール用復調パターン表400Bの第7モジュール(▲7▼)は、7モジュール用復調パターン表400Aの第1モジュール(▲1▼)に対応している。
【0044】
ここで、7モジュール用復調パターン表400Bは、第1モジュールが黒データで始まる復調パターンに用いられる。図4(b)に示したように、1キャラクタは、通常、7モジュール構成(▲1▼(第1モジュール)〜▲7▼(第7モジュール))と認識される。同図に示した1キャラクタは、第1モジュールが黒データから始まっている。
【0045】
また、前述したように、バーコードの皺やエラー発生により、1キャラクタが、通常の7モジュールではなく、6モジュールとして誤認識された場合に、6モジュール用復調パターン表410A(図2参照)や6モジュール用復調パターン表410B(図3参照)が用いられる。
【0046】
図2に示した6モジュール用復調パターン表410Aは、6モジュール用のチェック表であり、前述したODD(奇数パリティ)の0、4〜6、9およびEVEN(偶数パリティ)の0、4〜6、9の各キャラクタと、読み取り信号に対応する各モジュール(▲1▼〜▲6▼)の白黒パターンとの対応関係を表す表である。
【0047】
6モジュール用復調パターン表410Aは、一例として、7モジュール用復調パターン表400Aの第3モジュール(▲3▼)を欠落させた場合のパターンに対応している。なお、6モジュール用復調パターン表410A(6モジュール用復調パターン表410B:図3参照)は、上記第3モジュール以外の他の1モジュールを欠落させたパターンとしてもよい。
【0048】
また、6モジュール用復調パターン表410Aにおいて、ODD(奇数パリティ)およびEVEN(偶数パリティ)の1〜3、7、8については、一つのパターン(第1〜6モジュール)で複数のキャラクタの候補が出現するため、復調NG(パターン無し)として設定されている。
【0049】
なお、一実施の形態においては、復調がNGである上記キャラクタ(ODD(奇数パリティ)およびEVEN(偶数パリティ)の1〜3、7、8)について、複数の候補をユーザに提示し、複数の候補の中からユーザに選択させることにより、キャラクタを決定してもよい。この場合には、バーコードの読み取りに関してユーザ支援を行うことができる。
【0050】
一方、図3に示した6モジュール用復調パターン表410Bは、6モジュール用のチェック表であり、前述したODD(奇数パリティ)の0、4〜6、9およびEVEN(偶数パリティ)の0、4〜6、9の各キャラクタと、読み取り信号に対応する各モジュール(▲1▼〜▲6▼)の白黒パターンとの対応関係を表す表である。
【0051】
6モジュール用復調パターン表410Bは、一例として、7モジュール用復調パターン表400Bの第5モジュール(▲5▼)を欠落させた場合のパターンに対応している。
【0052】
また、一実施の形態では、バーコードの皺やエラー発生により、1キャラクタが、通常の7モジュールではなく、8モジュールとして誤認識された場合に、8モジュール用復調パターン表420A(図2参照)や8モジュール用復調パターン表420B(図3参照)が用いられる。
【0053】
図2に示した8モジュール用復調パターン表420Aは、8モジュール用のチェック表であり、前述したODD(奇数パリティ)の0〜9およびEVEN(偶数パリティ)の0〜9の各キャラクタと、読み取り信号に対応する各モジュール(▲1▼〜▲8▼)の白黒パターンとの対応関係を表す表である。
【0054】
8モジュール用パターンチェック表420Aは、一例として、7モジュール用復調パターン表400Aの第1モジュール(▲1▼)と第2モジュール(▲2▼)との間に余分な1モジュールを追加させた場合のパターンに対応している。なお、8モジュール用復調パターン表420A(8モジュール用復調パターン表420B:図3参照)は、他の位置に1モジュールを追加させたパターンとしてもよい。
【0055】
一方、図3に示した8モジュール用復調パターン表420Bも、8モジュール用のチェック表であり、前述したODD(奇数パリティ)の0〜9およびEVEN(偶数パリティ)の0〜9の各キャラクタと、読み取り信号に対応する各モジュール(▲1▼〜▲8▼)の白黒パターンとの対応関係を表す表である。
【0056】
この8モジュール用復調パターン表420Bも、一例として、7モジュール用復調パターン表400Bの第6モジュール(▲6▼)と第7モジュール(▲7▼)との間に余分な1モジュールを追加させた場合のパターンに対応している。
【0057】
図1に戻り、主制御部109は、各部を制御する。タイマ110は、計時機能を備えており、現在の年月日時分に対応する現在日付情報を時々刻々出力する。バッテリ111は、タイマ110へバックアップ用の電力を供給する。
【0058】
メモリ112は、主制御部109で実行されるファームウェアや、バーコード情報(復調データともいう)等を格納している。また、メモリ112は、図2に示した7モジュール用復調パターン表400A、6モジュール用復調パターン表410A、8モジュール用復調パターン表420Aや、図3に示した7モジュール用復調パターン表400B、6モジュール用復調パターン表410B、8モジュール用復調パターン表420B等も格納している。
【0059】
LED(Light Emitting Diode)113は、緑色、黄色等を発光する素子であり、主制御部109により、バーコードの読み取り成功時、期限切れ警告時、タイマ110への日付設定の完了時に点灯制御される。
【0060】
スピーカ114は、聴覚用の報知手段であり、LED113に連動して、主制御部109により、パターンで、バーコードの読み取り成功時、期限切れ警告時、タイマ110への日付設定の完了時に鳴動制御される。
【0061】
ディスプレイ115は、商品、小計、合計等の情報を表示する。通信I/F(インタフェース)116は、所定の通信プロトコルに従って、上位装置200との間の通信を制御する。なお、バーコード読取装置1002 〜100n も、上述したバーコード読取装置1001 と同一構成とされている。
【0062】
つぎに、一実施の形態の動作について、図6〜図12に示したフローチャートを参照しつつ説明する。
【0063】
ここで、バーコードの読み取り方法としては、連続読み取り(図5(a)参照)、分割読み取り(図5(b)参照)およびブロック読み取り(図5(c)参照)という3通りの方法がある。
【0064】
連続読み取りは、図5(a)に示したように、一回のバーコード走査によって両ガードバー(レフトガードバーLGBおよびライトガードバーRGB)およびセンターバーCBを検出した場合に、各バーに挟まれたデータキャラクタを復調する方法である。
【0065】
また、分割読み取りは、図5(b)に示したように、最小限1個のガードバー(同図ではライトガードバーRGB)、センターバーCBに連接するデータキャラクタ列であってもバーコードとして認識し、それぞれ別個に読み出したこれらデータキャラクタの復調データの断片を合成し、一個のバーコード全体に対応する復調データを再現する方法である。
【0066】
また、ブロック読み取りは、図5(c)に示したように、一方のガードバーとセンターバーCBに囲まれたデータキャラクタのブロックのみをバーコードとして認識し、2つのブロックをそれぞれ別個に復調した後でこれら各ブロックの復調データを合成(結合)し、一個のバーコードに対応する復調データとして再現する方法である。
【0067】
(連続読み取り)
はじめに、図5(a)に示した連続読み取りの場合の動作について説明する。この連続読み取りの場合、同図に示した走査方向(レフトガードバーLGB→センターバーCB→ライトガードバーRGB)でバーコード40が走査される。
【0068】
ここで、バーコード40の走査が開始されると、図6に示したステップSA1では、復調部108は、走査ポインタをロードする。ステップSA2では、復調部108は、走査が終了したか否かを判断し、この場合、判断結果を「No」とする。なお、ステップSA2の判断結果が「Yes」である場合、ステップSA18では、復調結果がNG(エラー)とされる。
【0069】
ステップSA3では、復調部108は、A/D変換部107からの読み取り信号が白、黒、白パターンであるか否かを判断する。この場合、図5(a)に示したレフトガードバーLGBの左端が走査されたとすると、復調部108は、ステップSA3の判断結果を「Yes」とする。
【0070】
ステップSA4では、復調部108は、レフトガードバーLGB(図5(a)参照)を検出したか否かを判断し、この場合、判断結果を「Yes」とする。ステップSA5では、連続読み取り(図5(a)参照)により、キャラクタの読み取りデータに基づいて、キャラクタ復調を行うための連続読み取り復調処理が実行される。
【0071】
具体的には、図7に示したステップSB1では、復調部108は、連続フラグをクリアする。この連続フラグは、通常7モジュールのところを、6モジュールまたは8モジュールとして読みとられたキャラクタが連続する可能性があることを表すフラグである。この連続フラグがオンとされた場合、バーコード40の復調結果がNGとされる。
【0072】
ステップSB2では、復調部108は、図5(a)に示したレフトガードバーLGBからセンターバーCBまでの間の左データブロック(6キャラクタ)における一つ目のキャラクタを復調するためのキャラクタ復調処理Aを実行する。
【0073】
具体的には、図11に示したステップSE1では、復調部108は、上記左データブロックの一つ目のキャラクタ(図4(a)参照)に対応する第1モジュール(図4(a)の▲1▼)が白データであるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSE1の判断結果が「No」である場合、ステップSE8では、復調部108は、当該のキャラクタ復調結果をNG(復調不可)とする。
【0074】
ステップSE2では、復調部108は、当該キャラクタに対応する第8モジュール(図4(a)の▲8▼)が白データであるか否かを判断する。7モジュールで構成された正常なキャラクタの場合には、上記第8モジュール(この場合、つぎのキャラクタの第1モジュール)が白データである。
【0075】
この場合、復調部108は、ステップSE2の判断結果を「Yes」とする。ステップSE3では、復調部108は、当該キャラクタ(7モジュール構成)における第1〜第7モジュール(図4(a)の▲1▼〜▲7▼)内に白および黒データが2つずつ存在しているか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSE3の判断結果が「No」である場合、ステップSE8では、当該キャラクタの復調結果をNGとする。
【0076】
ステップSE4では、復調部108は、図2に示した7モジュール用復調パターン表400Aを参照して、当該キャラクタの第1〜第7モジュールのパターンが、どのキャラクタ(ODDまたはEVENの0〜9)に対応するかをチェックする。このチェック結果(ODDまたはEVENの0〜9のいずれか一つ)は、キャラクタ復調データとされる。
【0077】
ステップSE5では、復調部108は、ステップSE4でのチェック結果がOK(該当するキャラクタが存在)であるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSE5の判断結果が「No」である場合、ステップSE8では、復調部108は、当該キャラクタの復調結果をNGとする。
【0078】
ステップSE6では、復調部108は、連続フラグをクリアする。ステップSE7では、復調部108は、当該キャラクタの復調結果をOK(復調成功)とする。
【0079】
図7に戻り、ステップSB3では、復調部108は、一つ目のキャラクタに関して、キャラクタ復調処理Aにおけるキャラクタ復調結果がOKであるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSB8では、復調部108は、キャラクタ復調データをメモリ112に格納する。
【0080】
ステップSB9では、復調部108は、図5(a)に示したバーコード40の左データブロック(レフトガードバーLGB〜センターバーCB)において6キャラクタを復調済みであるか否かを判断し、この場合、1キャラクタしか復調されていないため、判断結果を「No」とする。
【0081】
ステップSB2では、二つ目のキャラクタの復調に関するキャラクタ復調処理Aが実行される。すなわち、図11に示したステップSE1では、復調部108は、上記左データブロックの二つ目のキャラクタ(図4(a)参照)に対応する第1モジュール(図4(a)の▲1▼)が白データであるか否かを判断し、この場合、判断結果を「Yes」とする。
【0082】
ステップSE2では、復調部108は、当該キャラクタに対応する第8モジュール(図4の▲8▼)が白データであるか否かを判断する。ここで、エラー発生により、当該キャラクタが6モジュール構成(1モジュール欠落)または8モジュール構成(1モジュール余分)として読み取られる場合がある。この場合の第8モジュールが黒データとすると、復調部108は、ステップSE2の判断結果を「No」とする。
【0083】
ステップSE9では、復調部108は、連続フラグがオンであるか否かを判断し、この場合、判断結果を「No」とする。なお、ステップSE9の判断結果が「Yes」である場合、ステップSE8でキャラクタ復調結果がNGとされる。
【0084】
ステップSE10では、復調部108は、当該キャラクタにおける第7モジュールが白データであるか否かを判断する。この場合、当該キャラクタが6モジュール構成として読み取られたとすると、復調部108は、ステップSE10の判断結果を「Yes」とする。
【0085】
ステップSE11では、復調部108は、当該キャラクタ(この場合、6モジュール構成とする)における第1〜第6モジュール(図4(a)の▲1▼〜▲6▼)内に白および黒データが2つずつ存在しているか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSE11の判断結果が「No」である場合、ステップSE8の処理が実行される。
【0086】
ステップSE12では、復調部108は、図2に示した6モジュール用復調パターン表410Aを参照して、当該キャラクタの第1〜第6モジュールのパターンが、どのキャラクタ(ODDまたはEVENの0、4〜6、9)に対応するかをチェックする。このチェック結果(ODDまたはEVENの0、4〜6、9のいずれか一つ)は、キャラクタ復調データとされる。
【0087】
ステップSE13では、復調部108は、ステップSE12でのチェック結果がOK(該当するキャラクタが存在)であるか否かを判断する。この場合、当該キャラクタ(6モジュール構成)のパターンが、例えば、「W(白)、W(白)、B(黒)、B(黒)、W(白)、B(黒)」である場合、復調部108は、ODDの0をキャラクタ復調データ(チェック結果=OK)として、ステップSE12の判断結果を「Yes」とする。
【0088】
なお、チェック結果がNGである場合、すなわち、当該キャラクタのパターンがODDまたはEVENの0、4〜6、9のいずれにも対応しない場合、復調部108は、ステップSE13の判断結果を「No」として、ステップSE8でキャラクタの復調結果をNGとする。
【0089】
ステップSE14では、復調部108は、連続フラグをオンに設定する。ステップSE7では、復調部108は、当該キャラクタの復調結果をOK(復調成功)とする。
【0090】
図7に戻り、ステップSB3では、復調部108は、二つ目のキャラクタに関して、キャラクタ復調処理Aにおけるキャラクタ復調結果がOKであるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSB8では、復調部108は、キャラクタ復調データをメモリ112に格納する。
【0091】
ステップSB9では、復調部108は、図5(a)に示したバーコード40の左データブロック(レフトガードバーLGB〜センターバーCB)において6キャラクタを復調済みであるか否かを判断し、この場合、2キャラクタしか復調されていないため、判断結果を「No」とする。
【0092】
ステップSB2では、前述した動作と同様にして、三つ目のキャラクタの復調に関するキャラクタ復調処理Aが実行される。以後、上述した動作が繰り返される。
【0093】
ここで、図11に示したステップSE10の判断結果が「No」である場合、ステップSE15では、復調部108は、当該キャラクタにおける第9モジュールが白データであるか否かを判断する。この場合、当該キャラクタが8モジュール構成として読み取られたとすると、復調部108は、ステップSE15の判断結果を「Yes」とする。なお、ステップSE15の判断結果が「No」である場合、ステップSE8で当該キャラクタの復調結果がNGとされる。
【0094】
ステップSE16では、復調部108は、当該キャラクタ(8モジュール構成)における第1〜第8モジュール(図4(a)の▲1▼〜▲8▼)内に白および黒データが2つずつ存在しているか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSE16の判断結果が「No」である場合、ステップSE8の処理が実行される。
【0095】
ステップSE17では、復調部108は、図2に示した8モジュール用復調パターン表420Aを参照して、当該キャラクタの第1〜第8モジュールのパターンが、どのキャラクタ(ODDまたはEVENの0〜9)に対応するかをチェックする。このチェック結果(ODDまたはEVENの0〜9のいずれか一つ)は、キャラクタ復調データとされる。
【0096】
ステップSE18では、復調部108は、ステップSE17でのチェック結果がOK(該当するキャラクタが存在)であるか否かを判断する。この場合、当該キャラクタ(8モジュール構成)のパターンが、例えば、「W(白)、W(白)、W(白)、W(白)、B(黒)、B(黒)、W(白)、B(黒)」である場合、復調部108は、ODDの0をキャラクタ復調データ(チェック結果=OK)として、ステップSE18の判断結果を「Yes」とする。
【0097】
なお、チェック結果がNGである場合、すなわち、当該キャラクタのパターンがODDまたはEVENのいずれにも対応しない場合、復調部108は、ステップSE18の判断結果を「No」として、ステップSE8でキャラクタの復調結果をNGとする。
【0098】
ステップSE19では、復調部108は、連続フラグをオンに設定する。ステップSE7では、復調部108は、当該キャラクタの復調結果をOK(復調成功)とする。
【0099】
そして、左データブロックにおける6キャラクタの復調が終了すると、復調部108は、図7に示したステップSB9の判断結果を「Yes」とする。ステップSB10では、復調部108は、図5(a)に示したバーコード40のセンターバーCBが検出されたかをチェックする。
【0100】
ステップSB11では、ステップSB10のチェック結果がOK(センターバーCBを検出)であるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSB11の判断結果が「No」である場合、ステップSB26(図8参照)の判断が行われる。
【0101】
ステップSB12では、復調部108は、センターバーCB(図5(a)参照)が検出されたことを表すセンターバー検出フラグをオンに設定する。ステップSB13では、復調キャラクタ数(この場合、例えば、6キャラクタ)のデータをメモリ112に退避する。
【0102】
ステップSB14では、復調部108は、連続フラグをクリアする。ステップSB15では、復調部108は、図5(a)に示したセンターバーCBからライトガードバーRGBまでの間の右データブロック(6キャラクタ)における一つ目のキャラクタを復調するためのキャラクタ復調処理Bを実行する。
【0103】
具体的には、図12に示したステップSF1では、復調部108は、上記右データブロックの一つ目のキャラクタに対応する第1モジュールが黒データであるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSF1の判断結果が「No」である場合、ステップSF8では、復調部108は、当該キャラクタの復調結果をNG(復調不可)とする。
【0104】
ステップSF2では、復調部108は、当該キャラクタに対応する第8モジュールが黒データであるか否かを判断する。7モジュールで構成された正常なキャラクタの場合には、上記第8モジュール(この場合、つぎのキャラクタの第1モジュール)が黒データである。
【0105】
この場合、復調部108は、ステップSF2の判断結果を「Yes」とする。ステップSF3では、復調部108は、当該キャラクタ(7モジュール構成)における第1〜第7モジュール内に白および黒データが2つずつ存在しているか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSF3の判断結果が「No」である場合、ステップSF8では、当該キャラクタの復調結果をNGとする。
【0106】
ステップSF4では、復調部108は、図3に示した7モジュール用復調パターン表400Bを参照して、当該キャラクタの第1〜第7モジュールのパターンが、どのキャラクタ(ODDまたはEVENの0〜9)に対応するかをチェックする。このチェック結果(ODDまたはEVENの0〜9のいずれか一つ)は、キャラクタ復調データとされる。
【0107】
ステップSF5では、復調部108は、ステップSF4でのチェック結果がOK(該当するキャラクタが存在)であるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSF5の判断結果が「No」である場合、ステップSF8では、復調部108は、当該キャラクタの復調結果をNGとする。
【0108】
ステップSF6では、復調部108は、連続フラグをクリアする。ステップSF7では、復調部108は、当該キャラクタの復調結果をOK(復調成功)とする。
【0109】
図7に戻り、ステップSB16では、復調部108は、一つ目のキャラクタに関して、キャラクタ復調処理Bにおけるキャラクタ復調結果がOKであるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSB17では、復調部108は、キャラクタ復調データをメモリ112に格納する。
【0110】
ステップSB18では、復調部108は、図5(a)に示したバーコード40の右データブロック(センターバーCB〜ライトガードバーRGB)において6キャラクタを復調済みであるか否かを判断し、この場合、1キャラクタしか復調されていないため、判断結果を「No」とする。
【0111】
ステップSB15では、二つ目のキャラクタの復調に関するキャラクタ復調処理Bが実行される。すなわち、図12に示したステップSF1では、復調部108は、上記右データブロックの二つ目のキャラクタに対応する第1モジュールが黒データであるか否かを判断し、この場合、判断結果を「Yes」とする。
【0112】
ステップSF2では、復調部108は、当該キャラクタに対応する第8モジュールが黒データであるか否かを判断する。ここで、エラー発生により、当該キャラクタが6モジュール構成(1モジュール欠落)または8モジュール構成(1モジュール余分)として読み取られる場合がある。この場合の第8モジュールが白データとすると、復調部108は、ステップSF2の判断結果を「No」とする。
【0113】
ステップSF9では、復調部108は、連続フラグがオンであるか否かを判断し、この場合、判断結果を「No」とする。なお、ステップSF9の判断結果が「Yes」である場合、ステップSF8でキャラクタ復調結果がNGとされる。
【0114】
ステップSF10では、復調部108は、当該キャラクタにおける第7モジュールが黒データであるか否かを判断する。この場合、当該キャラクタが6モジュール構成として読み取られたとすると、復調部108は、ステップSF10の判断結果を「Yes」とする。
【0115】
ステップSF11では、復調部108は、ステップSE11(図11参照)と同様にして、当該キャラクタ(6モジュール構成)における第1〜第6モジュール(図4(b)の▲1▼〜▲6▼)内に白および黒データが2つずつ存在しているか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSF11の判断結果が「No」である場合、ステップSF8の処理が実行される。
【0116】
ステップSF12では、復調部108は、図3に示した6モジュール用復調パターン表410Bを参照して、当該キャラクタの第1〜第6モジュールのパターンが、どのキャラクタ(ODDまたはEVENの0、4〜6、9)に対応するかをチェックする。このチェック結果(ODDまたはEVENの0、4〜6、9のいずれか一つ)は、キャラクタ復調データとされる。
【0117】
ステップSF13では、復調部108は、ステップSF12でのチェック結果がOK(該当するキャラクタが存在)であるか否かを判断する。この場合、当該キャラクタ(6モジュール構成)のパターンが、例えば、「B(黒)、W(白)、B(黒)、B(黒)、W(白)、W(白)」である場合、復調部108は、ODDの0をキャラクタ復調データ(チェック結果をOK)として、ステップSF12の判断結果を「Yes」とする。
【0118】
なお、チェック結果がNGである場合、すなわち、当該キャラクタのパターンがODDまたはEVENの0、4〜6、9のいずれにも対応しない場合、復調部108は、ステップSF13の判断結果を「No」として、ステップSF8でキャラクタの復調結果をNGとする。
【0119】
ステップSF14では、復調部108は、連続フラグをオンに設定する。ステップSF7では、ステップSF7では、復調部108は、当該キャラクタの復調結果をOK(復調成功)とする。
【0120】
図7に戻り、ステップSB16では、復調部108は、二つ目のキャラクタに関して、キャラクタ復調処理Bにおけるキャラクタ復調結果がOKであるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSB17では、復調部108は、キャラクタ復調データをメモリ112に格納する。
【0121】
ステップSB18では、復調部108は、図5(a)に示したバーコード40の右データブロック(センターバーCB〜ライトガードバーRGB)において6キャラクタを復調済みであるか否かを判断し、この場合、2キャラクタしか復調されていないため、判断結果を「No」とする。
【0122】
ステップSB15では、前述した動作と同様にして、三つ目のキャラクタの復調に関するキャラクタ復調処理Bが実行される。以後、上述した動作が繰り返される。
【0123】
ここで、図12に示したステップSF10の判断結果が「No」である場合、ステップSF15では、復調部108は、当該キャラクタにおける第9モジュールが黒データであるか否かを判断する。
【0124】
この場合、当該キャラクタが8モジュール構成として読み取られたとすると、復調部108は、ステップSF15の判断結果を「Yes」とする。なお、ステップSF15の判断結果が「No」である場合、ステップSF8で当該キャラクタの復調結果がNGとされる。
【0125】
ステップSF16では、復調部108は、ステップSE16(図11参照)と同様にして、当該キャラクタ(8モジュール構成)における第1〜第8モジュール(図4(b)の▲1▼〜▲8▼)内に白および黒データが2つずつ存在しているか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSF16の判断結果が「No」である場合、ステップSF8の処理が実行される。
【0126】
ステップSF17では、復調部108は、図3に示した8モジュール用復調パターン表420Bを参照して、当該キャラクタの第1〜第8モジュールのパターンが、どのキャラクタ(ODDまたはEVENの0〜9)に対応するかをチェックする。このチェック結果(ODDまたはEVENの0〜9のいずれか一つ)は、キャラクタ復調データとされる。
【0127】
ステップSF18では、復調部108は、ステップSF17でのチェック結果がOK(該当するキャラクタが存在)であるか否かを判断する。この場合、当該キャラクタ(8モジュール構成)のパターンが、例えば、「B(黒)、W(白)、B(黒)、B(黒)、W(白)、W(白)、W(白)、W(白)」である場合、復調部108は、ODDの0をキャラクタ復調データ(チェック結果をOK)として、ステップSF12の判断結果を「Yes」とする。
【0128】
なお、チェック結果がNGである場合、すなわち、当該キャラクタのパターンがODDまたはEVENのいずれにも対応しない場合、復調部108は、ステップSF18の判断結果を「No」として、ステップSF8でキャラクタの復調結果をNGとする。
【0129】
ステップSF19では、復調部108は、連続フラグをオンに設定する。ステップSF7では、ステップSF7では、復調部108は、当該キャラクタの復調結果をOK(復調成功)とする。
【0130】
そして、右データブロックにおける6キャラクタの復調が終了すると、復調部108は、図7に示したステップSB18の判断結果を「Yes」とする。ステップSB19では、復調部108は、図5(a)に示したバーコード40のライトガードバーRGBが検出されたかをチェックする。
【0131】
ステップSB20では、ステップSB19のチェック結果がOK(ライトガードバーRGBを検出)であるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSB20の判断結果が「No」である場合、ステップSB26(図8参照)の判断が行われる。
【0132】
ステップSB21では、復調部108は、ライトガードバーRGB(図5(a)参照)が検出されたことを表すライトガードバー検出フラグをオンに設定する。
【0133】
図8に示したステップSB26では、復調部108は、センターバー検出フラグおよびライトガードバー検出フラグが共にオンであるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSB27では、復調部108は、図5(a)に示したバーコード40の復調結果をOK(正常)とする。
【0134】
図6に戻り、ステップSA6では、復調部108は、連続読み取り復調処理において正常に復調できたか(復調結果=OK)否かを判断し、この場合、判断結果を「Yes」とする。
【0135】
ステップSA14では、主制御部109は、全キャラクタ分の復調データをメモリ112に格納する。ステップSA15では、復調部108は、ブロック毎の復調データをペアリングするというペアリング処理を実行する。ステップSA16では、復調データについて、モジュラス10チェック処理を実行する。
【0136】
ここで、WPCコードの規約によると、13桁バーコードに含まれる12個のデータキャラクタを、最も右側のものを奇数位置として順番に奇数位置または偶数位置に分類した場合(フラグキャラクタは奇数位置と分類する)、奇数位置にあるデータキャラクタの数値の総和の3倍と偶数位置にあるデータキャラクタの数値の総和との和は、10の整数倍となる。
【0137】
この規約を利用すると、ブロック読み取りして得られた復調データを合成する際に、バーコード全体に対応した復調データが再現されたか否かを容易に確認することができる。モジュラス10チェック処理では、上記確認が行われる。
【0138】
ステップSA17では、主制御部109は、モジュラス10チェック結果がOKであるか否かを判断し、この判断結果が「Yes」である場合、一連の処理を終了する。
【0139】
なお、ステップSA17の判断結果が「No」である場合、ステップSA13では、復調部108は、走査ポインタを1インクリメントした後、ステップSA2の判断を行う。
【0140】
なお、図7に示したステップSB3の判断結果が「No」である場合、ステップSB4では、復調部108は、図5(a)に示したバーコード40の左データブロック(レフトガードバーLGB〜センターバーCB)において4キャラクタを復調済みであるか否かを判断する。ステップSB4の判断結果が「No」である場合、ステップSB26(図8参照)の判断が行われる。
【0141】
一方、ステップSB4の判断結果が「Yes」である場合、ステップSB5では、復調部108は、図5(a)に示したバーコード40のセンターバーCBが検出されたかをチェックする。
【0142】
ステップSB6では、ステップSB5のチェック結果がOK(センターバーCBを検出)であるか否かを判断する。ステップSB6の判断結果が「No」である場合、ステップSB26(図8参照)の判断が行われる。
【0143】
一方、ステップSB6の判断結果が「Yes」である場合、ステップSB7では、復調部108は、センターバー検出フラグをオンに設定する。以後、ステップSB13以降の処理が実行される。
【0144】
また、図7に示したステップSB16の判断結果が「No」である場合、図8に示したステップSB22では、復調部108は、図5(a)に示したバーコード40の左データブロック(レフトガードバーLGB〜センターバーCB)において4キャラクタを復調済みであるか否かを判断する。ステップSB22の判断結果が「No」である場合、ステップSB26の判断が行われる。
【0145】
一方、ステップSB22の判断結果が「Yes」である場合、ステップSB23では、復調部108は、図5(a)に示したバーコード40のライトガードバーRGBが検出されたかをチェックする。
【0146】
ステップSB24では、ステップSB23のチェック結果がOK(ライトガードバーRGBを検出)であるか否かを判断する。ステップSB24の判断結果が「No」である場合、ステップSB26の判断が行われる。
【0147】
一方、ステップSB24の判断結果が「Yes」である場合、ステップSB25では、復調部108は、ライトガードバー検出フラグをオンに設定する。以後、ステップSB26の判断が行われる。
【0148】
一方、ステップSB26の判断結果が「No」である場合、ステップSB28では、復調部108は、復調キャラクタ数が3以上であるか否かを判断する。この判断結果が「Yes」である場合、ステップSB27で復調結果がOKとされる。一方、ステップSB28の判断結果が「No」である場合、ステップSB29では、復調結果がNGとされる。
【0149】
(分割読み取り)
つぎに、図5(b)に示した分割読み取りの場合の動作について説明する。この分割読み取りの場合、同図に示した走査方向(ライトガードバーRGB→センターバーCB)でバーコード40が走査される。
【0150】
ここで、バーコード40の走査が開始されると、図6に示したステップSA1では、復調部108は、走査ポインタをロードする。ステップSA2では、復調部108は、走査が終了したか否かを判断し、この場合、判断結果を「No」とする。
【0151】
ステップSA3では、復調部108は、A/D変換部107からの読み取り信号が白、黒、白パターンであるか否かを判断する。この場合、図5(b)に示したライトガードバーRGBの右端が走査されたとすると、復調部108は、ステップSA3の判断結果を「Yes」とする。
【0152】
ステップSA4では、復調部108は、レフトガードバーLGB(図5(b)参照)を検出したか否かを判断し、この場合、判断結果を「No」とする。ステップSA7では、復調部108は、ライトガードバーRGB(図5(b)参照)を検出したか否かを判断し、この場合、判断結果を「Yes」とし、ライトガードバー検出フラグをオンに設定する。
【0153】
ステップSA8では、分割読み取り(図5(b)参照)により、キャラクタの読み取りデータに基づいて、キャラクタ復調を行うための分割読み取り復調処理が実行される。
【0154】
具体的には、図9に示したステップSC1では、復調部108は、連続フラグをクリアする。ステップSC2では、復調部108は、図5(b)に示したライトガードバーRGBからセンターバーCBまでの間の右データブロック(6キャラクタ)における一つ目のキャラクタを復調するためのキャラクタ復調処理A(図11参照)を実行する。
【0155】
ステップSC3では、復調部108は、一つ目のキャラクタに関して、キャラクタ復調処理Aにおけるキャラクタ復調結果がOKであるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSC8では、復調部108は、キャラクタ復調データをメモリ112に格納する。
【0156】
ステップSC9では、復調部108は、図5(b)に示したバーコード40の右データブロック(ライトガードバーRGB〜センターバーCB)において6キャラクタを復調済みであるか否かを判断し、この場合、1キャラクタしか復調されていないものとし、判断結果を「No」とする。
【0157】
ステップSC2では、二つ目のキャラクタの復調に関するキャラクタ復調処理Aが実行される。
【0158】
そして、右データブロックにおける6キャラクタの復調が終了すると、復調部108は、ステップSC9の判断結果を「Yes」とする。ステップSC10では、復調部108は、図5(b)に示したバーコード40のセンターバーCBが検出されたかをチェックする。
【0159】
ステップSC11では、ステップSC10のチェック結果がOK(センターバーCBを検出)であるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSC11の判断結果が「No」である場合、ステップSC13の処理が実行される。
【0160】
ステップSC12では、復調部108は、センターバーCB(図5(b)参照)が検出されたことを表すセンターバー検出フラグをオンに設定する。ステップSC13では、復調キャラクタ数(この場合、例えば、6キャラクタ)のデータをメモリ112に退避する。ステップSC14では、復調部108は、連続フラグをクリアする。
【0161】
ステップSC15では、復調部108は、センターバー検出フラグおよびライトガードバー検出フラグが共にオンであるか否かを判断し、この場合、判断結果を「Yes」とする。ステップSC16では、復調部108は、図5(b)に示したバーコード40の復調結果をOK(正常)とする。
【0162】
図6に戻り、ステップSA9では、復調部108は、分割読み取り復調処理において正常に復調できたか(復調結果=OK)否かを判断し、この場合、判断結果を「Yes」し、ステップSA14以降の処理を実行する。一方、ステップSA9の判断結果が「No」である場合、ステップSA10の判断が行われる。
【0163】
なお、図9に示したステップSC3の判断結果が「No」である場合、ステップSC4では、復調部108は、図5(b)に示したバーコード40の右データブロック(ライトガードバーRGB〜センターバーCB)において4キャラクタを復調済みであるか否かを判断する。ステップSC4の判断結果が「No」である場合、ステップSC13の処理が実行される。
【0164】
一方、ステップSC4の判断結果が「Yes」である場合、ステップSC5では、復調部108は、図5(b)に示したバーコード40のセンターバーCBが検出されたかをチェックする。
【0165】
ステップSC6では、ステップSC5のチェック結果がOK(センターバーCBを検出)であるか否かを判断する。ステップSC6の判断結果が「No」である場合、ステップSC13の処理が実行される。
【0166】
一方、ステップSC6の判断結果が「Yes」である場合、ステップSC7では、復調部108は、センターバー検出フラグをオンに設定する。以後、ステップSC13以降の処理が実行される。
【0167】
また、ステップSC15の判断結果が「No」である場合、ステップSC17では、復調部108は、復調キャラクタ数が3以上であるか否かを判断する。この判断結果が「Yes」である場合、ステップSC16で復調結果がOKとされる。一方、ステップSC17の判断結果が「No」である場合、ステップSC18では、復調結果がNGとされる。
【0168】
(ブロック読み取り)
つぎに、図5(c)に示したブロック読み取りの場合の動作について説明する。このブロック読み取りの場合、同図に示した二つの走査方向(センターバーCB→レフトガードバーLGB、センターバーCB→ライトガードバーRGB)でバーコード40がそれぞれ走査される。
【0169】
ここで、バーコード40の走査が開始されると、図6に示したステップSA1では、復調部108は、走査ポインタをロードする。ステップSA2では、復調部108は、走査が終了したか否かを判断し、この場合、判断結果を「No」とする。
【0170】
ステップSA3では、復調部108は、A/D変換部107からの読み取り信号が白、黒、白パターンであるか否かを判断する。この場合、図5(c)に示したセンターバーCBの右端が走査されたとすると、復調部108は、ステップSA3の判断結果を「Yes」とする。
【0171】
ステップSA4では、復調部108は、レフトガードバーLGB(図5(c)参照)を検出したか否かを判断し、この場合、判断結果を「No」とする。ステップSA7では、復調部108は、ライトガードバーRGB(図5(c)参照)を検出したか否かを判断し、この場合、判断結果を「No」とする。
【0172】
ステップSA10では、復調部108は、センターバーCB(図5(c)参照)を検出したか否かを判断し、この場合、判断結果を「Yes」とする。ステップSA11では、ブロック読み取り(図5(c)参照)により、キャラクタの読み取りデータに基づいて、キャラクタ復調を行うためのブロック読み取り復調処理が実行される。
【0173】
具体的には、図10に示したステップSD1では、復調部108は、連続フラグをクリアする。ステップSD2では、復調部108は、図5(c)に示したセンターバーCBからレフトガードバーLGBまでの間の左データブロック(6キャラクタ)における一つ目のキャラクタを復調するためのキャラクタ復調処理A(図11参照)を実行する。
【0174】
ステップSD3では、復調部108は、一つ目のキャラクタに関して、キャラクタ復調処理Aにおけるキャラクタ復調結果がOKであるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSD3の判断結果が「No」である場合、ステップSD6の処理が実行される。ステップSD4では、復調部108は、キャラクタ復調データをメモリ112に格納する。
【0175】
ステップSD5では、復調部108は、図5(c)に示したセンターバーCBからレフトガードバーLGBまでの間の左データブロックにおいて6キャラクタを復調済みであるか否かを判断し、この場合、判断結果を「No」として、ステップSD2〜ステップSD5が繰り返される。
【0176】
そして、ステップSD5の判断結果が「Yes」になると、ステップSD6では、復調部108は、復調キャラクタ数(この場合、例えば、6キャラクタ)のデータをメモリ112に退避する。ステップSD7では、復調部108は、連続フラグをクリアする。
【0177】
ステップSD8では、復調部108は、図5(c)に示したセンターバーCBからライトガードバーRGBまでの間の右データブロック(6キャラクタ)における一つ目のキャラクタを復調するためのキャラクタ復調処理B(図12参照)を実行する。
【0178】
ステップSD9では、復調部108は、一つ目のキャラクタに関して、キャラクタ復調処理Bにおけるキャラクタ復調結果がOKであるか否かを判断し、この場合、判断結果を「Yes」とする。なお、ステップSD9の判断結果が「No」である場合、ステップSD12の判断が行われる。ステップSD10では、復調部108は、キャラクタ復調データをメモリ112に格納する。
【0179】
ステップSD11では、復調部108は、図5(c)に示したセンターバーCBからライトガードバーRGBまでの間の右データブロックにおいて6キャラクタを復調済みであるか否かを判断し、この場合、判断結果を「No」として、ステップSD8〜ステップSD11が繰り返される。
【0180】
そして、ステップSD11の判断結果が「Yes」になると、ステップSD12では、復調部108は、復調キャラクタ数(この場合、例えば、6キャラクタ)のデータをメモリ112に退避する。
【0181】
ステップSD13では、復調部108は、ステップSD6で退避された復調キャラクタ数が3以上かつステップSD12で退避された復調キャラクタ数が1以上(またはステップSD6で退避された復調キャラクタ数が1以上かつステップSD12で退避された復調キャラクタ数が3以上)であるか否かを判断する。
【0182】
ステップSD13の判断結果が「Yes」である場合、ステップSD14では、復調部108は、復調結果をOKとする。一方、ステップSD13の判断結果が「No」である場合、ステップSD15では、復調部108は、復調結果をNGとする。
【0183】
図6に戻り、ステップSA12では、復調部108は、ブロック読み取り復調処理において正常に復調できたか(復調結果=OK)否かを判断し、この場合、判断結果を「Yes」として、ステップSA14以降の処理を実行する。なお、ステップSA12の判断結果が「No」である場合、ステップSA13の処理が実行される。
【0184】
以上説明したように、一実施の形態によれば、1キャラクタを構成するモジュール数が規定数である7モジュール以外(6または8モジュール)であると判定された場合、モジュール数に応じて予め設定された6モジュール用復調パターン表410A、8モジュール用復調パターン表420A、6モジュール用復調パターン表410B、8モジュール用復調パターン表420Bを用いて、当該キャラクタを復調することとしたので、バーコードの読み取り精度を高めることができる。
【0185】
また、一実施の形態によれば、連続フラグを用いて、モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることとしたので、重大な欠陥がある可能性が高い読み取り結果を除去することができる。
【0186】
以上本発明にかかる一実施の形態について図面を参照して詳述してきたが、具体的な構成例はこの一実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【0187】
【発明の効果】
以上説明したように、本発明によれば、1キャラクタを構成するモジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調することとしたので、バーコードの読み取り精度を高めることができるという効果を奏する。
【0188】
また、本発明によれば、モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることとしたので、重大な欠陥がある可能性が高い読み取り結果を除去することができるという効果を奏する。
【0189】
また、本発明によれば、復調パターン表を、モジュール数が規定数より1つ少ない場合に対応させ、該復調パターン表で復調できないパターンの場合、ユーザにキャラクタの候補を提示し、選択させることとしたので、バーコードの読み取りに関してユーザ支援を行うことができるという効果を奏する。
【0190】
また、本発明によれば、バーコードの読み取り信号に基づいて、単位モジュールに相当する基本周波数を抽出し、読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを出力し、モジュール判定データに基づいて、モジュール数を判定する場合にもバーコードの読み取り精度を高めることができるという効果を奏する。
【図面の簡単な説明】
【図1】本発明にかかる一実施の形態の構成を示すブロック図である。
【図2】7モジュール用復調パターン表400A、6モジュール用復調パターン表410Aおよび8モジュール用復調パターン表420Aを示す図である。
【図3】7モジュール用復調パターン表400B、6モジュール用復調パターン表410Bおよび8モジュール用復調パターン表420Bを示す図である。
【図4】バーコードにおけるキャラクタとモジュールとの対応関係を表す図である。
【図5】同一実施の形態における読み取り方法のパターンを説明する図である。
【図6】同一実施の形態の動作を説明するフローチャートである。
【図7】図6に示した連続読み取り復調処理を説明するフローチャートである。
【図8】図7に示した連続読み取り復調処理を説明するフローチャートである。
【図9】図6に示した分割読み取り復調処理を説明するフローチャートである。
【図10】図6に示したブロック読み取り復調処理を説明するフローチャートである。
【図11】図7、9および10に示したキャラクタ復調処理Aを説明するフローチャートである。
【図12】図7および図10に示したキャラクタ復調処理Bを説明するフローチャートである。
【図13】従来のPOSシステムの構成を示すブロック図である。
【図14】バーコード40を示す図である。
【図15】バーコードのデータ構造を示す図である。
【図16】バーコードにおけるキャラクタ構成を示す図である。
【図17】バーコードに含まれるデータキャラクタのバー幅パターンと復調データとの組み合わせを示す図である。
【図18】バーコードに含まれる各データキャラクタのODD/EVENとフラグキャラクタとの組み合わせを示す図である。
【符号の説明】
40 バーコード
1001 、1002 、100n バーコード読取装置
108 復調部
112 メモリ
109 主制御部
410A、410B 6モジュール用復調パターン表
420A、420B 8モジュール用復調パターン表
Claims (8)
- キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取装置であって、
1キャラクタを構成するモジュール数を判定するモジュール数判定手段と、
前記モジュール数判定手段で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調手段と、
を備えたことを特徴とするバーコード読取装置。 - 前記復調手段は、前記モジュール数判定手段により前記モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることを特徴とする請求項1に記載のバーコード読取装置。
- 前記復調パターン表は、前記モジュール数が前記規定数より1つ少ない場合に対応しており、前記復調手段は、該復調パターン表で復調できないパターンの場合、ユーザにキャラクタの候補を提示し、選択させることを特徴とする請求項1または2に記載のバーコード読取装置。
- 前記バーコードの読み取り信号に基づいて、該バーコードの単位モジュールに相当する基本周波数を抽出し、前記読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを出力するモジュール判定データ出力手段を備え、前記モジュール数判定手段は、前記モジュール判定データに基づいて、前記モジュール数を判定すること、を特徴とする請求項1〜3のいずれか一つに記載のバーコード読取装置。
- キャラクタを複数のバーにより表したバーコードを読み取って得られたパターンに基づいて、前記キャラクタを復調するバーコード読取方法であって、
1キャラクタを構成するモジュール数を判定するモジュール数判定工程と、
前記モジュール数判定工程で前記モジュール数が規定数以外であると判定された場合、モジュール数に応じて予め設定された復調パターン表を用いて、当該キャラクタを復調する復調工程と、
を含むことを特徴とするバーコード読取方法。 - 前記復調工程は、前記モジュール数判定工程により前記モジュール数が規定数以外であると連続して判定された場合、キャラクタの復調を不可とすることを特徴とする請求項5に記載のバーコード読取方法。
- 前記復調パターン表は、前記モジュール数が前記規定数より1つ少ない場合に対応しており、前記復調工程は、該復調パターン表で復調できないパターンの場合、ユーザにキャラクタの候補を提示し、選択させることを特徴とする請求項5または6に記載のバーコード読取方法。
- 前記バーコードの読み取り信号に基づいて、該バーコードの単位モジュールに相当する基本周波数を抽出し、前記読み取り信号に同期しかつ該基本周波数を有するタイミング点に従ったモジュール判定データを出力するモジュール判定データ出力工程を含み、前記モジュール数判定工程では、前記モジュール判定データに基づいて、前記モジュール数を判定すること、を特徴とする請求項5〜7のいずれか一つに記載のバーコード読取方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003045080A JP4170111B2 (ja) | 2003-02-21 | 2003-02-21 | バーコード読取装置およびバーコード読取方法 |
US10/707,695 US7021546B2 (en) | 2003-02-21 | 2004-01-05 | Bar-code reader and method of reading bar-code |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003045080A JP4170111B2 (ja) | 2003-02-21 | 2003-02-21 | バーコード読取装置およびバーコード読取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004252903A JP2004252903A (ja) | 2004-09-09 |
JP4170111B2 true JP4170111B2 (ja) | 2008-10-22 |
Family
ID=32866499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003045080A Expired - Fee Related JP4170111B2 (ja) | 2003-02-21 | 2003-02-21 | バーコード読取装置およびバーコード読取方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7021546B2 (ja) |
JP (1) | JP4170111B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004023380A1 (ja) * | 2002-08-29 | 2004-03-18 | Fujitsu Limited | バーコード読取装置、バーコード読取方法、バーコード読取プログラムおよびモジュール点抽出装置 |
US20050199698A1 (en) * | 2004-03-15 | 2005-09-15 | Ivoice, Inc. | Product identifier reading, product use instructions speaking system |
US7451933B2 (en) * | 2005-04-19 | 2008-11-18 | Intermec Ip Corp. | Optoelectronic device, process and article for acquiring machine-readable symbols, such as bar codes |
US7942329B2 (en) * | 2007-08-14 | 2011-05-17 | Jadak, Llc | Method for providing user feedback in an autoidentification system |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61251979A (ja) * | 1985-03-29 | 1986-11-08 | Fujitsu Ltd | バ−コ−ド読取り方式 |
KR940003633B1 (ko) | 1990-09-01 | 1994-04-25 | 주식회사 금성사 | 바코드 정보 인식 처리방법 |
JPH0554211A (ja) | 1991-08-23 | 1993-03-05 | Fujitsu Ltd | バーコード媒体及びバーコードを用いた商品管理システム |
JP2995116B2 (ja) * | 1991-10-31 | 1999-12-27 | オリンパス光学工業株式会社 | 結像倍率認識装置及びそれを用いたバーコード読取装置 |
JP2740418B2 (ja) * | 1992-07-14 | 1998-04-15 | 富士通株式会社 | バーコード読取復調方法 |
JPH06274674A (ja) * | 1993-03-19 | 1994-09-30 | Fujitsu Ltd | バーコード読取方法およびバーコード読取装置 |
JPH0765105A (ja) | 1993-08-30 | 1995-03-10 | Tec Corp | バーコード読取装置 |
JP2718442B2 (ja) * | 1993-12-20 | 1998-02-25 | 富士通株式会社 | バーコード復調方法及び装置 |
JP2835275B2 (ja) | 1994-03-07 | 1998-12-14 | 株式会社テック | バーコード読取装置 |
GB2291524B (en) * | 1994-07-21 | 1997-01-29 | Fujitsu Ltd | Reading bar codes |
JPH08329350A (ja) | 1995-06-06 | 1996-12-13 | Tec Corp | 商品販売登録データ処理装置 |
JP3550807B2 (ja) | 1995-06-16 | 2004-08-04 | 株式会社デンソー | バーコード復号方式 |
JP3448404B2 (ja) * | 1995-09-08 | 2003-09-22 | 富士通株式会社 | バーコード読取装置及びバーコード読取方法 |
JPH09161001A (ja) * | 1995-12-05 | 1997-06-20 | Fujitsu Ltd | バーコード読取装置 |
JPH09179927A (ja) * | 1995-12-26 | 1997-07-11 | Fujitsu Ltd | バーコード読取装置 |
JPH10320497A (ja) * | 1997-05-16 | 1998-12-04 | Olympus Optical Co Ltd | コード読取記録装置 |
JPH1153465A (ja) * | 1997-08-08 | 1999-02-26 | Fujitsu Ltd | バーコード読取装置 |
JPH1166222A (ja) * | 1997-08-19 | 1999-03-09 | Fujitsu Ltd | バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体 |
JPH11120240A (ja) | 1997-10-14 | 1999-04-30 | Fujitsu Ltd | 携帯型端末装置及びそれを用いた情報管理システム並びに情報管理方法 |
JP3472691B2 (ja) * | 1997-11-26 | 2003-12-02 | 富士通株式会社 | バーコード読取装置及びバーコード読取方法 |
JP3548025B2 (ja) * | 1998-12-17 | 2004-07-28 | 富士通株式会社 | バーコード読取装置および方法 |
JP4416980B2 (ja) * | 1999-10-25 | 2010-02-17 | 富士通株式会社 | バーコード読取装置およびバーコード読取方法 |
JP2002042053A (ja) * | 2000-07-21 | 2002-02-08 | Fujitsu Ltd | バーコードスキャナ |
JP2002133363A (ja) * | 2000-10-20 | 2002-05-10 | Fujitsu Kiden Ltd | バーコード復調方式 |
-
2003
- 2003-02-21 JP JP2003045080A patent/JP4170111B2/ja not_active Expired - Fee Related
-
2004
- 2004-01-05 US US10/707,695 patent/US7021546B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7021546B2 (en) | 2006-04-04 |
JP2004252903A (ja) | 2004-09-09 |
US20040164162A1 (en) | 2004-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8061615B2 (en) | Detection method of two-dimensional code, detection device for the same, and storage medium storing detection program for the same | |
US5898157A (en) | Automatic check reading device | |
JP2951965B2 (ja) | 機械が光学的に読取り可能なバイナリコードの測定方法 | |
EP0722148A2 (en) | Bar code reader | |
EP0572989A2 (en) | Record with encoded data | |
EP1480163A2 (en) | Watermarking apparatus, method and computer readable medium based on image characteristics | |
JP2002366883A (ja) | 光学式情報読取装置の設定用バーコード、設定用バーコードの生成方法、光学式情報読取装置の設定変更方法、設定用バーコード生成プログラムおよび記録媒体 | |
JP4170111B2 (ja) | バーコード読取装置およびバーコード読取方法 | |
CA2374514C (en) | Recording medium and coded image reader apparatus | |
JP4416980B2 (ja) | バーコード読取装置およびバーコード読取方法 | |
JPH064699A (ja) | バーコードリーダ | |
JPH08263585A (ja) | コード読取装置 | |
BR9916998A (pt) | Examinador compacto de códigos de barras | |
JP3959451B2 (ja) | 画像読取システム | |
JP3725953B2 (ja) | 文字認識装置 | |
JP2006134160A (ja) | 光学式情報読取装置 | |
JP2002216088A (ja) | 情報コード | |
JP2853450B2 (ja) | バーコード読取り装置 | |
JPH01147786A (ja) | 表を含む文書の読取装置 | |
JP3707746B2 (ja) | バーコードリーダ | |
JP2000293634A (ja) | 画像処理装置および画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2641991B2 (ja) | バーコード読取装置のデータ処理方法 | |
JPS6074094A (ja) | 文字認識装置 | |
JPH0449477A (ja) | バーコード読取装置およびバーコード読取方法 | |
JPH10143596A (ja) | メールアドレスのバーコード化とその読み取り器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060105 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080728 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080805 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080806 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |