RFID 리더 에뮬레이터 :: RFID Reader Emulator

본 프로그램은 직장에서 제가 속한 팀이 제작하고 있는 RFID Middleware 개발에 따른 부산물입니다.
소스를 공개하기가 부끄러운 수준 이지만, RFID관련 하여 공부를 하신다거나 현장에서 개발을 하시는 분들께
이 코드가 또다른 영감을 줄 수 있다면 그걸로도 보람은 있으리라 생각 됩니다.

2007년 8월 현재 Thingmagic社의 Mercury 5 리더Intermec社의 IF5 리더 에뮬레이션이 준비되어 있습니다.
솔직히 현재 버전은 리더 에뮬레이터라기보다는 미들웨어에 부하를 주기위한 태그 데이터 발생기/더미 리더 성향이 강합니다.
저도 이런 저런 기능을 구현 해 보고 싶은 충동은 느끼나 이 코드는 RFID Middleware 개발에 따른 부산물로
여기에 정신을 쏟을 여력이 부족함을 안타깝게 생각 합니다.

짬짬히 다른 더미 리더도 구현 해 보고 싶지만 RFID 미들웨어가 회사 주력 솔루션도 아니고, 더욱이
실제 리더 없이 스펙문서만으로 구현하기 까다로운 면이 있어서 다른 리더에 대한 구현은 어찌 될 지 모르겠습니다.
자바 서버-소켓프로그램 경험이 있으시다면 소스와 각 리더의 스펙문서를 참조하여 해당 리더에뮬레이터 구현은  쉽게 되리라 생각합니다.

리더 에뮬레이션 소스를 보시면 아시겠지만 리더 에뮬레이터는 의외로 단순한 서버소켓으로 작동 하고 있습니다.
클라이언트에서 각 리더에 데이터 요청 신호를 보냈다는 가정하에 리더 에뮬레이터는 몇개의 태그 데이타를 수신한것 처럼 동작하게 됩니다.
리더에뮬레이터에서 발생하는 태그 데이터를 보기 위해서는 클라이언트 소켓 프로그래밍을 하실 필요가 있습니다.
소켓프로그래밍을 해 보셨다면 클라이언트를 쉽게 구현 하실 수 있을 겁니다.

n[#M_매뉴얼 펼치기..|매뉴얼 닫기..|1. 다운로드 및 실행

리더 에뮬레이터

다운로드한 리더에뮬레이터를 적당한 디렉토리에 압축을 풉니다.
그런 후 ReaderEmulator.cmd을 더블 클릭 하면
아래와같이 리더 에뮬레이터가 실행 됩니다.

리더 에뮬레이터

리더에뮬레이터가 실행된 모습입니다.

리더 에뮬레이터

구동 할 리더 타입을 선택한 후

리더 에뮬레이터

리더 생성 갯수와 포트시작 번호를 기입합니다.
리더 생성 갯수는 에뮬레이션 할 리더의 갯수를 말하며,
포트시작번호는 리더 에뮬레이터가 사용 할 포트의 시작번호를 나타냅니다.
예제 화면에서와 같이 리더 생성 갯수를 1로, 포트시작번호를 5555로 하면
로컬 ip에 5555 포트를 사용 하는 하나의 가상의 리더가 생성 되며
리더 생성 갯수를 2로, 포트시작번호를 5555로 하면
로컬 ip에 5555, 5556 포트를 사용 하는 두개의 가상의 리더가 생성 됩니다.

리더 에뮬레이터

보고 주기를 설정합니다.
이는 각각의 가상의 리더가 읽은 태그 정보를 얼마나 자주
클라이언트에 보고 하는지를 결정 합니다.
100ms – 5,000ms 사이의 값을 선택 하실 수 있습니다.

리더 에뮬레이터

이제 리더를 가동 해 보도록 합니다.

리더 에뮬레이터

1개의 리더가 정상적으로 가동되었습니다.
리더 에뮬레이터는 여기까지 작동 하면 잘 작동 된 것입니다.

이제 여러분이 개발 하신 클라이언트 프로그램으로
리더에 접속 해 보시면 리더로부터 데이터가 유입 됩니다.
아래는 실제로 데이터를 조회한 경우의 모습입니다.

2. 클라이언트로 태그 정보 조회

리더 에뮬레이터

머큐리5를 통해 태그 정보를 조회한 정보를 클라이언트에서 가져 가고 있다면
위와 같이 클라이언트에 보낸 태그 정보를 표시해 줍니다.

마지막으로 레포팅에 대해 알아봅시다.

3. 레포팅

리더 에뮬레이터

우선 프로그램 하단에 보고횟수와 태그정보보고 항목이 보입니다.
보고횟수는 모든 리더 에뮬레이터로부터 클라이언트측으로 보고된 전체 횟수를 나타내며,
태그정보보고는 모든 리더에뮬레이터가 총 몇번의 태그정보를 클라이언트에 보냈는지를 표시합니다.
보고횟수와 태그정보보고 횟수가 다른 이유는, 한번의 보고에서 태그정보가 없을 수도
(태그가 읽히지 않은경우) 있고 반면, 한번의 보고에 다수의 태그정보가 보고 될 수도 있기 때문입니다.

리더 에뮬레이터

프로그램 화면 중간에는 TagReports/sec 수가 표시됩니다.
이는 초당 태그정보보고횟수의 평균을 나타 냅니다.

_M#]n

class diagram

클래스 다이어그램

본 프로그램의 구동 환경은 다음과 같습니다.
 JRE 1.4 이상. ( 소스 빌드시 JDK 5.0 이상 )
 MS Windows 혹은 Linux/Unix의 X-Window나 그에 준하는 GUI환경.

본 프로그램의 코드에는 다음과 같은 기법이 이용 되었습니다.
ServerSocket
Swing
Thread
JAVA Interface
Timer/TimerTask

마지막으로, 코드 수정과 개인적인 사용은 가능하지만 재배포와 상업적 이용은 허락하지 않습니다.

다운로드
리더 에뮬레이터 자체는 수백 kbyte수준이지만 JDK를 포함하고 있어
용량이 30mb 정도 됩니다.
파일을 다운로드 받으신 후 적당한 디렉토리에 압축을 해제 하시면
실행 프로그램과 소스, 매뉴얼을 보실 수 있습니다.

답글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.