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

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

?? gps.cpp

?? wince pocket GPRSDemo
?? CPP
字號:
/*-----------------------------------------
* Copyright (c) 2008 Eric Wong
* 本版緊供讀者參考,不得用于任何商業(yè)行為
*
* 文件名稱: GPS.h
* 文件標(biāo)識: 
* 摘要:用于封裝GPS通訊協(xié)議
*
* 當(dāng)前版本: 1.0
* 作者: 汪兵 Eric Wong
* 完成日期: 2008年1月29日
*
* 取代版本:
* 原作者: 
* 完成日期: 
----------------------------------------*/
#include "StdAfx.h"
#include "GPS.h"

//構(gòu)造函數(shù)
CGPS::CGPS()
{
	m_gpsDev_State = GPS_DEV_NOTOPENED; //GPS狀態(tài)
	m_hGpsThread = NULL;				//GPS檢測線程句柄
	ZeroMemory(&m_gpsCurData,sizeof(m_gpsCurData));  //GPS當(dāng)前數(shù)據(jù)
 	ZeroMemory(&m_gpsLastData,sizeof(m_gpsLastData)); //GPS上一次數(shù)據(jù)
}

//析構(gòu)函數(shù)
CGPS::~CGPS(void)
{
}

/*
*函數(shù)介紹:打開GPS設(shè)備
*入口參數(shù):pWnd	:使用此GPS類的窗體句柄
		   portNo		:串口號
		   baud			:波特率
		   parity		:奇偶校驗
		   databits		:數(shù)據(jù)位
		   stopbits		:停止位
*出口參數(shù):(無)
*返回值:TRUE:成功打開GPS設(shè)備;FALSE:打開GPS設(shè)備失敗
*/
BOOL CGPS::Open(CWnd *pWnd , /*擁有者窗口句柄*/
				UINT portNo,		/*串口號*/
				UINT baud,	/*波特率*/
				UINT parity, /*奇偶校驗*/
				UINT databits,		/*數(shù)據(jù)位*/
				UINT stopbits    /*停止位*/
				)
{
	m_pWnd = pWnd;  //儲存窗口句柄
	//創(chuàng)建GPS檢測線程退出事件
	m_hThreadQuitEvent = CreateEvent(NULL,false,false,L"EVENT_GPS_THREAD");
	//指定串口讀回調(diào)函數(shù)
	m_ceSeries.m_OnSeriesRead = GpsOnSeriesRead;
	//打開GPS設(shè)備串口
	BOOL bResult = m_ceSeries.OpenPort(this,portNo,baud,parity,databits,stopbits);

	if (bResult)
	{
		//設(shè)置當(dāng)前GPS狀態(tài)
		m_gpsDev_State = GPS_DEV_OPENED;
		//發(fā)送GPS狀態(tài)變化消息
		::PostMessage(m_pWnd->m_hWnd,WM_GPS_STATE_CHANGE_MESSAGE,WPARAM(GPS_DEV_OPENED),1);

		//創(chuàng)建GPS狀態(tài)檢測線程
		m_hGpsThread = CreateThread(NULL,0,GpsCheckThreadFunc,this,0,&m_dwGpsThreadID);
	}
	else
	{
		//設(shè)置當(dāng)前GPS狀態(tài)
		m_gpsDev_State = GPS_DEV_NOTOPENED;
		//發(fā)送GPS狀態(tài)變化消息
		::PostMessage(m_pWnd->m_hWnd,WM_GPS_STATE_CHANGE_MESSAGE,WPARAM(GPS_DEV_NOTOPENED),1);
	}
	return bResult;
}

