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

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

?? testmscomdlg.cpp

?? 串口調試精靈
?? CPP
字號:
// TestMSComDlg.cpp : implementation file
//

#include "stdafx.h"
#include "TestMSCom.h"
#include "TestMSComDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// 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()

/////////////////////////////////////////////////////////////////////////////
// CTestMSComDlg dialog

CTestMSComDlg::CTestMSComDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestMSComDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestMSComDlg)
	m_SendStr = _T("");
    m_hPort = NULL;
	m_pCommThread = NULL;
	m_bExitThread = FALSE;
	m_FileName = _T("");
	m_num = 0;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTestMSComDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestMSComDlg)
	DDX_Control(pDX, IDC_PROGRESS, m_Progress);
	DDX_Control(pDX, IDC_PROG, m_Prog);
	DDX_Control(pDX, IDC_OPEN_PORT, m_OpenPortBNT);
	DDX_Control(pDX, IDC_CLOSE_PORT, m_ClosePortBNT);
	DDX_Control(pDX, IDC_BNT_SEND, m_SendBNT);
	DDX_Control(pDX, IDC_EDIT_REC, m_Edit);
	DDX_Text(pDX, IDC_EDIT_SEND, m_SendStr);
	DDX_Text(pDX, IDC_FILENAME, m_FileName);
	DDX_Text(pDX, IDC_NUM, m_num);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTestMSComDlg, CDialog)
	//{{AFX_MSG_MAP(CTestMSComDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_SET_PORT, OnSetPort)
	ON_BN_CLICKED(IDC_OPEN_PORT, OnOpenPort)
	ON_MESSAGE(WM_RECVDATA,OnRecvData)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_BNT_CLEAR, OnBntClear)
	ON_BN_CLICKED(IDC_CLOSE_PORT, OnClosePort)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_BNT_SEND, OnBntSend)
	ON_BN_CLICKED(IDC_PROG, OnProg)
	ON_BN_CLICKED(IDC_OPEN_HEX_FILE, OnOpenHexFile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestMSComDlg message handlers

BOOL CTestMSComDlg::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_SendBNT.EnableWindow(FALSE);
	m_ClosePortBNT.EnableWindow(FALSE);
	m_Prog.EnableWindow(FALSE);
	m_Progress.SetRange(0,1000);
    m_Progress.SetPos(1000);
	m_Progress.SetStep(10);
//	UpDateData(FALSE);
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CTestMSComDlg::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 CTestMSComDlg::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 CTestMSComDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CTestMSComDlg::OnSetPort() 
{
	// TODO: Add your control notification handler code here
	PortSetting.DoModal();
}

void CTestMSComDlg::OnOpenPort() 
{
	// TODO: Add your control notification handler code here
	extern int m_nDataBits;
	extern int m_nStopBits;
	extern int m_nParity;
	extern int m_nBaud;
	extern int m_nPort;

	if(m_hPort)
	{
		MessageBox("串口已經打開!");
		return;
	}
	
    //設置結束接收線程標志
	m_bExitThread = FALSE;

	CString sPort;
	sPort.Format(_T("COM%d"),m_nPort+1);
	m_hPort = CreateFile(sPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
    if(m_hPort == INVALID_HANDLE_VALUE)
	{
		MessageBox("打開串口失敗!");
		m_hPort = NULL;
		return;
	}
    m_OpenPortBNT.EnableWindow(FALSE);
    m_SendBNT.EnableWindow(TRUE);
	m_ClosePortBNT.EnableWindow(TRUE);
	m_Prog.EnableWindow(TRUE);

	DCB ComDCB;
	ComDCB.DCBlength = sizeof(DCB);
	switch(m_nBaud)
	{
    	case 0 : ComDCB.BaudRate = 1200;break;
    	case 1 : ComDCB.BaudRate = 2400;break;
     	case 2 : ComDCB.BaudRate = 4500;break;
    	case 3 : ComDCB.BaudRate = 9600;break;
		default:break;
	}

    switch(m_nDataBits)
	{
    	case 0 : ComDCB.ByteSize = 4;break;
    	case 1 : ComDCB.ByteSize = 5;break;
     	case 2 : ComDCB.ByteSize = 6;break;
    	case 3 : ComDCB.ByteSize = 7;break;
        case 4 : ComDCB.ByteSize = 8;break;
		default:break;
	}

	 switch(m_nParity)
	{
    	case 0 : ComDCB.Parity = EVENPARITY;break;
    	case 1 : ComDCB.Parity = MARKPARITY;break;
     	case 2 : ComDCB.Parity = NOPARITY;break;
    	case 3 : ComDCB.Parity = ODDPARITY;break;
        case 4 : ComDCB.Parity = SPACEPARITY;break;
		default:break;
	}

	 switch(m_nStopBits)
	{
    	case 0 : ComDCB.StopBits= ONESTOPBIT;break;
    	case 1 : ComDCB.StopBits = ONE5STOPBITS;break;
     	case 2 : ComDCB.StopBits= TWOSTOPBITS;break;
		default:break;
	}

	 SetCommState(m_hPort,&ComDCB);

	 //啟動接收線程
     m_pCommThread = AfxBeginThread(lpCommThreadProc, this);
	 if(m_pCommThread)
		 m_pCommThread->m_bAutoDelete = TRUE;
	 else
	 {
		 MessageBox("啟動接收線程失敗!");
		 CloseHandle(m_hPort);
		 m_hPort = NULL;
		 return;
	 }
}

void CTestMSComDlg::OnRecvData(WPARAM wp,LPARAM lp)
{

}

UINT CTestMSComDlg::lpCommThreadProc(LPVOID lpParam)
{
    CTestMSComDlg *pWnd = (CTestMSComDlg*) lpParam;
 //   BYTE RecvBuf[1024];
	unsigned char *RecvBuf=new unsigned char[1024];
	OVERLAPPED overlapped;
	DWORD dwEvtMask = 0;
	DWORD dwError,dwReadCount=0;
	DWORD dwReturnCount;
	COMSTAT cs;
	memset(&overlapped,0,sizeof(overlapped));
    overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
	SetCommMask(pWnd->m_hPort, EV_RXCHAR);
    while(!pWnd->m_bExitThread)
	{
		WaitCommEvent(pWnd->m_hPort, &dwEvtMask, NULL);
		if(dwEvtMask & EV_RXCHAR)
		{
			//獲取串口狀態
			ClearCommError(pWnd->m_hPort, &dwError, &cs);
			dwReadCount = cs.cbInQue; //串行設備收到的字節數
			if(dwReadCount <= 0) continue;
			BOOL bReadStat = ReadFile(pWnd->m_hPort, RecvBuf, dwReadCount, &dwReturnCount, &overlapped);
            pWnd->TransferRecData(RecvBuf, dwReturnCount);
		}
	}
	CloseHandle(overlapped.hEvent);
	PurgeComm(pWnd->m_hPort, PURGE_TXABORT|PURGE_RXABORT|PURGE_RXCLEAR|PURGE_TXCLEAR); //進行清空串口緩沖區等操作
	return 0;
}

//void CTestMSComDlg::TransferRecData(BYTE* Buf, int Len)
void CTestMSComDlg::TransferRecData(unsigned char* Buf, int Len)
{
	for(int i=0; i<Len; i++)
	{
		m_RecvBuf[i] = Buf[i];
		CString str;
		if(Buf[i]<=0x0F)
		{
			str.Format("%x",m_RecvBuf[i]);
			str = "0" + str;
            m_strREC += str + " ";
			m_Edit.SetWindowText(m_strREC);
			int nFirstVisible = m_Edit.GetLineCount()-6;
			if (nFirstVisible > 0)
			{
				m_Edit.LineScroll(nFirstVisible, 0);
			}
		}
		else
		{
			str.Format("%x",m_RecvBuf[i]);
			m_strREC+=str+" ";
			m_Edit.SetWindowText(m_strREC);
			int nFirstVisible = m_Edit.GetLineCount()-6;
			if (nFirstVisible > 0)
			{
				m_Edit.LineScroll(nFirstVisible, 0);
			}
		}
		int nLength= m_Edit.GetWindowTextLength();
		 m_Edit.SetSel(nLength,nLength,FALSE);
	}
}

void CTestMSComDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnTimer(nIDEvent);
}

void CTestMSComDlg::OnBntClear() 
{
	// TODO: Add your control notification handler code here
	m_Edit.SetWindowText("");
    m_strREC="";
}

void CTestMSComDlg::OnClosePort() 
{
	// TODO: Add your control notification handler code here
	if(m_hPort == NULL)
	{
		MessageBox("串口已經關閉!");
		return;
	}
	m_OpenPortBNT.EnableWindow(TRUE);
	m_ClosePortBNT.EnableWindow(FALSE);
	m_Prog.EnableWindow(FALSE);
    m_SendBNT.EnableWindow(FALSE);
	//設置結束接收線程標志
	m_bExitThread = TRUE;
	
	//使串口接收線程中的WaitCommEvent()函數返回
	SetCommMask(m_hPort, 0);

	//等待接收線程結束
	WaitForSingleObject(m_pCommThread->m_hThread, INFINITE);
	m_pCommThread = NULL;

	//關閉串口
	CloseHandle(m_hPort);
    m_hPort = NULL;
}

HBRUSH CTestMSComDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	if (nCtlColor==CTLCOLOR_STATIC)
	{
		pDC->SetTextColor(RGB(90,0,90));
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CTestMSComDlg::OnBntSend()
{
	// TODO: Add your control notification handler code here
	OVERLAPPED m_osWrite;
	BOOL bResult = FALSE;
	DWORD length = 1;
	DWORD dwErrorFlags;
	char* SendBuf;
	UpdateData(TRUE);
	int nlength = m_SendStr.GetLength();
    SendBuf = new char[nlength];
    SendBuf = m_SendStr.GetBuffer(0);
	COMSTAT ComStat;
    m_osWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
	m_osWrite.Offset = 0;
	m_osWrite.OffsetHigh = 0;
	ClearCommError(m_hPort, &dwErrorFlags, &ComStat);
	bResult = WriteFile(m_hPort,SendBuf,nlength,&length,&m_osWrite);
/*	unsigned char *a = new unsigned char[1];
	a[0]=237;
	CString ss;
	ss.Format("%s",a);
	WriteFile(m_hPort,a,1,&length,&m_osWrite);*/
}

void CTestMSComDlg::OnProg()
{
	// TODO: Add your control notification handler code here
	
	OVERLAPPED m_osWrite;
	DWORD length = 1;
	COMSTAT ComStat;
	DWORD dwErrorFlags;
	char* SendBuf = new char[1];

	CStdioFile m_File;   //讀.HEX文件用
	CString str;
	int pos=0;
	unsigned short prodata;

   m_Progress.SetPos(0);
   m_num=0;
   if(m_FileName=="")
   {
	   MessageBox("請先選擇要下載的文件!");
	   CString str;
	   CFileDialog fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*.hex|*.HEX",NULL);
	   fileDialog.m_ofn.lpstrTitle = "選擇需要下載的*.Hex目標文件"; 
 	   fileDialog.DoModal();
	   str=fileDialog.GetPathName();
	   m_FileName=str;
   };
   m_File.Open(m_FileName,CFile::modeRead); 

    m_osWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
	m_osWrite.Offset = 0;
	m_osWrite.OffsetHigh = 0;
	ClearCommError(m_hPort, &dwErrorFlags, &ComStat);

   while(m_File.ReadString(str))  // 每次循環讀一行
   {
	   if(Char2ToByte(str.Mid(1,2))!=0)  // 判是否是最后一行
	   {
		   //addr = Char4ToByte(str.Mid(3,4)); // 取該行數據的下載首地址
		   for(int i=9;i<=Char2ToByte(str.Mid(1,2))*2+7;i+=2)
		   {
			   prodata = (BYTE)Char2ToByte(str.Mid(i,2)); //取下載的數據,每次取一個字節 0~255
               ///****需做修改的部分****///
               SendBuf[0] = prodata;
               WriteFile(m_hPort,SendBuf,1,&length,&m_osWrite);	
			   ///*********************///
			   m_num++; // 下載字節個數加1
		   }
	   }
   }
    m_Progress.SetPos(1000);
	BeepOk();
	UpdateData(FALSE);
}

void CTestMSComDlg::OnOpenHexFile() 
{
	// TODO: Add your control notification handler code here
	CString str;
	CFileDialog fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*.hex|*.HEX",NULL);
	fileDialog.m_ofn.lpstrTitle = "選擇需要下載的*.Hex目標文件"; 
 	fileDialog.DoModal();
	str=fileDialog.GetPathName();
	m_FileName=str;
	UpdateData(FALSE);	
}
int CTestMSComDlg::Char2ToByte(CString str)
{
    char h0,l0;
	char* pChar;
	int value;
	pChar=new char[2];
	pChar=str.GetBuffer(0);
  
	h0=pChar[0];//高4位
	l0=pChar[1];//低4位

	if(l0>='0'&&l0<='9')
		l0=l0-'0';
	else if(l0>='A' && l0<='F')
		l0=l0-'A'+0xa;

	if(h0>='0'&&h0<='9')
		h0=h0-'0';
	else if(h0>='A'&&h0<='F')
		h0=h0-'A'+0xa;
    value=h0*16+l0;
	return value;
}

void CTestMSComDlg::BeepOk()
{
	Beep(2000,30);
	Sleep(100);
	Beep(2000,30);
	Sleep(100);
	Beep(2000,30);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区免费看视频| 亚洲天堂2014| 最新中文字幕一区二区三区| 一区二区在线观看免费视频播放| 美女任你摸久久| 91成人在线观看喷潮| 久久久高清一区二区三区| 亚洲成人免费视频| 91麻豆免费观看| 国产视频亚洲色图| 美女视频一区在线观看| 欧美日产在线观看| 自拍偷拍亚洲综合| 粉嫩13p一区二区三区| 日韩欧美的一区| 五月综合激情日本mⅴ| 日本韩国欧美在线| 中文字幕一区日韩精品欧美| 久久99精品网久久| 欧美一区二区视频在线观看2022| 亚洲免费在线视频一区 二区| 国产一本一道久久香蕉| 欧美一级高清片| 日韩经典一区二区| 欧美色图12p| 亚洲综合999| 在线免费不卡电影| 亚洲欧美日韩电影| 一本色道久久综合精品竹菊| 亚洲婷婷综合色高清在线| 成人av网站免费观看| 中文字幕第一区综合| 国产99久久精品| 国产精品天干天干在线综合| 丁香五精品蜜臀久久久久99网站| 国产欧美日韩精品一区| 国产91精品露脸国语对白| 国产精品视频一二三区| www.欧美色图| 综合久久国产九一剧情麻豆| 91国偷自产一区二区使用方法| 亚洲靠逼com| 欧美午夜电影在线播放| 亚洲第一会所有码转帖| 欧美图区在线视频| 日本不卡一区二区三区高清视频| 欧美高清激情brazzers| 麻豆精品久久精品色综合| 精品国产百合女同互慰| 国产suv精品一区二区883| 成人免费一区二区三区视频| 日本精品免费观看高清观看| 丝袜亚洲另类丝袜在线| 欧美成人性战久久| 成人av电影观看| 亚洲一区在线观看网站| 精品日韩欧美一区二区| 成人久久久精品乱码一区二区三区| 国产精品成人免费| 欧美精品亚洲一区二区在线播放| 老司机午夜精品99久久| 久久久久久**毛片大全| 在线亚洲一区二区| 国产自产2019最新不卡| 亚洲免费av观看| 欧美不卡一区二区三区四区| www.爱久久.com| 性感美女久久精品| 国产精品国产三级国产| 69精品人人人人| va亚洲va日韩不卡在线观看| 婷婷夜色潮精品综合在线| 欧美极品xxx| 欧美精品一卡两卡| 97久久精品人人做人人爽 | 国产高清精品久久久久| 一区二区在线免费| 久久日韩精品一区二区五区| 欧美羞羞免费网站| 国产乱码精品一区二区三区五月婷 | 欧美激情综合在线| 制服丝袜亚洲播放| 色婷婷av一区二区| 国产高清在线观看免费不卡| 亚洲成人免费电影| 亚洲蜜臀av乱码久久精品蜜桃| 欧美精品一区二区三区很污很色的 | 久久先锋影音av鲁色资源网| 91高清视频免费看| 成人免费精品视频| 久久国产精品第一页| 一区二区三区国产精华| 亚洲国产成人午夜在线一区 | 国产人成一区二区三区影院| 欧美日韩国产大片| 在线日韩一区二区| 99久久精品国产麻豆演员表| 黑人巨大精品欧美一区| 天堂va蜜桃一区二区三区漫画版 | 韩国一区二区三区| 免费观看在线色综合| 亚洲自拍偷拍综合| 亚洲免费看黄网站| 国产精品国产三级国产普通话三级 | 国产欧美精品一区二区色综合 | www.亚洲激情.com| 成人激情午夜影院| 国产成人精品免费| 国产尤物一区二区在线| 久久99久久精品| 美女视频一区在线观看| 免费成人深夜小野草| 日本成人在线一区| 热久久免费视频| 婷婷国产v国产偷v亚洲高清| 亚洲第一激情av| 水蜜桃久久夜色精品一区的特点| 亚洲国产成人porn| 午夜一区二区三区视频| 日韩**一区毛片| 蜜桃视频在线一区| 国产一区二区在线免费观看| 狠狠久久亚洲欧美| 成人久久18免费网站麻豆| 99久久精品久久久久久清纯| 9久草视频在线视频精品| 91伊人久久大香线蕉| 一本大道久久a久久精二百| 欧美午夜精品理论片a级按摩| 欧美精选一区二区| 亚洲精品在线一区二区| 国产欧美日韩综合精品一区二区| 久久精品亚洲一区二区三区浴池| 国产日韩欧美制服另类| 亚洲欧洲精品天堂一级| 亚洲一区二区不卡免费| 日本女人一区二区三区| 国产一区在线精品| 成人动漫一区二区三区| 一本到不卡精品视频在线观看 | 色综合婷婷久久| 欧美欧美欧美欧美首页| 精品精品国产高清a毛片牛牛| 国产亚洲va综合人人澡精品| 中文字幕亚洲综合久久菠萝蜜| 亚洲卡通动漫在线| 久久精品久久99精品久久| 成人动漫视频在线| 91精品综合久久久久久| 国产欧美一区二区精品久导航 | 欧美成人一级视频| 成人免费一区二区三区在线观看| 亚洲成人高清在线| 国产一区二区三区久久悠悠色av| 色综合天天综合网国产成人综合天 | 成人黄色在线网站| 欧美日韩国产精品自在自线| 久久久www成人免费毛片麻豆 | 激情综合网最新| 欧美在线免费播放| 久久精品亚洲精品国产欧美| 亚洲国产sm捆绑调教视频| 国产精品亚洲一区二区三区妖精 | 国产精品色眯眯| 日日噜噜夜夜狠狠视频欧美人| 国产精品一区二区久久不卡 | 国产婷婷色一区二区三区| 亚洲综合色噜噜狠狠| 国产成人在线视频网址| 欧美二区在线观看| 亚洲日本一区二区| 国产91精品精华液一区二区三区| 欧美男人的天堂一二区| 亚洲欧美日韩电影| 国产福利一区二区三区在线视频| 欧美日韩成人综合| 亚洲欧美日韩中文播放 | 国产精品久久久久久久久免费樱桃| 首页国产欧美日韩丝袜| 色欧美乱欧美15图片| 欧美国产一区在线| 国产精品一区二区三区乱码 | 亚洲欧美一区二区三区国产精品| 国内精品久久久久影院一蜜桃| 欧美日韩性生活| 一区二区高清在线| 99精品视频在线免费观看| 国产欧美视频一区二区三区| 国产麻豆成人传媒免费观看| 欧美一区二区在线看| 亚洲午夜精品在线| 色8久久人人97超碰香蕉987| 成人欧美一区二区三区在线播放| 国产成人福利片| 久久久精品免费免费| 国产成人精品免费在线| 国产欧美在线观看一区| 国产精品亚洲视频| 国产日韩在线不卡| 北岛玲一区二区三区四区|