原子哥的gps解析程序,解析后的数据放在哪里了呀?

2019-07-21 01:30发布

[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]




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。