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

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

?? mobliexdoc.cpp

?? PPC開(kāi)發(fā)的代碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// MoblieXDoc.cpp : implementation of the CMoblieXDoc class
//

#include "stdafx.h"
#include "MoblieX.h"

#include "MoblieXDoc.h"

#include "sms.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMoblieXDoc

IMPLEMENT_DYNCREATE(CMoblieXDoc, CDocument)

BEGIN_MESSAGE_MAP(CMoblieXDoc, CDocument)
	//{{AFX_MSG_MAP(CMoblieXDoc)
	ON_COMMAND(ID_TEST, OnTest)
	ON_COMMAND(ID_COMM_INIT, OnCommInit)
	ON_COMMAND(ID_COMM_CLOSE, OnCommClose)
	ON_UPDATE_COMMAND_UI(ID_COMM_INIT, OnUpdateCommInit)
	ON_UPDATE_COMMAND_UI(ID_COMM_CLOSE, OnUpdateCommClose)
	ON_COMMAND(ID_COMM_PORT_SETUP, OnCommPortSetup)
	ON_COMMAND(ID_LOG_READ_TO_WND, OnLogReadToWnd)
	ON_UPDATE_COMMAND_UI(ID_LOG_READ_TO_WND, OnUpdateLogReadToWnd)
	ON_COMMAND(ID_LOG_WRITE_TO_WND, OnLogWriteToWnd)
	ON_UPDATE_COMMAND_UI(ID_LOG_WRITE_TO_WND, OnUpdateLogWriteToWnd)
	ON_COMMAND(ID_COMM_READ_OK, OnCommReadOk)
	ON_COMMAND(ID_LOG_RES_TO_WND, OnLogResToWnd)
	ON_UPDATE_COMMAND_UI(ID_LOG_RES_TO_WND, OnUpdateLogResToWnd)
	ON_UPDATE_COMMAND_UI(ID_COMM_PORT_SETUP, OnUpdateCommPortSetup)
	ON_COMMAND(ID_PB_PATH_SET, OnPbPathSet)
	ON_COMMAND(ID_SMS_SAVE_ALL, OnSmsSaveAll)
	ON_UPDATE_COMMAND_UI(ID_SMS_SAVE_ALL, OnUpdateSmsSaveAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMoblieXDoc construction/destruction

CMoblieXDoc::CMoblieXDoc()
{
	m_curWorkID = CW_TM;//終端方式

	m_hComm = INVALID_HANDLE_VALUE;
	m_pComThr = NULL;

	m_logRead2Wnd = FALSE;
	m_logWrite2Wnd = FALSE;
	m_logRes2Wnd = TRUE;

	GetPhoneBook( PBM_ME ).SetPBM( PBM_ME );
	GetPhoneBook( PBM_SM ).SetPBM( PBM_SM );

	//串口通訊超時(shí)設(shè)置
	memset(&m_commTimeout,0,sizeof(m_commTimeout));
	m_commTimeout.ReadIntervalTimeout = 100;
	m_commTimeout.ReadTotalTimeoutMultiplier = 0;
	m_commTimeout.ReadTotalTimeoutConstant = 300;//讀超時(shí), 0.3秒
	m_commTimeout.WriteTotalTimeoutConstant = 4000;//寫(xiě)超時(shí), 4秒
	m_commTimeout.WriteTotalTimeoutMultiplier = 0;

	m_commNoDataReadCounter = 0;//連續(xù)未讀到數(shù)據(jù)計(jì)數(shù)器
}

CMoblieXDoc::~CMoblieXDoc()
{
	if( m_pComThr )
	{
		m_pComThr->Quit();
		m_pComThr = NULL;
	}

	CloseCOMM();
}

BOOL CMoblieXDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	SetTitle( "手機(jī)小精靈" );

	//取得缺省的端口設(shè)置
	m_dlgCommPort.LoadDefault();
	//取電話本路徑
	m_dlgPBPath.LoadDefault();

	//載入電話本
	m_phoneBookME.Load( m_dlgPBPath.m_me );
	m_phoneBookSM.Load( m_dlgPBPath.m_sm );
	UpdateDlgPBSData();
	//載入短信中心地址
	m_dlgSCASelect.m_pb.Load( m_dlgPBPath.m_sca );

	if( !m_pComThr )
	{//創(chuàng)建線程
		m_pComThr = (CComThread*)AfxBeginThread( RUNTIME_CLASS(CComThread), THREAD_PRIORITY_ABOVE_NORMAL );
		m_pComThr->m_pDoc = this;
	}

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMoblieXDoc serialization

void CMoblieXDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMoblieXDoc diagnostics

#ifdef _DEBUG
void CMoblieXDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CMoblieXDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMoblieXDoc commands
void CMoblieXDoc::RemoveAllCommandArray()
{
	m_sendStrArray.RemoveAll();
	m_sendCWIDArray.RemoveAll();
	m_sendStrDesArray.RemoveAll();
}

DWORD CMoblieXDoc::SendCommandStr( const char * str, int cwID/*=CW_TM*/, const char * des /*=NULL*/ )
{
	if( !m_pComThr->IsRuning() )
	{
		m_hMainWnd = AfxGetMainWnd()->GetSafeHwnd();
		m_pComThr->SetNotifyWnd( m_hMainWnd );
		m_pComThr->StartProcess();
	}

	m_sendStrArray.Add( str );
	m_sendCWIDArray.Add( cwID );
	m_sendStrDesArray.Add( des );

	return strlen( str );
}

BOOL CMoblieXDoc::IsAnsTimeout()
{
DWORD sto;
	
	if( !IsCurWorkWantEcho() || m_atState != ATS_WAITING )
	{
		return FALSE;
	}

	sto = (m_curWorkID == CW_SEND_SMS_BODY) ? 18000 : 4000;
	return (m_commNoDataReadCounter*m_commTimeout.ReadTotalTimeoutConstant > sto);
}

BOOL CMoblieXDoc::ProcessRecievedStr()
{
	if( m_commNoDataReadCounter > 0 )
	{//沒(méi)有讀到數(shù)據(jù)
		if( m_commNoDataReadCounter*m_commTimeout.ReadTotalTimeoutConstant > 360000 )
		{//已經(jīng)360秒沒(méi)有讀到數(shù)據(jù)了
			if( m_pComThr )
			{//停止查詢式數(shù)據(jù)讀取過(guò)程
				m_pComThr->StopProcess();
			}
		}
		if( IsAnsTimeout() )
		{//回應(yīng)超時(shí)
			m_atState = ATS_ER;
			if( IsLogRes2Wnd() )
			{
				AddLog( "手機(jī)沒(méi)有回應(yīng)" );
			}
		}

		return FALSE;
	}

	if( !m_curReadStr.SeparateAll( "\r\n", m_readStrArray ) )
	{
		return FALSE;
	}

	if( !m_curReadStr.IsEmpty() )
	{//最后一行未完成
		if( m_curWorkID == CW_SEND_SMS_HEAD && m_curReadStr.Find('>') == 0 )
		{
			m_atState = ATS_WANTMORE;
		}
		m_readStrArray.RemoveAt( m_readStrArray.GetUpperBound() );
	}
	else if( m_readStrArray.GetSize() > 0 )
	{//最后一行已完成
	CString & res = m_readStrArray[ m_readStrArray.GetUpperBound() ];
		if( res.Find("OK") == 0 )
		{
			m_atState = ATS_OK;
		}
		else if( res.Find("ERROR") == 0 )
		{
			m_atState = ATS_ER;
		}
		else
		{
			m_atState = ATS_WAITING;
		}
	}

	if( IsCurWorkWantProcessResult() )
	{
		m_waitingProcessArray.Append( m_readStrArray );
	}

	if( m_atState == ATS_OK || m_atState == ATS_ER )
	{
		ProcessResult();
	}

	return TRUE;
}

BOOL CMoblieXDoc::CrackSMS(const char *orgSMS)
{
	return TRUE;
}

BOOL CMoblieXDoc::InitCOMM()
{
CString sMsg;

	if( m_hComm != INVALID_HANDLE_VALUE )
	{//怎么回事, 已經(jīng)打開(kāi)了
		return TRUE;
	}

	//初始化串口
	m_hComm = CreateFile( 
		m_dlgCommPort.m_commPortName, // pointer to name of the file
		GENERIC_READ | GENERIC_WRITE, // access (read-write) mode 
		FILE_SHARE_READ | FILE_SHARE_WRITE, // share mode 
		NULL, // pointer to security attributes
		OPEN_EXISTING, // how to create
		0, // file attributes
		NULL // handle to file with attributes to copy 
		);

	if( m_hComm == INVALID_HANDLE_VALUE )
	{
		return FALSE;
	}

	sMsg.Format( "COMM Init handle: %d", m_hComm );
	TRACE( sMsg + '\n' );
/*	if( IsLogRes2Wnd() )
	{
		AddLog( sMsg );
	}
*/
	if( !SetCommState( m_hComm, &(m_dlgCommPort.m_dcb) ) )
	{
		sMsg.Format( "COMM Set State ER: %d", GetLastError() );
		TRACE( sMsg + '\n'  );
		if( IsLogRes2Wnd() )
		{
			AddLog( sMsg );
		}
		return FALSE;
	}
 
	SetupComm( 
		m_hComm, // handle of communications device 
		2048, // size of input buffer 
		2048 // size of output buffer 
		);

	//清空緩沖
	PurgeComm( m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR );
	//超時(shí)設(shè)置
	SetCommTimeouts( m_hComm, &m_commTimeout );

	return TRUE;
}

BOOL CMoblieXDoc::CloseCOMM()
{
	if( m_hComm == INVALID_HANDLE_VALUE )
	{
		return TRUE;
	}

	if( m_pComThr )
	{
		m_pComThr->StopProcess();
	}

	//清空緩沖
	PurgeComm( m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR );

	CloseHandle( m_hComm );
	m_hComm = INVALID_HANDLE_VALUE;
	return TRUE;
}


void CMoblieXDoc::OnCommInit() 
{
	if( !InitCOMM() )
	{
		AfxMessageBox( "無(wú)法初始化串口, 請(qǐng)檢查串口設(shè)置是否正確。" );
		return;
	}
	InitMobile();
}

void CMoblieXDoc::OnCommClose() 
{
	RemoveAllCommandArray();//清空待發(fā)送隊(duì)列
	CloseCOMM();//關(guān)閉通訊口
}

void CMoblieXDoc::OnUpdateCommInit(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( !IsCommPortOpen() );
}

void CMoblieXDoc::OnUpdateCommClose(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( IsCommPortOpen() );
}

void CMoblieXDoc::OnCommPortSetup() 
{
	m_dlgCommPort.DoModal();
}

void CMoblieXDoc::OnUpdateCommPortSetup(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( !IsCommPortOpen() );
}

BOOL CMoblieXDoc::InitMobile()
{//初始化手機(jī)并測(cè)試指令是否可用
	SendCommandStr( "AT\r", CW_TEST_COMMAND );//不回顯命令
	SendCommandStr( "AT\r", CW_TEST_COMMAND );//不回顯命令
	SendCommandStr( "ATE0\r", CW_TEST_COMMAND );//不回顯命令
	SendCommandStr( "AT+CMGS=?\r", CW_CMGS_QUERY );//是否可發(fā)短信
	SendCommandStr( "AT+CMGF=0\r", CW_TEST_COMMAND );//設(shè)為PDU格式
	SendCommandStr( "AT+CSCS=\"UCS2\"\r", CW_TEST_COMMAND );//設(shè)置編碼方式

	SendCommandStr( "AT+CPBS=?\r", CW_CPBS_QUERY );//查詢電話本情況一定要放在最后一行

	return TRUE;
}

BOOL CMoblieXDoc::IsCurWorkWantProcessResult()
{
BOOL re;
	switch( m_curWorkID )
	{
	case CW_CMGS_QUERY:

	case CW_GET_SMS:
	case CW_SEND_SMS_HEAD:
	case CW_SEND_SMS_BODY:
	case CW_SEND_STRNOWAIT:

	case CW_CPBS_QUERY:
	case CW_CPBS_SET:
	case CW_CPBR_QUERY:
	case CW_CPBR_GET:
	case CW_CPBW_SET:
	case CW_CPBW_QUERY:

		re = TRUE;
		break;

	case CW_TEST_COMMAND:
	case CW_DEL_SMS:
	case CW_TM:
	default:
		re = FALSE;
	}
	return re;
}

BOOL CMoblieXDoc::IsCurWorkWantEcho()
{
BOOL re;
	switch( m_curWorkID )
	{
	case CW_TEST_COMMAND:
	case CW_CMGS_QUERY:

	case CW_GET_SMS:
	case CW_DEL_SMS:
	case CW_SEND_SMS_HEAD:
	case CW_SEND_SMS_BODY:

	case CW_CPBS_QUERY:
	case CW_CPBS_SET:
	case CW_CPBR_QUERY:
	case CW_CPBR_GET:
	case CW_CPBW_SET:
	case CW_CPBW_QUERY:
		
		re = TRUE;
		break;
	case CW_TM:
	case CW_SEND_STRNOWAIT:
	default:
		re = FALSE;
	}
	return re;
}

BOOL CMoblieXDoc::MakeCurSendStr()
{
	if( m_sendStrArray.GetSize() <= 0 )
	{//沒(méi)有字串要發(fā)送
		return FALSE;
	}

	if( m_atState == ATS_WAITING
	 && IsCurWorkWantEcho() )
	{//上次命令沒(méi)有結(jié)果, 并且那個(gè)命令需要等結(jié)果
		return FALSE;
	}

	if( m_sendStrArray[0].GetLength() <= 0 )
	{//空字串, 忽略
		m_sendStrArray.RemoveAt( 0 );
		m_sendCWIDArray.RemoveAt( 0 );
		m_sendStrDesArray.RemoveAt( 0 );
		return FALSE;
	}

	if( !(m_sendStrDesArray[0].IsEmpty()) && IsLogRes2Wnd() )
	{
		AddLog( m_sendStrDesArray[0] );
	}

	m_curSendStr = m_sendStrArray[0];
	m_curWorkID = m_sendCWIDArray[0];
	m_sendStrArray.RemoveAt( 0 );
	m_sendCWIDArray.RemoveAt( 0 );
	m_sendStrDesArray.RemoveAt( 0 );

	return TRUE;
}

//注意: 本函數(shù)在子線程中運(yùn)行
BOOL CMoblieXDoc::CommSendCurStr()
{
DWORD nBytes = m_curSendStr.GetLength();
DWORD nSendBytes;

	if( nBytes <= 0 )
	{//沒(méi)有數(shù)據(jù)要發(fā)送
		return FALSE;
	}
	if( !WriteFile( m_hComm, m_curSendStr, nBytes, &nSendBytes, NULL ) )
	{//輸出數(shù)據(jù)不成功
	CString sMsg;
		sMsg.Format( "通訊錯(cuò)誤(輸出): %d", GetLastError() );
		TRACE( sMsg + '\n' );
		if( IsLogWrite2Wnd() )
		{
			AddLog( sMsg );
		}
	}
	else if( nBytes != nSendBytes )
	{
		TRACE( "通訊錯(cuò)誤(輸出丟失)\n" );
		if( IsLogRes2Wnd() )
		{
			AddLog( "通訊錯(cuò)誤(輸出丟失)" );
		}
	}
	else
	{
		m_commNoDataReadCounter = 0;//連續(xù)未讀到數(shù)據(jù)計(jì)數(shù)器清零
		m_atState = ATS_WAITING;//重設(shè)AT命令結(jié)果狀態(tài)

		if( IsLogWrite2Wnd() )
		{
			AddLog( "CM>>" + m_curSendStr );
		}
	}
	return TRUE;
}

BOOL CMoblieXDoc::CommReadStr()
{
DWORD nBytes;

	if(!ReadFile(m_hComm, m_commBuf, COMM_REC_BUF_SIZE, &nBytes, NULL))
	{
		TRACE( "通訊錯(cuò)誤(輸入): %d\n", GetLastError() );
		return FALSE;
	}
	else
	{
		if(nBytes)
		{//已讀到數(shù)據(jù)
			m_commBuf[nBytes] = 0;
			m_curReadStr += m_commBuf;
			m_commNoDataReadCounter = 0;//連續(xù)未讀到數(shù)據(jù)計(jì)數(shù)器清零
		}
		else
		{//沒(méi)有讀到數(shù)據(jù)
			m_commNoDataReadCounter++;
		}
		return TRUE;
	}
}

BOOL CMoblieXDoc::ProcessResult()
{
BOOL re;

	switch( m_curWorkID )
	{
	case CW_CMGS_QUERY:
		re = ProcessResCMGSQuery();	break;
	case CW_GET_SMS:
		re = ProcessResGetSMS();	break;
	case CW_ADD_SMS:

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜亚洲精品中文字幕一区| 中文字幕乱码日本亚洲一区二区| 91在线小视频| 成人网在线免费视频| 国产露脸91国语对白| 国产一区二区三区观看| 国产精品性做久久久久久| 粉嫩久久99精品久久久久久夜| 国产精品一区2区| 成人免费视频app| 在线免费观看一区| 欧美蜜桃一区二区三区| 欧美电视剧在线观看完整版| 精品国产sm最大网站免费看| 国产欧美日韩亚州综合| 中文字幕一区二区在线播放| 亚洲一卡二卡三卡四卡五卡| 日韩电影在线看| 国产精一区二区三区| av午夜精品一区二区三区| 欧美亚男人的天堂| 精品久久久久久综合日本欧美| 国产亚洲午夜高清国产拍精品| 日韩理论在线观看| 天天综合天天综合色| 国产91精品在线观看| 欧美视频中文字幕| 精品1区2区在线观看| 一区二区三区精品| 免费在线观看精品| av不卡免费在线观看| 日韩精品一区二区在线观看| 1区2区3区欧美| 九九**精品视频免费播放| 色美美综合视频| 精品日韩在线一区| 亚洲国产成人91porn| 国产 日韩 欧美大片| 日韩一级二级三级| 一二三四区精品视频| 麻豆精品一区二区av白丝在线| 国产成人av影院| 欧美日韩1区2区| 亚洲视频一二三| 狠狠色狠狠色综合| 欧美日韩精品系列| 亚洲男人的天堂av| 大胆亚洲人体视频| 久久久影院官网| 日本三级韩国三级欧美三级| 色一情一乱一乱一91av| 欧美国产精品一区二区三区| 性久久久久久久| 欧美性做爰猛烈叫床潮| 亚洲婷婷国产精品电影人久久| 国产一区二区三区在线看麻豆| 欧美日韩黄视频| 亚洲精品视频免费观看| 成熟亚洲日本毛茸茸凸凹| 日韩欧美一区二区在线视频| 亚洲电影在线播放| 欧美性做爰猛烈叫床潮| 综合久久综合久久| 99久久综合99久久综合网站| 国产欧美1区2区3区| 国产91丝袜在线播放九色| 精品国产伦一区二区三区观看体验 | 国产精品国产自产拍在线| 蜜桃精品视频在线观看| 欧美一区二区视频在线观看2020 | 日韩精品影音先锋| 日本美女视频一区二区| 日韩三级精品电影久久久 | 日韩午夜在线影院| 日韩1区2区日韩1区2区| 欧美电影免费提供在线观看| 男女激情视频一区| 2024国产精品| 国产精选一区二区三区| 国产精品视频一区二区三区不卡| 国产999精品久久久久久 | 日本韩国一区二区| 亚洲激情自拍偷拍| 欧美日韩国产一区二区三区地区| 亚洲成人动漫在线免费观看| 91精品国产黑色紧身裤美女| 麻豆精品在线播放| 中文字幕第一区| 色综合久久88色综合天天免费| 一区二区三区中文在线| 欧美日韩在线电影| 看国产成人h片视频| 久久久国产精品麻豆| 99久久免费视频.com| 天天操天天色综合| 久久青草国产手机看片福利盒子| www.av精品| 视频在线在亚洲| 国产人伦精品一区二区| 欧美视频一区二区三区| 精品一区二区三区免费播放| 国产精品久99| 欧美一区二区三区白人| 成人激情电影免费在线观看| 亚洲福利一区二区| 国产欧美日韩不卡| 777色狠狠一区二区三区| 国产成人av网站| 洋洋av久久久久久久一区| 精品国产髙清在线看国产毛片| 成人美女视频在线观看| 日韩经典中文字幕一区| 国产精品国产三级国产有无不卡| 欧美丝袜第三区| 成人午夜免费av| 日本特黄久久久高潮| 亚洲欧美国产77777| 久久亚洲欧美国产精品乐播 | 国产精品资源网| 亚洲制服欧美中文字幕中文字幕| 精品久久久久久久久久久久久久久 | 亚洲欧美自拍偷拍色图| 日韩色视频在线观看| 色香色香欲天天天影视综合网| 国产在线国偷精品产拍免费yy| 亚洲一区二区欧美日韩| 亚洲国产电影在线观看| 欧美tk—视频vk| 欧美一区二区三区在线看| 91久久精品国产91性色tv| 丰满少妇久久久久久久| 韩国视频一区二区| 视频一区视频二区在线观看| 亚洲免费av网站| 亚洲欧美日韩一区| 综合色天天鬼久久鬼色| 中文字幕精品一区| 日本一区二区不卡视频| 久久久久成人黄色影片| 精品福利二区三区| 欧美大片在线观看一区| 欧美视频中文一区二区三区在线观看| 色狠狠色噜噜噜综合网| 国产精品美女久久久久久| 久久精品欧美日韩精品 | 一区二区三区成人在线视频| 久久久.com| 久久久综合网站| 久久久一区二区三区| 欧美精品一区二区三区视频| 日韩一级在线观看| 日韩欧美自拍偷拍| 精品国产1区二区| 精品国产91洋老外米糕| 精品国产一二三区| 久久日一线二线三线suv| 2024国产精品| 国产精品女同一区二区三区| 国产精品久久久久久久久久久免费看 | 国产一区999| 国产在线视视频有精品| 国产aⅴ精品一区二区三区色成熟| 国产精品中文字幕日韩精品| 国产白丝精品91爽爽久久| 成人一级片网址| 91成人免费在线视频| 欧美电影影音先锋| 久久久亚洲精品一区二区三区| 国产日韩精品一区二区三区| 亚洲欧洲精品成人久久奇米网| 亚洲激情校园春色| 日日摸夜夜添夜夜添精品视频 | 国产精品一区二区黑丝| 国产91精品露脸国语对白| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品一区二区三区99| 波多野结衣视频一区| 欧美亚洲动漫精品| 日韩欧美高清在线| 1024亚洲合集| 丝袜美腿高跟呻吟高潮一区| 国产成人丝袜美腿| 在线亚洲+欧美+日本专区| 精品国一区二区三区| 中文字幕一区二区在线观看| 日韩影视精彩在线| 国产aⅴ精品一区二区三区色成熟| 在线欧美一区二区| 久久久精品tv| 午夜国产精品一区| 99re热视频这里只精品| 日韩欧美国产精品| 亚洲一区二区精品久久av| 国精产品一区一区三区mba桃花| 91在线国产福利| 精品国产乱码久久久久久免费 | 欧美三级日本三级少妇99| 精品久久人人做人人爱| 亚洲一二三四在线观看| 成人综合日日夜夜|