📄 gps.lst
字号:
217 1 if(i==0) return;
218 1
219 1 if( GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
220 1 GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
221 1 GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
222 1 GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9'||
223 1 GprmcBuff[i+5]<'0'||GprmcBuff[i+5]>'9'||
224 1 GprmcBuff[i+6]<'0'||GprmcBuff[i+6]>'9')
225 1 return;
226 1
227 1 xYear =(GprmcBuff[i+5]-'0')*10+GprmcBuff[i+6]-'0';
228 1 xMonth=(GprmcBuff[i+3]-'0')*10+GprmcBuff[i+4]-'0';
229 1 xDay =(GprmcBuff[i+1]-'0')*10+GprmcBuff[i+2]-'0';
230 1
231 1
232 1 i=Split(GprmcBuff,GPRMC_SPEED);
233 1 if(i==0) return;
234 1 if(GprmcBuff[i+4]=='.')
235 1 {
236 2 if(GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
237 2 GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
C51 COMPILER V7.08 GPS 04/06/2008 23:24:33 PAGE 5
238 2 GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
239 2 GprmcBuff[i+4]!='.'||
240 2 GprmcBuff[i+5]<'0'||GprmcBuff[i+5]>'9')
241 2 return;
242 2 Speed = (GprmcBuff[i+1]-'0')*1000+(GprmcBuff[i+2]-'0')*100+(GprmcBuff[i+3]-'0')*10+(GprmcBuff[i+5]-
-'0'); /*ELARGE 10*/
243 2 }
244 1 else
245 1 if(GprmcBuff[i+3]=='.')
246 1 {
247 2 if(GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
248 2 GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
249 2 GprmcBuff[i+3]!='.'||
250 2 GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9')
251 2 return;
252 2 Speed = (GprmcBuff[i+1]-'0')*100+(GprmcBuff[i+2]-'0')*10+(GprmcBuff[i+4]-'0'); /*ELARGE 10*/
253 2 }
254 1 else
255 1 if(GprmcBuff[i+2]=='.')
256 1 {
257 2 if(GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
258 2 GprmcBuff[i+2]!='.'||
259 2 GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9')
260 2 return;
261 2 Speed = (GprmcBuff[i+1]-'0')*10+(GprmcBuff[i+3]-'0'); /*ELARGE 10*/
262 2 }
263 1 else
264 1 if(GprmcBuff[i+1]==',' && GprmcBuff[i+2] != '.' && GPSav==1)
265 1 {
266 2 Speed = 0;
267 2 }
268 1 else
269 1 return;
270 1
271 1 JWDMode=JWD_DU;
272 1
273 1 sprintf(TP_UD,"Lat:");
274 1 if(JWDMode==JWD_DU) //度,如114。573124度
275 1 {
276 2
277 2 i= LatDeg;
278 2 j= (LatMin1*10000+LatMin2)/60; //33.4264 ==> 33*10000=330000+4264=334264/60=5571
279 2 k= (LatMin1*10000+LatMin2-j*60); //(334264-5571X60)=4/60
280 2 k=k*100/6;
281 2 if(k>=100)
282 2 sprintf(cmd,"%d.%d%d",i,j,k);
283 2 else
284 2 {
285 3 sprintf(cmd,"%d.%d0%d",i,j,k);
286 3
287 3 }
288 2
289 2 }
290 1 else
291 1 if(JWDMode==JWD_DMS) //度分秒 如114。27'34"
292 1 {
293 2
294 2 i= LatDeg;
295 2 j= LatMin1; //MIN
296 2 k= LatMin2*60/10000; //SEC
297 2
298 2 sprintf(cmd,"%d %d'%d\"",i,j,k);
C51 COMPILER V7.08 GPS 04/06/2008 23:24:33 PAGE 6
299 2
300 2
301 2 }
302 1 strcat(TP_UD, cmd);
303 1 strcat(TP_UD, "\r\n");
304 1 strcat(TP_UD, "Long:");
305 1
306 1 if(JWDMode==JWD_DU) //度,如114。573124度
307 1 {
308 2 i= LonDeg;
309 2 j= (LonMin1*10000+LonMin2)/60; //33.4264 ==> 33*10000=330000+4264=334264/60=5571
310 2 k= (LonMin1*10000+LonMin2-j*60); //(334264-5571X60)=4/60
311 2 k=k*100/6;
312 2 if(k>=100)
313 2 sprintf(cmd,"%d.%d%d",i,j,k);
314 2 else
315 2 {
316 3 sprintf(cmd,"%d.%d0%d",i,j,k);
317 3
318 3 }
319 2 }
320 1 else
321 1 if(JWDMode==JWD_DMS) //度分秒 如114。27'34"
322 1 {
323 2 i= LonDeg;
324 2 j= LonMin1; //MIN
325 2 k= LonMin2*60/10000; //SEC
326 2 sprintf(cmd,"%d %d'%d\"",i,j,k);
327 2
328 2 }
329 1
330 1 strcat(TP_UD, cmd);
331 1 strcat(TP_UD, "\r\n");
332 1 strcat(TP_UD, "Speed:");
333 1
334 1 i= (Speed/10);
335 1 j= Speed%10;
336 1 sprintf(cmd,"%d.%d",i,j);
337 1 strcat(TP_UD, cmd);
338 1 strcat(TP_UD, "\r\n");
339 1
340 1 sprintf(cmd,"%d-%d-%d",(int)xYear+2000,(int)xMonth,(int)xDay);
341 1 strcat(TP_UD, cmd);
342 1 strcat(TP_UD, "\r\n");
343 1
344 1
345 1 sprintf(cmd,"%d:%d:%d",(int)xHour+8,(int)xMin,(int)xSec);
346 1 strcat(TP_UD, cmd);
347 1 strcat(TP_UD, "\r\n");
348 1
349 1
350 1
351 1 GPSns = ((GprmcBuff[i+10]=='N')? 1:0);
352 1 GPSew = ((GprmcBuff[i+23]=='E')? 1:0);
353 1
354 1 GPSReady = TRUE;
355 1
356 1 }
357
358
359 void ParseNMEA0183(uchar* GpsBuff)
360 {
C51 COMPILER V7.08 GPS 04/06/2008 23:24:33 PAGE 7
361 1
362 1
363 1 if(strncmp(GpsBuff, "$GPRMC",5)==0)
364 1 {
365 2
366 2 /*jiuwang data format:*/
367 2 /* $GPRMC,090058.01,A,2233.4264,N,11406.1970,E,000.0,000.0,041206,002.1,W,A*29*/
368 2 if(GpsBuff[6]==',')
369 2 {
370 3 ParseGPRMC(GpsBuff);
371 3 }
372 2
373 2 }
374 1
375 1
376 1 }
377
378
379
380 void ReadGPS(void)
381 {
382 1 int i;
383 1 uchar retry;
384 1 #ifdef DEBUG_GPS
385 1 ParseNMEA0183(debug_gps);
386 1
387 1 #else
//if(GPS_UART1_RDY==FALSE) return NULL;
retry=250;
i=0;
while(retry--)
{
if((m_Buffer[i]=getdp310())=='$') break;
}
if(retry!=0)
{
while(1)
{
m_Buffer[++i]=getbyte1();
if(m_Buffer[i-1]=='\r' && m_Buffer[i]=='\n') break;
else if(i>100)break;
}
}
if(m_Buffer[0]=='$')
{
ParseNMEA0183(m_Buffer);
//gsmSendMessage();
#ifdef DEBUG
for(i=0;i<100;i++)
{
if(m_Buffer[i-1]=='\r' && m_Buffer[i]=='\n')
{
m_Buffer[i+1]=0;
putstring(m_Buffer);
break;
C51 COMPILER V7.08 GPS 04/06/2008 23:24:33 PAGE 8
}
}
#endif
m_Buffer[0]=NULL;
}
#endif
431 1
432 1
433 1 }
434
435
436
437
438
439
C51 COMPILATION COMPLETE. 2 WARNING(S), 2 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -