亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gps_handle.c

?? C語言源代碼及相關(guān)資料
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************Copyright (c)**************************************************
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/


#include "config.H"

#define __AMOD_GPS_PARSER

char * startchar(char * str,char endch );
uint16 StrTOUINT(char * str,uint8 DBits);

/*******************************************************************************************
** Function name:      weekdayGet
** Descriptions:       根據(jù)輸入的日期,計算該日期對應(yīng)的星期數(shù)。
** Input parameters:  uiYear   年
                       uiMonth  月
                       uiDay    日    
** Output parameters: 無
** Returned value:     對應(yīng)的星期數(shù)
*******************************************************************************************/
INT32U weekdayGet(INT32U uiYear,INT32U uiMonth,INT32U uiDay)   
{   
    INT32U  uiDays[12] = {31,59,90,120,151,181,212,243,273,304,334,365};   
    INT32U  uiNum;
    uiNum = (INT32U)((uiYear-1L)*365 + uiDay + (uiYear-1L)/4 - (uiYear-1L)/100 + (uiYear-1L)/400);   
    if(uiMonth > 1)   
        uiNum+=uiDays[uiMonth-2];   
    if((uiMonth > 2)&&(uiYear%4==0&&uiYear%100!=0||uiYear%400==0))   
        uiNum++;   
    return   uiNum % 7;   
}   



GPS_DATA_TYPE	GPS_DATA;
//GPS故障后,置相關(guān)信息
uint8	Reset_GPS_DATA(RTC_DATETIME	*	dateTime)
{
	GPS_DATA.Time.Flag=0;	//故障
	
	GPS_DATA.Time.Hour = (uint8)(dateTime->Time_hour); 
	GPS_DATA.Time.Min = (uint8)(dateTime->Time_min); 
	GPS_DATA.Time.Sec = (uint8)(dateTime->Time_sec); 
	GPS_DATA.Time.ms = 0; //.sss
	GPS_DATA.Time.Day = (uint8)(dateTime->Time_day);
	GPS_DATA.Time.Mon = (uint8)(dateTime->Time_month);
	GPS_DATA.Time.Year = (uint8)(dateTime->Time_year-2000);
	GPS_DATA.Time.Week=(uint8)(dateTime->Time_week);

	//GPS_DATA.Latitude;
	//GPS_DATA.Longitude;
	GPS_DATA.Altitude=0;
	GPS_DATA.HDOP=0;
	GPS_DATA.VDOP=0;
	GPS_DATA.StlUsed=0;
	//////////GPS_DATA.Satellite[MAXSATELLITE];
	GPS_DATA.Speed=0;
	//GPS_DATA.Direction;
	GPS_DATA.Status=0;
	
	return	TRUE;
	
}

// Chad
char gw_tempout[128];

#if !defined(__AMOD_GPS_PARSER)

