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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? test_gps.c

?? ARM9.rar
?? C
字號:
/****************************************************************************
【文  件  名  稱】TEST_GPS.C
【功  能  描  述】三星S3C2410A板demo程序代碼
【程  序  版  本】4.0
【創(chuàng)建人及創(chuàng)建日期】icesoar//2003年11月19日19:26
【修改人及修改日期】icesoar//2004-12-8 17:25
****************************************************************************/

//***************************************************************************
#include "def.h"
#include "2410addr.h"
#include "config.h"
#include "board.h"
#include "utils.h"
#include "GPS.h"

extern unsigned long int strtoul(const char * /*nptr*/,
                                       char ** /*endptr*/, int /*base*/);

char GPS_DATA1[] = { "$GPRMC,014106.350,A,2232.9727,N,11355.2626,E,0.00,,060405,,,A*7A" } ;
extern char *strncpy(char * /*s1*/, const char * /*s2*/, unsigned int num /*n*/) ;
extern double atof(const char * /*nptr*/) ;
extern char *strcpy(char * /*s1*/, const char * /*s2*/);
//***************************************************************************
GPS_INFO Gps_Infor;
//***************************************************************************

typedef struct {
	U32 d;	//degree
	U32 c;	//cent
} Position_Info;

static Position_Info Latitude, Longitude;

/****************************************************************************
【功能說明】得到指定序號的逗號位置
****************************************************************************/
int Get_Comma_Position( int num,char *str )
{
	int i,j = 0 ;
	int len = strlen(str) ;
	for( i = 0; i < len; i++ )
	{
		if( str[i] == ',' )		j++ ;
		if( j == num )		return (i+1) ;	
	}
	
	return 0;	
}

/****************************************************************************
【功能說明】
****************************************************************************/
double Get_Double_Number( char *s )
{
	char buf[128];
	int i;
	double rev;
	i = Get_Comma_Position(1,s);
	strncpy( buf, s, i ) ;
	buf[i] = 0 ;
	rev = atof(buf) ;
	printf("s=%s ,buf= %s,val= %f\n",s,buf,rev);
	return rev;
	
}

static U32 StrToUL(char *s, int len)
{
	U32 ret;
	int i;
	
	ret = 0;
	for(i=0; i<len; i++) {
		if(!s[i])
			return ret;
		if(s[i]<'0'||s[i]>'9')
			return -1;
		ret *= 10;
		ret += s[i]-'0';
	}
	return ret;
}

static int Get_Position( char *s, Position_Info *p, int longi)
{
	char buf[10];
	
	memcpy(buf, s, 2+longi);
	buf[2+longi] = 0;
//	p->d = strtoul(buf, NULL, 10);	//strtoul in ads library is error!!!
	p->d = StrToUL(buf, 2+longi);
	//printf("[%d  %s %d]  ", p->d, buf, strtoul(buf, NULL, 0));
	memcpy(buf, s+2+longi, 2);
	memcpy(buf+2, s+5+longi, 4);
	buf[6+longi] = 0;
//	p->c = strtoul(buf, NULL, 10);
	p->c = StrToUL(buf, 6);
	//printf("[%d  %s]\n", p->c, buf);
	
//	memcpy(buf, s, 9);
//	buf[9] = 0;
//	printf("Position:%d.%d  %s\n", p->d, p->c, buf);
	
	return 0;
}

