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

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

?? readmeterdlg.cpp

?? ABB AIN電表讀多類數(shù)據(jù)通訊測試程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// ReadMeterDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ReadMeter.h"
#include "ReadMeterDlg.h"
#include "Resource.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()

/////////////////////////////////////////////////////////////////////////////
// CReadMeterDlg dialog

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

void CReadMeterDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CReadMeterDlg)
	DDX_Control(pDX, IDC_BUTTON2, m_ReadClass2);
	DDX_Control(pDX, IDC_BUTTON17, m_ReadClass17);
	DDX_Control(pDX, IDC_BUTTON14, m_ReadClass14);
	DDX_Control(pDX, IDC_BUTTON12, m_ReadClass12);
	DDX_Control(pDX, IDC_BUTTON0, m_ReadClass0);
	DDX_Control(pDX, IDCANCEL, m_Cancel);
	DDX_Control(pDX, IDC_Read, m_Read);
	DDX_Control(pDX, IDC_MSCOMM, m_msComm);
	DDX_Text(pDX, IDC_EDIT1, m_strRXData);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CReadMeterDlg, CDialog)
	//{{AFX_MSG_MAP(CReadMeterDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_Read, OnRead)
	ON_BN_CLICKED(IDC_BUTTON0, OnButton0)
	ON_BN_CLICKED(IDC_BUTTON12, OnButton12)
	ON_BN_CLICKED(IDC_BUTTON14, OnButton14)
	ON_BN_CLICKED(IDC_BUTTON17, OnButton17)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CReadMeterDlg message handlers

BOOL CReadMeterDlg::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
	if(m_msComm.GetPortOpen())
		m_msComm.SetPortOpen(FALSE);

	m_msComm.SetCommPort(1);   //選擇com1
	if( !m_msComm.GetPortOpen())
		m_msComm.SetPortOpen(TRUE);//打開串口
	else
		AfxMessageBox("cannot open serial port");

	m_msComm.SetSettings("9600,n,8,1"); //波特率9600,無校驗(yàn),8個數(shù)據(jù)位,1個停止位
    m_msComm.SetRThreshold(1); 
	m_msComm.SetInputMode(1); //1--二進(jìn)制方式
	//參數(shù)1表示每當(dāng)串口接收緩沖區(qū)中有多于或等于1個字符時將引發(fā)一個接收數(shù)據(jù)的OnComm事件
	m_msComm.SetInputLen(0);  //設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長度為0
	m_msComm.GetInput();//先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

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

void CReadMeterDlg::OnRead() 
{
	// TODO: Add your control notification handler code here
   // m_strRXData = "";
//	UpdateData(TRUE);
  //	if(!Read_Class_11())
//	m_strRXData += "Fail to communication!\n";
//	UpdateData(FALSE);
//	CalculateKey(0x00000000,0x00000000);
	Read_Class_11();
	m_strRXData += "\r\n\r\n";
	UpdateData(FALSE);
	
}




