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

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

?? talktocardlg.cpp

?? 用VC++編的通過串口控制STC12C5410AD單片機(jī)的程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
	m_ctrlCommToCar.SetInputLen(0);						// 設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長度為0
	m_ctrlCommToCar.GetInput();								// 先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)	

	m_ucGetBack = m_ucSaveBack;								// 初始化接收指針
	return(true);
}

// 根據(jù)命令取相應(yīng)數(shù)據(jù),構(gòu)建發(fā)送數(shù)據(jù)幀

void CTalkToCarDlg::makeSendFrame(int iCommand, CByteArray *sendFrame)
{
	union
	{
		UINT all;
		BYTE b[4];
	}uitemp;
  
	int i;
	unsigned short ushDataAddr;
	int iRunMode;

	BYTE sum = 0;

	sendFrame->RemoveAll();
	sendFrame->Add(0x55);
	sendFrame->Add(0xAA);										// 初始化幀頭
	sendFrame->Add(CAR_ADDR);
	sendFrame->Add(PC_ADDR);

	switch (iCommand)
	{
		case READ_BYTE:
		{
			sendFrame->Add(0x04);								// 幀長
			sendFrame->Add(READ_MEMORY);				// 命令字
			sum += READ_MEMORY;

			// 將輸入的 16 進(jìn)制地址轉(zhuǎn)換, 因?yàn)镸51文件中的變量地址通常為 16進(jìn)制
			m_szDataAddr.MakeUpper();
			ushDataAddr = HexString2ush(m_szDataAddr);

			uitemp.all = ushDataAddr;						// 數(shù)據(jù)地址
			sendFrame->Add(uitemp.b[0]);				// 低字節(jié)
			sum += uitemp.b[0];						
			sendFrame->Add(uitemp.b[1]);				// 高字節(jié), 只取低 2 字節(jié)
			sum += uitemp.b[1];						

			i = m_ctrlDataType.GetCurSel();			// 讀數(shù)據(jù)類型處理
			if( i<= 1)
			{
				sendFrame->Add(0x01);							// 讀有無符號(hào)字節(jié)的字節(jié)數(shù)
				sum += 0x01;
			}
			else
			{
				if(i <= 3)
				{
					sendFrame->Add(0x02);						// 讀有無符號(hào)整形的字節(jié)數(shù)
					sum += 0x02;
				}
				else
				{
					sendFrame->Add(0x04);						// 讀有符號(hào)長整的字節(jié)數(shù)
					sum += 0x04;
				}
			}

			sendFrame->Add(~sum);								// 校驗(yàn)和

			break;
		}

		case WRITE_BYTE:
		{
			sendFrame->Add(0x05);								// 幀長
			sendFrame->Add(WRITE_MEMORY);				// 命令字
			sum += WRITE_MEMORY;

			// 將輸入的 16 進(jìn)制地址轉(zhuǎn)換, 因?yàn)镸51文件中的變量地址通常為 16進(jìn)制
			m_szDataAddr.MakeUpper();
			ushDataAddr = HexString2ush(m_szDataAddr);

			uitemp.all = ushDataAddr;						// 數(shù)據(jù)地址
			sendFrame->Add(uitemp.b[0]);				// 低字節(jié)
			sum += uitemp.b[0];						
			sendFrame->Add(uitemp.b[1]);				// 高字節(jié)
			sum += uitemp.b[1];						
			sendFrame->Add(0x01);								// 字節(jié)數(shù)
			sum += 0x01;
			sendFrame->Add(m_ucWriteData);			// 要寫的字節(jié)
			sum += m_ucWriteData;
			sendFrame->Add(~sum);								// 校驗(yàn)和
			break;
		}

		case MOTOR_PWM:
		{
			sendFrame->Add(0x05);								// 幀長
			sendFrame->Add(MOTOR_PWM_CTRL);			// 命令字
			sum += MOTOR_PWM_CTRL;
			uitemp.all = m_uiPWM_Val[0];				// 左側(cè)電機(jī)數(shù)據(jù)
			sendFrame->Add(uitemp.b[0]);				// 低字節(jié)
			sum += uitemp.b[0];						
			sendFrame->Add(uitemp.b[1]);				// 高字節(jié)
			sum += uitemp.b[1];	
			uitemp.all = m_uiPWM_Val[1];				// 右側(cè)電機(jī)數(shù)據(jù)
			sendFrame->Add(uitemp.b[0]);				// 低字節(jié)
			sum += uitemp.b[0];						
			sendFrame->Add(uitemp.b[1]);				// 高字節(jié)
			sum += uitemp.b[1];	
			sendFrame->Add(~sum);								// 校驗(yàn)和
			break;
		}

		case RUN_STR:
		{
			iRunMode = m_ctrlRunMode.GetCurSel();

			sendFrame->Add(0x05);								// 幀長
     
			switch (iRunMode)
			{
				case 0:
				{
					sendFrame->Add(RUN_STRAIGHT);				// 命令字
					sum += RUN_STRAIGHT;
					break;
				}
        case 1:
				{
					sendFrame->Add(RUN_ON_LINE);				// 命令字
					sum += RUN_ON_LINE;
					m_ctrlRunDir.SetCurSel(0);					// 走軌跡只支持前進(jìn)
					break;
				}
				case 2:
				{
					sendFrame->Add(HOLD_GAP);						// 命令字
					sum += HOLD_GAP;
					m_ctrlRunDir.SetCurSel(0);					// 只支持前進(jìn)
					break;
				}

				default: break;
			}
			
						
			CString szButton;	

			GetDlgItem(IDC_RUN_STRAIGHT) -> GetWindowText(szButton);
			
			if(szButton == "啟動(dòng)")
			{
				// 啟動(dòng)處理
				GetDlgItem(IDC_RUN_STRAIGHT) -> SetWindowText("停止");

				if(iRunMode == 2)
				{
					uitemp.all = m_uiGap2Object;				// 取設(shè)定的距離
				}
				else
				{
					uitemp.all = m_uiLeftRunNum;				// 取行走脈沖定值
				}

				sendFrame->Add(uitemp.b[0]);
				sum += uitemp.b[0];

				sendFrame->Add(uitemp.b[1]);				// 只取低 2 字節(jié)
				sum += uitemp.b[1];

				sendFrame->Add(m_ucBase_PWM);
				sum += m_ucBase_PWM;

				if(m_ctrlRunDir.GetCurSel() == 0)
				{
					sendFrame ->Add(0);								//	設(shè)置 PWM 值方向:前進(jìn)
				}
				else
				{
					sendFrame ->Add(0xFF);						//	設(shè)置 PWM 值方向:后退
					sum += 0xFF;
				}
			}
			else
			{
				// 停止處理
				GetDlgItem(IDC_RUN_STRAIGHT) -> SetWindowText("啟動(dòng)");

				sendFrame ->Add(0);
				sendFrame ->Add(0);
				sendFrame ->Add(BRAKE_PWM);			// 發(fā)送剎車PWM值作為基值
				sum +=BRAKE_PWM;
				sendFrame ->Add(0);							// PWM值高字節(jié)為0
			}

			sendFrame->Add(~sum);							// 校驗(yàn)和

			break;
		}

		case READ_SAMPLE:
		{
			sendFrame->Add(0x04);								// 幀長
			sendFrame->Add(READ_MEMORY);				// 命令字
			sum += READ_MEMORY;

			// 將輸入的 16 進(jìn)制地址轉(zhuǎn)換, 因?yàn)镸51文件中的變量地址通常為 16進(jìn)制
			m_szSampleAddr.MakeUpper();
			ushDataAddr = HexString2ush(m_szSampleAddr);

			uitemp.all = ushDataAddr;						// 數(shù)據(jù)地址
			sendFrame->Add(uitemp.b[0]);				// 低字節(jié)
			sum += uitemp.b[0];						
			sendFrame->Add(uitemp.b[1]);				// 高字節(jié), 只取低 2 字節(jié)
			sum += uitemp.b[1];						

			sendFrame->Add(0x05);								// 讀 5 字節(jié)
			sum += 0x05;

			sendFrame->Add(~sum);								// 校驗(yàn)和

			break;
		}

		case READ_DIS:
		{
			sendFrame->Add(0x04);								// 幀長
			sendFrame->Add(READ_MEMORY);				// 命令字
			sum += READ_MEMORY;

			// 將輸入的 16 進(jìn)制地址轉(zhuǎn)換, 因?yàn)镸51文件中的變量地址通常為 16進(jìn)制
			m_szDisValAddr.MakeUpper();
			ushDataAddr = HexString2ush(m_szDisValAddr);

			uitemp.all = ushDataAddr;						// 數(shù)據(jù)地址
			sendFrame->Add(uitemp.b[0]);				// 低字節(jié)
			sum += uitemp.b[0];						
			sendFrame->Add(uitemp.b[1]);				// 高字節(jié), 只取低 2 字節(jié)
			sum += uitemp.b[1];						

			sendFrame->Add(0x09);								// 讀 9 字節(jié)
			sum += 0x09;

			sendFrame->Add(~sum);								// 校驗(yàn)和

			break;
		}

		default: break;
	}

	m_szCommandBack = "失敗";
	this->UpdateData(false);
}

// 電機(jī) PWM 控制處理

void CTalkToCarDlg::OnPWM_Out() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData(true);				// 將對(duì)話框中的地址等數(shù)據(jù)取回

	if(open_CommPort())
	{
		m_uiPWM_Val[0] = m_ucMotorL_PWM;
		m_uiPWM_Val[1] = m_ucMotorR_PWM;

		switch(m_ctrlMotor_L.GetCurSel())
		{
			case FORWARD:
			{
				break;
			}

			case BACKWARD:
			{
				m_uiPWM_Val[0] +=0xFF00;
				break;
			}

			case FLOAT_C:
			{
				m_uiPWM_Val[0] =FLOAT_PWM;
				break;
			}

			case BRAKE_C:
			{
				m_uiPWM_Val[0] =BRAKE_PWM;
				break;
			}
		
			default: break;
		}

		switch(m_ctrlMotor_R.GetCurSel())
		{
			case FORWARD:
			{
				break;
			}

			case BACKWARD:
			{
				m_uiPWM_Val[1] +=0xFF00;
				break;
			}

			case FLOAT_C:
			{
				m_uiPWM_Val[1] =FLOAT_PWM;
				break;
			}

			case BRAKE_C:
			{
				m_uiPWM_Val[1] =BRAKE_PWM;
				break;
			}
		
			default: break;
		}

		makeSendFrame(MOTOR_PWM, &m_baSendFrame);									// 構(gòu)建發(fā)送幀

		m_iRcvStat = NO_RCV;																			// 初始化接收狀態(tài)
		m_ctrlCommToCar.SetOutput((COleVariant)m_baSendFrame);		// 啟動(dòng)發(fā)送
		m_baSendFrame.RemoveAll();
	}
	else
	{
		m_ctrlCommToCar.SetPortOpen(false);
	}	
	
}

// 電機(jī)剎車處理

void CTalkToCarDlg::OnBrake() 
{
	// TODO: Add your control notification handler code here
	if(open_CommPort())
	{
		m_uiPWM_Val[0] = BRAKE_PWM;
		m_uiPWM_Val[1] = BRAKE_PWM;

		makeSendFrame(MOTOR_PWM, &m_baSendFrame);									// 構(gòu)建發(fā)送幀

		m_iRcvStat = NO_RCV;																			// 初始化接收狀態(tài)
		m_ctrlCommToCar.SetOutput((COleVariant)m_baSendFrame);		// 啟動(dòng)發(fā)送
		m_baSendFrame.RemoveAll();
	}
	else
	{
		m_ctrlCommToCar.SetPortOpen(false);
	}	
}
	

// 電機(jī)惰行處理
void CTalkToCarDlg::OnFloat() 
{
	// TODO: Add your control notification handler code here
	if(open_CommPort())
	{
		m_uiPWM_Val[0] = FLOAT_PWM;
		m_uiPWM_Val[1] = FLOAT_PWM;

		makeSendFrame(MOTOR_PWM, &m_baSendFrame);									// 構(gòu)建發(fā)送幀

		m_iRcvStat = NO_RCV;																			// 初始化接收狀態(tài)
		m_ctrlCommToCar.SetOutput((COleVariant)m_baSendFrame);		// 啟動(dòng)發(fā)送
		m_baSendFrame.RemoveAll();
	}
	else
	{
		m_ctrlCommToCar.SetPortOpen(false);
	}		
}


// 走直線測(cè)試

void CTalkToCarDlg::OnRunStraight() 
{
	// TODO: Add your control notification handler code here

	this->UpdateData(true);				// 將對(duì)話框中的地址等數(shù)據(jù)取回

	if(open_CommPort())
	{
		makeSendFrame(RUN_STR, &m_baSendFrame);										// 構(gòu)建發(fā)送幀

		m_iRcvStat = NO_RCV;																			// 初始化接收狀態(tài)
		m_ctrlCommToCar.SetOutput((COleVariant)m_baSendFrame);		// 啟動(dòng)發(fā)送
		m_baSendFrame.RemoveAll();		
	}
	else
	{
		m_ctrlCommToCar.SetPortOpen(false);
	}		
}

// 因?yàn)樽x采樣值同樣需要將 HEX 碼地址轉(zhuǎn)換為 unsigned short 值,
// 所以將前面的處理變成函數(shù)

unsigned short CTalkToCarDlg::HexString2ush(CString szHexVal)
{
	BYTE ucVal,ucLen;
	unsigned short ushDataAddr;
	int i;

	ushDataAddr = 0;
	ucLen = szHexVal.GetLength();					// 得到輸入的地址長度
	if(ucLen >4 )
	{
		ucLen = 4;															// 只處理 4 位
	}

	for(i =0; i<ucLen; i++)
	{
		ushDataAddr = ushDataAddr *16;

		ucVal = (BYTE) (szHexVal[i]);
		if(ucVal > 0x39)
		{
			ushDataAddr += ucVal - 0x41+10;			// 轉(zhuǎn)換 A - F
		}
		else
		{
			ushDataAddr += ucVal - 0x30;					// 轉(zhuǎn)換 0 - 9
		}
	}

	return (ushDataAddr) ;
}

/* 
	讀取采樣處理相關(guān)數(shù)據(jù):4 路采樣模擬量的 AD 結(jié)果(8位),以及由此而產(chǎn)生的邏輯值
	直接使用讀內(nèi)存功能,根據(jù) M51 得到 AD 結(jié)果存放的地址。
	注意:為了可以使用一幀命令讀出 AD 結(jié)果和邏輯值,在單片機(jī)程序設(shè)計(jì)時(shí)將邏輯值和
	AD 的結(jié)果放在一個(gè)數(shù)組中!!!
*/

void CTalkToCarDlg::OnReadSample() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData(true);				// 將對(duì)話框中的地址等數(shù)據(jù)取回

	if(open_CommPort())
	{
		m_iReadMemContent = SAMPLE_DATA;
		makeSendFrame(READ_SAMPLE, &m_baSendFrame);									// 構(gòu)建發(fā)送幀

		m_iRcvStat = NO_RCV;																			// 初始化接收狀態(tài)
		m_ctrlCommToCar.SetOutput((COleVariant)m_baSendFrame);		// 啟動(dòng)發(fā)送
		m_baSendFrame.RemoveAll();
	}
	else
	{
		m_ctrlCommToCar.SetPortOpen(false);
	}		
}

// 因?yàn)樽x內(nèi)存處理太多,為便于閱讀,將各類數(shù)據(jù)變成函數(shù)
// 此為讀通用數(shù)據(jù)的處理

void CTalkToCarDlg::gatGeneralData()
{
	union
	{
		int all;
		BYTE b[4];
	}itemp;

	union
	{
		short all;
		BYTE b[2];
	}shtemp;

	int iType;

	iType = m_ctrlDataType.GetCurSel();							// 獲得數(shù)據(jù)類型
	switch(iType)																		// 根據(jù)數(shù)據(jù)類型處理返回的數(shù)據(jù)
	{
		case 0:
		{
			// sign char
			m_iReadData = (int)((signed char)m_ucBackBuf[m_ucStartPtr+4]);	
			break;
		}

		case 1:
		{
			// BYTE
			shtemp.all =0;
			shtemp.b[0] = m_ucBackBuf[m_ucStartPtr+4];
			m_iReadData = (int)shtemp.all;
			break;
		}

		case 2:
		{
			// int
			shtemp.b[1] = m_ucBackBuf[m_ucStartPtr+4];
			shtemp.b[0] = m_ucBackBuf[m_ucStartPtr+5];				// C51 的整形順序相反
			m_iReadData = (int)shtemp.all;
			break;
		}

		case 3:
		{
			// UINT
			itemp.all =0;
			itemp.b[1] = m_ucBackBuf[m_ucStartPtr+4];
			itemp.b[0] = m_ucBackBuf[m_ucStartPtr+5];					// C51 的整形順序相反
			m_iReadData = itemp.all;
			break;
		}

		case 4:
		{
			// long
			itemp.b[4] = m_ucBackBuf[m_ucStartPtr+4];
			itemp.b[3] = m_ucBackBuf[m_ucStartPtr+5];
			itemp.b[2] = m_ucBackBuf[m_ucStartPtr+6];
			itemp.b[1] = m_ucBackBuf[m_ucStartPtr+7];				 // C51 的長整形順序相反
			m_iReadData = itemp.all;
			break;
		}

		default: break;
	}
}

// 讀取軌跡采樣數(shù)據(jù)處理

void CTalkToCarDlg::getSampleData()
{
	m_ucSampleVal1  = m_ucBackBuf[m_ucStartPtr+4];
	m_ucSampleVal2  = m_ucBackBuf[m_ucStartPtr+5];
	m_ucSampleVal3  = m_ucBackBuf[m_ucStartPtr+6];
	m_ucSampleVal4  = m_ucBackBuf[m_ucStartPtr+7];

	m_ucSensorStat  = m_ucBackBuf[m_ucStartPtr+8];
}

// 讀取距離值操作

void CTalkToCarDlg::OnReadDis() 
{
	// TODO: Add your control notification handler code here
	this->UpdateData(true);				// 將對(duì)話框中的地址等數(shù)據(jù)取回

	if(open_CommPort())
	{
		m_iReadMemContent = DIS_DATA;
		makeSendFrame(READ_DIS, &m_baSendFrame);									// 構(gòu)建發(fā)送幀

		m_iRcvStat = NO_RCV;																			// 初始化接收狀態(tài)
		m_ctrlCommToCar.SetOutput((COleVariant)m_baSendFrame);		// 啟動(dòng)發(fā)送
		m_baSendFrame.RemoveAll();
	}
	else
	{
		m_ctrlCommToCar.SetPortOpen(false);
	}		
	
}

// 取出返回的距離值

void CTalkToCarDlg::getDisData()
{
	m_ucDisVal1  = m_ucBackBuf[m_ucStartPtr+4];
	m_ucDisVal2  = m_ucBackBuf[m_ucStartPtr+5];
	m_ucDisVal3  = m_ucBackBuf[m_ucStartPtr+6];
	m_ucDisVal4  = m_ucBackBuf[m_ucStartPtr+7];
	m_ucDisVal5  = m_ucBackBuf[m_ucStartPtr+8];
	m_ucDisVal6  = m_ucBackBuf[m_ucStartPtr+9];
	m_ucDisVal7  = m_ucBackBuf[m_ucStartPtr+10];
	m_ucDisVal8  = m_ucBackBuf[m_ucStartPtr+11];
	
	m_ucDisMeanVal  = m_ucBackBuf[m_ucStartPtr+12];
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久牛牛 | 国产精品久久久爽爽爽麻豆色哟哟| 波多野结衣欧美| 天天色图综合网| 自拍偷拍亚洲欧美日韩| 日韩免费福利电影在线观看| 色又黄又爽网站www久久| 国产专区综合网| 午夜精品国产更新| 一区二区三区小说| 中文字幕精品综合| 久久亚洲捆绑美女| 91精品国产综合久久婷婷香蕉| 91香蕉视频mp4| 国产精品99久| 欧美日韩中字一区| 99久久精品免费看国产免费软件| 久久69国产一区二区蜜臀| 亚洲资源在线观看| 亚洲欧美经典视频| 国产欧美一区二区精品性色超碰| 日韩视频在线永久播放| 欧美美女喷水视频| 欧美日韩中文一区| 欧亚一区二区三区| 在线免费观看日本一区| 91尤物视频在线观看| 成人毛片视频在线观看| 国产毛片精品视频| 国产呦萝稀缺另类资源| 另类小说一区二区三区| 免费成人在线播放| 免费看欧美女人艹b| 无吗不卡中文字幕| 日韩成人av影视| 午夜久久久影院| 天堂影院一区二区| 日韩国产在线观看一区| 日韩在线播放一区二区| 天天综合色天天综合色h| 午夜电影一区二区| 免费亚洲电影在线| 精品一区二区三区不卡| 国产精品77777| 成人一区在线观看| 99国产精品久| 在线免费亚洲电影| 欧美精选一区二区| 欧美一区永久视频免费观看| 日韩西西人体444www| 26uuu国产日韩综合| 久久免费电影网| 国产婷婷色一区二区三区四区| 国产喷白浆一区二区三区| 国产精品视频一二三| 亚洲人成网站色在线观看| 亚洲五码中文字幕| 美女国产一区二区三区| 国产精品88av| 日本黄色一区二区| 91精品国产品国语在线不卡| 精品久久久久99| 国产精品免费免费| 亚洲自拍偷拍图区| 美女高潮久久久| 波多野结衣中文字幕一区二区三区 | 日本v片在线高清不卡在线观看| 日本不卡在线视频| 成人免费av资源| 欧美日韩免费一区二区三区视频| 91精品综合久久久久久| 精品国产欧美一区二区| 国产精品国产三级国产aⅴ中文 | 婷婷综合另类小说色区| 韩国欧美一区二区| 99精品视频一区二区三区| 欧美日韩另类一区| 久久奇米777| 亚洲一区二区三区四区在线观看 | 欧美疯狂做受xxxx富婆| 久久婷婷综合激情| 一区二区三区日韩欧美| 久久草av在线| 色婷婷综合久久久久中文一区二区| 欧美一区二区三区在线电影 | 亚洲三级在线免费| 美女一区二区三区| 一本大道久久a久久综合| 日韩欧美一二三四区| **性色生活片久久毛片| 美女视频免费一区| 在线视频一区二区三区| 久久久久久久久久久久久久久99 | 成人激情视频网站| 91精品国产综合久久久久久久| 国产欧美视频在线观看| 亚洲成av人**亚洲成av**| 处破女av一区二区| 欧美成va人片在线观看| 亚洲综合一二三区| 成人av在线播放网址| 欧美不卡一区二区三区四区| 一区二区三区丝袜| 成人av资源在线观看| 亚洲精品一区二区三区四区高清| 亚洲最大色网站| av一本久道久久综合久久鬼色| 欧美videofree性高清杂交| 亚洲自拍偷拍综合| 99精品视频一区二区三区| 久久久综合九色合综国产精品| 午夜不卡av在线| 91国偷自产一区二区开放时间| 国产精品一区二区三区99| 欧美日韩美女一区二区| 一区二区日韩电影| 91网站在线播放| 国产精品久久午夜夜伦鲁鲁| 国产一区二区伦理| 日韩欧美国产精品一区| 日韩av一区二区三区四区| 在线精品观看国产| 亚洲综合在线视频| 91官网在线免费观看| 亚洲欧美偷拍三级| 97久久超碰国产精品| 国产精品卡一卡二| zzijzzij亚洲日本少妇熟睡| 国产日韩欧美制服另类| 国产在线一区二区综合免费视频| 日韩欧美在线影院| 久久国内精品视频| 精品捆绑美女sm三区| 久久99精品国产麻豆婷婷洗澡| 欧美一级片在线| 免费成人你懂的| 日韩欧美的一区| 男女性色大片免费观看一区二区| 欧美精品久久久久久久多人混战| 一区二区三区鲁丝不卡| 欧美色精品在线视频| 五月天网站亚洲| 7777精品伊人久久久大香线蕉完整版| 性做久久久久久| 91精品国产麻豆| 久久99精品久久久久婷婷| 久久久久久影视| 粉嫩av亚洲一区二区图片| 国产精品剧情在线亚洲| 91色porny在线视频| 亚洲成人av福利| 欧美日韩黄视频| 久久99精品久久久久久| 国产日韩精品视频一区| av高清不卡在线| 一区二区三区在线免费视频| 欧美日韩久久一区| 精品一区二区三区影院在线午夜 | 精品婷婷伊人一区三区三| 水蜜桃久久夜色精品一区的特点 | 欧美日韩综合不卡| 久久国产精品免费| 亚洲国产精品成人综合| 91久久精品一区二区二区| 婷婷中文字幕一区三区| 精品国产露脸精彩对白| 粉嫩av一区二区三区粉嫩| 亚洲精品日日夜夜| 91精品国产欧美日韩| 国产精品自拍在线| 夜夜精品视频一区二区| 欧美成人官网二区| 9色porny自拍视频一区二区| 亚洲成人黄色影院| 精品国产91久久久久久久妲己 | 日韩一级片在线播放| 国产suv精品一区二区6| 亚洲成人免费影院| 国产亚洲一区二区三区四区| 日本韩国一区二区三区视频| 美腿丝袜在线亚洲一区| 最新国产精品久久精品| 欧美一级高清片在线观看| a级精品国产片在线观看| 日本欧美一区二区在线观看| 国产精品久久久久永久免费观看| 欧美老女人在线| 成人看片黄a免费看在线| 日韩经典一区二区| 国产精品久久久久久一区二区三区| 在线不卡免费欧美| 9i在线看片成人免费| 麻豆一区二区三| 亚洲午夜激情av| 国产精品久久免费看| 欧美电影免费观看高清完整版在| 91麻豆国产精品久久| 国产大陆精品国产| 老司机一区二区| 午夜欧美2019年伦理|