본문 바로가기
dev, tech/navigation

JAVA를 이용한 GPS장비

by 구띵 2008. 9. 1.

소속 : 배재대학교 전자공학과 Digital System Lab.
만든이 : 03학번 김충겸



GPS 의 이해


현재 랩실에는 USB 타입의 GPS 가 있다.
전원공급+데이터입/출력을 USB 한개로만 한다.

GPS 데이터의 형식은 NMEA 08 로서 아래와 같다.

자세한 형식은 아래 파일을 다운로드 하시기 바랍니다.
GPS.pdf

----------------------------------------------------------------------------------------

GPS의 메시지 구성은 이렇습니다.

$GP<메시지ID: 3문자><데이터: 콤마로 구분>*<checksum: 16진수 2문자>CR/LF


GPS메시지는 한문장에 모든 정보를 다 주는것이 아니라

특정 메시지ID에는 특정 정보가 있는 것입니다.

즉 여러번 메시지를 받아서 원하는 정보를 골라 내는것입니다.

또한 에러체크를 해서 신뢰할수 없는 데이터를 제외시켜야하죠

그리고 또 GPS메시지를 몇개의 위성으로부터 받았나 그것도 잘봐야합니다.

0개면 제대로되지 않은 메시지죠 즉 건물안에 있거나 하면 0이 뜹니다.

------------------------------------------------
/* 에러검사
         *      checksum : '*' 뒤의 16진수 두자리로 표시한다.
         *      '$'와 '*' 사이의 각 문자를 XOR한 값을 표시한다.
         */

GPS메시지의 * 다음의 16진수 두문자는 체크썸 값입니다.
메시지의 $다음부터 *전까지의 문자들을 XOR 연산하여 나온값이 체크썸 값입니다.

일치하지 않으면 에러인것이죠
---------------------------------------------------

데이터 부분은 콤마로 구분되어서 여러가지 데이터가 있습니다.
주의할점은 메시지마다 데이터 갯수가 다 같지 않습니다.
어떤것은 9개 어떤것은 12개 이렇게 콤마로 구분되어 있습니다.

<GPS 메시지의 예>
$GPRMC,120757,A,5152.985,N,00205.733,W,000.0,349.4,230100,004.1,W*78\r\n



자바를 이용한 GPS 메시지 파싱


Java를 이용하여 시리얼 통신을 하려면

Java는 고급 언어입니다. 그래서 저수준 제어를 할수가 없습니다.
누군가가 이 점을 보완하려고 JNI(Java Native Interface)를 이용하여
Java에 시리얼 통신을 할수 있도록 만든 패키지가 있습니다.
그것이 바로 Java Communications  API 라는 것입니다.
현재는 Sun 사의 지원아래 개발되어 있고 버전은 3.0 까지 나와있습니다.

공식 개발된 버전은 솔라리스와 리눅스만 있습니다. 윈도우에서 사용하시려면 구버전인 2.0을 사용하셔야 합니다.
아래 파일을 다운받으시기 바랍니다.
commapi_2_0.zip
    설치법 :
       - win32com.dll 파일을 <java 설치경로>/bin/ 에 복사합니다.
       - comm.jar 파일을 Java에서 import 하여 사용하시면 됩니다.


공식 사이트 : http://java.sun.com/products/javacomm/
API : http://java.sun.com/products/javacomm/reference/api/index.html

API serial features:
  • Enumeration of ports (administrator and user configurable port mapping)
  • Port configuration (baud rate, speed, stop bits, parity)
  • Access to EIA232 standard DTR, CD, CTS, RTS and DSR signals
  • Transfer of data over RS-232 ports
  • Hardware and software flow-control options
  • Receive-buffer threshold control
  • Asynchronous event option for notification of:
    • Data available on an RS-232 port
    • Port hardware line level changes
    • Port ownership changes within a single JVM






GPS 메시지 저장 객체

다운로드 : Message.java


GPS 메시지를 받고 파싱 객체 (이걸로 실행하시면됩니다.)
다운로드 : GPS.java




이 게시물을..

댓글