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

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

?? d2xxunit.pas

?? Delphi直接控制usb-232接口的例子
?? PAS
字號:
unit D2XXUnit;

interface
Uses Windows,Forms,Dialogs;

Type FT_Result = Integer;

// Exported Functions
Function GetFTDeviceCount : FT_Result;
Function GetFTDeviceDescription( DeviceIndex : DWord ) : FT_Result;
Function GetFTDeviceSerialNo( DeviceIndex : DWord ) : FT_Result;
Function Open_USB_Device : FT_Result;
Function Close_USB_Device : FT_Result;
Function Write_USB_Device_Buffer( Write_Count : Integer ) : Integer;
Function Read_USB_Device_Buffer( Read_Count : Integer ) : Integer;
Function Reset_USB_Device : FT_Result;
Function Purge_USB_Device_Out : FT_Result;
Function Purge_USB_Device_In : FT_Result;
Function Set_USB_Device_RTS : FT_Result;
Function Clr_USB_Device_RTS : FT_Result;
Function Set_USB_Device_DTR : FT_Result;
Function Clr_USB_Device_DTR : FT_Result;
Function Set_USB_Device_BaudRate : FT_Result;
Function Set_USB_Device_DataCharacteristics : FT_Result;
Function Set_USB_Device_FlowControl : FT_Result;
Function Get_USB_Device_ModemStatus : FT_Result;
Function Set_USB_Device_Chars : FT_Result;
Function Set_USB_Device_TimeOuts(ReadTimeOut,WriteTimeOut:DWord) : FT_Result;
Function Get_USB_Device_QueueStatus : FT_Result;
Function Open_USB_Device_By_Serial_Number( Serial_Number : string ) : FT_Result;
Function Open_USB_Device_By_Device_Description( Device_Description : string ) : FT_Result;

Var
// Port Handle Returned by the Open Function
// Used by the Subsequent Function Calls
    FT_HANDLE : DWord = 0;
// Used to handle multiple device instances in future
// versions. Must be set to 0 for now.
    PV_Device : DWord = 0;
// Holding Variables for the current settings
// Can be configured visually using the CFGUnit Unit
// or manually before calling SetUp_USB_Device
    FT_Current_Baud : Dword;
    FT_Current_DataBits : Byte;
    FT_Current_StopBits : Byte;
    FT_Current_Parity : Byte;
    FT_Current_FlowControl : Word;
    FT_RTS_On : Boolean;
    FT_DTR_On : Boolean;
    FT_Event_On : Boolean;
    FT_Error_On : Boolean;
    FT_XON_Value : Byte = $11;
    FT_XOFF_Value : Byte = $13;
    FT_EVENT_Value : Byte = $0;
    FT_ERROR_Value : Byte = $0;
// Used by CFGUnit to flag a bad value
    FT_SetupError : Boolean;
// Used to Return the current Modem Status
    FT_Modem_Status : DWord;
//  Used to return the number of bytes pending
//  in the Rx Buffer Queue
    FT_Q_Bytes : DWord;
//  Used to Enable / Disable the Error Report Dialog
    FT_Enable_Error_Report : Boolean = True;

Const
// FT_Result Values
    FT_OK = 0;
    FT_INVALID_HANDLE = 1;
    FT_DEVICE_NOT_FOUND = 2;
    FT_DEVICE_NOT_OPENED = 3;
    FT_IO_ERROR = 4;
    FT_INSUFFICIENT_RESOURCES = 5;
    FT_INVALID_PARAMETER = 6;
    FT_SUCCESS = FT_OK;
// FT_Open_Ex Flags
    FT_OPEN_BY_SERIAL_NUMBER = 1;
    FT_OPEN_BY_DESCRIPTION = 2;
// FT_List_Devices Flags
    FT_LIST_NUMBER_ONLY = $80000000;
    FT_LIST_BY_INDEX = $40000000;
    FT_LIST_ALL = $20000000;
