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

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

?? ch375testdlg.cpp

?? CH372的單片機編程,VC編程,VB編程,dephi編程
?? CPP
字號:
// Ch375TestDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Ch375Test.h"
#include "Ch375TestDlg.h"
#include "ch375dll.h"
#include "stdio.h"
#include "conio.h"

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

#define		TEST_START			0x20	// 測試過程開始
#define		TEST_DATA			0x21	// 測試數據正確性
#define		TEST_UPLOAD			0x22	// 測試上傳數據塊
#define		TEST_DOWNLOAD		0x23	// 測試下傳數據塊

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCh375TestDlg dialog

CCh375TestDlg::CCh375TestDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCh375TestDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCh375TestDlg)
	m_err = 0;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCh375TestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCh375TestDlg)
	DDX_Control(pDX, IDC_CHECK_TEST, m_test);
	DDX_Control(pDX, IDC_LIST_DES, m_describe);
	DDX_Text(pDX, IDC_EDIT_ERR, m_err);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCh375TestDlg, CDialog)
	//{{AFX_MSG_MAP(CCh375TestDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
//	ON_BN_CLICKED(IDC_CHECK_OPEN, OnCheckOpen)
	ON_BN_CLICKED(IDC_CHECK_TEST, OnCheckTest)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCh375TestDlg message handlers

BOOL CCh375TestDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	m_err = 0;
	m_trdFlag = FALSE;
	m_OpenFlag = FALSE;

	m_test.SetCheck(0);
	mOpenDevice();
	UpdateData(FALSE);
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CCh375TestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CCh375TestDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CCh375TestDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CCh375TestDlg::OnButtonClear() 
{
	m_describe.ResetContent();
}

void CCh375TestDlg::OnCheckOpen() 
{

}

//測試。。。
void CCh375TestDlg::OnCheckTest()   
{
	// TODO: Add your control notification handler code here

	CWinThread * mThread = NULL;
	m_trdFlag = TRUE;
	if(m_test.GetCheck())		//開始測試
	{
		if(!m_OpenFlag)
		{
			Sleep(100);
			CH375CloseDevice( 0 );
			if(!mOpenDevice())
			{
				m_describe.InsertString(-1,_T("設備未能成功打開!"));
				return;
			}
		}
		m_test.EnableWindow(FALSE);
		mThread = AfxBeginThread(mThreadTest,this,THREAD_PRIORITY_NORMAL,0,0,NULL); 
		if(mThread)
		{
			if(m_test.GetCheck())
			{
			}
			else
			{
				m_test.SetCheck(0);
			}
		}
		else
		{
			m_trdFlag = FALSE;
			m_test.SetCheck(0);
			MessageBox("Thread failed!","CH375TEST",MB_OK|MB_ICONSTOP);
		}
		UpdateData(FALSE);
		
	}
	else					//測試中斷
	{
		int x=100;
		m_trdFlag = FALSE;
		m_test.SetCheck(0);
		m_describe.InsertString(-1,_T("the Test is terminated"));
		UpdateData(FALSE);
		while(x)
			x--;
	}

	UpdateData(FALSE);
}

UINT mThreadTest(LPVOID pParam)
{
	unsigned long	i, mLength, mTestCount, mErrCnt, mStep, mTotal;
	char strtemp[2000];
	double speed;

	CCh375TestDlg *pDlg = (CCh375TestDlg *)pParam;

	if(pDlg->m_trdFlag)
	{
		mErrCnt=0;
		pDlg->m_err = 0;
		pDlg->m_describe.InsertString(-1,_T("*** Step-0: notice MCU start test"));

		pDlg->mBuffer[0]=TEST_START;
		mTotal=1;
		if ( CH375WriteData( 0, &pDlg->mBuffer, &mTotal ) )  // 發送成功
		{
			pDlg->m_describe.InsertString(-1,_T("Start test now..."));
		}
		else         // 寫操作失敗
		{ 
			mErrCnt++;
			pDlg->m_err++;
			pDlg->m_describe.InsertString(-1,_T( "S0-T0 CH375WriteData return error, length=1" ));
		}

		Sleep(200);

		pDlg->mBuffer[0]=TEST_START;
		mTotal=1;
		if ( CH375WriteData( 0, &pDlg->mBuffer, &mTotal ) )  // 發送成功
		{
		}
		else       // 寫操作失敗
		{  
			mErrCnt++;
			pDlg->m_err++;
			pDlg->m_describe.InsertString(-1,_T( "S0-T1 CH375WriteData return error, length=1" ));
		}

		Sleep(200);
		
		//******************************
		//correctness test
		pDlg->m_describe.InsertString(-1,_T( "*** Step-1: test data correctness: 2000 times, random length and data" ));

		for ( mTestCount=0; mTestCount<2000; ++mTestCount )  // 循環測試
		{
			mStep=mTestCount&0x03;

			switch( mStep )
			{
				case 0: memset( pDlg->mBuffer, 0x00, 64 );  // 發送全00H/返回全FFH
						break;
				case 1: memset( pDlg->mBuffer, 0xff, 64 );  // 發送全FFH/返回全00H
						break;
				default: for ( i=0; i<64; i+=2 ) *(unsigned int *)(&(pDlg->mBuffer[i]))=rand();  // 發送隨機數/返回位反碼
						break;
			}

			pDlg->mBuffer[0]=TEST_DATA;
			mTotal=rand();  // 隨機數長度
			mTotal=mTotal%100;

			if ( mTotal == 0 || mTotal > 64 ) 
				mTotal=(mTotal & 0x01)?64:63;

			sprintf(strtemp,"Cng=%4ld,Len=%2d,Data:%02x,%02x,%02x,%02x...\xd",mTestCount,mTotal,pDlg->mBuffer[0],pDlg->mBuffer[1],pDlg->mBuffer[2],pDlg->mBuffer[3]);
			pDlg->m_describe.InsertString(-1,_T(strtemp));
	
			if ( CH375WriteData( 0, &pDlg->mBuffer, &mTotal ) )  // 發送成功
			{
				mLength = 64;
				if ( CH375ReadData( 0, &pDlg->mReadBuf, &mLength ) )  // 接收成功
				{
					if ( mLength != mTotal || mLength==0 ) 
					{
						mErrCnt++;
						pDlg->m_err++;

						sprintf(strtemp,"S1-T%0ld-C%ld return length error: %ld (%ld)\x0",mStep,mTestCount,mLength,mTotal);
						pDlg->m_describe.InsertString(-1,_T(strtemp));
					}
					else 
					{
						for ( i=0; i<mLength; ++i ) 
						{
							if ( (pDlg->mReadBuf[i]^0xff)!=pDlg->mBuffer[i] ) 
							{
								mErrCnt++;
								pDlg->m_err++;
								sprintf(strtemp,"S1-T%0ld-C%ld return error at %ld: %2XH (%02XH)\x0",mStep,mTestCount,i,pDlg->mReadBuf[i],pDlg->mBuffer[i]);
								pDlg->m_describe.InsertString(-1,_T(strtemp));
							}
						}
					}
				}
				else         // 讀操作失敗
				{
					mErrCnt++;
					pDlg->m_err++;
				
					sprintf(strtemp,"S1-T%0ld-C%ld CH375ReadData return error,length=%ld",mStep,mTestCount,mTotal);
					pDlg->m_describe.InsertString(-1,_T(strtemp));
				}
			}
			else 
			{  // 寫操作失敗
				mErrCnt++;
				pDlg->m_err++;
				
				sprintf(strtemp,"S1-T%ld-C%ld CH375WriteData return error,length=%ld",mStep,mTestCount,mTotal);
				pDlg->m_describe.InsertString(-1,_T(strtemp));
			}
		}
		
		if ( mErrCnt==0 ) 
			pDlg->m_describe.InsertString(-1,"*** passed    " );
		Sleep(100);
		
		//**************************
		//下傳速度測試
		pDlg->m_describe.InsertString(-1,_T( "*** Step-2: test speed of download data: 2048KB data " ));
		pDlg->m_describe.SetCurSel(pDlg->m_describe.GetCount() - 1);
		for ( i=0; i<4096; i+=2 ) 
			*(unsigned long *)(&pDlg->mBuffer[i])=rand();  // 產生隨機數以發送
		
		for ( i=0; i<4096; i+=64 ) 
			pDlg->mBuffer[i]=TEST_DOWNLOAD;  // 每64字節為一個數據包,首字節為命令碼
		
		mTotal=0;
		mStep=GetTickCount();
		
		for ( mTestCount=0; mTestCount<500; ++mTestCount )  // 循環測試
		{
			*(unsigned long *)(&pDlg->mBuffer[4])=mTestCount;
			mLength = 4096;
			
			if ( CH375WriteData( 0, &pDlg->mBuffer, &mLength ) )  // 發送成功
			{
				if ( mLength != 4096 ) 
				{
					sprintf(strtemp,"S2-C%ld CH375WriteData actual length short %ld (4096)",mLength);
					pDlg->m_describe.InsertString(-1,strtemp);
				}
				mTotal +=mLength;  // 累計長度
			}
			else 
			{  // 寫操作失敗
				mErrCnt++;
				pDlg->m_err++;
				sprintf(strtemp,"S2-C%ld CH375WriteData return error",mTestCount);
				pDlg->m_describe.InsertString(-1,_T(strtemp));
			}
		}

		mLength=GetTickCount();
		mLength=mLength-mStep;
		speed=1000;
		
		if ( mLength !=0 ) 
			speed=speed*mTotal/mLength;
		else speed=9999999;
		
		sprintf(strtemp,"*** download speed = %7.1f Bytes/Sec,total=%ld bytes,time=%ld mS",speed,mTotal,mLength);
		pDlg->m_describe.InsertString(-1,_T(strtemp));
		pDlg->m_describe.SetCurSel(pDlg->m_describe.GetCount() - 1);
		
		Sleep(100);
		
		//***********************************
		//上傳速度測試
		pDlg->m_describe.InsertString(-1,_T( "*** Step-3: test speed of upload data: 2048KB data\n" ));
		pDlg->m_describe.SetCurSel(pDlg->m_describe.GetCount() - 1);
		pDlg->mBuffer[0]=TEST_UPLOAD;
		mLength = 1;
		
		if ( CH375WriteData( 0, &pDlg->mBuffer, &mLength ) )  // 發送成功
		{
			mTotal=0;
			mStep=GetTickCount();
			for ( mTestCount=0; mTestCount<500; ++mTestCount )  // 循環測試
			{
				mLength = 4096;
				if ( CH375ReadData( 0, &pDlg->mBuffer, &mLength ) )  // 接收成功
				{
					if ( mLength != 4096 ) 
					{
						sprintf(strtemp,"S3-C%ld CH375ReadData actual length short %ld (4096)\x0",mLength);
						pDlg->m_describe.InsertString(-1,_T(strtemp));
					}
					mTotal +=mLength;  // 累計長度
				}
				else
				{  // 讀操作失敗
					mErrCnt++;
					pDlg->m_err++;
					memset(strtemp,0x00,sizeof(strtemp));
					pDlg->m_describe.InsertString(-1,_T(strtemp));	
					sprintf(strtemp,"S3-C%ld CH375ReadData return error",mTestCount);
				}
			}

			mLength=GetTickCount();
			mLength=mLength-mStep;
			speed=1000;

			if ( mLength !=0 ) 
				speed=speed*mTotal/mLength;
			else 
				speed=9999999;
			
			memset(strtemp,0x00,sizeof(strtemp));
			sprintf(strtemp,"*** upload speed = %7.1f bytes/Sec,total=%ld bytes,time=%ld mS",speed,mTotal,mLength);
			pDlg->m_describe.InsertString(-1,_T(strtemp));
			pDlg->m_describe.SetCurSel(pDlg->m_describe.GetCount() - 1);
		}
		else 
		{  // 寫操作失敗
			mErrCnt++;
			pDlg->m_err++;
			pDlg->m_describe.InsertString(-1,_T("S3 CH375WriteData return error"));
		}
		Sleep(100);
		
		//****************************************
		// 關閉CH375設備,如果不繼續使用則必須關閉設備,就象讀寫完硬盤中的數據文件后要關閉一樣
		memset(strtemp,0x00,sizeof(strtemp));
		sprintf(strtemp,"*** Total error = %ld",mErrCnt);
		
		pDlg->m_describe.InsertString(-1,_T(strtemp));
		pDlg->m_describe.InsertString(-1,"*** CH375CloseDevice: 0");
		
		CH375CloseDevice( 0 );
		pDlg->m_OpenFlag = FALSE;
		pDlg->m_describe.InsertString(-1,_T("Exit."));
		pDlg->m_describe.InsertString(-1,_T("設備已關閉"));
		pDlg->m_describe.SetCurSel(pDlg->m_describe.GetCount() - 1);
		pDlg->m_test.SetCheck(0);
		pDlg->m_test.EnableWindow(TRUE);
		
	}
	
	ExitThread(0);
	pDlg->UpdateData(FALSE);
	return 0;
}

