티스토리 뷰



사물인터넷(IOT, Internet of Things)에 대한 기술과 다양한 응용이 폭증하고 있는 시대에 살고 있지만 RS-232, RS-422, RS-485등의 직렬 통신(Serial communication) 방법은 다양한 시스템의 기저에서 여전히 그 활용도가 높습니다. 요즘 나오는 노트북에는 직렬 포트를 없애고 USB로 대체하고 있지만 "COM1"으로 지칭하던 직렬포트는 USB to Serial 컨버터를 통해서 다양한 장치나 센서와의 정보 전달 방식으로 사용하고 있습니다. 

개발자의 입장에서는 통신속도나 사용자 프로토콜만 맞추어 주면 동기 또는 비동기 방식으로 장치와의 통신이 어렵지 않지만 새로운 장치를 붙이는 작업을 하다보면 전송한 데이터가 제대로 가는지 확인할 방법이 그다지 녹록치 않습니다.  값비싼 패킷 모니터링 장비나 직렬 모니터링 케이블이 있다면 그나마 다행이지만 그렇지 않은 경우에는 분석 작업이 쉽지 않습니다. 특히 소스 코드 없이 기존 프로그램의 정상 동작 여부를 확인하려면 패킷을 분석해야 하는데 하드웨어 모니터링 장비 없이도 패킷을 모니터링할 수 있는 오픈 소스 프로그램을 소개할 까 합니다. 데모형 유료 프로그램도 있지만 나름 깔끔한것 같습니다.

http://www.codeproject.com/Articles/311159/SIMPLE-SERIAL-PORT-MONITOR

위의 페이지에서 코드를 배포하고 있습니다. 다운로드 받은 코드의 라이선스는 BSD License로 매우 자유롭게 고쳐서 사용할 수 있으므로 기능이 부족하다 싶으면 나름 고쳐서 사용하면 좋을 것 같습니다. 다운로드 받은 파일을 같이 첨부합니다.


DkPortMon02.zip


다운로드 받은 파일을 압축해제하고 먼저 드라이버를 설치한 다음에 바로 모니터링을 수행하면 됩니다. 먼저 드라이버 설치를 시작합니다.

제어판>장치관리자를 열고 "레거시 하드웨어 추가"를 선택합니다.


DkPortMon은 따로 드라이버 설치 프로그램이 없기 때문에 이 방법으로 드라이버를 설치합니다. [다음]으로 진행합니다.


"목록에서 직접 선택한 하드웨어 설치"를 선택하고 [다음]으로 진행합니다.


하드웨어 종류로 "시스템 장치"를 선택하고 [다음]으로 진행합니다.


드라이버 파일을 직접 제공하기 위해서 [디스크 있음]을 클릭하고 압축 해제한 폴더의 Bin폴더의 윈도우 종류별 폴더를 [찾아보기]로 선택합니다. 


드라이버 폴더의 내용은 위의 그림과 같습니다. 


정상적으로 드라이버 폴더를 선택하면 위의 그림과 같이 "DkPortMon System Driver"가 나타납니다. 이 상태에서 [다음]으로 진행합니다.


[다음]으로 진행합니다.

앞서 창에서 "디지털 서명"이 없다는 메시지가 있었는데 그 이유로 위의 그림과 같은 경고창이 나오므로 "이 드라이버 소프트웨어를 설치합니다"로 진행합니다.

드라이버가 정상적으로 설치되면 위의 그림과 같이 시스템 장치에 "DkPortMon System Driver"를 확인할 수 있습니다. 이제 포트 모니터링을 수행하면 됩니다.


압축 해제한 폴더의 Bin 디렉토리에 있는 "DkPortMonGui.exe" 파일을 실행시킵니다. 물론 사전에 시스템에 장착된 직렬포트가 있거나 USB to Serial 컨버터가 장착되어 있어야 합니다.


프로그램이 실행되면 Tool>Select Port를 선택합니다.


목록에 나타난 "ProlificSerial0"를 선택하고 [OK]를 누릅니다.


Tool>Start를 선택하면 위와 그림과 같이 모니터링이 시작됩니다.


직렬 포트에 대한 읽기/쓰기를 비롯하여 Open, Close, 파라미터 설정등 직렬 포트에 대한 모든 작업을 모니터링하기 때문에 프로그래밍 과정의 모든 과정을 확인해 볼 수 있습니다. 그중에 데이터 송신은 "IRP_MJ_WRITE"로 확인 할 수 있고 수신은 "IRP_MJ_READ"로 확인할 수 있습니다.  주의할 점은 단순하게 제작된 프로그램이므로 버퍼 복사, 파일 저장등의 기능이 없고 비정상적인 환경에서는 시스템에 손상을 가할 수도 있으므로 주의하셔야 합니다. 필자의 경우에는 매우 유용하게 사용했습니다. 


댓글
댓글쓰기 폼