[mw_shl_code=c,true]//·ÖÎöGPRMCÐÅÏ¢
//gpsx:nmeaÐÅÏ¢½á¹¹Ìå
//buf:½ÓÊÕµ½µÄGPSÊý¾Ý»º³åÇøÊ×µØÖ·
void NMEA_GPRMC_Analysis(nmea_msg *gpsx,u8 *buf)
{
u8 *p1,dx;
u8 posx;
u32 temp;
float rs;
p1=(u8*)strstr((const char *)buf,"GPRMC");//"$GPRMC",¾­³£ÓÐ&ºÍGPRMC·Ö¿ªµÄÇé¿ö,¹ÊÖ»ÅжÏGPRMC.
posx=NMEA_Comma_Pos(p1,1); //µÃµ½UTCʱ¼ä
if(posx!=0XFF)
{
temp=NMEA_Str2num(p1+posx,&dx)/NMEA_Pow(10,dx); //µÃµ½UTCʱ¼ä,È¥µôms
gpsx->utc.hour=temp/10000;
gpsx->utc.min=(temp/100)%100;
gpsx->utc.sec=temp%100;
}
posx=NMEA_Comma_Pos(p1,3); //µÃµ½Î³¶È
if(posx!=0XFF)
{
temp=NMEA_Str2num(p1+posx,&dx);
gpsx->latitude=temp/NMEA_Pow(10,dx+2); //µÃµ½¡ã
rs=temp%NMEA_Pow(10,dx+2); //µÃµ½'
gpsx->latitude=gpsx->latitude*NMEA_Pow(10,5)+(rs*NMEA_Pow(10,5-dx))/60;//ת»»Îª¡ã
}
posx=NMEA_Comma_Pos(p1,4); //ÄÏγ»¹ÊDZ±Î³
if(posx!=0XFF)gpsx->nshemi=*(p1+posx);
posx=NMEA_Comma_Pos(p1,5); //µÃµ½¾­¶È
if(posx!=0XFF)
{
temp=NMEA_Str2num(p1+posx,&dx);
gpsx->longitude=temp/NMEA_Pow(10,dx+2); //µÃµ½¡ã
rs=temp%NMEA_Pow(10,dx+2); //µÃµ½'
gpsx->longitude=gpsx->longitude*NMEA_Pow(10,5)+(rs*NMEA_Pow(10,5-dx))/60;//ת»»Îª¡ã
}
posx=NMEA_Comma_Pos(p1,6); //¶«¾­»¹ÊÇÎ÷¾­
if(posx!=0XFF)gpsx->ewhemi=*(p1+posx);
posx=NMEA_Comma_Pos(p1,9); //µÃµ½UTCÈÕÆÚ
if(posx!=0XFF)
{
temp=NMEA_Str2num(p1+posx,&dx); //µÃµ½UTCÈÕÆÚ
gpsx->utc.date=temp/10000;
gpsx->utc.month=(temp/100)%100;
gpsx->utc.year=2000+temp%100;
}
}[/mw_shl_code]
这是放到这个结构体里了?
[mw_shl_code=c,true]__packed typedef struct
{
u8 svnum; //¿É¼ûÎÀÐÇÊý
nmea_slmsg slmsg[12]; //×î¶à12¿ÅÎÀÐÇ
nmea_utc_time utc; //UTCʱ¼ä
u32 latitude; //γ¶È ·ÖÀ©´ó100000±¶,ʵ¼ÊÒª³ýÒÔ100000
u8 nshemi; //±±Î³/ÄÏγ,N:±±Î³;S:ÄÏγ
u32 longitude; //¾­¶È ·ÖÀ©´ó100000±¶,ʵ¼ÊÒª³ýÒÔ100000
u8 ewhemi; //¶«¾­/Î÷¾­,E:¶«¾­;W:Î÷¾­
u8 gpssta; //GPS״̬:0,δ¶¨Î»;1,·Ç²î·Ö¶¨Î»;2,²î·Ö¶¨Î»;6,ÕýÔÚ¹ÀËã.
u8 posslnum; //ÓÃÓÚ¶¨Î»µÄÎÀÐÇÊý,0~12.
u8 possl[12]; //ÓÃÓÚ¶¨Î»µÄÎÀÐDZàºÅ
u8 fixmode; //¶¨Î»ÀàÐÍ:1,ûÓж¨Î»;2,2D¶¨Î»;3,3D¶¨Î»
u16 pdop; //λÖþ«¶ÈÒò×Ó 0~500,¶ÔӦʵ¼ÊÖµ0~50.0
u16 hdop; //ˮƽ¾«¶ÈÒò×Ó 0~500,¶ÔӦʵ¼ÊÖµ0~50.0
u16 vdop; //´¹Ö±¾«¶ÈÒò×Ó 0~500,¶ÔӦʵ¼ÊÖµ0~50.0
int altitude; //º£°Î¸ß¶È,·Å´óÁË10±¶,ʵ¼Ê³ýÒÔ10.µ¥Î»:0.1m
u16 speed; //µØÃæËÙÂÊ,·Å´óÁË1000±¶,ʵ¼Ê³ýÒÔ10.µ¥Î»:0.001¹«Àï/Сʱ
}nmea_msg; [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
只在main.c里看到一句 nmea_msg gpsx;
没懂gpsx这个是怎么定义的,比如我想只打印输出经度数据?
一周热门 更多>