| 
黄金会员 主题
回帖0
积分7421
阅读权限40
注册时间2013-8-21
最后登录1970-1-1
在线时间 小时
 
 | 
| 先前有網友教導以 , 來計算他的接收位置,好像比較簡單!! //0819 跳過幾個逗號
 
 void JPDM(unsigned char DM)
 {
 rec=0;
 while(DM)//>dmt
 {
 while(rec==0);
 //        if (rec==1)
 {
 if(REV_DATA == ',')
 {
 rec=0;
 DM--;//dmt++
 }
 }
 }
 }
 
 我最近作了一個機車超速警報器
 
 unsigned char  Get_Gps(void)//改寫 gps 讀取程式 把 Gok=GPRMC_K() 取消
 {
 unsigned char TT;
 if(rec==1)
 {
 if(REV_DATA == '$')
 {
 rec=0;
 }
 }
 else
 {
 return 0;
 }
 while(rec==0);
 if(REV_DATA == 'G')
 {
 rec=0;
 }
 while(rec==0);
 if(REV_DATA == 'P')
 {
 rec=0;
 }
 while(rec==0);
 if(REV_DATA == 'R')//一路比較下去全部要相同 "GPVTG,"
 {
 rec=0;
 }
 else
 {
 return 0;
 }
 while(rec==0);
 if(REV_DATA == 'M')//一路比較下去全部要相同 "GPRMC,"
 {
 rec=0;
 }
 while(rec==0);
 if(REV_DATA == 'C')//一路比較下去全部要相同 "GPRMC,"
 {
 rec=0;
 }
 while(rec==0);
 if(REV_DATA == ',')//一路比較下去全部要相同 "GPRMC,"
 {
 rec=0;
 }
 else
 {
 return 0;
 }
 
 CLCKFL(6);//取 時分秒
 
 JPDM(1);
 while(rec==0);
 {
 GPS_AV = REV_DATA;
 }
 
 
 JPDM(5);//跳過5個逗號取速度000.00km
 SPEDFL(6);//取 速度000.00km
 TRNUM();
 
 TT=CLCK[0]*10+CLCK[1]+8;//時間補差格林威治對中原標準
 if(TT>23)
 TT-=24;
 CLCK[0]=TT/10;
 CLCK[1]=TT%10;
 
 return 1;
 
 }
 
 
 // ---------  GPS MAIN PROGRAM -------------
 
 void main(void)
 {
 unsigned char STR_DIS=5;
 Init_Timer0();
 UART_Init();
 CLCK[0]=1;
 CLCK[1]=2;
 CLCK[2]=0;
 CLCK[3]=0;
 
 while(1)
 {
 Get_Gps();
 Gok=1;//----------------------------test
 if(Gok==1)
 {
 if(dispt_flag)
 {
 Display_tData_Operation ();
 }
 else
 {
 Display_Data_Operation ();//轉換相關值到顯示
 }
 }
 if(ALRMSPEED>26 && ALRMSPEED<30)//時速在 50~60之間警報
 {
 alrm_flag=0;//-
 BZ=0;
 }
 else
 {
 alrm_flag=1;//*
 BZ=1;
 }
 
 if(disp_flag==1)
 {
 disp_flag=0;
 Display();
 }
 Display();
 }
 }
 //$GPRMC,115900.000,A,,N,,E,00.38,,    test pattern
 
 | 
 |