티스토리 뷰

Mobile

Windows CE 5.0 에뮬레이터로 시리얼통신하기

알 수 없는 사용자 2011. 3. 21. 17:02

Source : http://dukemon.tistory.com/44

 

 

졸업작품때문에 Windows CE 5.0용 어플리케이션을 만들일이 생겨서 나름 용돈으로 책도 사보고 eMbedded Visual C++ 4.0, Windows CE 5.0 Standard SDK도 설치해보고, 여러가지 예제 프로그램도 짜보고 있다.
문제는 시리얼 통신이었다. 실제 타겟 보드가 있다면 별 문제 없겠지만, 타겟 보드 없이 에뮬레이터로 시리얼 통신하려니까 난감하기 짝이 없었다. 에뮬레이터의 도움말에는 분명히 개발용 컴퓨터의 실제 시리얼 포트와 매핑시킬 수 있다고는 되어 있는데 하는 방법이 제대로 안나와있었다.
결국 MSDN과 구글 그룹스 뒤진지 반나절 삽질 끝에... 겨우 알아냈다. (사실 꼼꼼하게 검색했으면 좀 더 빨리 알아냈을수도...ㅜ.ㅜ)
먼저 Standard SDK에 포함된 에뮬레이터는 eVC++ 4.0에서 바로 실행해볼 수 있지만 시리얼 통신 매핑이 안먹는다. 구글링한 결과 eVC++ 4.0의 [Tools]-[Configure Platform Manager]-[STANDARDSDK_500_Emulator]의 속성(Properties)에 들어가서 [Startup Server]의 콤보박스를 [Emulator Startup Server]로 해놓고,(아마 디폴트로 되어 있을듯) 그 옆에 [Configure]버튼을 클릭하면 나오는 Emulation Configuration Settings 창을 건드리면 된다고 한다. Communication 그룹 박스에 있는 Serial Port 2가 에뮬레이터의 COM1:과 매핑된다(Serial Port 1은 디버그 포트랑 매핑)고 하는데, 이거 안된다. 안되는지는 모르겠다. 되었으면 삽질할 필요도 없었겠다. ;;;

clip_image002

이런 방법으로 실제 포트와 매핑이 되지 않을 경우, 사용 가능한 다른 방법은 Command-Line Launch를 사용하는 것이다.
출처
MSDN : Using the Emulator in Smart Device Projects
MSDN : Emulator Command-Line Launch Options
이 방법을 사용하기 위해서는 Standard SDK에 포함된 에뮬레이터를 사용하기 보단 따로 Windows CE 5.0 Emulator를 설치하는 편이 나을 것이다. 처음에는 번거롭고 도통 MS의 생각을 이해하기 힘들었는데 글을 쓰면서 생각해 보니 이 방법을 사용하는 것이 직접 플랫폼 빌더를 사용해 Win CE 5.0 이미지로 테스팅 하기 쉽겠다는 생각이 든다. 위의 출처 중 두번째 문서를 읽어보면 알수 있겠지만, 에뮬레이터는 결국 CE OS 이미지를 PC상에서 실행시켜 주는 프로그램이고 그 명령의 첫번째 옵션 /CEImage 를 사용하여 다양한 CE OS 이미지 상에서 테스트 해볼 있다는 이 MS의 생각인 듯 싶다. (최근 VS 2005에서 Standard 에뮬레이터가 빠진 이유도 이런것이 아니었을까? ;;;)
좌우 당간 에뮬레이터를 설치했으면 한번 실행해보자. 시작메뉴에 보면 새로 설치한 에뮬레이터가 있을 것이다.

clip_image004

살펴 보면 인터넷 익스플로어도 있고, MSN 메신저도 있는 걸로 봐서 Standard SDK의 에뮬레이터보다 뭔가 기능이 많아 보인다. 아마 에뮬레이터 이미지가 Win CE Core License가 아닌 Professional License 버전의 이미지인가 보다.
다시 시리얼 포트를 매핑하기위한 Command-Line Launch를 적용해보자. 이 에뮬레이터를 실행하기 위해 클릭한 Sample CE Device 바로가기의 속성을 들어가보자.

clip_image006

이 창의 대상 부분의 에디트 박스를 보면 명령어가 나와있다. 여기다 옵션을 추가해주면 된다.

"C:\Program Files\Windows CE 5.0 Emulator\Emulator_500.exe" nk.cem /serialport2 COM1

이렇게 하면 Win CE 에뮬레이터의 COM1: 포트가 실제 개발용 PC의 COM1과 매핑이 된다. 이제 이것을 어떻게 테스트 하면 좋을까? PC 뒤에 있는 에뮬레이터와 매핑된 COM1에 널모뎀 케이블로 다른 장치와 연결하면 상관없겠지만 PC가 하나뿐인 상태에서는 가상 시리얼 포트 프로그램을 쓰는 것이 좋을 것이다.
Virtual Serial Port Kit 이라는 프로그램이 있다. 유료지만 15일간은 무료로 사용해볼 수 있다.
이 프로그램으로 필자는 COM2-COM3 가상 포트를 만들었다. 그리고 /serialport2 COM2로 옵션을 바꿔서 에뮬레이터를 실행하고, PC에서는 하이퍼터미널 같은 시리얼 통신 프로그램을 사용하여 COM3로 연결하면 된다.

clip_image008

에뮬레이터에 프로그램을 집어넣는 것은 에뮬레이터의 메뉴에 있는 기능중 [Folder Sharing] 기능을 사용하면 된다. 이 기능을 사용하면 로컬 PC의 디렉토리를 선택할 수 있는데, 선택한 디렉토리는 에뮬레이터상에서 이동식 디스크로 인식된다. 이 기능은 에뮬레이터를 껐다 키면 사라지는데, Command-Line Launch의 옵션 중 /sharedfolder 를 사용하면 에뮬레이터 실행시마다 자동으로 지정된다.

clip_image010

로컬 PC의 디렉토리 중에서 eVC++ 4.0에서 "Win32 (WCE emulator) Debug" 로 빌드한 이미지가 있는 디렉토리를 선택한다. 그러면 시리얼 통신을 사용하는 어플리케이션이 매핑된 실제 포트를 통해 제대로 통신이 됨을 확인할 수 있을 것이다.