/*
*函數(shù)介紹:關(guān)閉GPS設(shè)備
*入口參數(shù):(無)
*出口參數(shù):(無)
*返回值:TRUE:成功關(guān)閉GPS設(shè)備;FALSE:關(guān)閉GPS設(shè)備失敗
*/
void CGPS::Close()
{
	//先退出GPS檢測線程
	if (m_hGpsThread != NULL)
	{
		//發(fā)送線程退出信號
		SetEvent(m_hThreadQuitEvent);
		//等待線程退出
		if (WaitForSingleObject(m_hGpsThread,1000) == WAIT_TIMEOUT)
		{
			TerminateThread(m_hGpsThread,0);
		}
	}

	m_hGpsThread = NULL;
	CloseHandle(m_hThreadQuitEvent);
	//將接收數(shù)據(jù)回掉函數(shù)置空
	m_ceSeries.m_OnSeriesRead = NULL;
	//關(guān)閉GPS串口
	m_ceSeries.ClosePort();
	//設(shè)置GPS狀態(tài)
	m_gpsDev_State = GPS_DEV_NOTOPENED;
	//發(fā)送GPS狀態(tài)變化消息
	::PostMessage(m_pWnd->m_hWnd,WM_GPS_STATE_CHANGE_MESSAGE,WPARAM(GPS_DEV_NOTOPENED),1);
}

/*
*函數(shù)介紹:獲取GPS設(shè)備狀態(tài)
*入口參數(shù):(無)
*出口參數(shù):(無)
*返回值:返回GPS設(shè)備狀態(tài)
*/
GPSDEV_STATE CGPS::GetGpsState()
{
	return m_gpsDev_State;
}


/*
*函數(shù)介紹:得到當(dāng)前GPS數(shù)據(jù)
*入口參數(shù):(無)
*出口參數(shù):(無)
*返回值:返回GPS設(shè)備當(dāng)前GPS數(shù)據(jù)
*/
GPSData CGPS::GetCurGpsData()
{
	return m_gpsCurData;
}

/*--------------------------------------------------------------------
【函數(shù)介紹】: 在pArray緩沖區(qū),查找subString字符串,如存在,返回當(dāng)前位置,否則返回-1
【入口參數(shù)】: pArray:指定接收到的緩沖區(qū)隊列
【出口參數(shù)】: pArray:指定接收到的緩沖區(qū)隊列,解析后需要進行適當(dāng)修改
【返回  值】: -1表示沒有找到指定的子串,>=0表示發(fā)現(xiàn)第1個子串的位置
---------------------------------------------------------------------*/
int CGPS::Pos(LPCSTR subString , CByteArray * pArray,int iPos)
{
	//得到子串長度
	int subLen = strlen(subString);
	//得到緩沖區(qū)的長度
	int bufLen = pArray->GetUpperBound()+1;

	bool aResult = TRUE;
	//
	for ( int i=iPos;i<bufLen-subLen+1;i++)
	{
		aResult = TRUE;
		for (int j=0;j<subLen;j++)
		{
			if (pArray->GetAt(i+j) != *(subString + j))
			{
				aResult = FALSE;
				break;
			}
			int k = 0;
		}
		if (aResult)
		{
			return i;
		}
	}
	return -1;
}


/*
*函數(shù)介紹:判斷是否存在有效GPS數(shù)據(jù)
*入口參數(shù):aRecvStr :緩沖數(shù)據(jù)
*出口參數(shù):aRecvStr : 緩沖數(shù)據(jù),outStr:得到的一個完整的GPS數(shù)據(jù)
*返回值:TRUE : 成功初始化 , FALSE : 初始化失敗
*/
BOOL CGPS::HaveValidGPSData(CByteArray * pArray,CString &outStr)
{
	int tmpPos1,tmpPos2;

	tmpPos1 = Pos("$GPRMC",pArray,0);

	tmpPos2 = Pos("$GPRMC",pArray,tmpPos1+6);

	if (tmpPos2 >= 0)  //代表已包含兩個$GPRMC
	{   
		if (tmpPos1 >= 0 )
		{
			BYTE *pBuf = pArray->GetData();
			char *sBuf = new char[tmpPos2-tmpPos1+1];
			ZeroMemory(sBuf,tmpPos2-tmpPos1+1);
			CopyMemory(sBuf,pBuf+tmpPos1,tmpPos2-tmpPos1+1);
			outStr = CString(sBuf);

			//釋放內(nèi)存
			delete[] sBuf;
			sBuf = NULL;
			pArray->RemoveAt(0,tmpPos2);
			return TRUE;
		}
	}
	return FALSE;
}

