수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • 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방식

번호 제 목 글쓴이 날짜
2700562 함수포인터에서요 (7) 소심한여자 2025-07-06
2700530 전처리문 질문입니다. (1) 아놀드 2025-07-05
2700510 c언어를 어케하면 잘할수 있을까요.. 연연두 2025-07-05
2700484 두 개가 차이가 뭔지 알려주세요...(소수 찾는 프로그램) (2) 날위해 2025-07-05
2700426 인터넷 창 띄우는 질문이요 (1) 정훈 2025-07-04
2700400 원넓이를 계산이요 ㅜㅜ 천칭자리 2025-07-04
2700368 if에 관해서 질문이요... Orange 2025-07-04
2700339 이거 결과값이 왜이런건지.. (4) 그댸와나 2025-07-04
2700313 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) 크나 2025-07-03
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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