수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

GPS 프로그래밍에 관한 질문입니다.

해솔

2023.04.01

gps 프로그래밍 할 때 버퍼에 저장된 문자열을 읽어오는 것에 관한 질문입니다.
nmea 프로토콜로 저장된 데이터를 구분자(,)를 이용해서 파싱하는데 그러기 위해서
인터럽트 방식으로 버퍼에 저장된 문자열을 $gpxxx단위로 읽어 오는 타이밍과 방법에 관한 아이디어가
궁금합니다. 질문 내용 : mcu에서 gps 프로그래밍 하는 방법에 관해서 궁금한 것이 있습니다.

보통 nmea 프로토콜에 따라 gpgga, gpvtg....등등이 있고 그에 따라 여러 가지 정보들이 구분자(,)를 통해 각각 파싱하여

원하는 정보를 획득하는 것으로 알고 있습니다.

mcu에서 gps데이터를 인터럽트 방식으로 데이터를 버퍼에 쓰고 쓰여진 정보를 추출하여 원하는 정보를 얻어내려고 합니다.

이경우 데이터를 추출하는 타이밍을 언제로 하여야할지 잘 모르겠습니다.

버퍼에서 $gpxxx 한묶음 뽑아낸후 문자열에 저장하고 여기서 정보를 추출하는 것이 좋을까요? 버퍼의 크기를 최대한 줄이고

데이터를 추출하기전에 수신 인터럽트가 덮어써버리거나 수신인터럽트가 데이터를 업데이트 하기 전에 데이터를 추출하는

경우가 없게 하고 싶습니다.

프로그래밍 초보라서 좋은 아이디어가 잘 떠오르지 않아서 이렇게 글을 올립니다.

테일, 헤더 포인터만 이용하는 것은 한계가 있는것 같더라고요...좋은 의견 부탁드립니다.

감사합니다.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 나슬

    좀 어렵긴하지만 참고해서 다시 해보겠습니다. 답변 정말로 감사합니다

  • 키다리

    완전한 패킷이 왔다는 가정을 어떻게 세우느냐? 이게 관건이네요.
    보통은 하나의 패킷을 구성할때 사이즈+코드+데이타형태로 앞에 데이타 4바이트를 읽어서 다음의 데이타를 완전하게 읽었다고 생각해서 코딩을 합니다. 그런데 스트림으로 주면 끝을 구분하는게 ,이면 이 콘마가 올때상황과 안올때 받고 있을때 이렇게 3가지 상황별로 네트워크 상황을 만들어서 코딩하면 blocking/noblocking이든지 가능하지 않을까 생각합니다. 그럼 수고하세요.

  • 보예

    2. C로 구성할 경우 c는 noblocking 방식입니다. 즉 콜백함수 형태로 이벤트 방식이니까 시스템에게 등록한 콜백함수에 도착하면 알려주니까... 그 콜백함수에서 데이타를 어느정도 읽어들입니다. 이때 이 읽어드린 데이타를 큐로 구성해서 큐에데이타를 쌓아둡니다. 쌓아둔 데이타를 메인 프로세서가 매순간 체킹하는데 완전한 패킷이 왔다는 가정하에서 처리하고 읽어는 들였지만 완전환 패킷이 도착하지 안했다면 아직 다운로드중이라는 메세지를 출력해주면 되고요.

  • 반혈

    GPS는 잘몰라서 2가지 java/c형태에서 말씀드리면
    1. java형태는 blocking 방식 즉 프로세서가 돌아가다가 네트워크가 접속되어 있으면 네트워크 I/O를 접근해서 데이타가 들어왔는가? 즉 시스템에 데이타가 있는가?라는 검사하는 함수를 사용해서 읽을 데이타가 있으면 쭉 읽어들여서 readbuf에 보관합니다. 이readbuf를 큐로만들어서 rear에 데이타를 쓰고 front에서 꺼내가면 됩니다. 이때 데이타를 읽어들이는 방식이 thread방식

번호 제 목 글쓴이 날짜
2694778 순열 계산요. 맛조이 2025-05-14
2694754 ShowWindow 함수를 이용하려 하는데 질문있습니다. (2) 파도 2025-05-14
2694731 리눅스 커널의 시작점 질문 미르 2025-05-13
2694702 이거 뭐가문제인가요 코드수정좀 (3) 맑은 2025-05-13
2694675 C언어 후위표기를 중위표기로 앨런 2025-05-13
2694646 안녕하세요 파일 합치기 함수! (1) 연블루 2025-05-13
2694618 잘몰라서 설명부탁드립니다. scanf 관련 (3) 파라 2025-05-12
2694590 이 코드가 뭐하는 코드일까요? #2 빵순 2025-05-12
2694559 동적할당으로 배열(2차원열)을 만드는데 있어 그걸 함수화시키는데... (1) 늘솔길 2025-05-12
2694532 네트워크에 관하여... (4) 황소자리 2025-05-12
2694503 프로그램 연산 후 바로 종료되는 현상 (6) Judicious 2025-05-11
2694450 while문질문입니다. (1) 허리품 2025-05-11
2694420 C언어 질문할게요(유니코드,자료형,버퍼,캐스트연산자) 은새 2025-05-11
2694370 내일까진데 함수호출 제발 도와주세요!!!!!!!!!11 들찬 2025-05-10
2694339 putchar()의 괄호 안에 int c=10;로 전에 선언된 c를 넣으면 안되는 이유에서 제가 생각한 것이 그 이유가 되는지 확인하고 싶습니다. (3) 미르 2025-05-10
2694316 이 코드 어디가 잘못되었는지 고수분들 ㅠㅠ (2) 나빛 2025-05-10
2694285 언어 공부하는 과정 좀 추천해주세요! (1) 아빠몬 2025-05-09
2694258 카운터.. 질문입니다. (4) 하늘빛눈망울 2025-05-09
2694229 단순한 질문이요 (8) 여름 2025-05-09
2694202 용돈을 가지고 할 수 있는 일을 여러가지로 출력하는 방법 좀 알려주세요! (2) 미나 2025-05-09
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com