상기 기술적 과제를 달성하기 위한 본 발명의 바코드 판독기는 바코드 영상을 스캐닝하여 상기 바코드 영상에 상응하는 바코드 데이터를 외부의 데이터 처리장치에 출력한다. 여기서, 데이터 처리 장치는 예컨대 케이블 등에 의해 바코드 판독기에 연결되는 컴퓨터가 될 수 있다. 다른 응용예에 있어서, 바코드 판독기와 데이터 처리 장치는 PDA와 같은 하나의 장치 내에서 구현될 수도 있다. 바코드 판독기는 시모스 이미지 센서, 제1 메모리, 마이크로컨트롤러 및 신호 처리부를 구비한다. 시모스 이미지 센서는 바코드 영상을 캡쳐하여 디지털 영상 데이터를 출력한다. 제1 메모리는 캡쳐된 영상에 대한 디지털 영상 데이터를 저장한다. 마이크로컨트롤러는 제2 메모리를 구비하며, 상기 제1 메모리에 저장된 디지털 영상 데이터를 제2 메모리에 저장한 후 해독하여 바코드 데이터를 생성하고, 해독된 데이터를 외부의 데이터 처리 장치에 출력한다. 신호 처리부는 시모스 이미지 센서로부터 디지털 영상 데이터를 받아들여 제1 메모리에 저장하고, 마이크로컨트롤러의 요구에 따라 제1 메모리로부터 디지털 영상 데이터를 독출하여 마이크로컨트롤러에 제공한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 보다 구체적으로 설명한다.
도 1은 본 발명에 의한 바코드 판독기의 바람직한 실시예를 보여준다. 본 실시예에 있어서, 바코드 판독기는 CMOS 이미지 센서(10), 마이크로컨트롤러(20), 신호처리부(30) 및 메모리(40)를 포함한다. CMOS 이미지 센서(10)는 마이크로컨트롤러(20)로부터 트리거 신호가 인가될 때 전면의 영상을 캡쳐하여, 신호처리부(30)를 통해 메모리(40)에 저장한다. 마이크로컨트롤러(20)는 CMOS 이미지 센서(10), 신호처리부(30) 및 메모리(40)를 포함하는 판독기 전체의 동작을 제어하고 CMOS 이미지 센서(10)에 의해 캡쳐된 영상 데이터를 해독하며, 외부의 데이터 처리장치와의 인터페이스 기능을 수행한다.
바람직한 실시예에 있어서, CMOS 이미지 센서(10)는 대략 1000×1000의 해상도를 가지도록 픽셀 어레이가 배치되어 있으며, 각 픽셀마다 광다이오드 또는 광트랜지스터와 같은 광검출기와, 증폭용 트랜지스터와, 아날로그-디지털 변환기가 마련되어 있다. 광검출기에 의해 검출되는 신호는 증폭용 트랜지스터에 의해 증폭된 후 아날로그-디지털 변환기에 의해 디지털 데이터로 변환되어 출력된다. 이와 같은 CMOS 이미지 센서(10)로는 예컨대 픽셀캠사(PixelCam Corporation)의 PCS2112와 같은 제품을 채용할 수 있다.
신호처리부(30)는 버퍼(32), 버스 송수신부(34) 및 메모리 제어부(36)를 포함한다. 버퍼(32)는 CMOS 이미지 센서(10)로부터의 디지털 영상 데이터를 받아들이고 이를 임시 저장한 후, 버스 송수신부(34)의 제어 신호에 응답하여 저장된 데이터를 메모리(40)에 저장한다. 버스 송수신부(34)는 마이크로컨트롤러(20)의 제어 신호에 응답하여 메모리(40)에 저장된 데이터를 독출하여 마이크로컨트롤러(20)에 제공한다. 또한, 버스 송수신부(34)는 메모리(40)에 저장된 데이터를 독출하는 동안에 CMOS 이미지 센서(10)로부터의 데이터가 메모리(40)에 저장되는 것을 방지하기 위하여 버퍼(32)의 출력 동작을 제어한다. 바람직한 실시예에 있어서, 메모리(40)는 1메가바이트의 용량을 가지는 DRAM에 의해 구현된다. 메모리 제어부(36)는 /RAS, /CAS. /WE와 같은 메모리 제어신호를 발생하여 메모리(40)의 동작을 제어하게 된다.
마이크로컨트롤러(20)는 칩간(Inter-integrated Chip: I2C) 버스를 통해 CMOS 이미지 센서(10)에 연결되어 있다. 사용자가 스캔 버튼(미도시됨)을 누를 때 마이크로컨트롤러(20)는 CMOS 이미지 센서(10)에 트리거 신호를 공급하여 CMOS 이미지 센서(10)가 영상을 스캐닝하도록 한다. 또한, 마이크로컨트롤러(20)는 CMOS 이미지 센서(10)로부터 스캐닝 영상 신호 중 동기 신호를 받아들이고, 이 동기 신호를 토대로 신호처리부(30)를 제어한다. 한편, 마이크로컨트롤러(20)는 신호처리부(30)를 경유하여 메모리(40)로부터 받아들인 영상 데이터를 해독하고, 해독된 데이터를 외부의 데이터 처리장치에 공급한다. 바람직한 실시예에 있어서, 마이크로컨트롤러(20)로는 CPU(22)와 함께 메모리(24)가 내장된 임베디드 CPU, 예컨대 아트멜사(Atmel Corporation)의 AT91M40400을 사용한다. 그렇지만, 본 발명의 다른 실시예에 있어서는, 통상적인 CPU 또는 마이크로컨트롤러와 별도의 메모리를 채용할 수도 있다. 한편, 상기 메모리(24)는 데이터를 기록하고 독출할 수 있는 DRAM과, EEPROM 또는 플래쉬 메모리를 포함한다.
장치 제어와 데이터 해독을 위하여, 마이크로컨트롤러(20)의 메모리에는 소정의 프로그램들이 적재된다. 도 2는 마이크로컨트롤러(20)에 적재되는 프로그램들을 개략적으로 보여준다. 메인 제어 모듈(50)은 프로그램의 전반적인 실행을 제어하며 외부 인터페이스 기능을 수행하는 메인 루틴이다. 이미지 캡쳐 모듈(52)은 사용자가 스캔 버튼(미도시됨)을 누를 때 CMOS 이미지 센서(10)에 트리거 신호를 공급하여 CMOS 이미지 센서(10)가 영상을 스캐닝하도록 하고, 스캐닝된 영상 데이터가 메모리(40)에 저장되도록 신호처리부(30)를 제어한다. 회전 모듈(54)은 메모리(40)로부터 독출된 데이터가 일정한 포맷들 중 어느 하나에 해당하는지를 판단하고, 데이터가 정해진 포맷들 중 어느 하나에도 해당하지 않는 경우 독출된 데이터 어레이를 90도 단위로 회전시켜 다시 정해진 포맷에 해당하는지 판단하는 기능을 수행한다. 디코딩 모듈(56)은 데이터가 일정한 포맷들 중 어느 하나에 해당하는 경우, 해당 포맷에 따라 데이터를 디코딩하고 디코딩된 데이터를 메모리(24)에 저장하거나 외부에 출력한다. 여기서, 정해진 포맷들이라 함은 상용화된 1차원 및 2차원 바코드 포맷들 전부 또는 그중 일부 그룹을 의미한다.
도 3 은 본 발명 바코드 판독기의 동작을 설명하기 위한 흐름도이다.
바코드 판독기에 전원이 인가되면, 먼저 마이크로컨트롤러(20)는 CMOS 이미지 센서(10)에 대한 초기화 작업을 수행한다(제 60 단계). 그 다음, 바코드 판독기를 구성하는 각 부분에 대한 이상 여부를 점검하기 위한 셀프 테스트 작업을 수행하게 된다(제 62 단계). 셀프 테스트를 수행한 후, 이상이 없는 경우에는 바코드를 감지할 수 있는 상태가 된다.
이와 같은 상태에서, 마이크로컨트롤러(20)는 지속적으로 스캐닝 명령이 인가되는 지 즉, 스캐닝 버튼이 눌려지는지를 점검한다(제 64 단계). 만약, 스캐닝 명령이 인가되면, 마이크로컨트롤러(20)는 CMOS 이미지 센서(10)에 트리거 신호를 공급하여 바코드의 이미지가 캡쳐되도록 하게 된다. 캡쳐된 바코드 이미지는 디지털 데이터 형태로 메모리(40)에 저장된다.
이미지 캡쳐가 완료되면, 마이크로컨트롤러(20)는 영상 데이터의 해독 작업을 시작한다. 먼저, 마이크로컨트롤러(20)는 메모리(40)로부터 영상 데이터를 받아들이고, 영상 데이터가 정해진 포맷들 중의 하나에 적합한 것인지를 판단한다. 만약, 정해진 포맷들 중 어느 하나에도 해당하지 않을 경우, 마이크로컨트롤러(20)의 회전 프로그램 모듈(54)은 영상 데이터 어레이를 90O회전시킨다(제 68 단계). 데이터가 정해진 포맷들 중 하나에 해당될 때까지 회전 작업은 2-3 차례 반복적으로 실행될 수 있다. 데이터 어레이 회전에 따라 영상 데이터가 정해진 포맷들 중 어느 하나에 적합한 것으로 판단되면, 마이크로컨트롤러(20)는 데이터의 디코딩 작업을 수행한다. 디코딩 작업 수행에 있어서는, 먼저 바코드 이미지가 1차원 바코드 이미지인지를 판별한다(제 70 단계). 제 70 단계에서 1차원 바코드로 판별되면, 제 72 단계에서는 디코딩 작업을 수행한다. 디코딩 작업은 마이크로컨트롤러(20)내의 디코딩 프로그램 모듈(56)에 의해 수행된다. 한편, 제 70 단계에서 1차원의 바코드가 아니라고 판별되는 경우에는 CMOS 이미지 센서에 의하여 캡쳐된 바코드가 2차원 바코드인지의 여부를 판별하게 된다(제 74 단계). 바코드가 2차원인 것으로 판단되는 경우에는, 2차원 바코드의 코드 워드를 분석한 후, 에러 수정을 수행하고, 최종적으로 에러 정정된 데이터를 디코딩하게 된다. 에러 정정 과정에 있어서, 데이터 일부가 손상된 경우에는, 손상된 정보를 보관하거나 바코드내의 다른 위치에 있는 정보로 대체할 수 있고, 손상된 정보량이 많은 경우에는 해당 부분의 데이터를 삭제한 후 출력할 수 도 있다.
제 72 단계 또는 제 76 단계 수행 중에 데이터 디코딩이 정상적으로 수행되지 않는 경우에는, 디코딩 작업이 종료되고 제 78 단계로 진행한다. 제 78 단계에서는 디코딩 작업이 정상적으로 종료되었는지를 판단한다. 디코딩 작업이 비정상적으로 종료된 경우에는, 메모리(40)에 저장된 데이터를 삭제하고 장치를 초기화한 후 제 64 단계로 진행하여 다시 트리거 명령을 기다리게 된다. 이때 사용자에게 경고음 등을 통해 비정상적인 종료 사실을 통지할 수도 있다(제 80 단계).
한편, 제 78 단계에서 디코딩이 정상적으로 종료된 것으로 판단된 경우에는 디코딩 데이터를 외부 데이터 처리 장치로 전송하기에 적합한 전송 포맷으로 변환한다(제 82 단계). 그 다음, 전송 포맷으로 변환된 데이터를 외부 데이터 처리 장치로 출력한다. 데이터 출력이 완료된 후에는, 새로운 바코드를 읽기 위하여 다시제 64 단계로 진행하여 트리거 명령을 기다리게 된다. 이와 같은 디코딩 수행 과정은 사용자의 조작이나 그 밖의 요인으로 인한 인터럽트 요구에 의해 중단 될 수 있다.
본 발명에 의한 바코드 판독기는 그 자체로서 하나의 외형을 가지도록 제작될 수 있다. 이러한 경우, 바코드 판독기는 POS 단말기나 컴퓨터에 케이블 또는 무선링크를 통해 연결되어 스캐닝된 데이터를 POS 단말기나 컴퓨터에 출력하게 된다. 한편, 다른 응용예에 있어서는, 바코드 판독기나 PDA 또는 그 밖의 휴대형 단말기에 채용될 수도 있다. 이와 같은 경우에 있어서는 스캐닝된 바코드 데이터가 PDA 등의 단말기의 CPU 또는 메인 메모리에 직접 버스를 통해 전송된다. 아울러, 이와 같은 응용예에 있어서는 바코드 판독기가 바코드 이외의 문서 또는 그 밖의 이미지를 스캐닝하는데 활용될 수 있으며, 이 때에도 스캐닝된 이미지는 단말기의 CPU 또는 메모리에 직접 전송된다.
이상에서 설명한 바와 같이, 본 발명의 바코드 판독기는 CMOS 이미지 센서를 구비한다. 따라서, 바코드 판독기의 전력소비가 적고, 스캐닝 과정에서 광전변환된 전류가 증폭되기 때문에 미약한 조도에서도 스캐닝 작업을 할 수 있다는 장점을 갖는다. 또한, 본 발명의 바코드 판독기는 마이크로컨트롤러(20)에 의해 활용되는 데이터 처리용 메모리(24)와는 별도로 스캐닝된 데이터를 저장하기 위한 메모리(40)를 구비한다. 이와 같이 별도의 메모리를 사용하게 됨으로 말미암아, 스캐닝된 영상 데이터 처리와 다음 프레임의 스캐닝이 거의 동시에 진행될 수 있으며, 바코드 내지 영상 데이터 처리를 고속화하는 것이 가능하게 된다.
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 실용신안등록청구범위에 의하여 나타내어지며, 실용신안등록청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.