KR100308415B1 - 바코드판독장치,바코드판독방법및컴퓨터판독가능매체 - Google Patents
바코드판독장치,바코드판독방법및컴퓨터판독가능매체 Download PDFInfo
- Publication number
- KR100308415B1 KR100308415B1 KR1019980016759A KR19980016759A KR100308415B1 KR 100308415 B1 KR100308415 B1 KR 100308415B1 KR 1019980016759 A KR1019980016759 A KR 1019980016759A KR 19980016759 A KR19980016759 A KR 19980016759A KR 100308415 B1 KR100308415 B1 KR 100308415B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- demodulation
- buffer
- bar code
- barcode
- Prior art date
Links
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
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)
Abstract
본 발명은 바코드를 2단으로 겹친 2단 바코드를 판독하기에 적합한 바코드 판독장치 및 판독방법, 그리고 그와 같은 판독을 위한 프로그램을 저장한 컴퓨터 판독가능 매체에 관한 것이다.
CPU는 WPC 코드를 상하 2단으로 겹친 2단 코드에서 상단의 제1 데이터 블록을 판독하여 얻어진 복조 데이터 및 하단의 제1 데이터 블록을 판독하여 얻어진 복조 데이터가, 다 같이 제2 데이터 블록의 데이터 캐릭터에 대응하는 데이터를 포함하고, 또한 서로 상위한 졍우에 한하여 상단의 제1 데이터 블록을 판독하여 얻어진 복조 데이터와 상단의 제2 데이터 블록을 판독하여 얻어진 복조 데이터를 합성한 복조 데이터 및 하단의 제1 데이터 블록을 판독하여 얻어진 복조 데이터와 하단의 제2 데이터 블록을 판독하여 얻어진 복조 데이터를 합성한 복조 데이터를 다 같이 유효한 것으로 하여 취급한다.
Description
본 발명은 바코드를 2단으로 겹친 2단 바코드를 판독하기에 적합한 바코드 판독장치 및 판독방법, 그리고 그와 같은 판독을 위한 프로그램을 저장한 컴퓨터 판독가능 매체에 관한 것이다.
근년에는 유통업 등의 POS 시스템으로 대표된 바와 같이, 상품 등의 관리를 바코드로 행하는 것이 일반화되어 있다. 예를 들어 상점의 POS 시스템에서는 상품의 종류나 판매가격 등의 정보가 바코드의 포맷에 코드 화되어 상품에 인쇄되고, 레지스터에 의해 이 바코드가 판독되어 판독된 정보에 의거해서 정산이 행해짐과 동시에, 상품의 매상수가 실시간으로 집계되고 집계결과가 재고관리나 사입관리에 이용된다.
이와 같이 바코드는 JAN 코드, UPC 코드, EAN 코드 등의 WPC 코드와, 가변 길이의 세컨드 코드로 대별된다. 그 중에서 WPC 코드는 좌단에 부가되는 스타트 가드 바(SGB), 중간부에 삽입되는 센터 바(CB) 및 우단에 부가되는 엔드 가드 바(EGB)를 가지며, 스타트 가드 바와 센터 바 사이에 6 캐릭터 또는 4 캐릭터의 데이터 캐릭터의 데이터 캐릭터로 된 좌측 데이터 블록을 저장하고, 센터 바와 엔드 가드 바 사이에 6 캐릭터 또는 4 캐릭터의 데이터 캐릭터로 된 우측 데이터 블록을 저장하고 있다.
이들 각 가드 바 및 센터 바는 미리 규격에 따라 그 패턴이 정해져 있으므로, 바코드의 판독장치는 이들 가드 바 및 센터 바를 검지할 수가 있다.
또 바코드 판독장치는 이들 가드 바 및 센터 바를 단서로 바코드의 데이터 캐릭터(코드화한 수치 또는 기호의 최소치)를 판독할 수가 있다. 이 판독방식에는 연속 판독, 블록 판독 및 분할 판독의 3가지가 있다. 연속 판독이라 함은 1회의 바코드 주사에 의해 양 가드 바 및 센터 바를 검출할 경우에, 양 가드 바에 의해 끼워진 데이터 캐릭터를 바코드로서 인식하여 복조하는 방식이다. 또 블록 판독이라 함은 한쪽의 가드 바와 센터 바에 둘러싸인 데이터 캐릭터의 블록만으로도 바코드로서 인식해서 2개의 블록을 각각 별개로 복조한 후에 이들 각 블록의 복조 데이터를 합성하여, 1개의 바코드로 변조되어 있던 데이터를 재현하는 방식이다. 또 분할 판독이라 함은 최소한 1개의 가드 바 또는 센터 바에 연접한 데이터 캐릭터열이라도 바코드로서 인식해서 각각 별개로 판독출력한 이들 데이터 캐릭터의 복조 데이터의 단편을 합성하여, 1개의 바코드 전체에 대응하는 복조 데이터를 재현하는 방식이다. 즉 블록 판독 밑 분할 판독은 어느 것이나, 1회의 주사로는 스타트 가드 바로부터 엔드 가드 바에 이르는 바코드 전체를 판독할 수 없는 경우에 행해지는 방식이다.
그런데 WPC 코드는 고정 길이 코드이므로 표현 가능한 정보량에 스스로 한도가 있다. 그 때문에 WPC 코드의 코드 체계를 유지하면서 표현 가능한 정보량을 증가시키기 위하여, WPC 코드를 2단으로 겹쳐서 1조의 바코드로 해서 취급하고, 이 2단으로 겹친 바코드(이하 "2단 바코드"라 한다) 전체로 1개의 정보를 표현하는 것이 종래로부터 행하여지고 있다. 도 15는 이와 같은 2단 바코드의 개략 구성을 나타낸다. 이 도 15에서 이해할 수 있는 바와 같이 2단 바코드는 4개의 블록(A∼D)으로 구성되어 있다.
이 경우에 좌측 데이터 블록(A, C)에 대해서는 상단 또는 하단인 것을 나타내는 인식 플랙이 매립되어 있기 때문에, 바코드 판독장치는 상단의 블록인가 하단의 블록인가를 식별할 수 있다. 그러나 우측 데이터 블록(B, D)에 대해서는 이와 같은 식별 플랙은 매립되어 있지 않기 때문에, 바코드 판독장치는 우측 블록에 대응하는 복조 데이터만으로는 그것이 상단의 블록인가 하단의 블록인가를 식별할 수 없다. 따라서 상술한 블록 판독에 의해 얻어진 복조 데이터를 유효한 데이터로 해버리면, 바코드 판독장치는 상단 좌측 데이터 블록(A)을 판독해서 얻어진 복조 데이터(①)와 하단 우측 데이터 블록(D)을 판독해서 얻어진 복조 데이터(④)로 상단의 바코드를 구성하면, 오인해버릴 가능성이 있다. 마찬가지로 하단 좌측 데이터 블록(A)을 판독해서 얻어진 복조 데이터(③)와 상단 우측 데이터 블록(B)을 판독해서 얻어진 복조 데이터(②)로 하단의 바코드를 구성하면, 오인해버릴 우려가 있다. 즉 2단 바코드 전체로는 상하단 각각 2가지 씩의 조합의 가능성이 있으나, 바코드 판독장치는 그 중에서 올바른 1가지의 조합을 식별할 수가 없다. 그리고 오인한 상하 각 단의 바코드에 대해 각각 모듈러스10 체크가 우연히도 OK가 되었을 경우에는, 바코드 판독장치는 2단 바코드에 대응한 복조 데이터를 재현하고 있지 않음에도 불구하고 복조가 완료된 것으로 판단해버린다.
그 때문에 종래의 바코드 판독장치는 연속 판독에 의해 얻어진 복조 데이터(⑤, ⑥)만을 유효한 데이터로서 취급하고, 상단의 바코드 및 하단의 바코드를 각각 연속 판독하여 얻어진 복조 데이터만에 의거해서 2단 바코드 전체에 대응하는 복조 데이터를 재현하였다.
그러나 2단 바코드를 구성하는 개개의 바코드는 상하방향의 높이가 낮은 트런케이트 라벨(truncate label)이므로, 주사 빔광이 각 바코드를 끝으로부터 끝까지 한꺼번에 통과하는 확률은 대단히 낮다. 따라서 연속 판독에 의한 복조 데이터가 얻어지기까지에 시간이 걸리므로, 결국 2단 바코드 전체에 대응하는 복조 데이터를 재현하는 데는 장시간이 소요되었다.
본 발명은 2단 바코드의 각 단마다 제2 데이터 블록을 블록 판독해서 얻어진 복조 데이터와 제1 데이터 블록을 판독하여 얻어진 복조 데이터를 정확히 합성하는 것이 가능하며, 따라서 2단 바코드 전체에 대응하는 복조 데이터를 단시간에 재현할 수 있는 바코드 판독장치의 제공을 과제로 한다.
도 1은 본 발명의 1 실시예에 의한 바코드 판독장치의 블록도.
도 2는 도 1의 Ig-up 버퍼 및 Ig-down 버퍼의 구성을 나타낸 도면.
도 3은 도 1의 M10-buff-up 버퍼 및 M10-buff-down 버퍼의 구성을 나타낸 도면.
도 4는 도 1의 CPU로 실행되는 바코드 인식/복조처리 프로그램의 내용을 나타낸 플로차트.
도 5는 도 1의 CPU로 실행되는 바코드 인식/복조처리 프로그램의 내용을 나타낸 플로차트.
도 6은 도 4의 S002로 실행되는 데이터 복조처리의 내용을 나타낸 플로차트.
도 7은 도 4의 S002로 실행되는 데이터 복조처리의 내용을 나타낸 플로차트.
도 8은 도 4의 S002로 실행되는 데이터 복조처리의 내용을 나타낸 플로차트.
도 9는 2단 바코드의 구성도.
도 10은 WPC 코드의 캐릭터의 구성도.
도 11은 각 캐릭터를 구성하는 바의 조합과 수치 데이터의 대응을 나타낸 표.
도 12는 좌측 데이터 블록의 기수 패리티 및 우수 패리티의 조합과 플랙 캐릭터의 대응을 나타낸 표.
도 13은 연속 판독 가능한 주사 빔의 각도를 나타낸 도면.
도 14는 블록 판독 가능한 주사 빔의 각도를 나타낸 도면.
도 15는 종래의 2단 바코드의 판독을 나타낸 설명도.
본 발명의 제1 태양에 의한 바코드 판독장치는 각각 소정 개수의 데이터 캐릭터로 된 제1 데이터 블록 및 제2 데이터 블록에 의해 각각 구성된 2단의 바코드로 된 2단 바코드를 주사해서, 그 주사 궤적에서의 바코드 패턴을 검출하는 바코드 패턴 검출부와, 이 바코드 패턴 검출부에 의해 검출된 바코드 패턴을 복조하여 복조 데이터를 얻는 복조부와, 이 복조부에 의해 얻어진 복조 데이터가 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에 이 복조 데이터를 저장하는 제1 버퍼와, 상기 복조부에 의해 얻어진 복조 데이터가 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에 이 복조 데이터를 저장하는 제2 버퍼와, 상기 복조부단에 의해 얻어진 복조 데이터가 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에 이 복조 데이터를 저장하는 제3 버퍼와, 상기 제1 버퍼에 저장되어 있는 복조 데이터와 상기 제3 버퍼에 저장되어 있는 복조 데이터를 합성하는 제1 합성부와, 상기 제2 버퍼에 저장되어 있는 복조 데이터와 상기 제3 버퍼에 저장되어 있는 복조 데이터를 합성하는 제2 합성부와, 상기 제1 버퍼에 저장되어 있는 복조 데이터 및 상기 제2 버퍼에 저장되어 있는 복조 데이터가 다 같이 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분을 포함하고, 또 이들 각 복조 데이터에 포함된 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분이 서로 상위한 경우에 한하여, 상기 제1 합성부에 의해 합성된 복조 데이터를 상기 제1단 바코드 전체에 대응하는 복조 데이터로서 유효화함과 동시에, 상기 제2 합성부에 의해 합성된 복조 데이터를 상기 제2단 바코드 전체에 대응하는 복조 데이터로서 유효화하는 유효화부를 갖춘 것을 특징으로 한다.
이와 같이 구성되면, 바코드 패턴 검출부는 2단 바코드를 주사해서 그 주사 궤적에서의 바코드 패턴을 검출한다. 그리고 복조부는 이 바코드 패턴 검출부에 의해 순차적으로 검출되는 바코드 패턴을 복조하고, 복조 데이터를 출력한다. 이 복조 데이터는 제1단 바코드의 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에는 제1 버퍼에 저장되고, 제2단 바코드의 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에는 제2 버퍼에 저장되고, 어떤 단의 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에는 제3 버퍼에 저장된다. 그리고 제1 합성부는 제1 버퍼에 저장되어 있는 복조 데이터와 제3 버퍼에 저장되어 있는 복조 데이터를 합성하고, 제2 합성부는 제2 버퍼에 저장되어 있는 복조 데이터와 제3 버퍼에 저장되어 있는 복조 데이터를 합성한다. 유효화부는 상기 제1 버퍼에 저장되어 있는 복조 데이터 및 제2 버퍼에 저장되어 있는 복조 데이터가 다 같이 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분을 포함하고, 또 이들 각 복조 데이터에 포함된 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분이 서로 상위한 경우에 한하여, 제1 합성부에 의해 합성된 복조 데이터를 제1단 바코드 전체에 대응하는 복조 데이터로서 유효화함과 동시에, 제2 합성부에 의해 합성된 복조 데이터를 제2단 바코드 전체에 대응하는 복조 데이터로서 유효화한다. 따라서 제1 버퍼에 저장되어 있는 복조 데이터 또는 제2 버퍼에 저장되어 있는 복조 데이터가 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분을 포함하고 있지 않을 경우이거나, 각 복조 데이터에 포함된 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분이 같은 경우에는, 각 바코드 전체에 대응하는 복조 데이터가 정확히 합성되지 않을 가능성이 있으므로, 유효화부는 상기 유효화를 행하지 않는다. 이에 따라 2단의 바코드를 분할 판독할 때의 오판 독의 가능성이 해소된다.
본 발명의 제2 태양에 의한 바코드 판독장치는 각 단을 구성하는 바코드가 WPC 코드, UPC/A 코드, JAN 코드 또는 EAN 코드인 것을 특징으로 한다.
본 발명의 제3 태양에 의한 바코드 판독장치는 제1 버퍼에 저장되어 있는 복조 데이터와 제3 버퍼에 저장되어 있는 복조 데이터가 2 캐릭터 이상 중복되어 있는 경우에 한하여 제1 합성부가 이들 복조 데이터를 합성하고, 제2 버퍼에 저장되어 있는 복조 데이터와 제3 버퍼에 저장되어 있는 복조 데이터가 2 캐릭터 이상 중복되어 있는 경우에 한하여 제2 합성부가 이들 복조 데이터를 합성하는 것을 특징으로 한다.
본 발명의 제4 태양에 의한 바코드 판독장치는 제1 버퍼에 저장되어 있는 복조 데이터 및 제2 버퍼에 저장되어 있는 복조 데이터에 저장되어 있는 복조 데이터가 다 같이 상기 제2 데이터 블록의 2개 이상의 데이터 캐릭터에 대응하는 부분을 포함하고 있는 경우에만, 유효화부가 제1 합성부에 의해 얻어진 복조 데이터를 제1단 바코드 전체에 대응하는 복조 데이터로서 유효화함과 동시에, 제2 합성부에 의해 얻어진 복조 데이터를 상기 제2단 바코드 전체에 대응하는 복조 데이터로서 유효화하는 것을 특징으로 한다. 이와 같이 구성되면, 합성 대상인 복조 데이터가 제2 데이터 블록에서 2 캐릭터 이상 중복되는 것이 보증되므로, 복조 데이터의 합성 미스 가능성이 더욱 저감될 수 있다.
본 발명의 제5 태양에 의한 바코드 판독장치는 제1 버퍼에 저장되어 있는 복조 데이터가 제1단 바코드 전체에 대응함과 동시에 제2 버퍼에 저장되어 있는 복조 데이터가 제2단 바코드 전체에 대응하고 있는 경우에는, 유효화부가 제1 버퍼에 저장되어 있는 복조 데이터를 제1단 바코드 전체에 대응하는 복조 데이터로서 유효화함과 동시에, 제2 버퍼에 저장되어 있는 복조 데이터를 상기 제2단 바코드 전체에 대응하는 복조 데이터로서 유효화하는 것을 특징으로 한다. 이와 같이 구성되면, 연속 판독에 의한 복조 데이터가 얻어진 때에는 즉시 복조 데이터의 유효화가 이루어지므로, 바코드 판독의 응답이 더욱 향상된다.
본 발명에 의한 바코드 판독방법은 각각 소정 개수의 데이터 캐릭터로 된 제1 데이터 블록 및 제2 데이터 블록에 의해 각각 구성된 2단의 바코드로 된 2단 바코드를 주사해서, 그 주사 궤적에서의 바코드 패턴을 검출하고, 상기 바코드 패턴을 복조하여 복조 데이터를 획득하고, 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터와 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터를 합성하여 제1단 바코드 전체에 대응하는 복조 데이터를 생성하고, 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터와 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터를 합성하여 제2단 바코드 전체에 대응하는 복조 데이터를 생성하고, 상기 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터 및 상기 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터가 다 같이 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분을 포함하고, 또 이들 각 복조 데이터에 포함된 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분이 서로 상위한 경우에 한하여, 상기 제1단 바코드 전체에 대응하는 복조 데이터를 유효화함과 동시에, 상기 제2단 바코드 전체에 대응하는 복조 데이터를 유효화하는 것을 특징으로 한다.
본 발명에 의한 컴퓨터 판독가능 매체는 각각 소정 개수의 데이터 캐릭터로 된 제1 데이터 블록 및 제2 데이터 블록에 의해 각각 구성된 2단의 바코드로 된 2단 바코드를 주사해서, 그 주사 궤적에서의 바코드 패턴을 검출하는 검출장치에 접속된 컴퓨터에 대해, 상기 검출장치에 의해 검출된 바코드 패턴을 복조하여 복조 데이터를 획득시키고, 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터와 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터를 합성하여 제1단 바코드 전체에 대응하는 복조 데이터를 생성시키고, 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터와 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터를 합성하여 제2단 바코드 전체에 대응하는 복조 데이터를 생성시키고, 상기 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터 및 상기 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터가 다 같이 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분을 포함하고, 또 이들 각 복조 데이터에 포함된 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분이 서로 상위한 경우에 한하여, 상기 제1단 바코드 전체에 대응하는 복조 데이터를 유효화시킴과 동시에, 상기 제2단 바코드 전체에 대응하는 복조 데이터를 유효화시키는 프로그램을 저장한다.
[실시예]
이하 도면에 의거해서 본 발명의 실시예에 대하여 설명한다.
(2단 바코드의 구성)
우선 최초에 본 발명의 실시예에 의한 바코드 판독장치의 판독 대상위 되는 2단 바코드의 구성을 도 9를 사용하여 설명한다. 도 9에 나타낸 바와 같이, 2단 바코드는 2개의 바코드(WPC 코드)를 평행으로 상하 2단으로 겹친 구성으로 되어 있다. 그리고 각 단의 바코드(WPC 코드)는 고정 패턴의 바로 된 스타트 가드 바(SGB)를 우단에 가지며, 마찬가지로 고정 패턴의 바로 된 센터 바(CB)를 중앙에 가지며, 마찬가지로 고정 패턴의 바로 된 엔드 가드 바(EGB)를 좌단에 갖는다. 그리고 스타트 가드 바(SGB)와 센터 바(CB) 사이에 6 캐릭터의 데이터 캐릭터(C1∼C6)로 된 좌측 데이터 블록을 가지며, 센터 바(CB)와 엔드 가드 바(EGB) 사이에 6 캐릭터의 데이터 캐릭터(C7∼C12)로 된 우측 데이터 블록을 갖는다.
각 데이터 캐릭터(C1∼C12)는 도 10에 나타낸 바와 같이, 7개의 모듈(각 모듈은 단위 길이를 갖는다)의 각각을 정당히 백 또는 흑으로 할당하여 형성된 2개의 백 바 및 2개의 흑 바의 조합이다. 그리고 각 데이터 캐릭터를 구성하는 4개의 바는 좌측 데이터 블록을 구성하는 각 데이터 캐릭터(C1∼C6)에서는 스타트 가드 바(SGB)측으로부터 백흑백흑의 순서로 정렬하고, 우측 데이터 블록을 구성하는 각 데이터 캐릭터(C7∼C12)에서는 센터 바(CB)측으로부터 흑백흑백의 순서로 정렬한다.
도 11은 데이터 캐릭터의 각 바(a, b, c, d)가 취할 수 있는 모든 길이(모듈수)의 조합과, 각 조합에 대응하는 수치 데이터를 나타낸 표이다. 또한 수치 데이터에 있어서의 "E-"는 우수 패리티의 캐릭터인 것을 나타내고, "O-"는 기수 패리티인 것을 나타낸다. 또 T2는 각 캐릭터 말미의 바(d)와 그 직전의 바(c)를 합친 길이를 나타내고, T1은 바(c)와 그 직전의 바(b)를 합친 길이를 나타내고, 어느 것이나 "δ 디스턴스"라 불린다.
WPC 코드의 규약에 의하면, 우측 데이터 블록은 우수 패리티의 데이터 캐릭터로 구성되며, 좌측 데이터 블록은 우수 패리티의 캐릭터와 기수 패리티의 캐릭터로 구성된다. 단 좌측 데이터 블록의 6개의 데이터 캐릭터를 취할 수 있는 우수 패리티와 기수 패리티의 조합은 WPC 코드의 규약에 의해, 도 12에 나타낸 10가지로 제한되어 있다. 그리고 각 조합에 대해 각각 한 자리 수치(0∼9), 즉 플랙 캐릭터가 정의되어 있다. 12개의 데이터 캐릭터로 된 WPC 코드(UPC/A 코드, JAN-13 코드, EAN 코드)는 이 플랙 캐릭터도 자리수에 포함해서 "13자리 바코드"라 불린다. 또한 이 플랙 캐릭터는 2단 바코드에 있어서의 상하단의 식별에도 사용된다. 즉 플랙 캐릭터 및 제1 캐릭터의 조합은 "인식 플랙"이라 불리며, 그것이 특정의 수치 (예를 들어 "21")인 경우에는 상단 바코드인 것을 나타내고, 그것이 다른 특정의 수티(예를 들어 "29")인 경우에는 하단 바코드인 것을 나타낸다. 또한 도 12에 나타낸 바와 같이, 좌측 데이터 블록의 6개의 데이터 캐릭터를 취할 수 있는 우수 패리티 또는 기수 패리티의 각 조합은 다른 모든 조합과 비교해서 우수 패리티 및 기수 패리티가 2개소 이상 상위하고 있다.
또 WPC 코드의 규약에 의하면, 13자리 바코드에 포함된 12개의 데이터 캐릭터를 가장 우측인 것을 기수 위치로 하여 순서대로 기수 위치 또는 우수 위치로 분류한 경우에(플랙 캐릭터는 기수 위치로 분류한다), 기수 위치에 있는 데이터 캐릭터 수치의 총 합계의 3배와 우수 위치에 있는 데이터 캐릭터 수치의 총 합계의 합은 10의 정수배가 된다. 이 규약을 이용하면 블록 판독하여 얻어진 복조 데이터를 합성할 때에, 바코드 전체에 대응한 복조 데이터가 재현되었는가의 여부가 용이하게 확인된다. 이와 같은 확인은 "모듈러스 10 체크"라 불린다.
(바코드 판독장치의 구성)
도 1은 본 발명에 의한 바코드 판독장치의 1 실시예의 개략 구성을 나타낸 블록도이다. 도 1에서 바코드 판독장치는 서로 버스(B)에 접속된 CPU(1), 바 폭 데이터군 저장 버퍼(2), 제어회로(3), 인터페이스회로(4), ROM(5) 및 RAM(6), 바 폭 데이터군 저장 버퍼(2)에 접속된 바 폭 카운터(16) 및 레이저 빔 개시종료 검출기(17), 바 폭 카운터(16)에 접속된 클록(19) 및 A/D 변환기(15), 이 A/D 변환기(15)에 접속된 수광소자(18), 제어회로(3)에 각각 접속된 모터 구동회로(8), 레이저 구동회로(9), 스피커(10) 및 LED(11), 모터 구동회로(8)에 접속된 모터(12), 이 모터(12)에 의해 구동되는 주사 광학계(14), 그리고 레이저 구동회로(9)에 접속된 반도체 레이저(13)로 구성되어 있다.
ROM(5)은 바코드 인식/복조처리 프로그램을 저장하고 있는 컴퓨터 판독가능 매체인 판독 전용 메모리이다.
컴퓨터인 CPU(1)은 ROM(5) 내에 저장되어 있는 바코드 인식/복조처리 프로그램을 실행함으로써, 바코드 판독장치 전체의 제어를 행함과 동시에, 복조부, 제1 합성부, 제2 합성부 및 유효화부로서 기능하여 2단 바코드(21)의 각 단의 바코드를 판독하여 얻어진 바 폭 데이터군을 각각 복조하여 2단 바코드(21) 전체에 대응하는 데이터를 재현한다.
복조 일시대피 버퍼인 RAM(6)에는 CPU(1)의 작업영역이 전개되는 외에, CPU(1)가 상술한 바코드 인식/복조처리 프로그램을 실행함으로써, 우측 데이터 블록 일시대피 버퍼(6a), Ig-up 버퍼(6b), Ig-down 버퍼(6c), M10-buff-up 버퍼(6d) 및 M10-buff-down 버퍼(6e)가 전개된다.
인터페이스회로(4)는 버스(B)의 상태를 제어한다거나, 외부 장치에 데이터 송신 등을 제어한다.
제어회로(3)는 모터 구동회로(8), 레이저 구동회로(9), 스피커(10) 및 발광 다이오드(LED)(11)를 제어하는 회로이다. 이 모터 구동회로(8)는 모터(12)를 구동하여 주사 광학계(14)를 구성하는 도시하지 않은 다면경(polygon mirror)을 회전시킨다. 또 레이저 구동회로(9)는 반도체 레이저(13)를 구동하여 레이저 빔(L)을 출사시킨다. 또 스피커(10)는 바코드의 판독(복조) 완료를 나타내는 음성을 발한다. 또 발광 다이오드(11)는 바코드의 복조 결과 얻어진 상품(20)의 판매가격 등의 정보를 표시하는 표시소자이다.
반도체 레이저(13)로부터 출사된 레이저 빔(L)은 주사 광학계(14)에 입사되어, 이 주사 광학계(14)에 의해 편향된다. 즉 이 주사 광학계(14)는 모터(12)에 의해 회전되는 도시하지 않은 다면경에 의해 레이저 빔(L)을 1 방향으로 편향한다. 이 다면경에 의해 반사된 레이저 빔(L)의 편향 대상처에는 복수의 고정 미러가 고정되어 있다. 따라서 다면경에 의해 편향된 레이저 빔(L)은 각 고정 미러에 의해 재차 반사되고, 그 편향방향(주사방향)이 여러 방향으로 변해진다. 이 주사 광학계(14)에 의하면, 다면경의 반사면에 의한 편향 주기 내에서 복수의 방향에 대한 레이저 빔의 주사가 연속적으로 고속으로 행하여진다. 이 다면경의 반사면에 의한 편향 주기 내에서 이루어지는 복수의 레이저 빔 주사의 각각을 이하 "1 주사"라 한다.
이와 같이 하여 주사된 레이저 빔(L)이 상품(20)의 표면(2단 바코드(21)를 포함한다)에 닿으면, 이 표면에서 레이저 빔(L)이 난반사되고, 그 반사광(R)의 일부가 수광소자(포토 다이오드)(18)에 수광된다. A/D 변환기(15)는 이 수광소자(18)에 의해 수광된 반사광(R)의 명암을 나타내는 전류치를 소정의 임계치와 비교해서 2치화 신호로 변환한다. 이 2치화 신호는 도 10에 나타낸 바와 같이, 반사광(R)의 강도가 2단 바코드(21) 중의 흑 바의 반사율에 대응할 경우에는 "H"를 나타내고, 반사광(R)의 강도가 2단 바코드 중의 백 바의 반사율에 대응할 경우에는 "L"을 나타낸다.
바 폭 카운터(16)는 A/D 변환기(15)로부터 입력된 2치화 신호에 의거해서 2치화 신호의 상승 타이밍으로부터 하강 타이밍까지의 시간(2단 바코드(21) 중의 흑 바의 폭에 대응하는 것으로 기대된다), 및 2치화 신호의 하강 타이밍으로부터 상승 타이밍까지의 시간(2단 바코드(21) 중의 백 바의 폭에 대응하는 것으로 기대된다)을 측정한다. 또한 바 폭 카운터(16)는 이들 바 폭에 대응하는 시간을 계측하기 위하여 클록(19)으로부터의 클록수를 카운트한다. 바 폭 카운터(16)로부터 출력되는 각 바의 판독 데이터는 이 카운트치와 백 또는 흑 식별신호를 조합한 형태이며, 레이저 빔의 1 주사마다 이와 같은 판독 데이터가 연속적으로 출력된다. 이와 같이 연속적으로 출력되는 1 주사마다의 판독 데이터는 "바 폭 데이터군"이라 불린다.
이상에서 설명한 제어회로부(3), 모터 구동회로(8), 모터(12), 레이저 구동회로(9), 반도체 레이저(13), 주사 광학계(14), 수광소자(18), A/D 변환기(15), 바 폭 카운터(16) 및 클록(19)이 2단의 WPC 코드로 된 2단 바코드(21)를 주사하여 그 주사 궤적에서의 명암 패턴을 검출하는 명암 패턴 검출부에 상당한다.
바 폭 카운터(16)로부터 출력된 바 폭 데이터군은 레이저 빔 개시종료 검출회로(17)에 입력된다. 이 레이저 빔 개시종료 검출회로(17)는 바 폭 데이터군의 상태를 검사하고, 1 주사 중의 레이저 빔의 주사 개시 시점 및 주사 종료 시점을 검출하여, 이들 개시 시점 및 종료 시점을 나타내는 정보를 바 폭 데이터군에 부가한다.
레이저 빔의 주사 개시 시점 및 주사 종료 시점을 나타내는 정보가 부가된 바 폭 데이터군은 바 폭 데이터군 저장 버퍼(2)에 일시 저장된다. 이 바 폭 데이터군 저장 버퍼는 바 폭 카운터(16)로부터 입력된 바 폭 데이터군을 순차적으로 저장함과 동시에, CPU(1)로부터의 요구에 따라 저장한 순서로 1개씩 이 바 폭 데이터군을 CPU(1)에 건넨다.
우측 데이터 블록 일시대피 버퍼(6a), Ig-up 버퍼(6b) 및 Ig-down 버퍼(6c)는 바 폭 데이터군에 대한 복조처리의 결과 얻어진 복조 데이터를 일시적으로 저장하는 버퍼이다. 구체적으로는 우측 데이터 블록 일시대피 버퍼(6a)는 우측 데이터 블록에 대응하는 복조 데이터용의 일시대피 버퍼(제3단 버퍼에 상당)이다. 또 Ig-up 버퍼(66)는 상단 바코드(제1단 WPC 코드)의 좌측 데이터 블록에 대응하는 부분을 포함한 복조 데이터용의 일시대피 버퍼(제1 버퍼에 상당)이며, 도 2에 나타낸 바와 같이, 0 내지 11의 어드레스를 갖는 12개의 엔트리를 가지며, 0 내지 5의 엔트리에 좌측 데이터 블록에 대응하는 데이터를 저장하고, 6 내지 11의 엔트리에 우측 데이터 블록에 대응하는 데이터를 저장한다. 마찬가지로 Ig-down 버퍼(6c)는 하단 바코드(제2단 WPC 코드)의 좌측 데이터 블록에 대응하는 부분을 포함한 복조 데이터용의 일시대피 버퍼(제2 버퍼에 상당)이며, 도 2에 나타낸 구조를 가지고 있다. 또 M10-buff-up 버퍼(6d)는 상술한 모듈러스10 체크 결과가 OK가 된 상단 바코드 전체에 대응하는 복조 데이터(플랙 캐릭터를 선두에 포함한다)를 저장하는 버퍼이며, 도 3에 나타낸 바와 같이 0 내지 12의 어드레스를 갖는 13개의 엔트리를 갖는다. 마찬가지로 M10-buff-down 버퍼(6e)는 상술한 모듈러스10 체크 결과가 OK가 된 하단 바코드 전체에 대응하는 복조 데이터(플랙 캐릭터를 선두에 포함한다)를 저장하는 버퍼이며, 도 3에 나타낸 구조를 가지고 있다.
(바코드 인식/복조처리)
다음에 ROM(5)에 저장되어 있음과 동시에 CPU(1)에 의해 실행되는 바코드 인식/복조처리 프로그램의 구체적 내용을 도 4 내지 도 8의 플로차트에 의거해서 설명한다. 이 바코드 인식/복조처리의 메인 루틴인 도 4 및 도 5의 플로차트는 바코드 판독장치에 주전원이 투입되어, 바 폭 데이터군 저장 버퍼(2)에 바 폭 데이터군이 저장되는 것을 계기로 스타트한다. 그리고 최초의 S001에서 CPU(1)는 바 폭 데이터군 저장 버퍼(2)로부터 가장 오래 된 바 폭 데이터군을 꺼낸다.
다음의 S002에서는, CPU(1)는 S001에서 꺼낸 바 폭 데이터군에 대한 데이터 복조처리를 실행한다(복조부에 상당). 도 6∼도 8은 이 S001로 실행되는 데이터 복조처리 서브루틴을 나타낸 플로차트이다. 이 서브루틴에 들어간 후 최초의 S101에서는, CPU(1)는 처리 대상의 바 폭 데이터군이 스타드 가드 바(SGB)를 포함하고 있는가의 여부를 체크한다. 그리고 스타트 가드 바를 포함하고 있는 경우에는 처리를 S102로 진행시킨다. S102∼S135의 처리는 스타트 가드 바를 기점으로 복조할 수 있는 개소까지 캐릭터를 복조하기 위한 처리이다.
S102에서는, CPU(1)는 제1 캐릭터(스타트 바의 센터 바측에 인접한 캐릭터)의 길이를 체크한다. 즉 제1 캐릭터를 구성하는 4개의 바의 바 폭 카운터치의 총계가 일정치 근방에 있는가의 여부를 체크한다. 그리고 제1 캐릭터 길이가 일정치 이내에 없는 경우에는(S103), 처리 대상인 바 폭 데이터군이 바코드 이외의 모양에 의거한 데이터군으로 간주하여, S136에서 "복조 완료 플랙"을 리세트하고, 이 서브루틴을 종료한다. 이에 대해 제1 캐릭터 길이가 일정치 근방 이내에 있는 경우에는(S103), 처리를 S104로 진행한다.
S104에서는, CPU(1)는 인접 캐릭터(초기에는 제2 캐릭터에 인접하는 제2 캐릭터)의 길이를 체크한다. 그리고 이 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S105), 지금까지 캐릭터 길이가 일정치 근방 이내이었다고 체크된 좌측 데이터 블록의 캐릭터에 대한 복조를 하기 위해, 처리를 S109로 진행시킨다. 이에 대해 이 캐릭터 길이가 일정치 근방 이내에 있는 경우에는(S105), CPU(1)는 S106에서 변형량의 대소 여부를 체크한다. 그리고 변형량이 적을 경우에는 CPU(1)는 처리를 그대로 S108로 진행시키나, 변형량이 클 경우(즉 각 캐릭터 상호간의 비가 일정 범위를 초과한 경우, 및 각 모듈 상호간의 비가 일정 범위를 초과한 경우)에는, S107에서 "변형 있음 플랙"을 세트하고 나서 처리를 S108로 진행시킨다.
S108에서는, CPU(1)는 제6 캐릭터(센터 바의 스타트 바측에 인접한 캐릭터)까지 캐릭터 길이의 체크를 종료하였는가의 여부를 체크한다. 그리고 제6 캐릭터까지 캐릭터 길이의 체크를 종료한 경우에는, CPU(1)는 좌측 데이터 블록을 이루는 6개의 캐릭터를 복조하기 위해 처리를 S109로 진행시킨다. 이에 대해 아직 제6 캐릭터까지의 캐릭터 길이의 체크를 종료하지 않은 경우에는, CPU(1)는 인접한 다음 캐릭터의 캐릭터 길이를 체크하기 위해 처리를 S104로 복귀시킨다.
S109에서는, CPU(1)는 S103 및 S105에서 일정치 근방 이내에 있다고 판정된 캐릭터 중에서 가장 스타트 가드 바에 가까운 것을 꺼내고, 이 캐릭터에 대해 복조처리를 실행한다. 즉 CPU(1)는 꺼낸 캐릭터의 δ 디스턴스(T1, T2)에 의거해서 도 11의 표를 검색하여, 대응하는 수치 데이터를 판독한다. 또한 δ 디스턴스(T1, T2)가 3 또는 4인 경우에는, 대응하는 수치 데이터가 2종류 있으므로, CPU(1)는 이들 중의 어느 것인가를 특정할 수가 없다. 이와 같은 경우에는, CPU(1)는 가장 우측의 바(d)의 모듈수에 의거해서 도 11의 표를 다시 검색하여, 어느 코드 데이터에 대응하는가를 특정한다.
다음의 S110에서는, CPU(1)는 S109에서의 복조처리가 성공하였는가의 여부를 체크한다. 그리고 CPU(1)는 복조처리가 성공하지 않은 경우에는, 이 서브루틴을 종료하기 위해 처리를 S135로 진행시키고, 복조처리가 성공한 경우에는, 처리를 S111로 진행시킨다. S111에서는, CPU(1)는 변형량의 대소 여부를 체크한다. 그리고 변형량이 적을 경우에는 CPU(1)는 처리를 그대로 S113으로 진행시키나, 변형량이 클 경우에는, S112에서 "변형 있음 플랙"을 세트하고 나서 처리를 S113으로 진행시킨다. S113에서는, CPU(1)는 S103 및 S105의 캐릭터 길이 체크에서 일정치 근방 이내에 있다고 판정된 전 캐릭터 개수 분의 복조처리가 완료되었는가의 여부를 체크한다. 그리고 아직 전 개수 분의 복조처리가 완료되지 않은 경우에는, CPU(1)는 인접한 다음 캐릭터에 대한 복조처리를 실행하기 위해 처리를 S109로 복귀시킨다. 이에 대해 전 개수 분의 복조처리가 완료된 경우에는, CPU(1)는 처리를 S114로 진행시킨다.
S114에서는, CPU(1)는 S109에서의 복조처리에 의해 복조할 수 있었던 캐릭터수가 6 캐릭터인가의 여부를 체크한다. 그리고 6 캐릭터 미만인 경우에는 CPU(1)는 처리 대상인 바 폭 데이터군이 분할 판독의 데이터군일 수밖에 없으므로, 이 서브루틴을 종료하기 위해 처리를 S135로 진행시킨다. 이에 대해 복조할 수 있었던 캐릭터수가 6 캐릭터인 경우에는, CPU(1)는 처리를 S115로 진행시킨다.
S115에서는, CPU(1)는 제6 캐릭터의 길이를 다시 체크한다. 그리고 CPU(1)는 제6 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S116) 처리를 S135로 진행시키고, 이 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S116), S117에서 센터 바를 체크한다. 이 센터 바의 체크라 함은 제6 캐릭터 다음의 인접한 캐릭터가 센터 바로서 정해져 있는 소정의 패턴과 일치하고 있는가의 여부의 체크이다. 그리고 센터 바의 체크 결과가 양호할 경우에는(S118), CPU(1)는 처리를 S119로 진행시킨다. 이에 대해 체크 결과가 양호하지 않을 경우에는(S118), CPU(1)는 처리 대상인 바 폭 데이터군이 분할 판독의 데이터군이라 하고, 이 서브루틴을 종료하기 위해 처리를 S135로 진행시킨다.
S119에서는, CPU(1)는 제7 캐릭터(센터 바의 엔드 바측에 인접한 캐릭터)의 길이를 체크한다. 그리고 제7 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S120), 처리 대상인 바 폭 데이터군이 연속 판독의 데이터군이 아니기 때문에, CPU(1)는 이 서브루틴을 종료하기 위한 처리를 S135로 진행시킨다. 이에 대해 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S120), CPU(1)는 처리를 S121로 진행시킨다.
S121에서는, 인접 캐릭터(초기에는 제7 캐릭터에 인접한 제8 캐릭터)의 길이를 체크한다. 그리고 이 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S122), 처리 대상인 바 폭 데이터군이 연속 판독의 데이터군이 아니기 때문에, CPU(1)는 이 서브루틴을 종료하기 위해서 처리를 S135로 진행시킨다. 이에 대해 이 캐릭터의 길이가 일정치 근방에 있는 경우에는(S122), CPU(1)는 S123에서 변형량의 대소 여부를 체크한다. 그리고 변형량이 적을 경우에는 처리를 그대로 S125로 진행시키나, 변형량이 큰 경우에는, S124에서 "변형 있음 플랙"을 세트하고 나서 처리를 S125로 진행시킨다. S125에서는, CPU(1)는 제12 캐릭터(엔드 가드 바의 센터 바측에 인접한 캐릭터)까지 캐릭터 길이의 체크를 종료하였는가의 여부를 체크한다. 그리고 제12 캐릭터까지 캐릭터 길이의 체크를 종료한 경우에는, 우측 데이터 블록을 이루는 6개의 캐릭터를 복조하기 위해 처리를 S126으로 진행시킨다. 이에 대해 아직 제12 캐릭터까지의 캐릭터 길이의 체크를 종료하지 않은 경우에는, CPU(1)는 인접한 다음 캐릭터의 캐릭터 길이를 체크하기 위해 처리를 S104로 복귀시킨다.
S126에서는, CPU(1)는 S120 및 S122에서 일정치 근방 이내에 있다고 판정된 캐릭터 중에서 가장 센터 바에 가까운 것을 꺼내고, 이 캐릭터에 대한 복조처리를 S109와 마찬가지로 실행한다. 다음의 S127에서는, CPU(1)는 S126에서의 복조처리가 성공하였는가의 여부를 체크한다. 그리고 복조처리가 성공하지 않은 경우에는, CPU(1)는 이 서브루틴을 종료하기 위해 처리를 S135로 진행시키고, 복조처리가 성공한 경우에는, 처리를 S128로 진행시킨다. S128에서는, CPU(1)는 변형량의 대소 여부를 체크한다. 그리고 CPU(1)는 변형량이 적을 경우에는 처리를 그대로 S130으로 진행시키나, 변형량이 클 경우에는, S129에서 "변형 있음 플랙"을 세트하고 나서 처리를 S130으로 진행시킨다. S130에서는, CPU(1)는 S120 및 S122의 캐릭터 길이의 체크에서 그 길이가 일정치 근방 이내에 있다고 판정된 전 캐릭터 개수 분의 복조처리가 완료되었는가의 여부를 체크한다. 그리고 아직 전 개수 분의 복조처리가 완료되지 않은 경우에는, 다음의 인접한 캐릭터에 대한 복조처리를 실행하기 위해 처리를 S126으로 복귀시킨다. 이에 대해 전 개수 분의 복조처리가 완료된 경우에는, CPU(1)는 처리를 S131로 진행시킨다.
S131에서는, CPU(1)는 제12 캐릭터의 길이를 다시 체크한다. 그리고 이 제12 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S132), 처리를 S135로 진행하고, 이 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S132), S133에서 엔드 가드 바를 체크한다. 이 엔드 가드 바의 체크라 함은 제12 캐릭터 다음의 인접한 캐릭터가 엔드 가드 바로서 정해져 있는 소정의 패턴과 일치하고 있는가의 여부의 체크이다. 그리고 엔드 가드 바의 체크 결과가 양호할 경우에는(S134), CPU(1)는 처리 대상인 바 폭 데이터군이 연속 판독 데이터군이라 하고, 처리를 S135로 진행시킨다. 이에 대해 체크 결과가 양호하지 않을 경우에는(S134), CPU(1)는 처리 대상인 바 폭 데이터군이 적어도 블록 판독의 데이터군이라 하고, 이 서브루틴을 종료하기 위해 처리를 S135로 진행시킨다.
S135에서는, CPU(1)는 S109 및 S126에서 복조 완료한 데이터가 스타트 가드 바 및 3개 이상의 캐릭터를 포함하고 있는가의 여부를 체크한다. 그리고 스타트 가드 바 및 3개 이상의 캐릭터를 포함하고 있는 경우에는, 처리 대상인 바 폭 데이터군이 적어도 분할 판독의 데이터군임을 인정할 수 있으므로, CPU(1)는 S137에서 "복조 완료 플랙"을 세트하고, 이 서브루틴을 종료한다. 이에 대해 스타트 가드 바 및 3개 이상의 캐릭터를 포함하지 않을 경우에는 데이터의 신뢰성이 낮으므로, CPU(1)는 S136에서 "복조 완료 플랙"을 리세트하여, 이 서브루틴을 종료한다.
한편 S001에서 처리 대상인 바 폭 데이터군이 스타트 가드 바를 포함하고 있지 않다고 판정한 경우에는, 처리 대상인 바 폭 데이터군이 연속 판독의 데이터군인 가능성은 없으므로, CPU(1)는 처리를 S138로 진행시킨다. 이 S138에서는, CPU(1)는 이 바 폭 데이터군이 센터 바를 포함하고 있는가의 여부를 체크한다. 그리고 센터 바를 포함하고 있는 경우에는, CPU(1)는 처리를 S139로 진행시킨다. S139 내지 S169의 처리는 센터 바를 중심으로 하여 양측방향으로 복조살 수 있는 개소까지 캐릭터를 복조하기 위한 처리이다.
S139에서는, CPU(1)는 제6 캐릭터 및 제7 캐릭터의 길이를 체크한다. 그리고 제6 캐릭터의 길이 및 제7 캐릭터의 길이의 어느 것도 일정치 근방 이내에 없는 경우에는(S140), CPU(1)는 처리 대상인 바 폭 데이터군이 바코드 이외의 모양에 의거한 데이터군인 것으로 간주하여, S136에서 "복조 완료 플랙"을 리세트하고, 이 서브루틴을 종료한다. 이에 대해 제6 캐릭터의 길이 및 제7 캐릭터의 길이의 어느 것이건 일정치 근방 이내에 있는 경우에는(S140), CPU(1)는 처리를 S141로 진행시킨다.
S141에서는, CPU(1)는 엔드 가드 바측의 인접 캐릭터(초기에는 제7 캐릭터)의 길이를 체크한다. 그리고 이 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S142), CPU(1)는 지금까지 캐릭터의 길이가 일정치 근방 이내이었다고 체크된 우측 데이터 블록의 캐릭터에 대한 복조를 하기 위해, 처리를 S146으로 진행시킨다. 이에 대해 이 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S142), CPU(1)는 S143에서 변형량의 대소 여부를 체크한다. 그리고 CPU(1)는 변형량이 적을 경우에는 처리를 그대로 S145로 진행시키나, 변형량이 클 경우에는, S144에서 "변형 있음 플랙"을 세트하고 나서 처리를 S145로 진행시킨다. S145에서는, CPU(1)는 우측 데이터 블록을 이루는 6 캐릭터 분의 캐릭터 길이를 종료했는가의 여부를 체크한다. 그리고 6 캐릭터 분의 캐릭터 길이의 체크를 종료한 경우에는, CPU(1)는 이들 6개의 캐릭터를 복조하기 위해 처리를 S146으로 진행시킨다. 이에 대해 아직 6 캐릭터 분의 캐릭터 길이의 체크를 종료하고 있지 않을 경우에는, CPU(1)는 인접한 다음 캐릭터의 캐릭터 길이를 체크하기 위해 처리를 S141로 복귀시킨다.
S146에서는, CPU(1)는 S142에서 일정치 근방 이내에 있다고 판정된 캐릭터 중에서 가장 센터 바에 가까운 것을 꺼내고, 이 캐릭터에 대해 복조처리를 S109와 마찬가지로 실행한다. 다음의 S147에서는, CPU(1)는 S146에서의 복조처리가 성공하였는가의 여부를 체크한다. 그리고 CPU(1)는 복조처리가 성공하지 않은 경우에는, 그대로 처리를 S151로 진행시키고, 복조처리가 성공한 경우에는, 처리를 S148로 진행시킨다. S148에서는, CPU(1)는 변형량의 대소 여부를 체크한다. 그리고 변형량이 적을 경우에는 CPU(1)는 처리를 그대로 S150으로 진행시키나, 변형량이 클 경우에는, S149에서 "변형 있음 플랙"을 세트하고 나서 처리를 S150으로 진행시킨다. S150에서는, CPU(1)는 S142의 캐릭터 길이 체크에서 일정치 근방 이내에 있다고 판정된 캐릭터 개수 분의 복조처리가 완료되었는가의 여부를 체크한다. 그리고 아직 전 개수 분의 복조처리가 완료되지 않은 경우에는, CPU(1)는 인접한 다음 캐릭터에 대한 복조처리를 실행하기 위해 처리를 S146으로 복귀시킨다. 이에 대해 전 개수 분의 복조처리가 완료된 경우에는, CPU(1)는 처리를 S151로 진행시킨다.
S151에서는, CPU(1)는 S146에서의 복조처리에 의해 복조할 수 있었던 캐릭터수가 6 캐릭터인가의 여부를 체크한다. 그리고 6 캐릭터 미만인 경우에는 CPU(1)는 좌측 데이터 블록에 포함된 캐릭터를 복조하기 위해 처리를 S154로 진행시킨다. 이에 대해 복조할 수 있었던 캐릭터수가 6 캐릭터인 경우에는, CPU(1)는 처리를 S152로 진행시킨다.
S152에서는, CPU(1)는 제12 캐릭터의 길이를 다시 체크함과 동시에, 엔드 가드 바를 체크한다. 그리고 어느 쪽 경우일지라도(S153), CPU(1)는 제1 데이터 블록에 포함된 캐릭터를 복조하기 위해 처리를 S154로 진행시킨다.
S154에서는, CPU(1)는 스타트 가드 바측의 인접 캐릭터(초기에는 제6 캐릭터)의 길이를 체크한다. 그리고 이 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S155), CPU(1)는 지금까지 캐릭터의 길이가 일정치 근방 이내이었다고 체크된 좌측 데이터 블록의 캐릭터에 대한 복조를 하기 위해, 처리를 S159로 진행시킨다. 이에 대해 이 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S155), CPU(1)는 S156에서 변형량의 대소 여부를 체크한다. 그리고 CPU(1)는 변형량이 적을 경우에는 처리를 그대로 S158로 진행시키나, 변형량이 클 경우에는, S157에서 "변형 있음 플랙"을 세트하고 나서 처리를 S158로 진행시킨다. S158에서는, CPU(1)는 좌측 데이터 블록을 이루는 6 캐릭터 분의 캐릭터 길이를 종료했는가의 여부를 체크한다. 그리고 6 캐릭터 분의 캐릭터 길이의 체크를 종료한 경우에는, CPU(1)는 이들 6개의 캐릭터를 복조하기 위해 처리를 S159로 진행시킨다. 이에 대해 아직 6 캐릭터 분의 캐릭터 길이의 체크를 종료하고 있지 않을 경우에는, CPU(1)는 인접한 다음 캐릭터의 캐릭터 길이를 체크하기 위해 처리를 S154로 복귀시킨다.
S159에서는, CPU(1)는 S155에서 일정치 근방 이내에 있다고 판정된 캐릭터 중에서 가장 센터 바에 가까운 것을 꺼내고, 이 캐릭터에 대한 복조처리를 S109와 마찬가지로 실행한다. 다음의 S160에서는, CPU(1)는 S159에서의 복조처리가 성공하였는가의 여부를 체크한다. 그리고 CPU(1)는 복조처리가 성공하지 않은 경우에는, 그대로 처리를 S164로 진행시키고, 복조처리가 성공한 경우에는, 처리를 S161로 진행시킨다. S161에서는, CPU(1)는 변형량의 대소 여부를 체크한다. 그리고 변형량이 적을 경우에는 CPU(1)는 처리를 그대로 S163으로 진행시키나, 변형량이 클 경우에는, S162에서 "변형 있음 플랙"을 세트하고 나서 처리를 S163으로 진행시킨다. S163에서는, CPU(1)는 S155의 캐릭터 길이의 체크에서 일정치 근방 이내에 있다고 판정된 캐릭터 개수 분의 복조처리가 완료되었는가의 여부를 체크한다. 그리고 아직 전 개수 분의 복조처리가 완료되지 않은 경우에는, 다음 캐릭터에 대한 복조처리를 실행하기 위해 처리를 S159로 복귀시킨다. 이에 대해 전 개수 분의 복조처리가 완료된 경우에는, CPU(1)는 처리를 S164로 진행시킨다.
S164에서는, CPU(1)는 S159에서의 복조처리에 의해 복조할 수 있었던 캐릭터수가 6 캐릭터인가의 여부를 체크한다. 그리고 CPU(1)는 6 캐릭터인 경우에는 처리를 S169로 진행시키고, 6 캐릭터 미만인 경우에는 처리를 S165로 진행시킨다.
S165에서는, CPU(1)는 제1 캐릭터의 길이를 체크한다. 그리고 이 제1 캐릭터의 길이가 일정치 근방 이내에 없는 경우(제1 캐릭터가 결락하고 있는 경우를 포함한다)에는(S166), CPU(1)는 처리를 S169로 진행시킨다. 이에 대해 이 제1 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S166), CPU(1)는 S167에서 스타트 가드 바를 체크한다. 그리고 스타트 가드 바를 검출한 경우에는(S168), CPU(1)는 S101의 판정과 모순되어 있는 것으로 보고 S136에서 "복조 완료 플랙"을 리세트하여 이 서브루틴을 종료한다. 이에 대해 스타트 가드 바를 검출할 수 없는 경우에는(S168), CPU(1)는 처리를 S169로 진행시킨다.
S169에서는, CPU(1)는 복조 완료한 데이터군이 센터 바를 끼우고 양측으로 연속하는 데이터군인가의 여부를 체크한다. 그리고 센터 바를 끼우고 양측으로 연속하고 있는 경우에는, CPU(1)는 S137에서 "복조 완료 플랙"을 세트하고 이 서브루틴을 종료한다. 이에 대해 센터 바를 끼우고 양측으로 연속하고 있지 않은 경우에는, 거의 있을 수 없는 상태로서 데이터의 신뢰도가 낮으므로, CPU(1)는 S136에서 "복조 완료 플랙"을 리세트하고 이 서브루틴을 종료한다.
한편 S138에서 처리 대상인 바 폭 데이터군이 센터 바를 포함하고 있지 않은 것으로 판정한 경우에는, 처리 대상인 바 폭 데이터군이 블록 판독의 데이터군도 될 수 없기 때문에, CPU(1)는 처리를 S170으로 진행시킨다. 이 S170에서는, CPU(1)는 이 바 폭 데이터군이 엔드 가드 바를 포함하고 있는가의 여부를 체크한다. 그리고 엔드 가드 바를 포함하고 있지 않은 경우에는, 처리 대상인 바 폭 데이터군이 바코드 이외의 모양에 의거한 데이터군으로 간주하여, CPU(1)는 S136에서 "복조 완료 플랙"을 리세트하고, 이 서브루틴을 종료한다. 이에 대해 엔드 가드 바를 포함하고 있는 경우에는, CPU(1)는 처리를 S171로 진행시킨다. S171 내지 S186의 처리는 엔드 가드 바를 기점으로 해서 센터 바측으로 복조할 수 있는 개소까지 캐릭터를 복조하기 위한 처리이다.
S171에서는, CPU(1)는 제12 캐릭터의 길이를 체크한다. 그리고 이 제12 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S172), CPU(1)는 처리 대상인 바 폭 데이터군이 바코드 이외의 모양에 의거한 데이터군으로 간주하여, S136에서 "복조 완료 플랙"을 리세트하고, 이 서브루틴을 종료한다. 이에 대해 제12 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S172), CPU(1)는 처리를 S173으로 진행시킨다.
S173에서는, CPU(1)는 스타트 가드 바측의 인접 캐릭터(초기에는 제11 캐릭터)의 길이를 체크한다. 그리고 이 캐릭터의 길이가 일정치 근방 이내에 없는 경우에는(S174), CPU(1)는 지금까지 캐릭터의 길이가 일정치 근방 이내이었다고 체크된 제2 데이터 블록의 캐릭터에 대한 복조를 하기 위해, 처리를 S178로 진행시킨다. 이에 대해 이 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S174), CPU(1)는 S175에서 변형량의 대소 여부를 체크한다. 그리고 변형량이 적을 경우에는 CPU(1)는 처리를 그대로 S177로 진행시키나, 변형량이 클 경우에는, S176에서 "변형 있음 플랙"을 세트하고 나서 처리를 S177로 진행시킨다. S177에서는, CPU(1)는 우측 데이터 블록을 이루는 6 캐릭터 분의 캐릭터 길이를 종료했는가의 여부를 체크한다. 그리고 6 캐릭터 분의 캐릭터 길이의 체크를 종료한 경우에는, CPU(1)는 이들 6개의 캐릭터를 복조하기 위해 처리를 S178로 진행시킨다. 이에 대해 아직 6 캐릭터 분의 캐릭터 길이의 체크를 종료하고 있지 않을 경우에는, CPU(1)는 인접한 다음 캐릭터의 캐릭터 길이를 체크하기 위해 처리를 S173으로 복귀시킨다.
S178에서는, CPU(1)는 S172 또는 S174에서 일정치 근방 이내에 있다고 판정된 캐릭터 중에서 가장 센터 바에 가까운 것을 꺼내고, 이 캐릭터에 대한 복조처리를 S109와 마찬가지로 실행한다. 다음의 S179에서는, CPU(1)는 S178에서의 복조처리가 성공하였는가의 여부를 체크한다. 그리고 복조처리가 성공하지 않은 경우에는, 그대로 처리를 S183으로 진행시키고, 복조처리가 성공한 경우에는, 처리를 S180으로 진행시킨다. S180에서는, CPU(1)는 변형량의 대소 여부를 체크한다. 그리고 변형량이 적을 경우에는 처리를 그대로 S182로 진행시키나, 변형량이 클 경우에는, S181에서 "변형 있음 플랙"을 세트하고 나서 처리를 S182로 진행시킨다. S182에서는, CPU(1)는 S172 또는 S174의 캐릭터 길이의 체크에서 그 길이가 일정치 근방 이내에 있다고 판정된 캐릭터 개수 분의 복조처리가 완료되었는가의 여부를 체크한다. 그리고 아직 전 개수 분의 복조처리가 완료되지 않은 경우에는, CPU(1)는 인접한 다음 캐릭터에 대한 복조처리를 실행하기 위해 처리를 S178로 복귀시킨다. 이에 대해 전 개수 분의 복조처리가 완료된 경우에는, CPU(1)는 처리를 S183으로 진행시킨다.
S183에서는, CPU(1)는 제7 캐릭터의 길이를 체크한다. 그리고 CPU(1)는 제7 캐릭터의 길이가 일정치 근방 이내에 없는 경우(제7 캐릭터가 결락하고 있는 경우를 포함한다)에는(S184), 처리를 S187로 진행시키고, 제7 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S184), S185에서 센터 바 및 제6 캐릭터의 길이를 체크한다. 그리고 센터 바를 검출한 경우 또는 제6 캐릭터의 길이가 일정치 근방 이내에 있는 경우에는(S186), CPU(1)는 S138의 판정과 모순되어 있는 것으로 보고 S136에서 "복조 완료 플랙"을 리세트하여 이 서브루틴을 종료한다. 이에 대해 스타트 가드 바를 검출할 수 없는 경우에는(S186), CPU(1)는 처리를 S187로 진행시킨다.
S187에서는, CPU(1)는 S178에서 복조 완료한 데이터가 엔드 가드 바 및 3개 이상의 캐릭터를 포함하고 있는 경우에는, 처리 대상인 바 폭 데이터군이 적어도 분할 판독의 데이터군임을 인정할 수 있으므로, CPU(1)는 S137에서 "복조 완료 플랙"을 세트하고, 이 서브루틴을 종료한다. 이에 대해 엔드 가드 바 및 3개 이상의 캐릭터를 포함하지 않을 경우에는 데이터의 신뢰성이 낮으므로, CPU(1)는 S136에서 "복조 완료 플랙"을 리세트하여, 이 데이터처리 서브루틴을 종료한다.
데이터 복조처리의 종료 후에, CPU(1)는 도 2의 메인루틴으로 처리를 복귀시키고, S003에서 "복조 완료 플랙"이 세트되어 있는가의 여부를 체크한다. 이 "복조 완료 플랙"은 S002의 데이터 복조처리에 의해 바 폭 데이터군이 양호하게 복조된 것을 나타낸 플랙이다. 이 "복조 완료 플랙"이 세트되어 있지 않은 경우에는, CPU(1)는 금회 처리 대상인 바 폭 데이터군을 파기함과 동시에, 새로 바 폭 데이터 저장 버퍼(2)로부터 꺼낸 바 폭 데이터군에 대한 복조처리를 실행하기 위해 처리를 S001로 복귀시킨다.
이에 대해 "복조 완료 플랙"이 세트되어 있는 경우에는, CPU(1)는 S004에서 S002의 데이터 복조처리에 의해 얻어진 복조 데이터가 좌측 데이터 블록 전체에 대응한 부분을 포함한 복조 데이터(스타트 가드 바 및 센터 바를 포함한 복조 데이터)인가의 여부를 체크한다. 그리고 좌측 데이터 블록 전체에 대응한 부분을 포함한 복조 데이터인 경우에는, CPU(1)는 처리를 S005로 진행시킨다.
S005에서는, CPU(1)는 S002의 데이터 복조처리에 의해 얻어진 복조 데이터가 상단 바코드에 대응하는 복조 데이터인가 하단 바코드에 대응하는 복조 데이터인가를 체크한다. 그리고 상단 바코드에 대응하는 복조 데이터라고 판정한 경우에는, CPU(1)는 처리를 S006으로 진행시킨다.
S006에서는, CPU(1)는 S002의 데이터 복조처리에 의해 얻어진 복조 데이터를 Ig-up 버퍼(6b)(제1 버퍼)에 저장한다.
다음의 S007에서는, CPU(1)는 Ig-up 버퍼(6b) 내에 저장되어 있는 복조 데이터와 우측 데이터 블록 일시대피 버퍼(6a) 내에 저장되어 있는 복조 데이터를 센터 바(CB)를 근거로 해서 합성한다(제1 합성부에 상당). 또한 이 합성을 행하기 위해서는, 합성 대상인 각 복조 데이터가 서로 2 캐릭터 이상 중복(합치)되어 있어야 한다.
다음의 S008에서는, CPU(1)는 S007에서 합성한 복조 데이터에 대해(플랙 캐릭터를 산출한 후에) 상술한 모듈러스10 체크를 실행하여, 상단 바코드 전체에 대응한 복조 데이터가 얻어졌는가의 여부를 판정한다. 그리고 모듈러스10 체크의 결과가 양호한 경우(상단 바코드 전체에 대응하는 복조 데이터가 얻어진 경우)에는, CPU(1)는 합성한 복조 데이터를 S009에서 M10-buff-up 버퍼(6d)에 저장한 후에, 처리를 S023으로 진행시킨다. 이에 대해 모듈러스10 체크의 결과가 불량인 경우(상단 바코드 전체에 대응하는 복조 데이터가 얻어지지 않은 경우)에는, CPU(1)는 처리를 직접 S023으로 진행시킨다.
한편 S002의 복조처리에 의해 얻어진 복조 데이터가 하단 바코드에 대응하는 복조 데이터라고 S005로 판정한 경우에는, CPU(1)는 처리를 S010에서 S002의 데이터 복조처리에 의해 얻어진 복조 데이터를 Ig-down 버퍼(6c)(제2 버퍼)에 저장한다.
S011에서는, CPU(1)는 Ig-down 버퍼(6c) 내에 저장되어 있는 복조 데이터와 우측 데이터 블록 일시대피 버퍼(6a) 내에 저장되어 있는 복조 데이터를 센터 바(CB)를 근거로 해서 합성한다(제2 합성부에 상당). 또한 이 합성을 행하기 위해서는, 합성 대상인 각 복조 데이터가 서로 2 캐릭터 이상 중복(합치)되어 있어야 한다.
다음의 S012에서는, CPU(1)는 S011에서 합성한 복조 데이터에 대해(플랙 캐릭터를 산출한 후에) 상술한 모듈러스10 체크를 실행하여, 하단 바코드 전체에 대응한 복조 데이터가 얻어졌는가의 여부를 판정한다. 그리고 모듈러스10 체크의 결과가 양호한 경우(하단 바코드 전체에 대응하는 복조 데이터가 얻어진 경우)에는, CPU(1)는 합성한 복조 데이터를 S013에서 M10-buff-down 버퍼(6e)에 저장한 후에, 처리를 S023으로 진행시킨다. 이에 대해 모듈러스10 체크의 결과가 불량인 경우(하단 바코드 전체에 대응하는 복조 데이터가 얻어지지 않은 경우)에는, CPU(1)는 처리를 직접 S023으로 진행시킨다.
한편 S002의 복조처리에 의해 얻어진 복조 데이터가 좌측 데이터 블록 전체에 대응하는 복조 데이터를 포함하지 않는다고 S004로 판정한 경우에는, CPU(1)는 S014에서 이 복조 데이터를 우측 데이터 블록 일시대피 버퍼(6a)(제3 버퍼)에 저장한다.
이후의 S015 내지 S018의 처리는 우측 데이터 블록 일시대피 버퍼(6a)에 저장되어 있는 복조 데이터와 Ig-up 버퍼(6b)에 저장되어 있는 복조 데이터의 합성을 시도하는 처리이며, S019 내지 S022의 처리는 우측 데이터 블록 일시대피 버퍼(6a)에 저장되어 있는 복조 데이터와 Ig-down 버퍼(6c)에 저장되어 있는 복조 데이터의 합성을 시도하는 처리이다. 이와 같이 우측 데이터 블록 일시대피 버퍼(6a)에 저장되어 있는 복조 데이터와 상하 양단의 우측 데이터 블록의 복조 데이터의 합성을 순차적으로 시도해 보는 것은, 우측 데이터 블록의 복조 데이터에는 상단인가 하단인가를 식별하기 위한 식별정보가 포함되어 있지 않기 때문이다.
S015에서는, CPU(1)는 M10-buff-up 버퍼(6d)에 복조 데이터가 저장되어 있는가의 여부를 체크한다. 그리고 M10-buff-up 버퍼(6d)에 복조 데이터가 저장되어 있는 경우에는, CPU(1)는 처리를 그대로 S019로 진행시킨다.
이에 대해 M10-buff-up 버퍼(6d)에 복조 데이터가 전혀 저장되어 있지 않을 경우에는, CPU(1)는 S016에서 우측 데이터 블록 일시대피 버퍼(6a)에 저장되어 있는 복조 데이터와 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터를 센터 바(CB)를 근거로 해서 합성한다(제1 합성부에 상당). 또한 이 합성을 행하기 위해서는, 합성 대상인 각 복조 데이터가 서로 2 캐릭터 이상 중복(합치)하고 있어야 한다.
다음의 S017에서는, CPU(1)는 S016에서 합성한 복조 데이터에 대해(플랙 캐릭터를 산출한 후에) 상술한 모듈러스10 체크를 실행하여, 상단 바코드 전체에 대응한 복조 데이터가 얻어졌는가의 여부를 판정한다. 그리고 모듈러스10 체크의 결과가 양호한 경우(상단 바코드 전체에 대응하는 복조 데이터가 얻어진 경우)에는, CPU(1)는 S018에서 S016으로 합성한 복조 데이터를 M10-buff-up 버퍼(6d)에 저장한 후에, 처리를 S019로 진행시킨다. 이에 대해 모듈러스10 체크의 결과가 불량인 경우(상단 바코드 전체에 대응하는 복조 데이터가 얻어지지 않은 경우)에는, CPU(1)는 처리를 직접 S019로 진행시킨다.
S019에서는, CPU(1)는 M10-buff-down 버퍼(6e)에 복조 데이터가 저장되어 있는가의 여부를 체크한다. 그리고 M10-buff-down 버퍼(6e)에 복조 데이터가 저장되어 있는 경우에는, CPU(1)는 처리를 그대로 S023으로 진행시킨다.
이에 대해 M10-buff-down 버퍼(6e)에 복조 데이터가 전혀 저장되어 있지 않을 경우에는, CPU(1)는 S020에서 우측 데이터 블록 일시대피 버퍼(6a)에 저장되어 있는 복조 데이터와 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터를 센터 바(CB)를 근거로 해서 합성한다(제2 합성부에 상당). 또한 이 합성을 행하기 위해서는, 합성 대상인 각 복조 데이터가 서로 2 캐릭터 이상 중복(합치)하고 있어야 한다.
다음의 S021에서는, CPU(1)는 S020에서 합성한 복조 데이터에 대해(플랙 캐릭터를 산출한 후에) 상술한 모듈러스10 체크를 실행하여, 하단 바코드 전체에 대응한 복조 데이터가 얻어졌는가의 여부를 판정한다. 그리고 모듈러스10 체크의 결과가 양호한 경우(하단 바코드 전체에 대응하는 복조 데이터가 얻어진 경우)에는, CPU(1)는 S022에서 S020으로 합성한 복조 데이터를 M10-buff-down 버퍼(6e)에 저장한 후에, 처리를 S023으로 진행시킨다. 이에 대해 모듈러스10 체크의 결과가 불량인 경우(하단 바코드 전체에 대응하는 복조 데이터가 얻어지지 않은 경우)에는, CPU(1)는 처리를 직접 S023으로 진행시킨다.
S023에서는, CPU(1)는 M10-buff-up 버퍼(6d) 및 M10-buff-down 버퍼(6e)의 쌍방에 복조 데이터가 저장되어 있는가의 여부를 체크한다. M10-buff-up 버퍼(6d) 및 M10-buff-down 버퍼(6e)의 쌍방에 복조 데이터가 저장되어 있지 않을 경우에는, CPU(1)는 아직 모듈러스10 체크의 결과가 양호해진 복조 데이터(모듈러스10-ok 데이터)가 갖추어지지 않았다고 판단하여, 처리를 S001로 복귀시킨다. 이에 대해 M10-buff-up 버퍼(6d) 및 M10-buff-down 버퍼(6e)의 쌍방에 복조 데이터가 저장되어 있는 경우에는, CPU(1)는 이미 모듈러스10-ok 데이터가 갖추어진 것으로 판단하여, 처리를 S024로 진행시킨다.
S024에서는, CPU(1)는 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터 및 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터의 인식 플랙을 체크한다. 그리고 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터의 인식 플랙이 상단을 나타낸 것으로서 미리 정해진 값 "21"에 합치하지 않을 경우, 또는 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터의 인식 플랙이 하단을 나타낸 것으로서 미리 정해진 값 "29"에 합치하지 않을 경우에는, CPU(1)는 판정 NG처리를 하기 위해 처리를 S025로부터 S040으로 진행시킨다. 이에 대해 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터의 인식 플랙이 상단을 나타낸 것으로서 미리 정해진 값 "21"에 합치하고, 또한 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터의 인식 플랙이 하단을 나타낸 것으로서 미리 정해진 값 "29"에 합치한 경우에는, CPU(1)는 S025로부터 S026으로 진행시킨다.
S026에서는, CPU(1)는 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터 및 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터가 다 같이 연속 판독에 의거한 복조 데이터인가의 여부를 체크한다. 이 체크는 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터와 Ig-up 버퍼(6b)에 저장되어 있는 복조 데이터가 동일한가의 여부, 및 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터와 Ig-down 버퍼(6c)에 저장되어 있는 복조 데이터가 동일한가의 여부에 의거해서 실행된다. 그리고 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터 및 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터가 다 같이 연속 판독에 의거한 복조 데이터인 경우에는, CPU(1)는 판정 OK처리를 실행하기 위해 처리를 S039로 진행시킨다. 이에 대해 어느 쪽이든 한쪽의 복조 데이터가 연속 판독에 의거한 복조 데이터가 아닐 경우에는, CPU(1)는 처리를 S027로 진행시킨다.
S027에서는, CPU(1)는 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터 및 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터가 다 같이 블록 판독에 의거한 복조 데이터인가의 여부를 체크한다. 그리고 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터 또는 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터가 블록 판독에 의거한 복조 데이터가 아닌 경우(즉 분할 판독에 의거한 복조 데이터인 경우)에는, CPU(1)는 판정 NG처리를 실행하기 위해 처리를 S040으로 진행시킨다. 이에 대해 양 복조 데이터가 다 같이 블록 판독에 의거한 복조 데이터인 경우에는, CPU(1)는 처리를 S028로 진행시킨다.
S028에서는, CPU(1)는 M10-buff-up 버퍼(6d)에 저장되어 있는 복조 데이터 및 Ig-up 버퍼(6b)에 저장되어 있는 복조 데이터의 우측 데이터 블록 끼리를 비교한다.
다음의 S029에서는, CPU(1)는 S028에서의 비교 결과에 의거해서 양 복조 데이터의 우측 데이터 블록에 있는 동일 캐릭터 개수를 산출한다. 이 개수는 Ig-up 버퍼(6b)에 저장되어 있는 복조 데이터에 포함된 우측 데이터 블록에 대응하는 수치 데이터 수에 상당한다. 그리고 CPU(1)는 산출한 개수를 변수 "count-up"에 대입한다.
S030에서는, CPU(1)는 M10-buff-down 버퍼(6e)에 저장되어 있는 복조 데이터 및 Ig-down 버퍼(6c)에 저장되어 있는 복조 데이터의 우측 데이터 블록 끼리를 비교한다.
다음의 S031에서는, CPU(1)는 S030에서의 비교 결과에 의거해서 양 복조 데이터의 우측 데이터 블록에 있는 동일 캐릭터 개수를 산출한다. 이 개수는 Ig-down 버퍼(6c)에 저장되어 있는 복조 데이터에 포함된 우측 데이터 블록에 대응하는 수치 데이터 수에 상당한다. 그리고 CPU(1)는 산출한 개수를 변수 "count-up"에 대입한다.
다음의 S023에서는, CPU(1)는 변수 "count-up" 및 변수 "count-down"이 다 같이 "2" 이상인가의 여부를 체크한다. 그리고 어느 한쪽의 변수가 "2" 미만인 경우에는, 각 단의 바코드 전체에 대응하는 복조 데이터를 정확히 재현할 수 있는 보증이 없는 것으로 하고, 처리를 S040으로 진행시킨다. 이에 대해 양 변수가 "2"이상일 경우에는, CPU(1)는 처리를 S033으로 진행시킨다.
S033에서는, CPU(1)는 Ig-up 버퍼(6b) 및 Ig-down 버퍼(6c) 내의 어드레스를 나타내는 포인터(a)를 "6"으로 세트한다.
이어서 CPU(1)는 S034∼S038의 루프처리에 들어간다. 이 루프처리는 Ig-up 버퍼(6b)에 저장되어 있는 복조 데이터와 Ig-down 버퍼(6c)에 저장되어 있는 복조 데이터가 우측 데이터 블록에서 상위한 것을 확인하기 위한 처리이다.
이 루프처리에 들어가서 최초의 S034에서는, CPU(1)는 변수 "count-up" 또는 변수 "count-down"이 "0"에 도달했는가의 여부를 체크한다.
다음의 S035에서는, CPU(1)는 Ig-up 버퍼(6b)의 어드레스 "a"의 엔트리에 저장되어 있는 수치 데이터와 M10-buff-down 버퍼(6e)의 어드레스 "a"의 엔트리에 저장되어 있는 수치 데이터를 비교한다.
다음의 S036에서는, CPU(1)는 S035에서의 비교 결과에 의거해서 양 수치 데이터가 서로 일치하고 있는가의 여부를 체크한다. 그리고 양 수치 데이터가 서로 일치하고 있는 경우에는, CPU(1)는 S037에서 포인터(a)를 1개 인크리먼트한다.
CPU(1)는 다음의 S037에서 변수 "count-up" 및 변수 "count-down"을 디크리먼트한 후에, 처리를 S034로 복귀시킨다.
이상의 루프처리를 반복한 결과, 수치 데이터가 서로 상위하다는 판정이 S036에서 행하여지기 전에, 변수 "count-up" 또는 변수 "count-down"이 "0"에 도달하였다고 S034로 판정한 경우에는, CPU(1)는 처리를 S040으로 진행시킨다. 즉 상하단 중의 어느 한쪽의 우측 데이터 블록을 판독해서 얻어진 복조 데이터에만 의거해서 상하단 쌍방의 합성이 이루어졌다 하더라도, CPU(1)는 그 사실을 인식할 수가 없다. 마찬가지로 Ig-up 버퍼(6b)에 저장되어 있는 복조 데이터 또는 Ig-down 버퍼(6c)에 저장되어 있는 복조 데이터의 범위 밖에서 양 바코드가 상위할 경우에, Ig-up 버퍼(6b)에 저장되어 있는 복조 데이터가 하단 바코드의 우측 데이터 블록에 대응하는 복조 데이터와 합성되어 있다 하더라도, Ig-down 버퍼(6c)에 저장되어 있는 복조 데이터가 상단 바코드의 좌측 데이터 블록에 대응하는 복조 데이터와 합성되었다 하더라도, CPU(1)는 그 사실을 인식할 수가 없다. 이와 같이 변수 "count-up" 또는 변수 "count-down"이 "0"일 경우에는, 상하 양 바코드에 대응하는 복조 데이터를 정확히 재현할 수 있는 보증이 없기 때문에, CPU(1)는 판정 NG처리를 실행하기 위해 처리를 S040으로 진행시킨다.
이에 대해 루프처리를 반복하는 동안에, Ig-up 버퍼(6b)의 어드레스 "a"의 엔트리에 저장되어 있는 수치 데이터와 M10-buff-down 버퍼(6e)의 어드레스 "a"의 엔트리에 저장되어 있는 수치 데이터가 상위하다고 S036으로 판단한 경우에는, CPU(1)는 판정 OK처리를 실행하기 위해 처리를 S039로 진행시킨다.
S039로 실행되는 판정 OK처리에서는, CPU(1)는 바코드의 판독(복조) 완료를 나타내는 음성을 스피커(10)로부터 출력함과 동시에, M10-buff-up 버퍼(6d)에 저장되어 있는 상단 바코드에 대응하는 복조 데이터 및 M10-buff-down 버퍼(6e)에 저장되어 있는 하단 바코드에 대응하는 복조 데이터를 조합해서 2단 바코드(21) 전체에 대한 복조 데이터를 재현하고, 재현된 복조 데이터에 대응하는 상품(20)의 판매가격 등의 정보를 발광 다이오드(11)로 표시한다. 또 CPU(1)는 다음 바코드의 판독에 대비해서 RAM(6) 내에 전개된 각 버퍼(6a∼6e)의 내용을 모두 클리어한다. 이들 판정 OK처리를 완료하면, CPU(1)는 처리를 S001로 복귀시킨다.
또 S040으로 실행되는 판정 NG처리에서는, CPU(1)는 RAM(6) 내에 전개된 각 버퍼(6a∼6e)의 내용을 모두 클리어한 후에, 처리를 S001로 복귀시킨다.
(바코드 판독장치의 작용)
다음에 이상과 같이 구성된 본 실시예에 의한 바코드 판독장치의 동작을 도 9를 참조하여 설명한다. 지금 도 9에 나타낸 ①∼④의 궤적에 따른 빔 주사에 의해, 2단 바코드(21)의 각 블록이 판독된 것으로 한다. 이 경우에 양 바코드의 제7 캐릭터(C7) 및 제8 캐릭터(C8)가 서로 동일하다면, 궤적 ①에 따른 복조 데이터(Ig-up 버퍼(6b)에 저장)는 궤적 ②에 따른 복조 데이터(우측 데이터 블록 일시대피 버퍼(6a)에 저장)와도, 궤적 ④에 따른 복조 데이터(우측 데이터 블록 일시대피 버퍼(6a)에 저장)와도 합성될 수 있다. 마찬가지로 궤적 ③에 따른 복조 데이터(Ig-down 버퍼(6c)에 저장)는 궤적 ②에 따른 복조 데이터와도, 궤적 ④에 따른 복조 데이터와도 합성될 수 있다. 따라서 이 경우에는 각 단의 바코드 전체에 대응한 복조 데이터를 재현할 수 있는 보증이 없으므로, CPU(1)는 Ig-up 버퍼(6b)에 저장된 복조 데이터 및 Ig-down 버퍼(6c)에 저장된 복조 데이터의 제8 캐릭터(C8) 끼리가 동일 데이터인 것을 확인한 시점에서(S035에서 제8 캐릭터(C8) 끼리가 동일 데이터인 것을 판정한 후, S034에서 양 변수 "count-up", "count-down"이 "0"이 된 것을 확인한 시점에서) 판정 NG처리를 실행한다(S040).
또 양 바코드의 제7 캐릭터(C7) 또는 제8 캐릭터(C8)가 서로 상위한 경우에는, 궤적 ①에 따른 복조 데이터는 궤적 ②에 따는 복조 데이터와 합성되지 않고, 궤적 ③에 따른 복조 데이터는 궤적 ④에 따른 복조 데이터와 합성되지 않는다. 따라서 이 경우에는 각 단의 바크드 전체에 대응한 복조 데이터를 재현할 수 있는 보증이 있으므로, CPU(1)는 Ig-up 버퍼(6b)에 저장된 복조 데이터 및 Ig-down 버퍼(6c)에 저장된 복조 데이터의 제7 캐릭터(C7) 끼리가 상위한 데이터인 것을 확인한 시점, 또는 제8 캐릭터(C8) 끼리가 상위한 데이터인 것을 확인한 시점에서(S035에서 캐릭터끼리가 동일 데이터가 아니라라는 것을 판정한 시점에서), 판정 OK처리를 실행한다(S039).
또한 궤적 ①이 센터 바(CB)에서 중단하고 있던 경우에는, 궤적 ①에 따른 복조 데이터는 궤적 ②에 따른 복조 데이터와도, 궤적 ④에 따른 복조 데이터와도 합성될 수 있다. 마찬가지로 궤적 ③이 센터 바(CB)에서 중단하고 있던 경우에는, 궤적 ③에 따른 복조 데이터는 궤적 ②에 따른 복조 데이터와도, 궤적 ④에 따른 복조 데이터와도 합성될 수 있다. 따라서 이 경우에는, 각 단의 바코드 전체에 대응한 복조 데이터를 재현할 수 있는 보증이 없으므로, CPU(1)는 즉시(S032로 양 변수 "count-up", "count-down"의 초기치가 "2" 미만인 것을 확인한 시점에서) 판정 NG처리를 실행한다(S040).
또 궤적 ① 및 궤적 ③이 엔드 가드 바(EGB)까지 도달해 있던 경우에는, 궤적 ①에 따른 복조 데이터 및 궤적 ③에 따른 복조 데이터는 어느 것이나 연속 판독에 따른 복조 데이터가 되고, 필연적으로 모듈러스10 체크의 결과가 양호하게 된다. 따라서 CPU(1)는 상하 양 바코드간의 데이터 비교를 행하는 일이 없이, 즉시 판정 OK처리를 실행한다(S026, S039).
이상 설명한 바와 같이 본 실시예의 바코드 판독장치에 의하면, WPC 코드를 상하 2단으로 겹쳐서 된 2단 코드에서 각 단의 좌측 데이터 블록을 각각 판독하여 얻어진 복조 데이터가 우측 데이터 블록의 데이터 캐릭터에 대응하는 데이터를 포함하고, 또한 그것들이 서로 상위한 경우에 한하여, 각 단의 좌측 데이터 블록에 대응하는 복조 데이터와 우측 데이터 블록에 대응하는 복조 데이터를 합성하여 얻어진 각 단의 바코드 전체에 대응하는 복조 데이터를 유효화한다. 따라서 오독을 방지하기 위한 일정한 제한하에서 2단 바코드의 블록 판독이 가능하므로, 연속 판독만이 가능한 종래의 바코드 판독장치에 비해서, 2단 바코드 전체에 대응하는 복조 데이터를 양호한 응답성으로 재현할 수가 있다. 즉 도 13에 나타낸 바와 같이, 연속 판독 가능한 주사 빔의 각도 α보다도 블록 판독 가능한 주사 빔의 각도 β쪽이 크므로 판독할 수 있는 확률이 높아지고, 따라서 단시간에 2단 바코드 전체에 대응하는 복조 데이터를 재현할 수 있는 것이다.
이상과 같이 구성된 본 발명의 바코드 판독장치 및 바코드 판독방법에 의하면, 2단 바코드의 각 단마다 우측 데이터 블록을 블록 판독하여 얻어진 복조 데이터와 좌측 데이터 블록을 블록 판독하여 얻어진 복조 데이터를 정확히 합성할 수 있으며, 따라서 2단 바코드 전체에 대응하는 복조 데이터를 단시간에 재현할 수 있다.
Claims (7)
- 각각 소정 개수의 데이터 캐릭터로 된 제1 데이터 블록 및 제2 데이터 블록에 의해 각각 구성된 2단의 바코드로 된 2단 바코드를 주사해서, 그 주사 궤적에서의 바코드 패턴을 검출하는 바코드 패턴 검출부와, 상기 바코드 패턴 검출부에 의해 검출된 바코드 패턴을 복조하여 복조 데이터를 얻는 복조부와, 상기 복조부에 의해 얻어진 복조 데이터가 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에 상기 복조 데이터를 저장하는 제1 버퍼와, 상기 복조부에 의해 얻어진 복조 데이터가 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에 상기 복조 데이터를 저장하는 제2 버퍼와, 상기 복조부에 의해 얻어진 복조 데이터가 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 경우에 상기 복조 데이터를 저장하는 제3 버퍼와, 상기 제1 버퍼에 저장되어 있는 복조 데이터와 상기 제3 버퍼에 저장되어 있는 복조 데이터를 합성하는 제1 합성부와, 상기 제2 버퍼에 저장되어 있는 복조 데이터와 상기 제3 버퍼에 저장되어 있는 복조 데이터를 합성하는 제2 합성부와, 상기 제1 버퍼에 저장되어 있는 복조 데이터 및 상기 제2 버퍼에 저장되어 있는 복조 데이터가 다 같이 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분을 포함하고, 또 이들 각 복조 데이터에 포함된 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분이 서로 상위한 경우에 한하여, 상기 제1 합성부에 의해 합성된 복조 데이터를 상기 제1단 바코드 전체에 대응하는 복조 데이터로서 유효화함과 동시에, 상기 제2 합성부에 의해 합성된 복조 데이터를 상기 제2단 바코드 전체에 대응하는 복조 데이터로서 유효화하는 유효화부를 구비한 것을 특징으로 하는 바코드 판독장치.
- 제1항에 있어서, 상기 바코드는 WPC 코드, UPC/A 코드, JAN 코드 또는 EAN 코드인 것을 특징으로 하는 바코드 판독장치.
- 제1항에 있어서, 상기 제1 합성부는 제1 버퍼에 저장되어 있는 복조 데이터와 상기 제3 버퍼에 저장되어 있는 복조 데이터가 2 캐릭터분 이상 중복되어 있는 경우에 한하여 이들 복조 데이터를 합성하고, 상기 제2 합성부는 상기 제2 버퍼에 저장되어 있는 복조 데이터와 상기 제3 버퍼에 저장되어 있는 복조 데이터가 2 캐릭터분 이상 중복되어 있는 경우에 한하여 이들 복조 데이터를 합성하는 것을 특징으로 하는 바코드 판독장치.
- 제1항에 있어서, 상기 유효화부는 상기 제1 버퍼에 저장되어 있는 복조 데이터 및 상기 제2 버퍼에 저장되어 있는 복조 데이터가 다 같이 상기 제2 데이터 블록의 2개 이상의 데이터 캐릭터에 대응하는 부분을 포함하고 있는 경우에만, 상기 제1 합성부에 의해 얻어진 복조 데이터를 상기 제1단 바코드 전체에 대응하는 복조 데이터로서 유효화함과 동시에, 상기 제2 합성부에 의해 얻어진 복조 데이터를 상기 제2단 바코드 전체에 대응하는 복조 데이터로서 유효화하는 것을 특징으로 하는 바코드 판독장치.
- 제1항에 있어서, 상기 유효화부는 상기 제1 버퍼에 저장되어 있는 복조 데이터가 제1단 바코드 전체에 대응함과 동시에 상기 제2 버퍼에 저장되어 있는 복조 데이터가 제2단 바코드 전체에 대응하고 있는 경우에는, 상기 제1 버퍼에 저장되어 있는 복조 데이터를 상기 제1단 바코드 전체에 대응하는 복조 데이터로서 유효화함과 동시에, 상기 제2 버퍼에 저장되어 있는 복조 데이터를 상기 제2단 바코드 전체에 대응하는 복조 데이터로서 유효화하는 것을 특징으로 하는 바코드 판독장치.
- 각각 소정 개수의 데이터 캐릭터로 된 제1 데이터 블록 및 제2 데이터 블록에 의해 각각 구성된 2단의 바코드로 된 2단 바코드를 주사해서, 그 주사 궤적에서의 바코드 패턴을 검출하고, 상기 바코드 패턴을 복조하여 복조 데이터를 획득하고, 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터와 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터를 합성하여 제1단 바코드 전체에 대응하는 복조 데이터를 생성하고, 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터와 어떤 단의 상기 제2 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터를 합성하여 제2단 바코드 전체에 대응하는 복조 데이터를 생성하고, 상기 제1단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 복조 데이터 및 상기 제2단 바코드의 상기 제1 데이터 블록 전체에 대응하는 부분을 포함하고 있는 부분을 포함하고 있는 복조 데이터가 다 같이 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분을 포함하고, 또 이들 각 복조 데이터에 포함된 상기 제2 데이터 블록의 데이터 캐릭터에 대응하는 부분이 서로 상위한 경우에 한하여, 상기 제1단 바코드 전체에 대응하는 복조 데이터를 유효화함과 동시에, 상기 제2단 바코드 전체에 대응하는 복조 데이터를 유효화하는 것을 특징으로 하는 바코드 판독방법.
- 제1 데이터 블록 및 제2 데이터 블록에 의해 각각 구성된 제1 바코드와 제2 바코드로 된 2단 바코드의 판독방법에 있어서, 상기 2단 바코드의 바코드 패턴을 복조하여 복조 데이터를 획득하고, 제1단 바코드의 상기 제1 데이터 블록의 복조 데이터 및 제2단 바코드 의 상기 제1 데이터 블록의 복조 데이터가 다 같이 제1 데이터 블록 전체에 대응하는 부분을 포함하고, 또한 제2 데이터 블록의 양 복조 데이터가 서로 상위한 경우에만, 제1단 바코드 및 제2단 바코드에 대응하는 복조 데이터를 유효화하는 것을 특징으로 하는 바코드 판독방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9222425A JPH1166222A (ja) | 1997-08-19 | 1997-08-19 | バーコード読取装置,バーコード読取方法,及びコンピュータ可読媒体 |
JP97-222425 | 1997-08-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990023128A KR19990023128A (ko) | 1999-03-25 |
KR100308415B1 true KR100308415B1 (ko) | 2001-12-06 |
Family
ID=16782202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980016759A KR100308415B1 (ko) | 1997-08-19 | 1998-05-11 | 바코드판독장치,바코드판독방법및컴퓨터판독가능매체 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6006992A (ko) |
EP (1) | EP0898238B1 (ko) |
JP (1) | JPH1166222A (ko) |
KR (1) | KR100308415B1 (ko) |
CN (1) | CN1105368C (ko) |
DE (1) | DE69830690T2 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3560477B2 (ja) * | 1998-08-24 | 2004-09-02 | 富士通株式会社 | バーコード読取装置及びバーコード読取方法 |
US6267293B1 (en) * | 1999-02-22 | 2001-07-31 | Cimatrix | Bar code scanning system and method |
US6609660B1 (en) * | 1999-08-12 | 2003-08-26 | Telxon Corporation | Optical device for increasing the apparent resolution of photosensor |
JP2001216565A (ja) * | 2000-02-04 | 2001-08-10 | Teraoka Seiko Co Ltd | 商品の値付け方法および値付けシステム |
US7203158B2 (en) | 2000-12-06 | 2007-04-10 | Matsushita Electric Industrial Co., Ltd. | OFDM signal transmission system, portable terminal, and e-commerce system |
EP1410196B1 (en) * | 2001-06-22 | 2019-08-07 | AVEVA Software, LLC | Installing supervisory process control and manufacturing software from a remote location and maintaining configuration data links in a run-time environment |
JP3534250B2 (ja) * | 2002-04-23 | 2004-06-07 | 中村 憲生 | 動的バーコード表示装置及び動的バーコード生成方法並びに動的バーコードを生成する記憶媒体。 |
JP4170111B2 (ja) * | 2003-02-21 | 2008-10-22 | 富士通株式会社 | バーコード読取装置およびバーコード読取方法 |
CN101211409B (zh) * | 2006-12-25 | 2011-07-20 | 银河联动信息技术(北京)有限公司 | 采集和分析多字段二维码的系统和方法 |
CN101882212B (zh) * | 2010-06-01 | 2012-12-12 | 福建新大陆电脑股份有限公司 | 一种条码图像的获取方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69022533T2 (de) * | 1989-05-17 | 1996-02-01 | Fujitsu Ltd | Strichcode-leseverfahren und -vorrichtungen. |
JP2825141B2 (ja) * | 1992-09-26 | 1998-11-18 | 富士通株式会社 | 多段バーコード読取装置 |
JP3448404B2 (ja) * | 1995-09-08 | 2003-09-22 | 富士通株式会社 | バーコード読取装置及びバーコード読取方法 |
-
1997
- 1997-08-19 JP JP9222425A patent/JPH1166222A/ja active Pending
-
1998
- 1998-03-23 US US09/045,899 patent/US6006992A/en not_active Expired - Lifetime
- 1998-04-07 DE DE69830690T patent/DE69830690T2/de not_active Expired - Lifetime
- 1998-04-07 EP EP98302708A patent/EP0898238B1/en not_active Expired - Lifetime
- 1998-05-11 KR KR1019980016759A patent/KR100308415B1/ko not_active IP Right Cessation
- 1998-05-22 CN CN98108963A patent/CN1105368C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1105368C (zh) | 2003-04-09 |
DE69830690T2 (de) | 2006-01-12 |
US6006992A (en) | 1999-12-28 |
EP0898238B1 (en) | 2005-06-29 |
CN1208904A (zh) | 1999-02-24 |
JPH1166222A (ja) | 1999-03-09 |
EP0898238A2 (en) | 1999-02-24 |
EP0898238A3 (en) | 2002-08-07 |
KR19990023128A (ko) | 1999-03-25 |
DE69830690D1 (de) | 2005-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6095419A (en) | Bar code reading apparatus for reading plural code systems | |
EP1086439B1 (en) | Techniques for reading postal codes | |
US6366696B1 (en) | Visual bar code recognition method | |
KR100308415B1 (ko) | 바코드판독장치,바코드판독방법및컴퓨터판독가능매체 | |
JPH03204790A (ja) | 部分走査からバーコード記号を復号する方法 | |
US5942740A (en) | Method and apparatus for reading bar codes | |
US6102295A (en) | Method and apparatus for decoding symbols by declaring erasures of element characteristics | |
JPH09161001A (ja) | バーコード読取装置 | |
US5189289A (en) | Distinguishing bar code types by comparing bar block sizes | |
US6070801A (en) | Bar code reader, bar code reading method and computer readable medium | |
US5798510A (en) | Apparatus for and method of reading a bar code | |
US5979765A (en) | Bar-code reader and bar-code reading method for detecting various possible reproducible bar code combinations and synthesizing information therefrom | |
CN111738031B (zh) | 一种一维条码识别方法 | |
JPH06274674A (ja) | バーコード読取方法およびバーコード読取装置 | |
JP3448404B2 (ja) | バーコード読取装置及びバーコード読取方法 | |
JPH0449480A (ja) | バーコード読取方式 | |
JP3560477B2 (ja) | バーコード読取装置及びバーコード読取方法 | |
JP2725220B2 (ja) | バーコード復調方式 | |
JPH0954809A (ja) | バーコード検出装置及び検出方法 | |
JPH07334607A (ja) | バーコード読取装置 | |
JPH08180126A (ja) | バーコード読取方法およびバーコード読取装置 | |
JPH0799528B2 (ja) | アドオンバーコード読取装置 | |
JPH08235292A (ja) | 読取装置 | |
JPH09153110A (ja) | バーコード読取装置 | |
JP2001291051A (ja) | 二次元バーコードの読み取り方法及び装置、情報記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120802 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20130801 Year of fee payment: 13 |
|
LAPS | Lapse due to unpaid annual fee |