'WM6.1'에 해당되는 글 1건

  1. 2009/06/13 Windows Mobile Motion Sensor Using C# (4)
C#2009/06/13 01:22

안녕하세요. 이번시간에는 Windows Mobile과 Motion Sensor가 탑제된 단말기에서 Sensor Data를 취득하기 위한 Library의 구현에 대해 알아보도록 하겠습니다. 테스트는 얼마전에 구입한 옴니아로 진행했으며 정상적으로 동작되는것을 확인 했습니다. 제가 특별히 동영상 촬영 장비가 없기때문에 이번 시간 구현 결과물은 영상으로 준비는 못했습니다요 ㅜㅜ 직접 실행 하시게 되면 아래와 같은 동작 화면을 확인 하실 수 있습니다. (이번시간 내용은 특별하게 UI를 고려하지 않아서 매우 심플합니다...... ㅎㅎ)

아직까지는 .Net CF를 사용하여 Windows Mobile을 개발하는 사람이 많질 않아서(최근에 점점 늘어나고 있다고합니다.) 그런지 당현이 있을 거라 생각했던 C#으로 구현된 Motion Sensor관련 코드가가 없는거 같아서 (대부분 C++로 구현되어 있더라구요..) 새로 구현하게 되었습니다. C#으로 구현했다고해서 기존 방식과 전혀 다른 방식으로 구현했다는 뜻은 아니며 기존의 C++로 구현된 내용을 C#으로 포팅 한것정도로 생각하시면 되겠습니다.

포팅시에 참고한 코드는 예전에 옴니아 소프트웨어공모전에서 삼성전자에서 배포한 MotionSensor관련 코드를 거의 그대로 포팅하고 몇가지 편리 기능정도만 추가 및 간단한 최적화 정도만 진행 한거라 잠재되어 있는 버그가 존재 할 수 있습니다.

간단하게 구조를 살펴보면 MotionSensorData, MotionSensorDataType, MotionSensor로 구성되어 있습니다. 각각의 항목에 대해 설명하면 아래와 같습니다.

- MotionSensorData : Motion Sensor로부터 수신한 XYZ축의 SensorData를 포함할수 있는 Structure입니다.
- MotionSensorDataType : MotionSensor와 통신할때 요청할 데이터 Type에 대한 Enum입니다.
- MotionSensor: 실제 Motion Sensor와 통신하는데 사용하는 Class입니다.

MotionSensor Class의 소스코드는 아래와 같으며 설명은 주석에 포함시켰습니다. 


※ 포인터를 사용하여 디바이스와 통신을 수행하기 때문에 unsafe 키워드를 사용했습니다.


그리고 아래는 실제 코드에서 MotionSensor객체를 사용하는 방법에 대해 설명입니다.

간단하게 MotionSensor객체를 생성하고 GetMotionSensorData()를 호출하거나 X,Y,Z Property를 바로 사용하시면 되겠습니다.
단, X,Y,Z Property를 사용하실때에는 해당 Property를 요청할때마다 데이터를 다시 수신하게 되므로 하나의 루틴에서는 해당 Property가 리턴한 값을 복사하여 사용하시면 되겠습니다.

이상으로 오늘 포스팅을 마치며 기타 궁금하신 점이나 다른 문의는 이메일 또는 리플로 남겨주시기 바랍니다.
아래는 이번시간에 구현한 소스코드입니다.







저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 곡스