/*
*函數(shù)介紹:解析GPS數(shù)據(jù)
*入口參數(shù):aRecvStr :指待解析的GPS緩沖數(shù)據(jù)
*出口參數(shù):(無)
*返回值:指CGPSData結(jié)構(gòu)體的指針,如果無效即為:NULL;
*/
PGPSData CGPS::AnalyseGpsData(CString &aRecvStr)
{
	CString tmpTime;
	CString tmpState;
	CString tmpDate;
	CString tmpLONG;
	CString tmpLONGType;
	CString tmpLAT;
	CString tmpLATType;
	CString tmpSpeed;

	LPSTR pStrDate = NULL;
	LPSTR pStrTime = NULL;
	LPSTR pStrLong = NULL;
	LPSTR pStrLongType = NULL;
	LPSTR pStrLat = NULL;
	LPSTR pStrLatType = NULL;
	LPSTR pStrSpeed = NULL;

	PGPSData pGpsData = NULL;
	int tmpPos,tmpPos1;
	int len;

	tmpPos = aRecvStr.Find(',',0); //第1個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);

	//得到時間
	tmpTime = aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);
	tmpTime = tmpTime.Mid(0,2)+L":"+tmpTime.Mid(2,2)+L":"+tmpTime.Mid(4,2);

	len = tmpTime.GetLength();
	pStrTime = LPSTR(LocalAlloc(LMEM_ZEROINIT,len));
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,tmpTime.GetBuffer(len),len
		,pStrTime,len ,NULL,NULL);

	//數(shù)據(jù)狀態(tài),是否有效
	tmpPos = aRecvStr.Find(',',tmpPos+1);  //第2個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);
	tmpState = aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);

	if (tmpState != 'A')//代表數(shù)據(jù)無效,返回
	{
		if (m_gpsDev_State != GPS_INVALID_DATA)
		{
			//設(shè)置GPS狀態(tài)
			m_gpsDev_State = GPS_INVALID_DATA;
			//發(fā)送GPS狀態(tài)變化消息
			::PostMessage(m_pWnd->m_hWnd,WM_GPS_STATE_CHANGE_MESSAGE,WPARAM(GPS_INVALID_DATA),1);
		}
		LocalFree(pStrTime);
		return NULL;
	}
	else  //代表數(shù)據(jù)有效
	{
		if (m_gpsDev_State != GPS_VALID_DATA)
		{
			//設(shè)置GPS狀態(tài)
			m_gpsDev_State = GPS_VALID_DATA;
			//發(fā)送GPS狀態(tài)變化消息
			::PostMessage(m_pWnd->m_hWnd,WM_GPS_STATE_CHANGE_MESSAGE,WPARAM(GPS_VALID_DATA),1);
		}
	}

	//得到緯度值
	tmpPos = aRecvStr.Find(',',tmpPos+1);//第3個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);
	tmpLAT	= aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);

	len = tmpLAT.GetLength();
	pStrLat = LPSTR(LocalAlloc(LMEM_ZEROINIT,len));
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,tmpLAT.GetBuffer(len),len
		,pStrLat,len ,NULL,NULL);

	tmpPos = aRecvStr.Find(',',tmpPos+1);//第4個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);
	tmpLATType = aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);

	len = tmpLATType.GetLength();
	pStrLatType = LPSTR(LocalAlloc(LMEM_ZEROINIT,len));
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,tmpLATType.GetBuffer(len),len
		,pStrLatType,len ,NULL,NULL);

	//得到經(jīng)度值
	tmpPos = aRecvStr.Find(',',tmpPos+1);//第5個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);
	tmpLONG = aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);

	len = tmpLONG.GetLength();
	pStrLong = LPSTR(LocalAlloc(LMEM_ZEROINIT,len));
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,tmpLONG.GetBuffer(len),len
		,pStrLong,len ,NULL,NULL);

	tmpPos = aRecvStr.Find(',',tmpPos+1);//第6個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);
	tmpLONGType = aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);

	len = tmpLONGType.GetLength();
	pStrLongType = LPSTR(LocalAlloc(LMEM_ZEROINIT,len));
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,tmpLONGType.GetBuffer(len),len
		,pStrLongType,len ,NULL,NULL);

	//得到車速
	tmpPos = aRecvStr.Find(',',tmpPos+1);////第7個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);
	tmpSpeed = aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);

	len = tmpSpeed.GetLength();
	pStrSpeed = LPSTR(LocalAlloc(LMEM_ZEROINIT,len));
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,tmpSpeed.GetBuffer(len),len
		,pStrSpeed,len ,NULL,NULL);

	tmpPos = aRecvStr.Find(',',tmpPos+1);////第8個值

	//得到日期
	tmpPos = aRecvStr.Find(',',tmpPos+1);////第9個值
	tmpPos1 = aRecvStr.Find(',',tmpPos+1);
	//格式化一下
	tmpDate = aRecvStr.Mid(tmpPos+1,tmpPos1-tmpPos-1);
	tmpDate = L"20"+tmpDate.Mid(4,2)+L"-"+tmpDate.Mid(2,2)+L"-"+tmpDate.Mid(0,2);

	len = tmpDate.GetLength();
	pStrDate = LPSTR(LocalAlloc(LMEM_ZEROINIT,len));
	WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,tmpDate.GetBuffer(len),len
		,pStrDate,len ,NULL,NULL); 

	pGpsData = new GPSData();
	ZeroMemory(pGpsData,sizeof(GPSData));
	//得到GPS數(shù)據(jù)指針
	CopyMemory(pGpsData->date,pStrDate,10);
	CopyMemory(pGpsData->time,pStrTime,8);
	CopyMemory(pGpsData->latitude_type,pStrLatType,1);
	CopyMemory(pGpsData->latitude,pStrLat,9);
	CopyMemory(pGpsData->longitude_type,pStrLongType,1);
	CopyMemory(pGpsData->longitude,pStrLong,10);
	//先置默認速度0
	FillMemory(pGpsData->speed,5,'0');
	CopyMemory(pGpsData->speed,pStrSpeed,5);

	//釋放內(nèi)存
	LocalFree(pStrTime);
	LocalFree(pStrDate);
	LocalFree(pStrLatType);
	LocalFree(pStrLat);
	LocalFree(pStrLongType);
	LocalFree(pStrLong);
	LocalFree(pStrSpeed);

	return pGpsData;
}