// Baud Rate Selection
    FT_BAUD_300 = 300;
    FT_BAUD_600 = 600;
    FT_BAUD_1200 = 1200;
    FT_BAUD_2400 = 2400;
    FT_BAUD_4800 = 4800;
    FT_BAUD_9600 = 9600;
    FT_BAUD_14400 = 14400;
    FT_BAUD_19200 = 19200;
    FT_BAUD_38400 = 38400;
    FT_BAUD_57600 = 57600;
    FT_BAUD_115200 = 115200;
    FT_BAUD_230400 = 230400;
    FT_BAUD_460800 = 460800;
    FT_BAUD_921600 = 921600;
// Data Bits Selection
    FT_DATA_BITS_7 = 7;
    FT_DATA_BITS_8 = 8;
// Stop Bits Selection
    FT_STOP_BITS_1 = 0;
    FT_STOP_BITS_2 = 2;
// Parity Selection
    FT_PARITY_NONE = 0;
    FT_PARITY_ODD = 1;
    FT_PARITY_EVEN = 2;
    FT_PARITY_MARK = 3;
    FT_PARITY_SPACE = 4;
// Flow Control Selection
    FT_FLOW_NONE = $0000;
    FT_FLOW_RTS_CTS = $0100;
    FT_FLOW_DTR_DSR = $0200;
    FT_FLOW_XON_XOFF = $0400;
// Purge Commands
    FT_PURGE_RX = 1;
    FT_PURGE_TX = 2;
// IO Buffer Sizes
    FT_In_Buffer_Size = $8000;    // 32k
    FT_In_Buffer_Index = FT_In_Buffer_Size - 1;
    FT_Out_Buffer_Size = $8000;    // 32k
    FT_Out_Buffer_Index = FT_Out_Buffer_Size - 1;
// DLL Name
    FT_DLL_Name = 'ftd2xx.dll';
var
// Declare Input and Output Buffers
   FT_In_Buffer : Array[0..FT_In_Buffer_Index] of byte;
   FT_Out_Buffer : Array[0..FT_Out_Buffer_Index] of byte;
// A variable used to detect time-outs
// Attach a timer to the main project form
// which decrements this every 10mS if
// FT_TimeOut_Count <> 0
   FT_TimeOut_Count : Integer = 0;
// Used to determine how many bytes were
// actually received by FT_Read_Device_All
// in the case of a time-out
   FT_All_Bytes_Received : Integer = 0;
   FT_IO_Status : Ft_Result = FT_OK;
// Used By FT_ListDevices
   FT_Device_Count : DWord;
   FT_Device_String_Buffer : Array [1..50] of Char;
   FT_Device_String : String;


implementation

