자동화 - 바코드 리더기 활용하기

    반응형

    안녕하세요. 지지비입니다.

    회사에서 자동화할 때 자주 사용하게 되는 바코드 리더기를 활용하는 방법에 대해서 알아보도록 하겠습니다. 

     

    1. 바코드 리더기 종료 문자

    먼저 바코드 리더기에 대해서 알아보도록 하겠습니다. 대부분의 바코드 리더기는 종료 문자를 설정할 수 있도록 되어 있습니다. 예를 들어 '0353147' 라는 숫자형 문자열 바코드를 바코드 리더기로 찍었을 때, 맨 마지막에 엔터를 추가한다던가, 탭을 추가한다든가 하는 것입니다. '0353147(엔터)' 가 최종적으로 입력되는 것이지요.

    엑셀에서 여러 개의 바코드를 연속으로 찍을 때에도 맨 마지막에 엔터가 들어가면 바로 밑의 셀에 연속해서 입력할 수 있으므로 유용한 기능입니다.

    바코드 리더기의 종료 문자는 사용하고 있는 바코드 리더기의 메뉴얼을 보면 설정하는 방법이 나와 있습니다. 예를 들어 인터넷에 있는 Z-3220이라는 바코드 리더기의 매뉴얼을 보면 Start of Configuration 바코드를 찍고, Message Terminator 중에서 한 개를 찍으면 종료 문자를 설정할 수 있도록 되어 있습니다.

    Z-3220 매뉴얼 중 한 페이지

    이번 예제에서는 기본적으로 들어가 있는 종료 문자 엔터키(Return)를 사용하여 시리얼 넘버를 입력받는 VI를 만들어 보도록 하겠습니다.

     

    2. 입력 준비 - 문자열 전체 선택하기

    바코드로 시리얼 번호를 입력받기 위해서는 기존에 입력되어 있는 문자열을 선택되도록 해 두는 것이 좋습니다. 물론 시리얼 번호 전체를 삭제하고 빈 문자열 컨트롤에 입력받을 수도 있지만, 경험 상 기존에 있는 문자열을 확인할 수 있도록 해 두는 편이 좋습니다.

    아래 블록 다이어그램과 같이 상태머신 구조를 만들고, 문자열 컨트롤의 프로퍼티 노드를 사용합니다. 프로퍼티 노드의 KeyFocusText.Selection을 사용합니다. 

    KeyFocus는 프론트 패널에서 해당 컨트롤이 포커스 되어 선택된 상태를 만들어 줍니다. Text.Selection은 해당 문자열 컨트롤의 선택 범위를 설정합니다. 클러스터 내부의 첫 번째 숫자형 컨트롤은 시작점, 두 번째 숫자형 컨트롤은 종료 지점입니다. 즉, 0번째 글자와 30번째 글자 사이를 선택합니다. 이 숫자는 사용하는 시리얼 번호의 길이를 적용하시면 되겠습니다.

     

    참고로 프로퍼티의 위치를 찾아가는 방법은 Text.Selection의 경우 Text탭의 Selection에 있다는 뜻입니다.

     

    이렇게 하면 프로그램을 시작하면 원래 들어가 있던 문자열이 선택됩니다. 이 상태에서 바코드 리더기로 바코드를 찍으면 선택된 문자열이 새롭게 교체됩니다.

     

     

    3. 바코드 입력 감지

    바코드를 입력하는 것을 감지하는 부분은 이벤트 구조를 사용하여 처리합니다. 문자열 컨트롤의 값 변경을 감지하는 이벤트 구조를 만듭니다.

     

    여기서 바코드 리더기의 종료 문자가 엔터이기 때문에 문자열 컨트롤에 엔터가 입력됩니다. 그것을 방지하기 위해서 문자열 컨트롤의 속성을 변경해 주어야 합니다. 아래와 같이 문자열 컨트롤의 속성에서 Limit to single line을 체크해 줍니다.

     

     

    댓글

    Designed by JB FACTORY