bool CReadMeterDlg::HandShake(int nPrtlCode, int nTryNum, unsigned char * ucMeterAdd)
{
    //前面0x00表示握手次數(shù),后面0x01表示表的設(shè)備號,暫時1初始化,然后根據(jù)實(shí)際的填寫
	//后面的2位為CRCH和CRCL。
    unsigned char chrShakeHand[]={0x02,0x18,0x06,0x00,0x01,0x01,0x98,0x9e};
    CByteArray byteShakeHand,byteKey;
   //chrKey[3]根據(jù)實(shí)際等待時間更改,步長0.5s
   //chrKey[5]-chrKey[8]為加密計算后的密碼,chrKey[9]和chrKey[10]為CRC校驗(yàn)
   //初始化時,以上內(nèi)容均為隨意填寫的
   unsigned char chrKey[] ={0x02,0x18,0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00};
  
   //ACK
   unsigned char chrACK[] ={0x02,0x18,0x00,0x00,0x00,0x07,0xaa};
   unsigned int CRCCode;
   unsigned char CRCH,CRCL;
//   unsigned char err;
   int i=0;
   int tempTryNum = nTryNum;
   long delaytime=0;

   VARIANT variant_inp;
   COleSafeArray safearray_inp;
   LONG len,k;
   BYTE rxdata[2048]; //設(shè)置BYTE數(shù)組 An 8-bit integerthat is not signed.
   CString strtemp;

  /* union 
   {
	   unsigned long key;
	   struct {
		   unsigned char bytea,byteb,bytec,byted;
	   }parts;
   }val;*/
   unsigned long CalculatedKey,returnedKey=0;
   
   if (nPrtlCode != 2)
	   return false;
	//chrShakeHand[3] = TransferTryNum(nTryNum); //計算每次的等待時間,步長0.5s
   	CRCCode = CRCVerify(chrShakeHand,6);
	CRCL = CRCCode & 0x00ff;
	CRCH = (CRCCode >> 8) & 0x00ff;
    chrShakeHand[6] = CRCH;
    chrShakeHand[7] = CRCL;
	for(i=0; i< 8;i++)
	byteShakeHand.Add(chrShakeHand[i]);

//	for(int i=0; i<8; i++)
//	{
//		US_TXSEM.ucBuf[i] = chrShakeHand[i];
//   }
//	US_TXSEM.lDataLen = 8;
/*	for(i = nTryNum; i>0; i--)
	{
		
		m_msComm.SetOutput(COleVariant(byteShakeHand));
         delay();
		//		OSSemPost(US_TXSEM);    //發(fā)送握手指令
//		do{
//			;
//	       }while(m_msComm.GetCommEvent()!=2);
//      SemPend(US_RXSEM, 500, &err);	 //等待串口的數(shù)據(jù),等待的時間和握手中的填充數(shù)有關(guān)系
//      if (err == OS_NO_ERR) // 在規(guī)定時間內(nèi)收到數(shù)據(jù)
     if(m_msComm.GetCommEvent()==2)
	   {
        break;  //退出循環(huán),對接收的數(shù)據(jù)進(jìn)行處理
	   }
      else   //在規(guī)定時間內(nèi)沒有收到數(shù)據(jù)
	  {
        if(i == 1) //如果已經(jīng)嘗試了足夠次數(shù),則放棄嘗試,認(rèn)為連接失敗 
        {
			return false;
		}
	  }
	}*/
	do{
	m_strRXData += "===Send===\r\n"; 
	UpdateData(FALSE);
 	m_msComm.SetOutput(COleVariant(byteShakeHand));
    delay(8000);
	UpdateTXT(chrShakeHand,8);
	tempTryNum--;
   // if(m_msComm.GetInBufferCount( )>=15)
   //break;
//	}
 //獲取報文中的密碼
//	delay();
//	if(m_msComm.GetInBufferCount( )>=15){
	variant_inp=m_msComm.GetInput();   //讀緩沖區(qū)
	safearray_inp=variant_inp;           //VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量
	len=safearray_inp.GetOneDimSize(); //得到有效數(shù)據(jù)長度
	for(k=0;k<len;k++)
			safearray_inp.GetElement(&k,rxdata+k);//轉(zhuǎn)換為BYTE型數(shù)組
	for(k=0;k<len;k++)             //將數(shù)組轉(zhuǎn)換為Cstring型變量
		{
			BYTE bt=*(char*)(rxdata+k);      //字符型
			strtemp.Format("%c",bt);         //將字符送入臨時變量strtemp存放
		//	m_strRXData+=strtemp;    //加入接收編輯框?qū)?yīng)字符串    
		}
	m_strRXData += "===Receive===\r\n";
    UpdateTXT(rxdata,len);
//	}
	}while(rxdata[0]!=0x02 && tempTryNum!=0);
	if(tempTryNum ==0)
	{
		m_strRXData += "===READ FAILED===\r\n";//+ (char)(0x0d) + (char)(0x0a); 
		UpdateData(FALSE);
		return false;
	}
//	m_strRXData += " ====Receive====\r\n";
  //  UpdateTXT(rxdata,len);
	//UpdateData(FALSE);

    
   //握手握上了,接下來要做的就是密碼校驗(yàn)工作,這個每次握手不可少,所以認(rèn)為是握手一部分
 //     val.parts.bytea = US_RXSEM.ucBuf[9];
//	  val.parts.byteb = US_RXSEM.ucBuf[10];
//	  val.parts.bytec = US_RXSEM.ucBuf[11];
//	  val.parts.byted = US_RXSEM.ucBuf[12];

//    val.parts.bytea = *(char*)(rxdata+9);
//	  val.parts.byteb = *(char*)(rxdata+10);
//	  val.parts.bytec = *(char*)(rxdata+11);
//	  val.parts.byted = *(char*)(rxdata+12);
	  returnedKey =((rxdata[9]<<24) & 0xff000000) + ((rxdata[10]<<16) & 0x00ff0000)+((rxdata[11]<<8) & 0x0000ff00) +(rxdata[12] &0x000000ff);
	  CalculatedKey = CalculateKey(returnedKey, RemotePwd);
//	  val.key = CalculatedKey;
//	  chrKey[3]= TransferTryNum(nTryNum); //計算每次的等待時間,步長0.5s
	//  chrKey[5] = val.parts.bytea;
    //  chrKey[6] = val.parts.byteb;
	//  chrKey[7] = val.parts.bytec;
	 // chrKey[8] = val.parts.byted;
	   
	  chrKey[5]=CalculatedKey>>24 & 0x00000000ff;
	  chrKey[6]=(CalculatedKey >>16) & 0x000000ff;
	  chrKey[7]=(CalculatedKey >>8) & 0x000000ff;
	  chrKey[8]=CalculatedKey & 0x000000ff;
	  CRCCode = CRCVerify(chrKey,9);
      CRCL = CRCCode & 0x00ff;
      CRCH = (CRCCode >> 8) & 0x00ff;
      chrKey[9] = CRCH;
      chrKey[10] = CRCL;
	  for(i=0;i<11;i++)
	   byteKey.Add(chrKey[i]);
//	  for(i=0; i<11; i++)
//	{
//		US_TXSEM.ucBuf[i] = chrKey[i];
//	  }
//	  	US_TXSEM.lDataLen = 11;
//	for(i = nTryNum; i>0; i--)
//	{
//	   OSSemPost(US_TXSEM);    //發(fā)送密碼校驗(yàn)指令
//       OSSemPend(US_RXSEM, 500, &err);	 //等待串口的數(shù)據(jù),等待的時間和握手中的填充數(shù)有關(guān)系
              
       m_strRXData += "===Send===\r\n"; 
    	UpdateData(FALSE);
  
	   m_msComm.SetOutput(COleVariant(byteKey));
        delay(8000);
		UpdateTXT(chrKey,11);
//		if (err == OS_NO_ERR) // 在規(guī)定時間內(nèi)收到數(shù)據(jù)
//    		{
//        break;  //退出循環(huán),對接收的數(shù)據(jù)進(jìn)行處理
//	   }
//      else   //在規(guī)定時間內(nèi)沒有收到數(shù)據(jù)
//	  {
 //       if(i == 1) //如果已經(jīng)嘗試了足夠次數(shù),則放棄嘗試,認(rèn)為連接失敗 
 //      {
 //    if(m_msComm.GetCommEvent()!=2)
//		return false;
//		}
//	  }	
//	 }
	variant_inp=m_msComm.GetInput();   //讀緩沖區(qū)
	safearray_inp=variant_inp;           //VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量
	len=safearray_inp.GetOneDimSize(); //得到有效數(shù)據(jù)長度
	for(k=0;k<len;k++)
			safearray_inp.GetElement(&k,rxdata+k);//轉(zhuǎn)換為BYTE型數(shù)組
	for(k=0;k<len;k++)             //將數(shù)組轉(zhuǎn)換為Cstring型變量
		{
			BYTE bt=*(char*)(rxdata+k);      //字符型
			strtemp.Format("%c",bt);         //將字符送入臨時變量strtemp存放
		//	m_strRXData+=strtemp;    //加入接收編輯框?qū)?yīng)字符串    
		}
	m_strRXData += "===Receive===\r\n";
	UpdateTXT(rxdata,len);
 
     //判斷返回是否ACK,否則認(rèn)為無法連接(也可以更改程序,重試9次
  /*  i=0;
	do{
   if(rxdata[i]!=chrACK[i])
	 if(*(char*)(rxdata+i)!=chrACK[i])
		 return false;
	   i++;
	 }while(i<7);*/
	 if(rxdata[0]!=0x02)
		 return false;
	 else
	 return true; //說明收到了ACK,握手成功.   

}