uint8	recv_GPS_data(char * temp, uint16 uiNum)
{	
	char *tempstr=NULL;
	char *p=NULL,*pp=NULL,*ppp=NULL;
	char * str_flag[2]={"$GPGGA","$GPRMC"};
	//unsigned short shRtnNum = 0 ;
	
	
	pp=temp;
// Chad: Add to display
	//__DBG3_printf2(pp, uiNum);
	//sprintf(gw_tempout,"\r\n===GPS: (%d:%d)===\r\n", uiNum, shRtnNum);
	//__DBG3_printf1(gw_tempout);
	
	while((p=strstr(pp,"$"))!=NULL)
	{
		if ((ppp=strstr(p+1,"$"))!=NULL)
		{
			// Chad
			//__DBG3_printf2(p, ppp-p);
							
			if ((ppp-p)>=50)
			{
				static char buff[TRANSINFOLEN/2];
				uint16	dataLen=0;
				
				
				dataLen=(uint16)(ppp-p);
				
				// Chad
				//__DBG3_printf2(p, dataLen);
				
				memset(buff,0,sizeof(buff));
				//////////memmove(buff,p,ppp-p);
				if(dataLen>TRANSLEN/2)	return	FALSE;
				memcpy(buff,p,dataLen);
// Chad: Remove
//				uartWrite(UART3,(uint8	*)buff,dataLen,NULL); 	//測試
				//__DBG3_printf2(buff, dataLen);
				//OSSchedLock();
// Chad: Add
				//sprintf(gw_tempout,"\r\n===GPS===\r\n");
				//uartWrite(UART3,(uint8	*)gw_tempout,strlen(gw_tempout),NULL); 	//測試				
				if(strstr(buff,str_flag[0])!=NULL && strstr(buff,"\r\n")!=NULL)
				{
				   tempstr=buff;
				   
				// Chad
					__DBG3_printf2(tempstr, dataLen);
				   
					startchar(tempstr,',');
					tempstr = tempstr+strlen(str_flag[0])+1;//$GPGGA,
					//UTC
					startchar(tempstr,',');
					GPS_DATA.Time.Hour = (uint8)(StrTOUINT(tempstr,2)); 
					GPS_DATA.Time.Min = (uint8)(StrTOUINT(tempstr+2,2)); 
					GPS_DATA.Time.Sec = (uint8)(StrTOUINT(tempstr+4,2)); 
					GPS_DATA.Time.ms = StrTOUINT(tempstr+7,strlen(tempstr+7)); //.sss
					tempstr = tempstr + strlen(tempstr)+1;//hhmmss.sss,
					//Latitude
					GPS_DATA.Latitude.dd = (uint8)(StrTOUINT(tempstr,2)); 
					GPS_DATA.Latitude.mm = (uint8)(StrTOUINT(tempstr+2,2)); 
					GPS_DATA.Latitude.mmmm = StrTOUINT(tempstr+5,4);//.mmmm
					tempstr = tempstr + 11;//ddmm.mmmm,							<--- should 11 ublox
					//N/S Latitude
					GPS_DATA.Latitude.Indicator = tempstr[0];
					tempstr = tempstr + 2;//N,
					//Longitude
					GPS_DATA.Longitude.ddd = StrTOUINT(tempstr,3); 
					GPS_DATA.Longitude.mm = (uint8)(StrTOUINT(tempstr+3,2)); 
					GPS_DATA.Longitude.mmmm = StrTOUINT(tempstr+6,4);//.mmmm
					tempstr = tempstr + 12;//dddmm.mmmm,							<--- should 12 ublox
					//E/W Longtitude
					GPS_DATA.Longitude.Indicator = tempstr[0];
					tempstr = tempstr + 2;//E,
					//Fix Indicator
					GPS_DATA.Status = (uint8)(StrTOUINT(tempstr,1) << 4);
					tempstr = tempstr + 2;//1,
					//Satellites Used
					GPS_DATA.StlUsed = (uint8)(StrTOUINT(tempstr,2));
					tempstr = tempstr + 3;//07,
					//HDOP
					tempstr = startchar( tempstr,',' );
					GPS_DATA.HDOP = (uint8)( StrTOUINT(tempstr, strlen(tempstr)-1) );	
					tempstr = tempstr+strlen(tempstr) + 1;//1.0,
					//Altitude
					tempstr = startchar( tempstr,',' );
					if((p=strchr(tempstr,'.'))!=NULL)
						tempstr[p-tempstr]='\0';
					if(tempstr[0] ==  '-' )//負(fù)數(shù)
					{
						tempstr++;
						GPS_DATA.Altitude = StrTOUINT(tempstr, strlen(tempstr));
						//GPS_DATA.Altitude = 0-GPS_DATA.Altitude;
						GPS_DATA.Altitude|=0x8000;
					}
					else
					{
						GPS_DATA.Altitude = StrTOUINT(tempstr, strlen(tempstr));
						GPS_DATA.Altitude&=(~0x8000);
					}
				
					
				}
				if(strstr(buff,str_flag[1])!=NULL && strstr(buff,"\r\n")!=NULL)
				{
				   tempstr=buff;
				   
				// Chad
					__DBG3_printf2(tempstr, dataLen);

					startchar(tempstr,',');
					tempstr = tempstr+strlen(str_flag[1])+1;//$GPGRMC,
					
					startchar(tempstr,',');
					GPS_DATA.Time.Hour = (uint8)(StrTOUINT(tempstr,2)); 
					GPS_DATA.Time.Min = (uint8)(StrTOUINT(tempstr+2,2)); 
					GPS_DATA.Time.Sec = (uint8)(StrTOUINT(tempstr+4,2)); 
					GPS_DATA.Time.ms = StrTOUINT(tempstr+7,strlen(tempstr+7)); //.sss
					tempstr = tempstr + strlen(tempstr)+1;//hhmmss.sss,
					//data flag
					GPS_DATA.Time.Flag = tempstr[0];
					tempstr = tempstr +2;
					
					GPS_DATA.Latitude.dd = (uint8)(StrTOUINT(tempstr,2)); 
					GPS_DATA.Latitude.mm = (uint8)(StrTOUINT(tempstr+2,2)); 
					GPS_DATA.Latitude.mmmm = StrTOUINT(tempstr+5,4);//.mmmm
					tempstr = tempstr + 11;//ddmm.mmmm,							<--- should 11 ublox
					//N/S Latitude
					GPS_DATA.Latitude.Indicator = tempstr[0];
					tempstr = tempstr + 2;//N,
					//Longitude
					GPS_DATA.Longitude.ddd = StrTOUINT(tempstr,3); 
					GPS_DATA.Longitude.mm = (uint8)(StrTOUINT(tempstr+3,2)); 
					GPS_DATA.Longitude.mmmm = StrTOUINT(tempstr+6,4);//.mmmm
					tempstr = tempstr + 12;//dddmm.mmmm,							<--- should 12 ublox
					//E/W Longitude
					GPS_DATA.Longitude.Indicator = tempstr[0];
					tempstr = tempstr + 2;//E
					startchar(tempstr,',');
					if(tempstr!='\0')
					{	
						ppp = tempstr + strlen(tempstr) + 1;
						if((p=strchr(tempstr,'.'))!=NULL)
							if(strlen(p)>2)
								tempstr[p-tempstr+2]='\0';
						GPS_DATA.Speed = StrTOUINT( tempstr, strlen(tempstr)-1) ;
						tempstr = ppp;//0.13,
						//Speed	
					}	
					else
					{
						GPS_DATA.Speed = 0;
						tempstr++;
					}
// Chad: Remove
//					uartWrite(UART3,(uint8	*)"+Speed=",7,NULL); 	//測試	
//					sprintf(str_flag[0],"%d+\n",GPS_DATA.Speed);
//					uartWrite(UART3,(uint8	*)str_flag[0],strlen(str_flag[0]),NULL); 	//測試
// Chad: Add
					//sprintf(gw_tempout,"\r\n+Speed=%d++\r\n",GPS_DATA.Speed);
					//uartWrite(UART3,(uint8	*)gw_tempout,strlen(gw_tempout),NULL); 	//測試

					startchar(tempstr,',');
					if(tempstr!='\0')
					{
						ppp = tempstr + strlen(tempstr) + 1;
						if((p=strchr(tempstr,'.'))!=NULL)
							tempstr[p-tempstr]='\0';
						GPS_DATA.Direction.ddd =  StrTOUINT(tempstr,strlen(tempstr));
						tempstr = tempstr + strlen(tempstr) + 1;
						if(tempstr!='\0')
						{	
					 		GPS_DATA.Direction.m =  (uint8)StrTOUINT(tempstr,strlen(tempstr));	
							tempstr = tempstr + strlen(tempstr) + 1;//306.62,
						}	
						tempstr = ppp;
	                			//Direction
	                		}
	                		else
	                		{
	                			GPS_DATA.Direction.ddd = 0;
	                			GPS_DATA.Direction.m = 0;
	                			tempstr++;
	                		}
// Chad: Remove
//	                		uartWrite(UART3,(uint8	*)"+Direction=",7,NULL); 	//測試	
//					sprintf(str_flag[0],"%d.%d+\n",GPS_DATA.Direction.ddd,GPS_DATA.Direction.m);
//					uartWrite(UART3,(uint8	*)str_flag[0],strlen(str_flag[0]),NULL); 	//測試
// Chad: Add
					//sprintf(gw_tempout,"\r\n+Direction=%d++\r\n",GPS_DATA.Direction.m);
					//uartWrite(UART3,(uint8	*)gw_tempout,strlen(gw_tempout),NULL); 	//測試
	                		
					GPS_DATA.Time.Day = (uint8)( StrTOUINT(tempstr, 2 ));
					tempstr = tempstr + 2;//dd;
					GPS_DATA.Time.Mon = (uint8)( StrTOUINT(tempstr, 2 ));
					tempstr = tempstr + 2;//mm;
					GPS_DATA.Time.Year = (uint8)( StrTOUINT(tempstr, 2 ));
					tempstr = tempstr + 2;//yy;
				
				}
				memset(buff,0,sizeof(buff));
				if(RTC_Init_OK!=2)	//GPS時間
				{
					RTC_InitDft();	//初始化RTC為當(dāng)前時間
						
				}
				/*
				else	if(GPS_DATA.Time.Flag!='A')
				{
					RTC_DATETIME	dateTime;
					RtcTime(&dateTime);
					Reset_GPS_DATA(&dateTime);//置為系統(tǒng)時間
					
				}
				*/
//				OSSchedUnlock();
				
			}
			
			pp=ppp;
			
		}
		else
			break;
		
	}

		
	return	TRUE;
	
}
#endif // end of #if !defined(__AMOD_GPS_PARSER)

