GPS 프로그래밍에 관한 질문입니다.
해솔
gps 프로그래밍 할 때 버퍼에 저장된 문자열을 읽어오는 것에 관한 질문입니다.
nmea 프로토콜로 저장된 데이터를 구분자(,)를 이용해서 파싱하는데 그러기 위해서
인터럽트 방식으로 버퍼에 저장된 문자열을 $gpxxx단위로 읽어 오는 타이밍과 방법에 관한 아이디어가
궁금합니다. 질문 내용 : mcu에서 gps 프로그래밍 하는 방법에 관해서 궁금한 것이 있습니다.
보통 nmea 프로토콜에 따라 gpgga, gpvtg....등등이 있고 그에 따라 여러 가지 정보들이 구분자(,)를 통해 각각 파싱하여
원하는 정보를 획득하는 것으로 알고 있습니다.
mcu에서 gps데이터를 인터럽트 방식으로 데이터를 버퍼에 쓰고 쓰여진 정보를 추출하여 원하는 정보를 얻어내려고 합니다.
이경우 데이터를 추출하는 타이밍을 언제로 하여야할지 잘 모르겠습니다.
버퍼에서 $gpxxx 한묶음 뽑아낸후 문자열에 저장하고 여기서 정보를 추출하는 것이 좋을까요? 버퍼의 크기를 최대한 줄이고
데이터를 추출하기전에 수신 인터럽트가 덮어써버리거나 수신인터럽트가 데이터를 업데이트 하기 전에 데이터를 추출하는
경우가 없게 하고 싶습니다.
프로그래밍 초보라서 좋은 아이디어가 잘 떠오르지 않아서 이렇게 글을 올립니다.
테일, 헤더 포인터만 이용하는 것은 한계가 있는것 같더라고요...좋은 의견 부탁드립니다.
감사합니다.
-
나슬
좀 어렵긴하지만 참고해서 다시 해보겠습니다. 답변 정말로 감사합니다
-
키다리
완전한 패킷이 왔다는 가정을 어떻게 세우느냐? 이게 관건이네요.
보통은 하나의 패킷을 구성할때 사이즈+코드+데이타형태로 앞에 데이타 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 |