michgan software studio

.net compact framework에는 (3.5까지도) System.Threading.Semaphore 클래스가 빠져 있습니다. 그렇다고 Windows Mobile에서 Semaphore를 쓸 수 없는 것은 아닙니다. CE용의 Win32 API로는 CreateSemaphore 와 ReleaseSemaphore가 존재하기 때문이죠.

따라서 Semaphore 클래스가 필요하다면 Win32 API를 P/Invoke로 호출하는 wrapper 클래스를 만들면 되겠습니다. 

이 소스에서는 System.Threading namespace에 직접 Semaphore를 추가하고 있습니다. 원래는 일개 평민은 System namespace를 건드리면 안 되겠지만, .net CF와 일반 프레임워크 간의 호환성을 위해서 침범했다고 합시다.

주의: 내부적으로 호출하는 Win32 함수에 대한 에러 처리가 되어 있지 않습니다.

코드 보기


저작자 표시 비영리 동일 조건 변경 허락


Windows Mobile 6.0 SDK 를 설치하셨다면, 아래 위치에 샘플 소스코드가 같이 설치됩니다.

64 비트 Windows의 경우:
C:\Program Files (x86)\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

32 비트 Windows의 경우:
C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

위도, 경도, 고도 정도만 측정하는 경우라면 이 소스를 사용해도 괜찮을거 같네요.

저작자 표시 비영리 동일 조건 변경 허락


이번 글에서는 Windows Mobile 휴대폰에서 기지국 정보를 구하는 방법을 소개합니다.

3G 네트워크에서는 기지국 하나가 커버할 수 있는 반경이 2-3km 정도 되기 때문에 기지국 정보만으로도 제한적인 위치 정보 기반 서비스를 할 수 있습니다. 특히 지하에서는 전파 전달이 잘 되지 않기 때문에 곳곳에 기지국을 설치해야 하죠. 때문에 기지국 ID를 알아낼 수 있다면 사용자가 현재 어느 지하철 역에 있는지, 어느 쇼핑몰 안에 있는지, 어느 대학교 안에 있는지를 구분해서 서비스를 제공할 수 있을 것입니다. 지하철에서는 배차 정보나 행선지 찾기 서비스에 응용할 수도 있고, 쇼핑몰에서는 약도나 상품 검색 서비스를 제공할 수 있을 것입니다.

C#으로 Cell ID를 가져오는 방법은 생각보다 복잡합니다. P/Invoke 라는 기술을 사용해야 하는데요. C 언어와 32비트 CPU에 대한 이해가 없으면 헤맬 가능성이 높습니다.

스크린 샷은 다음과 같습니다. 심플하게 MCC/MNC, LAC, CellId 를 찍어 주고 있습니다.

MCC는 국가 코드입니다. 450번이 우리나라인가봐요.
MNC는 통신망 코드입니다. 5번은 SKT 입니다. 전체 코드는 http://en.wikipedia.org/wiki/Mobile_Network_Code 에 나열되어 있습니다.
LAC하고 CellId가 지역/기지국 정보입니다.


코드에 대한 설명을 시작하겠습니다. 

너무 길어서 가려둡니다


저작자 표시 비영리 동일 조건 변경 허락

Passive Sync 시작

document l 2009/01/03 14:19
이제 Windows Mobile 기기에서도 .net framework 프로그램을 충분히 구동할 만한 환경이 되었기에, .net compact framework를 사용하여 프로그램을 해보고자 한다.

궁극적으로 구현하려고 하는 바는 인터넷을 통해 google의 calendar와 PDA의 Pocket Outlook 이벤트를 동기화하는 프로그램이다. 이미 그런 목적으로 GMobileSync 라는 프로그램이 등장하긴 했지만, 뭐, Pocket Outlook과 GDataAPI를 사용하는 연습을 해보기에는 좋은 주제인 것 같다.

프로젝트 이름은 PassiveSync라 짓는다. MS의 ActiveSync를 비꼬는 의미도 있지만, 크레들에 꽂으면 자동으로 시작하는 ActiveSync와는 다르게 사용자가 수동으로 시작해줘야 sync가 된다는 의미에서 Passive Sync라는 작명은 프로그램의 동작 방식에 꽤 어울린다.

본 프로젝트는 일단 다음과 같은 수순으로 진행하려고 한다.
  * Pocket Outlook 의 데이타에 접근하는 방법
  * Google DATA api 사용법
  * Pocket Outlook의 이벤트와 Google Calendar의 이벤트의 항목 비교
  * 위에서 Contact 도 비교해봄.
  * Passive Sync 프로그램 구현.

저작자 표시 비영리 동일 조건 변경 허락

1 
BLOG main image
michgan software studio
Copyright (c) 1992-2008 michgan
by michgan

카테고리

분류 전체보기 (60)
release (34)
document (23)
review (1)