//讀class
bool CReadMeterDlg::ReadClass(unsigned char lengthH, unsigned char lengthL, unsigned char addrH, unsigned char addrL, unsigned char classnumb)
{

	//chrRead[2]為填充數(shù),chrRead[3]數(shù)據(jù)長度高字節(jié),chrRead[4]數(shù)據(jù)長度低字節(jié)
	//chrRead[5]地址偏移高字節(jié),chrRead[6]地址偏移低字節(jié),
	//chrRead[7]類,chrRead[8]CRCH, chrRead[9] CRCL;
	unsigned char chrRead[] = {0x02,0x05, 0x00,0x00,0x00,0x00,0x00,0x00,0xf6,0x01};
    unsigned int CRCCode;
    unsigned char CRCH,CRCL;
//    unsigned char err;

    chrRead[3] = lengthH;
	chrRead[4] = lengthL;
	chrRead[5] = addrH;
	chrRead[6] = addrL;
	chrRead[7] = classnumb;
	CRCCode = CRCVerify(chrRead,8);
    CRCL = CRCCode & 0x00ff;
    CRCH = (CRCCode >> 8) & 0x00ff;
	chrRead[8] = CRCH;
	chrRead[9] = CRCL;
/*	  for(int i=0; i<10; i++)
	{
		US_TXSEM.ucBuf[i] = chrRead[i];
	  }
	  	US_TXSEM.lDataLen = 10;
    OSSemPost(US_TXSEM); 
	OSSemPend(US_RXSEM, 500, &err);
	if (err == OS_NO_ERR)
		return true;
	else */
		return false;
}

//斷開連接
void CReadMeterDlg::Disconnected()
{
	unsigned char  chrDisconnect[] = {0x02,0x80, 0xf7,0xea};
	CByteArray byteDisconnect;
	int i=0;
	for(i=0;i<4;i++)
		byteDisconnect.Add(chrDisconnect[i]);
//	for(int i=0; i<4; i++)
//	{
//		US_TXSEM.ucBuf[i] = chrDisconnect[i];
//	}
//		US_TXSEM.lDataLen = 4;
   //  OSSemPost(US_TXSEM);
	m_strRXData += "===Send===\r\n"; 
	m_msComm.SetOutput(COleVariant(byteDisconnect));
	UpdateTXT(chrDisconnect,4);
	 	
}

//傳入的重試次數(shù)超過255,則認(rèn)為等同于0,被認(rèn)為一直重試
//unsigned char TransferTryNum(int nTryNum)
//{
//	unsigned char chrTryNum;
//	if(nTryNum >= 255)
//		chrTryNum = 0x00;
//   //nTryNum 為0-255,
//	else
//		chrTryNum = nTryNum;
//	return chrTryNum;

//}


//CRC校驗(yàn)
unsigned int CReadMeterDlg::CRCVerify(unsigned char CRCByte[], int len)
{
  unsigned int iTemp=0;	 
  int i=0,j=0;
  for (i=0; i<len; i++)
  {
	 iTemp^=(CRCByte[i]<<8);
	   for(j=0; j<8; j++)
	   { 
		   int flag=iTemp & 0x8000;
		   iTemp <<=1;
		   if(flag)
		   {
			   iTemp^=0x1021;
		   }
	   }
  }
  return iTemp;
}

//假設(shè)表的地址從低到高開始填充,比如表地址為112200,
//則ucMeterAdd[0]=0x00 (BCD)
//  ucMeterAdd[1]=0x22 (BCD)
//  ucMeterAdd[2]=0x11 (BCD)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产农村妇女毛片精品久久麻豆| 日韩高清一区在线| 国产传媒欧美日韩成人| 精品福利av导航| 国内精品伊人久久久久av影院| 日韩精品一区二区三区老鸭窝| 日韩影院在线观看| 精品国产乱码久久久久久夜甘婷婷| 久久99国产精品麻豆| 精品动漫一区二区三区在线观看| 国内成+人亚洲+欧美+综合在线| 26uuu国产在线精品一区二区| 国产精品18久久久久久久久| 国产精品水嫩水嫩| 色吊一区二区三区| 五月婷婷激情综合| 欧美一级在线视频| 国产美女精品人人做人人爽| 中文字幕一区二区三区在线不卡 | 日韩丝袜美女视频| 久草这里只有精品视频| 久久青草国产手机看片福利盒子| 成人动漫在线一区| 亚洲一区二区不卡免费| 日韩亚洲欧美高清| 成人午夜视频免费看| 一卡二卡三卡日韩欧美| 91精品国产综合久久精品图片| 国产剧情在线观看一区二区| 中文字幕一区二区三| 7777精品伊人久久久大香线蕉完整版 | 国产91丝袜在线播放0| 亚洲免费在线播放| 精品日韩一区二区| 色婷婷综合中文久久一本| 日本不卡在线视频| 中文字幕永久在线不卡| 91精品免费在线观看| www.色精品| 美女视频网站黄色亚洲| 中文字幕一区二区5566日韩| 欧美一区二区免费| www.爱久久.com| 免费成人av资源网| 亚洲欧美日韩国产成人精品影院 | 一本色道久久综合亚洲91| 美女一区二区视频| 一区二区三区国产精华| 国产日韩成人精品| 日韩三级免费观看| 欧美性淫爽ww久久久久无| 国产 日韩 欧美大片| 日本亚洲欧美天堂免费| 玉足女爽爽91| 国产日韩av一区| 欧美一区二区免费视频| 91福利视频在线| 成人动漫中文字幕| 国产成人精品免费网站| 美国一区二区三区在线播放| 亚洲综合久久久| 一区免费观看视频| 国产日韩欧美激情| 精品福利一区二区三区| 日韩一区二区在线免费观看| 色综合夜色一区| 成人精品视频一区二区三区尤物| 久久精品理论片| 日韩av中文字幕一区二区| 一区二区三区日韩欧美精品| 中文字幕在线观看不卡| 国产亚洲一区二区三区在线观看 | 欧美一级在线免费| 欧美精品少妇一区二区三区| 在线观看亚洲成人| 一本一道久久a久久精品综合蜜臀| 国产99久久久国产精品潘金网站| 韩国精品久久久| 麻豆国产一区二区| 免费高清视频精品| 琪琪久久久久日韩精品| 日韩av电影免费观看高清完整版 | 欧美韩国日本不卡| 久久精品视频一区二区三区| 精品人伦一区二区色婷婷| 91精品国产高清一区二区三区| 欧美日韩一区二区三区在线看 | 在线视频你懂得一区二区三区| 91在线免费播放| 91麻豆高清视频| 在线观看一区不卡| 717成人午夜免费福利电影| 欧美顶级少妇做爰| 欧美成人伊人久久综合网| 精品国产凹凸成av人网站| 久久精品在线观看| 国产精品美女一区二区| 亚洲精品视频在线看| 亚洲成av人综合在线观看| 日韩av中文在线观看| 国产在线一区观看| 成人av资源下载| 色婷婷av一区二区三区软件| 欧美日韩中字一区| 精品剧情v国产在线观看在线| 国产香蕉久久精品综合网| 最新久久zyz资源站| 亚洲成a人v欧美综合天堂下载| 久久狠狠亚洲综合| 大白屁股一区二区视频| 91福利国产成人精品照片| 91精品国产91久久综合桃花 | 欧美肥大bbwbbw高潮| 精品国产乱码久久久久久老虎| 中文字幕乱码亚洲精品一区| 亚洲另类色综合网站| 日韩精品一级二级 | 另类成人小视频在线| 成人激情视频网站| 欧美日韩午夜在线视频| 久久人人超碰精品| 亚洲激情男女视频| 久久9热精品视频| av不卡免费电影| 欧美一区二区福利在线| 国产精品久久久久久久久久久免费看 | 久久久久久久久久电影| 一级日本不卡的影视| 精品一区二区在线观看| 色婷婷激情久久| 久久久五月婷婷| 亚洲aaa精品| 成人一级视频在线观看| 欧美精品成人一区二区三区四区| 国产欧美日产一区| 日韩成人免费看| 99久久国产免费看| 欧美精品一区男女天堂| 一区二区三区不卡视频| 国产一区二区三区四区在线观看| 在线观看精品一区| 国产免费成人在线视频| 日韩av电影免费观看高清完整版在线观看| 成人综合婷婷国产精品久久| 这里是久久伊人| 亚洲美女区一区| 成人性生交大片免费| 日韩欧美国产三级电影视频| 亚洲国产色一区| 91丨九色丨蝌蚪富婆spa| 国产香蕉久久精品综合网| 免费在线观看一区| 久久综合九色综合欧美就去吻| 亚洲va欧美va人人爽| 91蝌蚪porny| 国产精品每日更新| 国产精品亚洲一区二区三区在线| 欧美一级欧美三级在线观看| 亚洲成人黄色小说| 91黄色在线观看| ●精品国产综合乱码久久久久 | 亚洲欧洲一区二区三区| 国产成人综合网| 精品久久久久一区二区国产| 午夜精品123| 欧美日韩三级在线| 亚洲一区二区影院| 欧美影院午夜播放| 亚洲精品视频观看| 91国偷自产一区二区使用方法| 中文字幕一区二区三区不卡| 成人的网站免费观看| 国产精品视频观看| 成人h动漫精品一区二区| 中文字幕欧美三区| 成人毛片老司机大片| 中文字幕中文在线不卡住| 成人av在线播放网站| 亚洲私人影院在线观看| 99国产精品一区| 亚洲乱码中文字幕| 欧美在线小视频| 天堂影院一区二区| 欧美一区2区视频在线观看| 久久精品噜噜噜成人88aⅴ| 亚洲精品一线二线三线| 懂色av中文一区二区三区| 国产精品国产精品国产专区不片| 97精品久久久午夜一区二区三区| 亚洲男同性恋视频| 欧美三级电影网| 秋霞午夜鲁丝一区二区老狼| 欧美mv日韩mv国产网站app| 国产一区二区三区黄视频| 中文一区在线播放| 91成人国产精品| 免费观看日韩电影| 久久久精品蜜桃| 91在线免费视频观看| 亚洲第一狼人社区|