ݺߣ

ݺߣShare a Scribd company logo
https://www.facebook.com/mislecture
강의 : 정창용 / IT 공학부
Chapter 5. NMEA 0183 Parser의 구현
 Library diagram
 구현 : C++
NMEASentence
NMEAParser EventDelegator
GGA GLL ZDA…
Application
 NMEA 0183 sentence의 기본 클래스(base class)
 기능
 NMEA 문장을 설정하면 다음의 값을 얻거나 기능을 수행함
▪ Talker ID
▪ 문장의 종류(GGA, GLL, RMC, …)
▪ Field 개수
▪ 주어진 인덱스의 field 문자열 (0-based index)
▪ Checksum 검사
▪ Parsing
▪ Parsing된 데이터를 plain text로 출력
 이 클래스를 상속받아 GGA, GLL, RMC 등의 NMEA 0183 개
별 문장을 parsing하는 클래스를 구현함
 NMEASentence 클래스를 상속 받음
 NMEASentence의 virtual class인 Parse() 함수를 재정의
 Parse() 함수를 실행하면 각 field를 의미있는 멤버 변수에
할당
 각 멤버 변수를 읽을 수 있는 멤버 함수 제공
 실제로 NMEA 문장을 parsing하기 위한 관리자 클래스
 Application은 본 클래스의 인스턴스를 이용하여 parsing
을 수행함
 내부에 NMEASentence를 상속받은 각 GGA, GLL, RMC
등의 인스턴스를 가짐
 입력된 NMEA 문장에 따라 그 문장에 적합한 parser를 이
용하여 parsing을 수행함
 사용된 parser 객체를 이용하여 문장의 세부 field 값을 가
져올 수 있음
 생략
 NMEASentence 클래스
 Checksum 비교
▪ 입력 Sentence의 checksum 계산 함수 구현
▪ 입력 Sentence에 기록된 checksum 읽기
▪ 계산한 checksum과 읽은 checksum 비교
 TalkerID와 Sentence Type 가져오는 함수 구현
 Sentence의 field 값을 가져오는 함수
▪ string 형으로 가져오기
▪ 특정 type으로 가져오기
 GGA, GLL 클래스
 NMEASentence 클래스 상속
 각 포맷에 해당하는 필드를 멤버 변수로 가짐
 Parse() 함수 구현
▪ virtual 함수
▪ 각 포맷의 필드 값을 읽어옴
 읽어 들인 필드 값을 가져오는 함수 구현
▪ GetLatitude(), GetLongitude() 등
 NMEAParser 클래스
 SetSentence()
 Parse()
 PrintPlainText()
제5장 NMEA Parser 구현

More Related Content

제5장 NMEA Parser 구현

  • 1. https://www.facebook.com/mislecture 강의 : 정창용 / IT 공학부 Chapter 5. NMEA 0183 Parser의 구현
  • 2.  Library diagram  구현 : C++ NMEASentence NMEAParser EventDelegator GGA GLL ZDA… Application
  • 3.  NMEA 0183 sentence의 기본 클래스(base class)  기능  NMEA 문장을 설정하면 다음의 값을 얻거나 기능을 수행함 ▪ Talker ID ▪ 문장의 종류(GGA, GLL, RMC, …) ▪ Field 개수 ▪ 주어진 인덱스의 field 문자열 (0-based index) ▪ Checksum 검사 ▪ Parsing ▪ Parsing된 데이터를 plain text로 출력  이 클래스를 상속받아 GGA, GLL, RMC 등의 NMEA 0183 개 별 문장을 parsing하는 클래스를 구현함
  • 4.  NMEASentence 클래스를 상속 받음  NMEASentence의 virtual class인 Parse() 함수를 재정의  Parse() 함수를 실행하면 각 field를 의미있는 멤버 변수에 할당  각 멤버 변수를 읽을 수 있는 멤버 함수 제공
  • 5.  실제로 NMEA 문장을 parsing하기 위한 관리자 클래스  Application은 본 클래스의 인스턴스를 이용하여 parsing 을 수행함  내부에 NMEASentence를 상속받은 각 GGA, GLL, RMC 등의 인스턴스를 가짐  입력된 NMEA 문장에 따라 그 문장에 적합한 parser를 이 용하여 parsing을 수행함  사용된 parser 객체를 이용하여 문장의 세부 field 값을 가 져올 수 있음
  • 7.  NMEASentence 클래스  Checksum 비교 ▪ 입력 Sentence의 checksum 계산 함수 구현 ▪ 입력 Sentence에 기록된 checksum 읽기 ▪ 계산한 checksum과 읽은 checksum 비교  TalkerID와 Sentence Type 가져오는 함수 구현  Sentence의 field 값을 가져오는 함수 ▪ string 형으로 가져오기 ▪ 특정 type으로 가져오기
  • 8.  GGA, GLL 클래스  NMEASentence 클래스 상속  각 포맷에 해당하는 필드를 멤버 변수로 가짐  Parse() 함수 구현 ▪ virtual 함수 ▪ 각 포맷의 필드 값을 읽어옴  읽어 들인 필드 값을 가져오는 함수 구현 ▪ GetLatitude(), GetLongitude() 등
  • 9.  NMEAParser 클래스  SetSentence()  Parse()  PrintPlainText()