//GPS接收數(shù)據(jù)事件
void CALLBACK CGPS::GpsOnSeriesRead(void * powner,BYTE* buf,DWORD  dwBufLen)
{
	CGPS * pGps = (CGPS*)powner;
	//得到本類指針
	CByteArray * pArray = &(pGps->m_aRecvBuf);

	//得到緩沖區(qū)大小
	int iMaxSize = pArray->GetSize();
	//得到緩沖區(qū)所使用的大小
	int iUpperBound = pArray->GetUpperBound();
	for (int i=0;i<dwBufLen;i++)
	{
		pArray->Add(*(buf+i));
	}

	//將收到的數(shù)據(jù)發(fā)給主程序顯示出來
	char* pRecvBuf = new char[dwBufLen+1];
	ZeroMemory(pRecvBuf,dwBufLen+1);
	CopyMemory(pRecvBuf,buf,dwBufLen);

	//發(fā)送接收串口原始數(shù)據(jù)WINDOWS消息通知
	//消息處理完畢后,應(yīng)釋放內(nèi)存
	::PostMessage(pGps->m_pWnd->m_hWnd,WM_GPS_RECV_BUF,WPARAM(pRecvBuf),dwBufLen+1);

	CString strGps;
	//檢查是否已經(jīng)存在有效的GPS數(shù)據(jù)
	if (pGps->HaveValidGPSData(pArray,strGps))
	{
		PGPSData pGpsData = NULL;
		pGpsData = pGps->AnalyseGpsData(strGps);
		if (pGpsData != NULL) 
		{
			//將接收到的GPS數(shù)據(jù)填充到最新當(dāng)前數(shù)據(jù)
			pGps->m_gpsCurData = (*pGpsData);
			//發(fā)送接收有效GPS位置信息WINDOWS消息通知
			//由消息處理函數(shù)釋放內(nèi)存
			::PostMessage(pGps->m_pWnd->m_hWnd,WM_GPS_RECV_VALID_LONGLAT,WPARAM(pGpsData),0);
		}
	}
}