function FT_Open(PVDevice:Integer; ftHandle:Pointer ) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Open';
function FT_Close(ftHandle:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Close';
function FT_Read(ftHandle:Dword; FTInBuf : Pointer; BufferSize : LongInt; ResultPtr : Pointer ) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Read';
function FT_Write(ftHandle:Dword; FTOutBuf : Pointer; BufferSize : LongInt; ResultPtr : Pointer ) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Write';
function FT_SetBaudRate(ftHandle:Dword;BaudRate:DWord) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_SetBaudRate';
function FT_SetDataCharacteristics(ftHandle:Dword;WordLength,StopBits,Parity:Byte) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_SetDataCharacteristics';
function FT_SetFlowControl(ftHandle:Dword;FlowControl:Word;XonChar,XoffChar:Byte) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_SetFlowControl';
function FT_ResetDevice(ftHandle:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_ResetDevice';
function FT_SetDtr(ftHandle:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_SetDtr';
function FT_ClrDtr(ftHandle:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_ClrDtr';
function FT_SetRts(ftHandle:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_SetRts';
function FT_ClrRts(ftHandle:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_ClrRts';
function FT_GetModemStatus(ftHandle:Dword;ModemStatus:Pointer) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_GetModemStatus';
function FT_SetChars(ftHandle:Dword;EventChar,EventCharEnabled,ErrorChar,ErrorCharEnabled : Byte) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_SetChars';
function FT_Purge(ftHandle:Dword;Mask:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Purge';
function FT_SetTimeouts(ftHandle:Dword;ReadTimeout,WriteTimeout:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_SetTimeouts';
function FT_GetQueueStatus(ftHandle:Dword;RxBytes:Pointer) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_GetQueueStatus';
function FT_GetNumDevices(pvArg1:Pointer;pvArg2:Pointer;dwFlags:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_ListDevices';
function FT_ListDevices(pvArg1:Dword;pvArg2:Pointer;dwFlags:Dword) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_ListDevices';
function FT_OpenEx(pvArg1:Pointer;dwFlags:Dword;ftHandle:Pointer) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_OpenEx';

Procedure FT_Error_Report(ErrStr: String; PortStatus : Integer);
Var Str : String;
Begin
If Not FT_Enable_Error_Report then Exit;
If PortStatus = FT_OK then Exit;
Case PortStatus of
    FT_INVALID_HANDLE : Str := ErrStr+' - Invalid Handle...';
    FT_DEVICE_NOT_FOUND : Str := ErrStr+' - Device Not Found....';
    FT_DEVICE_NOT_OPENED : Str := ErrStr+' - Device Not Opened...';
    FT_IO_ERROR : Str := ErrStr+' - General IO Error...';
    FT_INSUFFICIENT_RESOURCES : Str := ErrStr+' - Insufficient Resources...';
    FT_INVALID_PARAMETER : Str := ErrStr+' - Invalid Parameter ...';
    End;
MessageDlg(Str, mtError, [mbOk], 0);
End;

Function GetDeviceString : String;
Var I : Integer;
Begin
Result := ''; I := 1;
FT_Device_String_Buffer[50] := Chr(0); // Just in case !
While FT_Device_String_Buffer[I] <> Chr(0) do
  Begin
  Result := Result + FT_Device_String_Buffer[I];
  Inc(I);
  End;
End;

Procedure SetDeviceString ( S : String );
Var I,L : Integer;
Begin
FT_Device_String_Buffer[1] := Chr(0);
L := Length(S);  If L > 49 then L := 49;
If L = 0 then Exit;
For I := 1 to L do FT_Device_String_Buffer[I] := S[I];
FT_Device_String_Buffer[L+1] := Chr(0);
End;

Function GetFTDeviceCount : FT_Result;
Begin
Result := FT_GetNumDevices(@FT_Device_Count,Nil,FT_LIST_NUMBER_ONLY);
If Result <> FT_OK then FT_Error_Report('GetFTDeviceCount',Result);
End;

Function GetFTDeviceSerialNo( DeviceIndex : DWord ) : FT_Result;
Begin
Result := FT_ListDevices(DeviceIndex,@FT_Device_String_Buffer,(FT_OPEN_BY_SERIAL_NUMBER or FT_LIST_BY_INDEX));
If Result = FT_OK then FT_Device_String := GetDeviceString;
If Result <> FT_OK then FT_Error_Report('GetFTDeviceSerialNo',Result);
End;

Function GetFTDeviceDescription( DeviceIndex : DWord ) : FT_Result;
Begin
Result := FT_ListDevices(DeviceIndex,@FT_Device_String_Buffer,(FT_OPEN_BY_DESCRIPTION or FT_LIST_BY_INDEX));
If Result = FT_OK then FT_Device_String := GetDeviceString;
If Result <> FT_OK then FT_Error_Report('GetFTDeviceDescription',Result);
End;

Function Open_USB_Device : FT_Result;
Begin
Result := FT_Open(PV_Device,@FT_Handle);
If Result <> FT_OK then FT_Error_Report('FT_Open',Result);
End;

Function Open_USB_Device_By_Serial_Number( Serial_Number : string ) : FT_Result;
Begin
SetDeviceString(Serial_Number);
Result := FT_OpenEx(@FT_Device_String_Buffer,FT_OPEN_BY_SERIAL_NUMBER,@FT_Handle);
If Result <> FT_OK then FT_Error_Report('Open_USB_Device_By_Serial_Number',Result);
End;

Function Open_USB_Device_By_Device_Description( Device_Description : string ) : FT_Result;
Begin
SetDeviceString(Device_Description);
Result := FT_OpenEx(@FT_Device_String_Buffer,FT_OPEN_BY_DESCRIPTION,@FT_Handle);
If Result <> FT_OK then FT_Error_Report('Open_USB_Device_By_Device_Description',Result);
End;

Function Close_USB_Device : FT_Result;
Begin
Result :=  FT_Close(FT_Handle);
If Result <> FT_OK then FT_Error_Report('FT_Close',Result);
End;

Function Reset_USB_Device : FT_Result;
Begin
Result :=  FT_ResetDevice(FT_Handle);
If Result <> FT_OK then FT_Error_Report('FT_ResetDevice',Result);
End;

Function Purge_USB_Device_Out : FT_Result;
Begin
Result :=  FT_Purge(FT_Handle,FT_PURGE_TX);
If Result <> FT_OK then FT_Error_Report('FT_Purge TX',Result);
End;

Function Purge_USB_Device_In : FT_Result;
Begin
Result :=  FT_Purge(FT_Handle,FT_PURGE_RX);
If Result <> FT_OK then FT_Error_Report('FT_Purge RX',Result);
End;

Function Set_USB_Device_RTS : FT_Result;
Begin
Result :=  FT_SetRTS(FT_Handle);
If Result <> FT_OK then FT_Error_Report('FT_SetRTS',Result);
End;

Function Clr_USB_Device_RTS : FT_Result;
Begin
Result :=  FT_ClrRTS(FT_Handle);
If Result <> FT_OK then FT_Error_Report('FT_ClrRTS',Result);
End;

Function Set_USB_Device_DTR : FT_Result;
Begin
Result :=  FT_SetDTR(FT_Handle);
If Result <> FT_OK then FT_Error_Report('FT_SetDTR',Result);
End;

Function Clr_USB_Device_DTR : FT_Result;
Begin
Result :=  FT_ClrDTR(FT_Handle);
If Result <> FT_OK then FT_Error_Report('FT_ClrDTR',Result);
End;

Function Set_USB_Device_BaudRate : FT_Result;
Begin
Result :=  FT_SetBaudRate(FT_Handle,FT_Current_Baud);
If Result <> FT_OK then FT_Error_Report('FT_SetBaudRate',Result);
End;

Function Set_USB_Device_DataCharacteristics : FT_Result;
Begin
Result :=  FT_SetDataCharacteristics(FT_Handle,FT_Current_DataBits,FT_Current_StopBits,FT_Current_Parity);
If Result <> FT_OK then FT_Error_Report('FT_SetDataCharacteristics',Result);
End;

Function Set_USB_Device_FlowControl : FT_Result;
Begin
Result :=  FT_SetFlowControl(FT_Handle,FT_Current_FlowControl,FT_XON_Value,FT_XOFF_Value);
If Result <> FT_OK then FT_Error_Report('FT_SetFlowControl',Result);
End;

Function Get_USB_Device_ModemStatus : FT_Result;
Begin
Result :=  FT_GetModemStatus(FT_Handle,@FT_Modem_Status);
If Result <> FT_OK then FT_Error_Report('FT_GetModemStatus',Result);
End;

Function Set_USB_Device_Chars : FT_Result;
Var Events_On,Errors_On : Byte;
Begin
If FT_Event_On then Events_On := 1 else Events_On := 0;
If FT_Error_On then Errors_On := 1 else Errors_On := 0;
Result :=  FT_SetChars(FT_Handle,FT_EVENT_Value,Events_On,FT_ERROR_Value,Errors_On);
If Result <> FT_OK then FT_Error_Report('FT_SetChars',Result);
End;

Function Set_USB_Device_TimeOuts(ReadTimeOut,WriteTimeOut:DWord) : FT_Result;
Begin
Result :=  FT_SetTimeouts(FT_Handle,ReadTimeout,WriteTimeout);
If Result <> FT_OK then FT_Error_Report('FT_SetTimeouts',Result);
End;

Function Get_USB_Device_QueueStatus : FT_Result;
Begin
Result :=  FT_GetQueueStatus(FT_Handle,@FT_Q_Bytes);
If Result <> FT_OK then FT_Error_Report('FT_GetQueueStatus',Result);
End;

function Write_USB_Device_Buffer( Write_Count : Integer ) : Integer;
// Writes Write_Count Bytes from FT_Out_Buffer to the USB device
// Function returns the number of bytes actually sent
// In this example, Write_Count should be 32k bytes max
Var Write_Result : Integer;
Begin
FT_IO_Status := FT_Write(FT_Handle,@FT_Out_Buffer,Write_Count,@Write_Result);
If FT_IO_Status <> FT_OK then FT_Error_Report('FT_Write',FT_IO_Status);
Result := Write_Result;
End;

function Read_USB_Device_Buffer( Read_Count : Integer ) : Integer;
// Reads Read_Count Bytes ( or less ) from the USB device to the FT_In_Buffer
// Function returns the number of bytes actually received  which may range from zero
// to the actual number of bytes requested, depending on how many have been received
// at the time of the request + the read timeout value.

Var Read_Result : Integer;
Begin
FT_IO_Status := FT_Read(FT_Handle,@FT_In_Buffer,Read_Count,@Read_Result);
If FT_IO_Status <> FT_OK then FT_Error_Report('FT_Read',FT_IO_Status);
Result := Read_Result;
End;


end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩夫妻久久| 99久久亚洲一区二区三区青草| 欧美在线综合视频| 亚洲制服丝袜在线| 欧美日本免费一区二区三区| 亚洲图片欧美色图| 欧美一区二区视频在线观看2020 | 在线精品视频一区二区| 亚洲精品日日夜夜| 欧美精品一级二级| 激情欧美日韩一区二区| 成人欧美一区二区三区在线播放| 日本韩国精品一区二区在线观看| 亚洲国产视频直播| 欧美大片国产精品| av午夜一区麻豆| 亚洲亚洲人成综合网络| 精品三级在线看| 99在线精品免费| 首页国产丝袜综合| 国产女人aaa级久久久级| 色综合视频在线观看| 日韩成人一级大片| 欧美国产在线观看| 欧美日韩mp4| 成人免费黄色大片| 日韩在线观看一区二区| 中文字幕精品三区| 欧美一区二区三区影视| 成年人午夜久久久| 蜜桃久久久久久久| 中文字幕欧美一区| 亚洲国产精品一区二区久久恐怖片 | 26uuu另类欧美亚洲曰本| 成人精品小蝌蚪| 日本伊人色综合网| 最新日韩在线视频| www精品美女久久久tv| 欧洲一区二区三区在线| 国产传媒欧美日韩成人| 亚洲福利视频一区| 国产精品无码永久免费888| 欧美巨大另类极品videosbest| 国产成人精品三级| 免费在线成人网| 亚洲一区影音先锋| 国产精品的网站| www久久精品| 日韩一级黄色片| 欧美日韩在线免费视频| 白白色 亚洲乱淫| 国产精品影视在线观看| 婷婷国产v国产偷v亚洲高清| 国产精品理伦片| 国产色爱av资源综合区| 日韩欧美精品三级| 337p亚洲精品色噜噜| 色噜噜狠狠色综合中国| 不卡高清视频专区| 国产乱子伦视频一区二区三区| 婷婷一区二区三区| 午夜私人影院久久久久| 亚洲精品中文在线影院| 国产精品国产馆在线真实露脸| 久久久久国产精品免费免费搜索| 日韩午夜精品视频| 正在播放一区二区| 欧美另类一区二区三区| 欧美日韩一区精品| 欧美美女网站色| 欧美视频中文字幕| 在线视频你懂得一区二区三区| 99久久精品国产导航| 成人高清视频在线| 成人av网站免费观看| 成人在线综合网| 不卡电影一区二区三区| 99精品黄色片免费大全| 99久久精品国产观看| 99免费精品视频| 91免费视频观看| 欧美亚洲禁片免费| 欧美日韩高清一区二区| 宅男噜噜噜66一区二区66| 制服丝袜日韩国产| 日韩欧美美女一区二区三区| 精品少妇一区二区三区在线播放 | 亚洲精品一区二区三区99| 精品粉嫩aⅴ一区二区三区四区 | 中文久久乱码一区二区| 中文成人综合网| 亚洲综合色自拍一区| 亚洲国产精品一区二区www在线| 亚洲一二三级电影| 麻豆国产精品一区二区三区 | 日韩视频在线观看一区二区| 日韩三级视频在线观看| 久久久久免费观看| 亚洲婷婷在线视频| 亚洲高清免费一级二级三级| 美美哒免费高清在线观看视频一区二区| 蜜桃传媒麻豆第一区在线观看| 国产精品一区不卡| 一本色道久久综合亚洲精品按摩| 欧美日韩黄色一区二区| 日韩欧美一区二区久久婷婷| 国产精品人人做人人爽人人添| 亚洲欧美日韩国产另类专区| 天天综合网 天天综合色| 国产一区二区三区香蕉| 色综合久久66| 欧美精品一区二区高清在线观看| 欧美韩国日本不卡| 丝袜a∨在线一区二区三区不卡| 韩国一区二区视频| 在线观看国产91| 26uuu另类欧美亚洲曰本| 亚洲乱码一区二区三区在线观看| 首页国产丝袜综合| 不卡电影免费在线播放一区| 欧美优质美女网站| 久久综合久久综合亚洲| 亚洲一区二区成人在线观看| 国内精品久久久久影院色| 色先锋资源久久综合| 亚洲精品在线观| 亚洲成a人v欧美综合天堂| 懂色av一区二区夜夜嗨| 欧美高清视频在线高清观看mv色露露十八 | 国精产品一区一区三区mba桃花 | 久久精品国产亚洲高清剧情介绍| 成人精品国产一区二区4080| 欧美一级二级三级蜜桃| 综合久久综合久久| 国产高清精品在线| 欧美高清激情brazzers| 亚洲日本va午夜在线影院| 国内一区二区视频| 欧美人妖巨大在线| 亚洲乱码精品一二三四区日韩在线| 国产在线一区二区综合免费视频| 欧美日韩久久久久久| 亚洲欧美日韩人成在线播放| 国产精品影视在线| 日韩一区二区三区四区| 亚洲国产精品久久一线不卡| 99精品一区二区| 国产精品网站在线| 国产一区二区三区不卡在线观看| 欧美日韩一级视频| 亚洲一区二区欧美日韩| 99re在线精品| 国产精品不卡在线观看| 国产成人综合视频| 久久女同互慰一区二区三区| 捆绑调教美女网站视频一区| 91精品久久久久久蜜臀| 亚洲国产精品一区二区久久 | 亚洲天堂av老司机| www.av精品| 国产精品美女久久久久久久久久久| 国产一区二区免费视频| 精品国产亚洲在线| 国内国产精品久久| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩伦理av电影| 97aⅴ精品视频一二三区| 国产精品久久久久久久久动漫| 成人av高清在线| 综合分类小说区另类春色亚洲小说欧美| 成人精品视频一区二区三区| 国产精品久久久久久久午夜片| 成人免费视频播放| 一区在线播放视频| 一本色道久久综合狠狠躁的推荐| 亚洲人成小说网站色在线| 91小视频免费看| 亚洲国产一区视频| 欧美一级在线观看| 国产在线视频不卡二| 中文字幕av在线一区二区三区| 波多野结衣91| 亚洲午夜日本在线观看| 717成人午夜免费福利电影| 日本不卡中文字幕| 久久久久久久久蜜桃| 高清av一区二区| 亚洲激情图片qvod| 51精品久久久久久久蜜臀| 精品一区二区三区影院在线午夜 | 精品国产一二三区| 丁香亚洲综合激情啪啪综合| 1区2区3区国产精品| 欧美三区免费完整视频在线观看| 天堂av在线一区| 国产欧美精品区一区二区三区| 97se亚洲国产综合自在线| 天天综合色天天综合色h| 久久免费看少妇高潮| 色综合视频一区二区三区高清|