Windows RawInput으로 HID 바코드 스캐너 처리하기

현장에서 사용하는 바코드 스캐너를 Windows 프로그램과 연동하면서 일반 키보드 입력 방식과 HID RawInput 방식의 차이를 직접 경험하게 되었습니다.

처음에는 대부분의 바코드 스캐너가 단순히 키보드처럼 동작한다고 생각했습니다.
실제로 메모장에 커서를 두고 스캔하면 숫자나 문자열이 바로 입력되는 경우가 많았습니다.

하지만 현장 환경에서는 여러 종류의 입력 장치가 동시에 연결되는 경우가 많았고, 단순 키보드 입력 방식만으로는 장비를 정확하게 구분하기 어려웠습니다.

특히 다음과 같은 문제가 발생했습니다.

  • 어떤 장비에서 입력되었는지 확인이 어려움
  • 여러 스캐너를 동시에 사용할 경우 구분 불가능
  • 승인되지 않은 HID 장비 연결 여부 확인 불가
  • 프로그램 포커스 상태에 따라 입력 누락 발생

이 문제를 해결하기 위해 Windows RawInput 기반으로 HID 장치를 직접 수신하는 구조를 테스트하게 되었습니다.

RawInput을 사용하면 단순 문자열 입력뿐 아니라:

  • VID / PID
  • Device Path
  • Device Handle

같은 장치 정보도 함께 확인할 수 있습니다.

실제 로그에서는 아래와 같은 형태로 입력을 확인할 수 있었습니다.

  • VALUE=8805678979212
  • VID=0C2E
  • PID=1001

13자리 숫자 형태를 보고 실제 상품 바코드(EAN-13) 입력이라는 것도 확인할 수 있었습니다.

이 방식의 장점은 단순 입력 처리 이상의 관리가 가능하다는 점입니다.

예를 들어:

  • 등록된 HID만 허용
  • 미등록 HID 탐지
  • 장비별 로그 기록
  • 특정 스캐너 추적

같은 구조도 구현할 수 있습니다.

특히 MES나 현장 시스템에서는 단순 입력보다 “어떤 장비에서 입력했는가”가 중요해지는 경우가 많기 때문에 RawInput 방식이 생각보다 유용했습니다.

다만 모든 장비가 동일하게 동작하는 것은 아니었습니다.

일부 스캐너는:

  • HID Keyboard 방식
  • 일부는 Vendor HID 방식
  • 일부는 COM 포트 에뮬레이션 방식

으로 동작했기 때문에 장비별 테스트도 필요했습니다.

현장 장비는 실제로 연결해 보기 전까지 정확한 동작을 예상하기 어려운 경우가 많았고, 결국 직접 로그를 수집하면서 구조를 맞춰가는 과정이 가장 중요했습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다