/****************************************************************************
【功能說明】將世界時間轉換為北京時間
****************************************************************************/
void UTC_To_BTC(date_time *GPS)
{
//如果秒號先出,再出時間數(shù)據,則將時間數(shù)據+1秒
	GPS_SEC++;		//加一秒
	if(GPS_SEC>59)
	{
		GPS_SEC=0;
		GPS_MIN++;
		if(GPS_MIN>59)
		{
			GPS_MIN=0;
			GPS_HOUR++;
		}
	}	

	GPS_HOUR+=8;		//小時加八
	if(GPS_HOUR>23)
	{
		GPS_HOUR-=24;
		GPS_DATE+=1;
		if(GPS_MONTH==2 ||
	   		GPS_MONTH==4 ||
	   		GPS_MONTH==6 ||
	   		GPS_MONTH==9 ||
	   		GPS_MONTH==11 )
	   	{
			if(GPS_DATE>30)
			{
				GPS_DATE=1;
				GPS_MONTH++;
			}
		}
		else
		{
			if(GPS_DATE>31)
			{
				GPS_DATE=1;
				GPS_MONTH++;
			}
		}
		
		if(GPS_YEAR % 4 == 0 )
		{
			if(GPS_DATE > 29 && GPS_MONTH ==2)
			{
		   		GPS_DATE=1;
				GPS_MONTH++;
			}
		}
		else
		{
			if(GPS_DATE>28 &&GPS_MONTH ==2)
			{
		   		GPS_DATE=1;
				GPS_MONTH++;
			}
		}

		if(GPS_MONTH>12)
		{
			GPS_MONTH-=12;
			GPS_YEAR++;
		}		
	}
}

#define MAX_TRASH_NUM	(12)
/****************************************************************************
【功能說明】解釋gps發(fā)出的數(shù)據

$GPRMC,014105.350,A,2232.9727,N,11355.2626,E,0.00,,060405,,,A*79
$GPGGA,014105.350,2232.9727,N,11355.2626,E,1,06,1.2,57.7,M,,,,0000*31
$GPGSA,A,3,28,20,08,02,23,13,,,,,,,2.0,1.2,1.6*35
$GPGSV,3,2,09,20,30,048,30,02,16,252,36,13,08,131,34,08,08,186,26*7F
****************************************************************************/
U8 GPS_Parse(  char *line, GPS_INFO *GPS )
{
	static int tmp ;

	if( GPS_BUF[5] == 'C' )//"GPRMC"
	{
		GPS_HOUR = ( GPS_BUF[7]-'0' )*10 + ( GPS_BUF[8]-'0' ) ;
		GPS_MIN = ( GPS_BUF[9]-'0' )*10 + ( GPS_BUF[10]-'0' ) ;
		GPS_SEC = ( GPS_BUF[11]-'0' )*10 + ( GPS_BUF[11]-'0' ) ;
		//printf("sec=%d ", GPS_SEC);
		//*********************************************************************
		tmp = Get_Comma_Position( 9, GPS_BUF ) ;  //第九個逗號后面是年月日信息
		GPS_DATE = ( GPS_BUF[tmp+0]-'0' )*10 + ( GPS_BUF[tmp+1]-'0' ) ;
		GPS_MONTH = ( GPS_BUF[tmp+2]-'0' )*10 + ( GPS_BUF[tmp+3]-'0' ) ;
		GPS_YEAR = ( GPS_BUF[tmp+4]-'0' )*10 + ( GPS_BUF[tmp+5]-'0' ) + 2000 ;
		//*********************************************************************
		GPS_STATUS = GPS_BUF[Get_Comma_Position(2,GPS_BUF)];  //第二個逗號后是狀態(tài)信息
		//LATITUDE = Get_Double_Number( &GPS_BUF[Get_Comma_Position(3,GPS_BUF)] );  //第三個逗號后面是緯度信息
		Get_Position(&GPS_BUF[Get_Comma_Position(3,GPS_BUF)], &Latitude, 0);
		GPS_NS = GPS_BUF[ Get_Comma_Position(4,GPS_BUF) ];		//第四個逗號后面是北半球南半球指示信息
		//LONGITUDE = Get_Double_Number( &GPS_BUF[Get_Comma_Position(5,GPS_BUF)] );		//第五個逗號后面是經度
		Get_Position(&GPS_BUF[Get_Comma_Position(5,GPS_BUF)], &Longitude, 1);
		GPS_EW = GPS_BUF[ Get_Comma_Position(6,GPS_BUF) ];		//第六個逗號后面是東半球西半球指示信息

		#if ( USE_BEIJING_TIMEZONE )
			UTC_To_BTC(&GPS->D);
		#endif
		
		//puts( "$GPRMC is OK!\n" ) ;
		GPRMC = 1 ;
		return 1 ;
	}
	else if ( GPS_BUF[5] == 'A' ) //"$GPGGA"
	{
/*		GPS_HOUR = ( GPS_BUF[7]-'0' )*10 + ( GPS_BUF[8]-'0' ) ;
		GPS_MIN = ( GPS_BUF[9]-'0' )*10 + ( GPS_BUF[10]-'0' ) ;
		GPS_SEC = ( GPS_BUF[11]-'0' )*10 + ( GPS_BUF[11]-'0' ) ;
*/		//GPS_HIGH = Get_Double_Number( &GPS_BUF[Get_Comma_Position(9,GPS_BUF)] ) ;
		GPGGA = 1 ;
		return 1 ;
	}
	
	return 0 ;
}

