用飞思卡尔DZ60做的串口程序,C语言
串口程序调通
串口功能是接收NMEA数据
经过解析后只留下&GPGGA………………*的数据
然后串口发送
现在串口程序调试完成,但是数据解析不会做,希望高手能提供个解析的代码。
用飞思卡尔DZ60做的串口程序
答案:1 悬赏:0 手机版
解决时间 2021-01-31 15:48
- 提问者网友:浪荡绅士
- 2021-01-30 23:11
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-01-30 23:40
你要做的只是按nmea_tokenizer_init解析出来,再按下面那一段把它更新所代表的变量即可。看一下就明白了啊。
这个是拿到一个NMEA语句之后进行解析的,解析成一个一个的token.
123 static int
124 nmea_tokenizer_init( NmeaTokenizer* t, const char* p, const char* end )
125 {
126 int count = 0;
127 char* q;
128
129 // the initial '$' is optional
130 if (p < end && p[0] == '$')
131 p += 1;
132
133 // remove trailing newline
134 if (end > p && end[-1] == '\n') {
135 end -= 1;
136 if (end > p && end[-1] == '\r')
137 end -= 1;
138 }
139
140 // get rid of checksum at the end of the sentecne
141 if (end >= p+3 && end[-3] == '*') {
142 end -= 3;
143 }
144
145 while (p < end) {
146 const char* q = p;
147
148 q = memchr(p, ',', end-p);
149 if (q == NULL)
150 q = end;
151
152 if (count < MAX_NMEA_TOKENS) {
153 t->tokens[count].p = p;
154 t->tokens[count].end = q;
155 count += 1;
156 }
157
158 if (q < end)
159 q += 1;
160
161 p = q;
162 }
163
164 t->count = count;
165 return count;
166 }
这个是拿到一个NMEA语句之后进行解析的,解析成一个一个的token.
123 static int
124 nmea_tokenizer_init( NmeaTokenizer* t, const char* p, const char* end )
125 {
126 int count = 0;
127 char* q;
128
129 // the initial '$' is optional
130 if (p < end && p[0] == '$')
131 p += 1;
132
133 // remove trailing newline
134 if (end > p && end[-1] == '\n') {
135 end -= 1;
136 if (end > p && end[-1] == '\r')
137 end -= 1;
138 }
139
140 // get rid of checksum at the end of the sentecne
141 if (end >= p+3 && end[-3] == '*') {
142 end -= 3;
143 }
144
145 while (p < end) {
146 const char* q = p;
147
148 q = memchr(p, ',', end-p);
149 if (q == NULL)
150 q = end;
151
152 if (count < MAX_NMEA_TOKENS) {
153 t->tokens[count].p = p;
154 t->tokens[count].end = q;
155 count += 1;
156 }
157
158 if (q < end)
159 q += 1;
160
161 p = q;
162 }
163
164 t->count = count;
165 return count;
166 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