BOOL CCh375TestDlg::mOpenDevice()
{
	if ( CH375OpenDevice( 0 ) == INVALID_HANDLE_VALUE )   /* 使用之前必須打開設備 */
	{
		m_describe.InsertString(-1,_T("設備打開失敗,可能未安裝動態鏈接庫。"));
		m_OpenFlag = FALSE;
		return FALSE;
	}
	else
	{
		m_OpenFlag = TRUE;
		m_describe.InsertString(-1,_T("設備已打開。"));
		m_test.EnableWindow(TRUE);
		UpdateData(FALSE);
		return TRUE;
	}
	return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成a人在线观看| 在线亚洲免费视频| 一卡二卡欧美日韩| 欧美精品一区二区三区高清aⅴ | 免费的成人av| 亚洲女性喷水在线观看一区| 精品国产一区二区三区av性色| 91麻豆福利精品推荐| 国产精品99久| 久久精品国产色蜜蜜麻豆| 亚洲色图制服丝袜| 国产午夜精品久久久久久免费视 | 正在播放一区二区| 99久久久无码国产精品| 国产在线精品视频| 五月天亚洲精品| 亚洲激情图片小说视频| 中文字幕巨乱亚洲| 久久久久久亚洲综合影院红桃| 欧美一区二区在线看| 色国产精品一区在线观看| 成人免费av在线| 韩国午夜理伦三级不卡影院| 日韩在线一区二区三区| 亚洲黄色av一区| 亚洲免费在线观看| 中文字幕精品一区二区精品绿巨人| 日韩三级.com| 欧美zozozo| 精品久久久久久久一区二区蜜臀| 3d成人h动漫网站入口| 在线日韩av片| 日本道色综合久久| 一本久道中文字幕精品亚洲嫩| 成人动漫在线一区| 丁香网亚洲国际| 成人小视频免费在线观看| 国产馆精品极品| 国产成人免费在线观看| 岛国av在线一区| 成人涩涩免费视频| 波多野结衣精品在线| 成人福利视频网站| 一本大道久久a久久综合| 91小视频在线观看| 色婷婷香蕉在线一区二区| 91国偷自产一区二区三区观看| 在线观看日韩电影| 欧美日韩视频不卡| 日韩欧美精品在线视频| 久久嫩草精品久久久久| 国产视频一区不卡| 自拍偷拍国产精品| 亚洲va欧美va国产va天堂影院| 亚洲国产精品一区二区久久| 日韩电影免费在线| 国产综合色在线视频区| 成人免费高清视频| 欧美在线色视频| 日韩欧美国产小视频| 欧美国产成人精品| 一区二区三区成人| 人禽交欧美网站| 国产成人综合在线观看| 97久久精品人人澡人人爽| 欧美中文字幕久久| 精品理论电影在线| 中文字幕亚洲区| 亚洲123区在线观看| 精品一区二区在线免费观看| 国产99一区视频免费| 欧美专区亚洲专区| 久久综合色8888| 一区二区三区免费| 激情图片小说一区| 色老汉一区二区三区| 日韩一级完整毛片| 中文字幕一区视频| 日韩综合一区二区| www.成人网.com| 91精品国产欧美日韩| 国产精品欧美久久久久无广告| 日日骚欧美日韩| 91网址在线看| 欧美成人性福生活免费看| 国产精品久久一卡二卡| 日韩福利电影在线观看| 91在线码无精品| 欧美成人一区二区三区片免费 | 亚洲另类一区二区| 麻豆精品国产91久久久久久| 91久久精品网| 国产日韩精品一区二区浪潮av| 香蕉成人啪国产精品视频综合网| 大胆欧美人体老妇| 日韩精品一区二区三区在线播放| 亚洲日本在线观看| 国产精品亚洲一区二区三区在线 | av电影在线观看完整版一区二区| 91精品在线观看入口| 亚洲欧美日韩国产综合| 久久99精品久久久久婷婷| 91久久一区二区| 国产精品欧美极品| 精品一区二区三区香蕉蜜桃 | 亚洲综合在线五月| 国产91色综合久久免费分享| 欧美一区二区三区视频在线观看| 亚洲欧美另类小说| 懂色av一区二区三区免费观看| 欧美成人vps| 午夜天堂影视香蕉久久| 97精品久久久久中文字幕 | 正在播放一区二区| 亚洲成人先锋电影| 欧洲中文字幕精品| 中文字幕在线不卡一区 | 99综合电影在线视频| 久久丝袜美腿综合| 免费看精品久久片| 欧美福利视频导航| 亚洲国产成人porn| 欧美专区在线观看一区| 亚洲色图制服丝袜| 91丨九色porny丨蝌蚪| 国产精品午夜在线| 懂色av一区二区夜夜嗨| 国产日韩一级二级三级| 国产精品18久久久久久久网站| 日韩欧美在线综合网| 日韩不卡在线观看日韩不卡视频| 欧美裸体一区二区三区| 偷窥国产亚洲免费视频| 欧美日韩国产中文| 天天综合网 天天综合色| 欧美日韩在线电影| 亚洲va在线va天堂| 欧美精选一区二区| 蜜桃一区二区三区在线观看| 欧美电影免费观看高清完整版在 | 久久久久久麻豆| 成人免费视频播放| 亚洲欧美区自拍先锋| 欧洲亚洲精品在线| 亚洲国产精品一区二区久久恐怖片 | 色综合天天狠狠| 一区二区三区四区乱视频| 在线国产亚洲欧美| 午夜一区二区三区在线观看| 666欧美在线视频| 免费不卡在线观看| 久久综合视频网| proumb性欧美在线观看| 亚洲欧美偷拍另类a∨色屁股| 91激情五月电影| 青青草91视频| 久久久久久久性| 91免费视频大全| 亚洲成人动漫av| 欧美不卡视频一区| 成人一二三区视频| 亚洲精品中文字幕乱码三区| 欧美人牲a欧美精品| 久久精工是国产品牌吗| 欧美国产成人在线| 欧美亚洲综合在线| 久久精工是国产品牌吗| 中文字幕制服丝袜一区二区三区 | 成人黄色a**站在线观看| 亚洲综合男人的天堂| 337p亚洲精品色噜噜噜| 国产999精品久久| 亚洲国产人成综合网站| 日韩精品一区二区三区中文不卡 | 欧美电视剧在线看免费| 成人黄色网址在线观看| 亚洲mv在线观看| 国产亚洲精品aa| 91福利资源站| 久久99国产精品麻豆| 亚洲精品免费看| 欧美美女一区二区三区| 国产91露脸合集magnet| 亚洲国产成人tv| 国产丝袜欧美中文另类| 欧美日韩卡一卡二| 国产精品综合二区| 亚洲一区二区三区在线播放| 久久精品亚洲精品国产欧美| 欧美日韩国产另类一区| 国产精品一区免费视频| 亚洲第一av色| 国产精品女人毛片| 精品国产免费一区二区三区香蕉| 97se亚洲国产综合自在线| 老汉av免费一区二区三区| 亚洲日本在线a| 国产午夜精品久久久久久久 | 日韩欧美一区在线| 91麻豆精品一区二区三区|