1. NMEA-0183 Parser 실습 과제
1. 구현내용
1) GGA, GLL, RMC sentence를 parsing하여 각 필드의 내용을 텍스트 파일로 저장하는 기능을 구현
한다. 각 sentence 형식은 수업내용 4강을 참조한다.
각 문장의 예는 아래와 같다.
$GPGGA,004952,3723.8259,N,12655.3071,E,1,04,04.7,00046.9,M,018.1,M,,*4F
$GPGLL,4717.115,N,00833.912,E,130305.0,A,*32
$GPRMC,004952,A,3723.8259,N,12655.3071,E,000.0,088.7,291107,,,A*72
2) 정규화된 형식의 파일을 읽어 RMC sentence를 생성하는 기능을 구현한다.
정규화된 파일의 형식은 다음과 같다.
RMC|{날짜/시간}|{데이터품질}|{위도}|{경도}|{속도}|{경로}|{보정편차}|{Mode}
ㄱ. 각 필드는 ‘|’ 기호로 구분된다.
ㄴ. 필드 값이 없을 경우에는 ‘NULL’로 표기한다.
ㄷ. {날짜/시간} 필드는 “YYYY-MM-DD HH:MM:SS” 형식의 Local Time(UTC+9)이다.
ㄹ. {데이터품질} 필드는 ‘A’ 혹은 ‘V’로 표시된다.
ㅁ. {위도}는 “도(degree) 분(minute) 초(second) {N/S}” 형식이다.
34? 12’ 34.5678” N
ㅂ. {경도}는 “도(degree) 분(minute) 초(second) {E/W}” 형식이다.
128? 09’ 01.3452” E
ㅅ. 속도는 실수(double)형 값이다.
ㅇ. 경도는 실수(double)형 값이다.
ㅈ. 보정편차는 실수(double)형 값이다.
단, 양수 값은 보정편차 방향이 E, 음수 값은 보정편차 방향이 W임
ㅊ. Mode는 항상 ‘A’로 한다.
<데이터 샘플>
3) 결과 프로그램은 아래와 같이 동작해야 한다. (실행파일이 NMEAParser.exe로 가정함)
ㄱ. NMEA sentence를 parsing하는 기능
[형식] NMEAParser.exe–p {입력데이터} –o {출력파일명}
[실제사용] NMEAParser.exe –p nmea_sample.txt –o output.txt
RMC|2013-09-30 09:30:24|A|34? 12’ 34.5678” N|128? 09’ 01.3452” E|5.6|80.3|NULL|A
RMC|2013-09-30 09:31:54|A|34? 23’04.3678” N|129? 09’ 04.4582” E|3.6|123.3|0.1|A
2. ㄴ. NMEA sentence를 생성하는 기능
[형식] NMEAParser.exe–m {입력데이터} –o {출력파일명}
[실제사용] NMEAParser.exe –m making_data.txt –o output.txt
ㄷ. 단, ‘-o’ 옵션이 지정되지 않으면 화면에 출력한다.
2. 준수사항
1) 개발 언어는 C/C++로 한다. (표준 C/C++ 이외의 외부 라이브러리 사용은 안됨)
2) 정규표현식(Regular Expression)을 사용하지 않는다.
3) 구현내용에 기술된 모든 기능이 구현되어야 한다.
단, 일부분만 구현한 경우에는 부분 점수 부여함
4) Sentence parsing 후 각 필드의 데이터는 해당 데이터 타입에 맞게 저장하고 있어야 한다.
ㄱ. 위, 경도: double 형
ㄴ. 날짜, 시간 : 년, 월, 일, 시, 분, 초를 각각 int 형
ㄷ. 속도, 경로, 높이 : double 형
ㄹ. 그 외 : 적절한 데이터 타입 지정
3. 제출내용 (timothy97@gmail.com)
1) 프로그램 소스 코드 (C/C++, 컴파일이 가능한 형태)
ㄱ. 결과물은 zip 혹은 7z 파일로 압축할 것.
파일명은 “학번_이름_NMEAParser”으로 할 것
ㄴ.솔루션 폴더 내의 Debug, Release 폴더와 *.sdf 파일은 포함하지 말 것.
ㄷ. 제출한 코드가 컴파일이 되지 않으면 감점 처리함. (단순히 VS 설정에 관한 문제는 상관없음)
2) 소스 코드 내에 특이한 사항이나 아이디어가 있는 경우에는 별도의 문서를 파일(MS-Word)로 제
출할 수 있음