2012. 8. 27. 09:28

본문스크랩 WM에서의 GPS 구동 원리 설명(GPSGate 등의 사용, XTRA, SNTP) 비공개 GPS

2011/01/04 16:49 수정 삭제

복사 http://blog.naver.com/mahamaha7777/150100161588

출처 카페 > 스마트폰카페[갤럭시S/아이폰.. | jinhwkim00
원문 http://cafe.naver.com/bjphone/620278

먼저 WM의 GPS의 구동 원리부터 간단히 설명합니다.

WM 5 버전 이후부터는 GPS의 관리가 OS로 넘어왔습니다. 그 전 버전은 그냥 시리얼포트...

WM에서는 GPS 장치를 위해 2개의 시리얼 포트를 이용합니다. 설정에 보면 프로그램포트와 하드웨어포트가 그겁니다.

이걸 나눠놓은 이유는 기존의 하나의 실제 시리얼 포트를 이용하는경우 한 어플이 이를 선점하면 다른 어플이 열수 없는 구조 때문입니다. 그래서 하드웨어 포트는 실제 GPS장치의 포트를 지정하고 프로그램 포트는 어플들이 공유할 수 있는 가상 시리얼포트입니다.

첫번째 어플이 GPS 프로그램 포트를 열면 GPS가 켜집니다.(레퍼런스 카운트가 1증가) 그 어플이 GPS를 닫으면(레퍼런스 카운트가 0이됨) 아무도 GPS를 사용하지 않으므로 OS는 GPS를 끄겠지요(바로 끄지는 않는것 같습니다만 곧 꺼집니다) 하지만 이 어플이 GPS를 닫기전에 다른 어플이 또다시 GPS를 사용하면 사용 레퍼런스 카운트가 2가되면서 먼저 열었던 어플이 GPS사용을 중지하더라도 GPS가 계속 켜있게 됩니다.

 

GPSGate 또는 그밖에 GPS수신률을 높혀준다는 어플들은 모두 백그라운드에서 계속 켜져있습니다. 당연히 GPS는 꺼지지 않고 계속 켜있게 됩니다.

 

그럼 GPS가 계속 켜져있는 것과 꺼젔다 켜졌다하는것은 어떤 차이가 있을까요?

GPS는 위성에서 온 표준시각 차이를 이용해 위성과 현 위치의 거리를 일아낸 후 3개 이상의 위성에서의 거리로 삼각측량 방식으로 위치를 잡아냅니다. 이를 위해서는 정확한 현재시각을 먼저 알아내야 하는데 여러 위성에서 오는 신호들을 분석해서 각 위성의 위치와 정확한 시각, 거리를 알아냅니다.(좀 복잡합니다. 사실은 저도 완벽히 이해는 못했습니다...) 어쨋든 한번 위치를 잡으면 최소 2개의 위성만 계속 잡혀도 위치를 알아낼 수 있습니다. - 외장 블루투스 GPS로 테스트해보니 밖에서 위치를 잡은상태로 방안에 들어와도 유지가 되는 경우가 주로 이런 경우더군요. 모든 위성이 잡히지 않는 경우에도 이미 현재 시각은 보정을 해놓은 상태이므로 위성신호만 3개이상 잡히면 바로 위치를 다시 잡을 수 있습니다.

하지만 GPS를 끄게되면 앞에서 계산해놓은 현재시각, 위성위치 등의 정보가 날아가버리니 다시 위치를 잡는데 시간이 많이 걸리겠죠.

 

그럼 초기 위치를 잡는데 걸리는 시간에 영항을 주는 다른 요소를 알아보면 XTRA와 SNTP가 있습니다.

XTRA는 Assistant GPS(A-GPS)의 퀄컴 버전입니다. 네트웍을 통해 40kb정도의 데이터를 다운로드 받는데 거기에는 앞으로 약 6일간의 GPS위성들의 궤도 정보가 들어 있습니다. 어떤ID의 위성이 몇시에는 어디에있다는 정보지요. 이걸이용하면 위성의 위치를 파악하는 시간이 줄어들어서 빨리 위치를 잡을 수 있습니다.(http://www.navi4u.com/bbs/view.php?id=lecture&no=79)

또한 현 시각을 정확히 알아내면 위치를 빨리 잡는데 도움이되기때문에 일부 장치(옴니아2포함)에서는 SNTP(Simple Network Time Protocol - 인터넷을 통해 컴퓨터의 시각을 맞추는데 주로 이용합니다.)을 이용하여 시각을 보정합니다. 이건 한번 다운로드 받는게 아니고 데이터를 보내고 받는데 걸리는 시간을 보정해야 하기때문에 34byte 정도의 데이터를 몇번 보내고 받아 정확한 시각을 구합니다.(http://www.networksorcery.com/enp/protocol/sntp.htm)

 

일단 좀 정리해보면 그렇습니다.

 

일부 어플을 사용하면 GPS가 빨리 잡힌다는것은 그 S/W가 GPS 위치를 빨리 잡을 수 있도록 해준다기 보다는 일단 한번 잡으면 GPS를 계속 켜진상태로 유지하도록 해주어서 바로 위치를 잡아내는것 처럼 보이게 한다는겁니다. - 사실은 미리 위치를 잡아 놓았다는게 맞는 말이겠죠.

외장 GPS의 경우 배터리가 내장된 GPS의 경우 계속 켜두면 거의 항상 바로 위치를 잡을 수 있는 것과 동일한 원리입니다.

 

만일 주요 용도가 네비게이션 등 GPS를 많이 사용하신다면 도움이 되겠지만, 그렇지 않은 경우 GPS가 계속 켜져있으므로해서 발생하는 배터리 소모는 한번 생각해 보심이 좋을듯 합니다.

 

긴글 읽어주셔서 감사합니다.

제가 아는 한도내에서 GPS에 대한 내용을 좀 정리했습니다. 사용하시는데 도움이 되셨으면 하네요.

 

Posted by hoonihoon