黄金会员
主题
回帖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
|
|