/****************************************************************************
【功能說明】
****************************************************************************/
void Show_GPS( GPS_INFO *GPS )
{
	if( GPRMC == 1 )
	{

		if( GPS_STATUS == 'A' )
		{
			puts( "\nGPS DATA valid!\n" ) ;
			printf("日期       : %4d-%02d-%02d \n", GPS_YEAR, GPS_MONTH, GPS_DATE ) ;
			printf("時間       : %02d:%02d:%02d \n",GPS_HOUR, GPS_MIN, GPS_SEC ) ;
			printf("緯度       : %d.%d %c\n", Latitude.d, Latitude.c, GPS_NS);	
			printf("經度       : %d.%d %c\n", Longitude.d, Longitude.c, GPS_EW);	
		}
		else if( GPS_STATUS == 'V' )
		{
			puts( "GPS DATA invalid!!!\n" ) ;
			printf("日期       : %4d-%02d-%02d \n", GPS_YEAR, GPS_MONTH, GPS_DATE ) ;
			printf("時間       : %02d:%02d:%02d \n",GPS_HOUR, GPS_MIN, GPS_SEC ) ;
			printf("緯度       : %d.%d %c\n", Latitude.d, Latitude.c, GPS_NS);	
			printf("經度       : %d.%d %c\n", Longitude.d, Longitude.c, GPS_EW);	
		}
		GPRMC = 0;	//clear flag
	}
	else if( GPGGA == 1 )
	{
		//printf("Highness   : %.4f \n",GPS->high);	
	}
}

/****************************************************************************
【功能說明】串口初始化
****************************************************************************/
void Uart_Initial( U8 uart, U16 baud )
{
	U32 mclk =  GetMasterClock();
	
	if( uart == 0 )
	{
		//UART0
		rUFCON0 = 0x0;		//FIFO disable
		rUMCON0 = 0x0;
		rULCON0  = 0x3;		//Normal,No parity,1 stop,8 bit
		rUCON0   = 0x245;	//rx=edge,tx=level,disable timeout int.,enable rx error int.,normal,interrupt or polling
		rUBRDIV0 = ((int)(mclk/16./baud + 0.5) -1);
	}
	else if( uart == 1 )
	{
		//UART1
		rUFCON1 = 0x0;		//FIFO disable
		rUMCON1 = 0x0;
		rULCON1  = 0x3;
		rUCON1   = 0x245;
		rUBRDIV1 = ((int)(mclk/16./baud + 0.5) -1);
	}
}

/****************************************************************************
【功能說明】接收GPS模塊的信息輸入
****************************************************************************/
U8 Receive_GPS( void )
{
	int i = 0 ;
	char c ;
//	U32 time_out = 500000 ;

    while(getkey()!=ESC_KEY)//( time_out-- )
	{
		SerialSwitch( 1 ) ;		//選擇UART通道為串口1
//	    c = SerialRxChar();		//read from com port
	    c = SerialRxKey();		//read from com port
		SerialSwitch( 0 ) ;		//選擇UART通道為串口0
		if(c)
			GPS_BUF[i++] = c ;
		
		if( c == '\n' )
		{
			GPS_BUF[0]='$';				
			GPS_BUF[i]=0;
			//puts( GPS_BUF ) ;
			return 1 ;
		}
  	}
  	
  	return 0 ;	
}