/*********************************************************************************************************
** Function name:			startchar
**
** Descriptions:			check the string from head to end
**
** input parameters:		* str :string pointer
**							endch :end char
** Returned value:			char * :return the string
**         
********************************************************************************************************/
char * startchar(char * str,char endch )
{
	uint16 i=0;
	char * Ptr;
	Ptr=str;
	while(str[i])
	{
		if(str[i]==endch)
		{
			str[i]=0;
			return Ptr;
		}
		i++;
		if(i>30)
			break;
	}
	return NULL;
} 
/*********************************************************************************************************
** Function name:			StrTOUINT
**
** Descriptions:			change string to 16 bits integer
**
** input parameters:		* str :string pointer
**							DBits :string length
** Returned value:			uint16 :changed result
**         
********************************************************************************************************/
uint16 StrTOUINT(char * str,uint8 DBits)
{
	uint8	i=0;
	uint16	j=0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜精品理论片a级按摩| 成人听书哪个软件好| 欧美成人女星排名| 不卡免费追剧大全电视剧网站| 婷婷激情综合网| 国产日韩欧美精品在线| 欧美顶级少妇做爰| 97久久精品人人爽人人爽蜜臀| 韩国一区二区在线观看| 亚洲一区欧美一区| 中文字幕亚洲不卡| 亚洲精品视频在线观看网站| 欧美极品aⅴ影院| 日韩欧美高清一区| 欧美日韩一本到| 91最新地址在线播放| 夫妻av一区二区| 激情综合网av| 日韩在线一区二区| 亚洲午夜在线电影| 亚洲男同性视频| 亚洲手机成人高清视频| 中文av一区特黄| 国产亚洲综合av| 久久一留热品黄| 久久免费的精品国产v∧| 91麻豆精品久久久久蜜臀| 91福利在线免费观看| 成熟亚洲日本毛茸茸凸凹| 激情深爱一区二区| 六月丁香综合在线视频| 天天射综合影视| 亚洲va国产va欧美va观看| 国产精品欧美极品| 国产精品美女www爽爽爽| 欧美国产精品专区| 日本一区二区电影| 中文字幕av一区二区三区免费看| 精品国产一区二区国模嫣然| 日韩视频在线永久播放| 日韩你懂的在线观看| 日韩一区二区在线观看| 日韩精品一区二区三区视频在线观看| 欧美精品第1页| 日韩欧美在线123| 精品日韩99亚洲| 久久久99精品免费观看不卡| 欧美国产欧美亚州国产日韩mv天天看完整| 久久蜜桃av一区精品变态类天堂 | 久久国产精品一区二区| 日本在线播放一区二区三区| 人人狠狠综合久久亚洲| 日韩1区2区日韩1区2区| 老司机精品视频导航| 久久成人免费日本黄色| 精品一区二区在线免费观看| 国产一区二区三区| 国产**成人网毛片九色| 91在线小视频| 欧美中文一区二区三区| 欧美日韩精品系列| 日韩一区二区在线看片| 久久久久久久综合日本| 中文字幕日韩av资源站| 亚洲黄一区二区三区| 午夜精品福利视频网站| 麻豆国产欧美日韩综合精品二区| 久久99国产精品免费网站| 国产精品亚洲成人| 色噜噜夜夜夜综合网| 欧美在线视频全部完| 日韩欧美在线网站| 国产精品素人视频| 香蕉影视欧美成人| 蜜臀精品久久久久久蜜臀| 国产成a人亚洲| 欧洲人成人精品| 日韩精品一区国产麻豆| 国产精品无遮挡| 亚洲第一精品在线| 久久99精品久久只有精品| www.66久久| 在线亚洲一区观看| 日韩美一区二区三区| 国产精品福利电影一区二区三区四区| 亚洲高清视频的网址| 久久国产精品第一页| 成人a免费在线看| 欧美精品自拍偷拍动漫精品| 日韩一级片网址| 国产精品午夜久久| 丝瓜av网站精品一区二区 | 亚洲日本在线天堂| 日韩激情一区二区| 懂色中文一区二区在线播放| 欧美日韩一区二区欧美激情| 久久久国产精品午夜一区ai换脸| 亚洲国产综合在线| 高清不卡在线观看av| 欧美一区二区三区四区五区| 国产精品夫妻自拍| 国精产品一区一区三区mba视频| 日本精品一级二级| 国产欧美日韩在线观看| 视频一区在线播放| 91麻豆国产福利在线观看| 精品av久久707| 日日夜夜免费精品| 欧美一区二区三区播放老司机 | 日韩电影免费在线| 91亚洲精华国产精华精华液| 国产日韩欧美在线一区| 免费在线看成人av| 4438成人网| 亚洲一二三四区不卡| 99久久夜色精品国产网站| 久久九九久久九九| 美国毛片一区二区| 欧美一区二区三区视频免费播放| 亚洲图片欧美视频| 在线视频综合导航| 亚洲三级在线观看| 91在线视频在线| 亚洲天堂精品在线观看| 不卡影院免费观看| 亚洲国产精品精华液2区45| 国产麻豆午夜三级精品| 精品国精品国产尤物美女| 免播放器亚洲一区| 日韩一区二区三| 奇米777欧美一区二区| 欧美精品vⅰdeose4hd| 亚洲一区二区三区四区在线观看 | 国产乱子伦视频一区二区三区 | 欧美日韩情趣电影| 亚洲国产精品一区二区久久| 欧美性色aⅴ视频一区日韩精品| 亚洲日本乱码在线观看| 99久久精品免费| 亚洲视频在线一区观看| 91捆绑美女网站| 亚洲欧美国产毛片在线| 色丁香久综合在线久综合在线观看| 亚洲人成亚洲人成在线观看图片| 92国产精品观看| 一区二区三区av电影| 欧美亚洲综合久久| 日韩影院精彩在线| 精品美女在线观看| 成人免费的视频| 一区二区三区中文字幕在线观看| 在线观看欧美日本| 日韩有码一区二区三区| 26uuu精品一区二区在线观看| 国产一区不卡视频| 国产精品美女视频| 色综合久久中文综合久久97| 亚洲国产精品嫩草影院| 日韩一区二区三区视频在线 | 国产欧美一区二区三区鸳鸯浴| 国产成人一区在线| 亚洲精选免费视频| 在线综合+亚洲+欧美中文字幕| 精品一区二区免费视频| 国产日韩一级二级三级| 色综合天天综合色综合av| 亚洲综合另类小说| 欧美成人一级视频| 99久久精品免费观看| 日韩国产一二三区| 中文字幕乱码一区二区免费| 色综合天天综合色综合av| 日本欧美韩国一区三区| 国产亚洲短视频| 欧洲另类一二三四区| 国产曰批免费观看久久久| 国产精品久久久一区麻豆最新章节| 在线观看av一区| 黄页网站大全一区二区| 中文字幕亚洲视频| 精品欧美久久久| 欧洲国产伦久久久久久久| 精品在线免费视频| 一区二区三区四区不卡视频| 日韩亚洲欧美高清| 99re8在线精品视频免费播放| 日韩一区欧美二区| 国产精品不卡一区| 欧美一区国产二区| 91在线观看一区二区| 美女视频一区在线观看| 最新久久zyz资源站| 日韩欧美国产小视频| 欧洲av在线精品| 不卡一区二区中文字幕| 狠狠色伊人亚洲综合成人| 亚洲国产另类精品专区| 国产精品高潮久久久久无| 欧美精品一区二区三区蜜臀| 欧洲av一区二区嗯嗯嗯啊|