//檢測GPS當(dāng)前數(shù)據(jù)
DWORD WINAPI CGPS::GpsCheckThreadFunc(LPVOID lparam)
{
	//得到當(dāng)前GPS指針
	CGPS *pGps = (CGPS*)lparam;

	int iRecCount = 0;
	//然后開始做循環(huán)檢測,間隔為1秒
	while (TRUE)
	{
		//判斷兩次收到的時間是否相同
		if (strcmp(pGps->m_gpsCurData.time,pGps->m_gpsLastData.time) == 0)
		{
			//計數(shù)加1
			iRecCount++;
		}
		else
		{
			//將當(dāng)前的GPS數(shù)據(jù)賦給歷史值
			pGps->m_gpsLastData = pGps->m_gpsCurData;
			iRecCount = 0 ;
		}

		//代表連續(xù)三次沒有收到數(shù)據(jù)
		if (iRecCount == 3)
		{
			if (pGps->m_gpsDev_State != GPS_NODATA)
			{
				//將GPS狀態(tài)置為“無數(shù)據(jù)”
				pGps->m_gpsDev_State = GPS_NODATA;
				//發(fā)送GPS狀態(tài)改變消息
				::PostMessage(pGps->m_pWnd->m_hWnd,WM_GPS_STATE_CHANGE_MESSAGE,WPARAM(GPS_NODATA),1);
			}
		}

		//延時1秒
		for (int i =0; i<10;i++)
		{
			//線程退出
			if (WaitForSingleObject(pGps->m_hThreadQuitEvent,100) == WAIT_OBJECT_0)
			{
				goto finish;
			}
		}
	}
finish:
	TRACE(L"GPS 檢測線程退出\n");
	return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜精品在线| 另类中文字幕网| 日韩午夜激情电影| 粉嫩av一区二区三区在线播放| 亚洲韩国一区二区三区| 中文字幕欧美日本乱码一线二线| 欧美日韩国产一级| 99久久婷婷国产综合精品| 免费在线观看视频一区| 欧美日韩国产乱码电影| 成人国产精品免费观看动漫| 麻豆91在线播放免费| 亚洲综合视频在线| 亚洲欧洲精品天堂一级| 久久久一区二区| 日韩午夜小视频| 欧美丰满美乳xxx高潮www| 99久久综合色| 国产91丝袜在线播放| 国内精品在线播放| 日韩—二三区免费观看av| 一区二区日韩电影| 一区二区三区电影在线播| 国产亚洲va综合人人澡精品| 欧美电影精品一区二区| 日韩网站在线看片你懂的| 欧美日韩一区视频| 欧美三级视频在线观看| 在线亚洲一区二区| 一本大道久久a久久精二百| 成人app下载| 波多野结衣精品在线| 成人va在线观看| 成人美女视频在线看| 不卡的av电影在线观看| 丁香婷婷综合网| 丁香婷婷综合色啪| 成人av综合一区| 不卡电影一区二区三区| www.日韩av| 色欧美乱欧美15图片| 欧美自拍偷拍一区| 欧美日韩亚洲丝袜制服| 欧美精选在线播放| 日韩一区二区影院| 精品福利二区三区| 久久久亚洲精品石原莉奈| 国产午夜三级一区二区三| 国产网红主播福利一区二区| 欧美国产一区视频在线观看| 日韩美女久久久| 一区二区三区在线观看国产| 亚洲午夜国产一区99re久久| 天天爽夜夜爽夜夜爽精品视频| 日韩精品一卡二卡三卡四卡无卡| 日本不卡一区二区三区高清视频| 精品一区二区在线免费观看| 国产高清在线精品| av中文字幕在线不卡| 日本电影欧美片| 欧美一级欧美一级在线播放| 26uuu国产电影一区二区| 国产欧美1区2区3区| 亚洲人成影院在线观看| 午夜国产精品影院在线观看| 国内外成人在线| 91热门视频在线观看| 欧美精品自拍偷拍动漫精品| 精品剧情在线观看| 国产精品―色哟哟| 三级一区在线视频先锋| 国产在线一区观看| 91麻豆蜜桃一区二区三区| 在线播放一区二区三区| 国产日韩欧美电影| 亚洲国产精品久久不卡毛片 | 久久久久成人黄色影片| 国产精品毛片高清在线完整版| 亚洲美女偷拍久久| 精品一区二区三区免费视频| 99re这里只有精品首页| 欧美一区二区三区精品| 国产精品欧美久久久久一区二区| 亚洲一区二区偷拍精品| 国产精品99久久久久久有的能看 | 一区二区中文视频| 青青草伊人久久| 99国产麻豆精品| 欧美电视剧在线看免费| 亚洲精品第1页| 国产精一区二区三区| 欧美日韩在线一区二区| 中文字幕成人av| 欧美aaaaaa午夜精品| 94-欧美-setu| 久久先锋影音av| 舔着乳尖日韩一区| 色综合一个色综合| 久久先锋影音av鲁色资源网| 亚洲国产日日夜夜| 91在线小视频| 国产日本亚洲高清| 久草中文综合在线| 在线电影国产精品| 亚洲一二三区视频在线观看| 成人美女视频在线看| 精品福利一二区| 免费精品视频在线| 欧美男女性生活在线直播观看| 国产欧美一区视频| 国内精品视频一区二区三区八戒| 欧美日韩亚洲国产综合| 亚洲日本成人在线观看| 大胆亚洲人体视频| 国产日韩欧美高清在线| 国内久久婷婷综合| 欧美变态tickling挠脚心| 污片在线观看一区二区| 欧美三级在线看| 亚洲在线观看免费视频| 色婷婷av一区二区三区之一色屋| 国产精品嫩草影院com| 国产一区999| 久久午夜电影网| 国产一区二区三区在线看麻豆| 欧美电视剧在线观看完整版| 热久久久久久久| 制服丝袜在线91| 日本美女一区二区三区视频| 欧美人伦禁忌dvd放荡欲情| 亚洲国产综合色| 欧美揉bbbbb揉bbbbb| 亚洲福利电影网| 精品视频在线免费看| 亚洲成av人片www| 欧美人成免费网站| 秋霞电影网一区二区| 日韩一区二区免费在线电影| 视频一区二区三区入口| 欧美一激情一区二区三区| 老汉av免费一区二区三区| 精品三级av在线| 国产成人精品一区二区三区四区 | 日本伊人午夜精品| 日韩你懂的在线播放| 激情亚洲综合在线| 日韩美女一区二区三区四区| 另类欧美日韩国产在线| 亚洲精品一区二区三区在线观看| 国产一区二区网址| 中文字幕亚洲区| 欧美性一二三区| 免费av成人在线| 久久日韩精品一区二区五区| 国产成人av影院| 亚洲毛片av在线| 欧美日韩国产精品自在自线| 久久99久久久久久久久久久| 久久蜜桃av一区二区天堂| 99在线视频精品| 午夜av一区二区三区| 精品播放一区二区| 99精品热视频| 日本不卡视频在线| 中文字幕精品一区二区精品绿巨人 | 日韩欧美国产一二三区| 国产一区二区三区免费在线观看| 国产蜜臀97一区二区三区| 91精品91久久久中77777| 日韩影院在线观看| 国产精品麻豆久久久| 精品视频一区三区九区| 国产一区二区三区在线观看精品 | 国产一区二区电影| 亚洲精品videosex极品| 精品免费一区二区三区| 暴力调教一区二区三区| 日韩电影在线观看电影| 欧美国产97人人爽人人喊| 欧美色涩在线第一页| 国产99一区视频免费| 婷婷综合久久一区二区三区| 国产精品人人做人人爽人人添| 精品视频在线免费观看| 成人性生交大片免费看中文| 婷婷中文字幕一区三区| 国产精品不卡一区| 欧美成人欧美edvon| 日本韩国一区二区三区视频| 狠狠色丁香婷婷综合久久片| 亚洲一区二区三区四区不卡| 久久久久国产免费免费 | 亚洲欧美偷拍卡通变态| 欧美成人国产一区二区| 欧美日韩一区高清| gogo大胆日本视频一区| 激情深爱一区二区| 午夜视频久久久久久| 亚洲日本在线看| 国产欧美一区二区三区在线看蜜臀 |