/****************************************************************************
【功能說明】GPS模塊實驗程序
****************************************************************************/
void Test_GPS_Model( void )
{
	printf( "GPS全球定位系統(tǒng)\n" ) ;
	Uart_Initial( 1, 4800 ) ;		//串口1初始化,波特率為4800
	
    while( getkey() != ESC_KEY )
	{
		if( Receive_GPS() )
		{
			//strcpy( GPS_BUF, GPS_DATA1 ) ;
			if ( GPS_Parse( GPS_BUF, &Gps_Infor ) ) ;
			{
				Show_GPS( &Gps_Infor ) ;
			}
		}
		else
			break;
	}
}

static char title[] = "GPS實驗";
static char tip[]   = "實驗GPS全球定位系統(tǒng),按ESC鍵返回";

//Test_GPS_ModelItem在prog_entry.c里被引用
TEST_PROGRAM_ITEM Test_GPS_ModelItem = {
				(TEST_PROGRAM)Test_GPS_Model, 	//入口地址
				title, 					//顯示名稱
				tip, 					//幫助或提示信息,可為NULL
				1};						//使用printf,puts,putch等函數(shù)時在LCD上也顯示輸出字符(串)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av一区二区| 欧美日韩免费视频| 欧美在线三级电影| 久久久精品蜜桃| 亚洲女同一区二区| 日韩成人一区二区三区在线观看| 成人免费视频app| 日韩女优av电影| 亚洲最大的成人av| www.欧美精品一二区| 久久天天做天天爱综合色| 午夜精品国产更新| 色94色欧美sute亚洲13| 国产日韩欧美精品一区| 老汉av免费一区二区三区 | 欧美日韩国产高清一区二区 | 99久久久精品| 国产欧美一区二区精品忘忧草| 亚洲国产中文字幕| 91麻豆国产自产在线观看| 国产亚洲人成网站| 国产精品一区二区视频| 日韩欧美资源站| 免费欧美高清视频| 欧美一区日韩一区| 五月天婷婷综合| 欧美久久久久久久久| 日本午夜一区二区| 欧美视频在线一区二区三区 | 首页国产欧美日韩丝袜| 欧美性猛交xxxx黑人交| 欧美性大战久久久久久久蜜臀| 国产精品国产三级国产普通话蜜臀 | 丰满白嫩尤物一区二区| 久久免费美女视频| 国产精品18久久久久| 国产日韩成人精品| 成人免费视频播放| 自拍偷拍欧美激情| 91福利在线播放| 亚洲综合在线电影| 欧美中文字幕久久| 亚洲成a人片综合在线| 91国偷自产一区二区开放时间 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品福利av| 91丝袜国产在线播放| 亚洲激情av在线| 91精品国产全国免费观看| 久久精品国产久精国产爱| 26uuu国产电影一区二区| 懂色av一区二区三区免费观看| 久久久www免费人成精品| 国产福利91精品一区二区三区| 国产日韩欧美一区二区三区综合 | 色偷偷久久人人79超碰人人澡| 麻豆免费看一区二区三区| 精品精品国产高清一毛片一天堂| 国产精品一区在线| 亚洲欧美日韩一区二区| 欧美一区二区三区婷婷月色| 国产乱国产乱300精品| 亚洲欧美激情插 | 欧美色视频在线观看| 日本成人在线视频网站| 亚洲国产精品av| 欧美日韩精品一二三区| 久久成人免费电影| 综合久久一区二区三区| 欧美精品在线观看播放| 国产成人av影院| 午夜精品久久久久久久久| 久久伊人蜜桃av一区二区| 日本精品视频一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品成人午夜| 91精品国产综合久久久久久久| 懂色av一区二区三区免费观看| 日韩国产一区二| 日韩毛片一二三区| 精品国产精品网麻豆系列| 欧美综合一区二区| 成人免费看片app下载| 秋霞午夜鲁丝一区二区老狼| 亚洲三级小视频| 久久综合久久综合久久综合| 欧美日韩国产高清一区二区三区| jiyouzz国产精品久久| 韩国一区二区视频| 三级欧美韩日大片在线看| 亚洲免费av在线| 久久精品男人天堂av| 91精品国产综合久久久久| 国产99久久久久| 日本中文字幕一区| 亚洲国产精品影院| 亚洲欧洲性图库| 久久久久久久性| 国产美女在线精品| 偷拍日韩校园综合在线| 亚洲男女毛片无遮挡| 国产精品国产三级国产aⅴ入口| 精品少妇一区二区三区免费观看| 欧美日韩久久一区二区| 亚洲国产一区二区三区| 亚洲精品国产一区二区精华液| 精品国产伦理网| 日韩午夜激情免费电影| 欧美人成免费网站| 欧美日韩免费在线视频| 欧美日韩一级大片网址| 欧洲一区二区三区在线| 在线观看亚洲一区| 不卡的av电影| 97se亚洲国产综合在线| 99视频精品免费视频| 波波电影院一区二区三区| 成人精品高清在线| 成人av网址在线| 99精品视频在线播放观看| 国产成人精品亚洲日本在线桃色| 国产在线精品一区二区夜色| 国产一区二区三区观看| 国产精品欧美久久久久无广告| 国产女同性恋一区二区| 国产精品全国免费观看高清| 国产精品三级av| 中文字幕在线免费不卡| 亚洲女人的天堂| 午夜亚洲国产au精品一区二区| 亚洲国产日韩综合久久精品| 视频在线观看91| 久久成人久久爱| 波多野结衣亚洲| 色婷婷久久99综合精品jk白丝| 天堂一区二区在线免费观看| 成人免费电影视频| 97久久精品人人做人人爽 | 日韩欧美国产一二三区| 日韩免费一区二区| 国产欧美日韩在线视频| 亚洲免费观看高清完整版在线 | 亚洲人成小说网站色在线| 一区二区三区在线观看欧美| 亚洲午夜在线电影| 精品一区二区国语对白| 成人天堂资源www在线| 在线亚洲+欧美+日本专区| 91精品国产aⅴ一区二区| 国产成人精品在线看| 欧美优质美女网站| 精品日韩一区二区三区免费视频| 国产精品私人影院| 五月天久久比比资源色| 国产一区二区导航在线播放| 91久久香蕉国产日韩欧美9色| 日韩欧美一卡二卡| 日韩毛片精品高清免费| 极品美女销魂一区二区三区| 91首页免费视频| 2019国产精品| 亚洲一区二区五区| 成人永久免费视频| 69堂亚洲精品首页| 国产精品不卡视频| 激情六月婷婷久久| 欧美日韩成人一区二区| 91首页免费视频| 国产片一区二区三区| 七七婷婷婷婷精品国产| 91免费版在线看| 欧美国产一区二区| 精品无人码麻豆乱码1区2区| 欧美性猛交xxxx黑人交| 国产精品三级视频| 国产美女在线精品| 欧美高清激情brazzers| 国产精品电影院| 国产高清不卡一区| 日韩精品自拍偷拍| 亚洲一区免费在线观看| 色婷婷亚洲精品| 在线观看av不卡| 亚洲情趣在线观看| 成人一级视频在线观看| 欧美精品一区二区三区在线播放| 午夜精品福利久久久| 欧美性xxxxxx少妇| 亚洲欧美区自拍先锋| 大尺度一区二区| 国产三级精品三级| 国产成人夜色高潮福利影视| 欧美成人精品二区三区99精品| 爽好多水快深点欧美视频| 欧美日韩一区三区| 亚洲成av人影院在线观看网| 在线观看区一区二| 亚洲午夜av在线| 欧美亚州韩日在线看免费版国语版| 亚洲欧洲精品一区二区三区|