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

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

?? xcomdrv.pas

?? delphi串口通訊控件,簡單易用
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit XComDrv;

(**************************************************************************
 *     XComDrv                                                            *
 *                                                                        *
 *     Authors    : Ondrej Urik, Alexander Grischenko                     *
 *     Site       : http://xcomdrv.host.sk                                * 
 *     Mail       : xcomdrv@host.sk                                       *
 *     Version    : 1.0 $rev. 20 March 2002                               *
 *     Released   : March, 2002                                           *
 *     Platform   : D4-D?, CB4-CB?                                        *
 *                                                                        *
 *                                                                        *
 *     USE AT YOUR OWN RISK. AUTHORS ARE NOT LIABLE FOR ANY DAMAGES       *
 *     CAUSED BY USE OF THIS SOFTWARE. YOU MAY MODIFY THIS UNIT AND ALL   *
 *     OTHER UNITS THAT ARE PART OF THIS PROJECT IN ANY WAY, BUT PLEASE   *
 *     DO NOT CLAIM THAT YOU WROTE THE ORIGINAL.                          *
 *                                                                        *
 *     NOTE                                                               *
 *     1. If you find any bugs or if you got some good ideas that         *
 *     could help or improve any of the components please send a mail     *
 *     to xcomdrv@host.sk. Thanx.                                         *
 *     2. Unit is designed for Win9x and WinNT platforms. If you find     *
 *     any problems using this unit on WinNT/Win2000/WinME send me short  *
 *     description of the problem to above mail address.                  *
 *                                                                        *
 *     You may modify, distribute and sell XComDrv under any circum-      *
 *     stances. BUT by using this project you agree that the authors      *
 *     (Ondrej Urik, Alexander Grischenko) are not liable for any         *
 *     damage caused, directly or indirectly, by use or abuse of this     *
 *     project.                                                           *
 *                                                                        * 
 *     USE AT YOUR OWN RISK!                                              *
 *                                                                        *
 *     Ondrej Urik                       Alexander Grischenko             *
 *     01826 Plevnik-Drienove 12         Riga                             *
 *     Slovak Republic                   Latvia                           *
 *     ondrej.urik@pobox.sk              gralex@mailbox.riga.lv           *
 *                                                                        *
 **************************************************************************)

{$H+,R-,B-}
{$MINENUMSIZE 4}
{$I XCOMSWITCH.INC}

interface

uses
  Windows, SysUtils, Classes, Forms, XAsync;

type
  TDeviceEvent = (deChar, deFlag, deOutEmpty, deCTS, deDSR, deRLSD,
    deBreak, deError, deRing, dePrintError, deIn80Full, deProv1, deProv2);
  TDeviceEvents = set of TDeviceEvent;

  TCommEvent = procedure ( Sender: TObject; const Events: TDeviceEvents ) of object;
  TDataEvent = procedure ( Sender: TObject; const Received: DWORD ) of object;

  TObjectMethod = procedure of object;

  TBaudRate = ( br110, br300, br600, br1200, br2400, br4800, br9600, br14400,
    br19200, br38400, br56000, br57600, br115200, br128000, br256000, brCustom );

  TFlowControl = ( fcNone, fcRtsCts, fcDtrDsr, fcSoftware, fcCustom );

  TRTSSettings = set of ( fsCTSOut, fsRTSEnabled, fsRTSHandshake );
  TDTRSettings = set of ( fsDSROut, fsDTREnabled, fsDTRHandshake );
  TXOnXOffSettings = set of (fsInX, fsOutX);

  TDataBits = ( db4, db5, db6, db7, db8 );
  TStopBits = ( sb1, sb1p5, sb2 );
  TParity = ( paNone, paOdd, paEven, paMark, paSpace );

  TCommOption = ( coAbortOnError, coDiscardNull, coDSRSensitivity,
    coErrorChar, coParityCheck, coTXContinueOnXOff, coLeaveDTROpen );
  TCommOptions = set of TCommOption;

  TBreakStatus = ( brClear, brSet );
  TLockState = set of (loSend, loRead);

  TCustomComm = class;

  TEventState = set of ( esBefore, esAfter );

  TCommPlugin = class ( TComponent )
  private
    FComm: TCustomComm;
  protected
    EventState: TEventState;
    LockState: TLockState;
    function CommValid: boolean;
    procedure SetComm( Value: TCustomComm ); virtual;
    procedure HandleEvents( var Events: TDeviceEvents ); dynamic;
    procedure Notification( AComponent: TComponent; Operation: TOperation ); override;
  public
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;
  published
    property Comm: TCustomComm read FComm write SetComm;
  end;

  TCommDataControl = class ( TPersistent )
  private
    FDataBits        : TDataBits;
    FParity          : TParity;
    FStopBits        : TStopBits;
    FComm            : TCustomComm;
    procedure SetDataBits( Value: TDataBits );
    procedure SetParity( Value: TParity );
    procedure SetStopBits( Value: TStopBits );
    function GetDataBits: TDataBits;
    function GetParity: TParity;
    function GetStopBits: TStopBits;
  protected
    procedure AssignTo( Dest: TPersistent ); override;
  public
    constructor Create( AComm: TCustomComm ); virtual;
  published
    property DataBits  : TDataBits read GetDataBits write SetDataBits;
    property Parity    : TParity read GetParity write SetParity;
    property StopBits  : TStopBits read GetStopBits write SetStopBits;
  end;

  TCommBuffers = class ( TPersistent )
  private
    FInputSize       : word;
    FInputTime       : word;
    FOutputSize      : word;
    FOutputTime      : word;
    FComm            : TCustomComm;
    procedure SetIOSize( Index: integer; Value: word );
    function GetIOSize( Index: integer ): word;
  protected
    procedure AssignTo( Dest: TPersistent ); override;
  public
    constructor Create( AComm: TCustomComm ); virtual;
  published
    property InputSize     : word index 0 read GetIOSize write SetIOSize;
    property OutputSize    : word index 1 read GetIOSize write SetIOSize;
    property InputTimeout  : word read FInputTime write FInputTime;
    property OutputTimeout : word read FOutputTime write FOutputTime;
  end;

  TCommEventChars = class ( TPersistent )
  private
    FXonChar         : char;
    FXoffChar        : char;
    FErrorChar       : char;
    FEventChar       : char;
    FEofChar         : char;
    FComm            : TCustomComm;
    procedure SetCommChar( Index: integer; Value: char );
    function GetCommChar( Index: integer ): char;
  protected
    procedure AssignTo( Dest: TPersistent ); override;
  public
    constructor Create( AComm: TCustomComm ); virtual;
  published
    property XonChar   : char index 0 read GetCommChar write SetCommChar;
    property XoffChar  : char index 1 read GetCommChar write SetCommChar;
    property EofChar   : char index 2 read GetCommChar write SetCommChar;
    property ErrorChar : char index 3 read GetCommChar write SetCommChar;
    property EventChar : char index 4 read GetCommChar write SetCommChar;
  end;

  TCommTimeoutsEx = class ( TPersistent )
  private
    FReadInterval    : DWORD;
    FReadMultiplier  : DWORD;
    FReadConstant    : DWORD;
    FWriteMultiplier : DWORD;
    FWriteConstant   : DWORD;
    FComm            : TCustomComm;
    procedure SetInterval( Index: integer; Value: DWORD);
    function GetInterval( Index: integer ): DWORD;
  protected
    procedure AssignTo(Dest: TPersistent); override;
  public
    constructor Create( AComm: TCustomComm ); virtual;
  published
    property ReadInterval    : DWORD index 0 read GetInterval write SetInterval;
    property ReadMultiplier  : DWORD index 1 read GetInterval write SetInterval;
    property ReadConstant    : DWORD index 2 read GetInterval write SetInterval;
    property WriteMultiplier : DWORD index 3 read GetInterval write SetInterval;
    property WriteConstant   : DWORD index 4 read GetInterval write SetInterval;
  end;

  TCommStatus = set of ( csCTSHold, csDTRHold, csRLSDHold, csXOffHold,
    csXOffSent, csEofSent, csWaitingTX );

  TCustomComm = class( TComponent )
  private
    FHandle          : HFILE;
    FBaudRate        : TBaudRate;
    FBaudValue       : DWORD;
    FBuffers         : TCommBuffers;
    FDataControl     : TCommDataControl;
    FDeviceName      : string;
    FDTRSettings     : TDTRSettings;
    FEventChars      : TCommEventChars;
    FEvents          : TDeviceEvents;
    FFlowControl     : TFlowControl;
    FOptions         : TCommOptions;
    FRTSSettings     : TRTSSettings;
    FSynchronize     : boolean;
    FTimeouts        : TCommTimeoutsEx;
    FXOnXOffSettings : TXOnXOffSettings;
    FOnCommEvent     : TCommEvent;
    FOnData          : TDataEvent;
    FOnRead          : TNotifyEvent;
    FOnSend          : TNotifyEvent;
    FCommThread      : TThread;
    FLocked          : TLockState;
    FPaused          : integer;
    FPlugins         : TList;
    FSavedAsyncProc  : TAsyncProc;
    FUpdating        : boolean;
    procedure SetBaudRate( Value: TBaudRate );
    procedure SetBaudValue( Value: DWORD );
    procedure SetBuffers( Value: TCommBuffers );
    procedure SetRTSSettings( Value: TRTSSettings );
    procedure SetDeviceName( Value: string );
    procedure SetDataControl( Value: TCommDataControl );
    procedure SetDTRSettings( Value: TDTRSettings );
    procedure SetEventChars( Value: TCommEventChars );
    procedure SetTimeouts( Value: TCommTimeoutsEx );
    procedure SetFlowControl( Value: TFlowControl );
    procedure SetCommOptions( Value: TCommOptions );
    procedure SetXOnXOffSettings( Value: TXOnXOffSettings );
    {$IFDEF X_DEBUG}
    procedure SetOpened( Value: Boolean );
    {$ENDIF}
    procedure SetPaused( Value: boolean );
    procedure UpdateFlowSettings( Flags: integer );
    function GetBaudRate: TBaudRate;
    function GetBaudValue: DWORD;
    function GetRTSSettings: TRTSSettings;
    function GetDTRSettings: TDTRSettings;
    function GetXOnXOffSettings: TXOnXOffSettings;
    function GetCommOptions: TCommOptions;
    function GetOpened: boolean;
    function GetCommStatus: TCommStatus;
    function GetCount( Index: integer ): DWORD;
    function GetMaxBaud: TBaudRate;
    function GetTotalReceived: DWORD;
    function GetPaused: boolean;
    function UpdateDCB: boolean;
    function UpdateBuffers: boolean;
    function UpdateTimeouts: boolean;
    procedure InternalAsyncProc( Success: boolean; Data: Pointer; Count: Longint );
    {Plugin support}
    procedure AddPlugin( Value: TCommPlugin );
    procedure RemovePlugin( Value: TCommPlugin );
    function GetPlugin( Index: integer ): TCommPlugin;
    function GetPluginCount: integer;
    procedure ClearPlugins;
  protected
    FTotalRead       : DWORD;
    FTotalSent       : DWORD;
    procedure UpdateEvents( Events: TDeviceEvents );
    procedure HandleEvents( Events: TDeviceEvents ); dynamic;
    procedure ReceiveData( Received: DWORD ); dynamic;
    function GetLocked: TLockState; virtual;
    property Plugins[Index: integer]: TCommPlugin read GetPlugin;
    property PluginCount: integer read GetPluginCount;
  public
    property Handle         : HFILE read FHandle;
    property CommStatus     : TCommStatus read GetCommStatus;
    property Locked         : TLockState read GetLocked;
    property MaxBaud        : TBaudRate read GetMaxBaud;
    property InCount        : DWORD index 0 read GetCount;
    property OutCount       : DWORD index 1 read GetCount;
    property Opened         : boolean read GetOpened
      {$IFDEF X_DEBUG}write SetOpened stored False default False{$ENDIF};
    property Paused         : boolean read GetPaused write SetPaused;
    property PauseCount     : integer read FPaused;
    property TotalReceived  : DWORD read GetTotalReceived;
    property TotalSent      : DWORD read FTotalSent;
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;

    function OpenDevice: boolean; virtual;
    procedure CloseDevice; virtual;

    procedure BeginUpdate;
    function EndUpdate: Boolean;

    procedure ToggleBreak( Status: TBreakStatus );
    procedure ToggleDTR( Status: TBreakStatus );
    procedure ToggleRTS( Status: TBreakStatus );
    procedure ToggleXonXoff( Status: TBreakStatus );

    function PurgeIn: boolean;
    function PurgeOut: boolean;

    function SendDataEx( const Data; DataSize, Timeout: DWORD ): DWORD;
    function SendData( const Data; DataSize: DWORD ): DWORD;
    function SendByte( const Value: byte ): boolean;
    function SendString( const Value: string ): boolean;

    function ReadDataEx( var Data; MaxDataSize, Timeout: DWORD ): DWORD;
    function ReadData( var Data; MaxDataSize: DWORD ): DWORD;
    function ReadByte( var Value: byte ): boolean;
    function ReadString( var Value: string ): boolean; overload;
    function ReadString( var Value: string; Len: integer ): boolean; overload;

    function WaitForString( const Value: array of string; Timeout: DWORD ): integer;
    {Async support}
    function InitAsync( AsyncProc: TAsyncProc; AutoClose: boolean ): HASYNC;
    function SendAsync( Async: HASYNC; const Data; DataSize: DWORD ): DWORD;
    function SendStringAsync( Async: HASYNC; const Value: string ): DWORD;
    function ReadAsync( Async: HASYNC; var Data; DataSize: DWORD ): DWORD;
    function ReadStringAsync( Async: HASYNC; var Value: string ): DWORD;
    function WaitAsync( Async: HASYNC; Process: TWaitProc ): boolean;
    function CloseAsync( Async: HASYNC ): boolean;
  protected
    property BaudRate    : TBaudRate read GetBaudRate write SetBaudRate;
    property Buffers     : TCommBuffers read FBuffers write SetBuffers;
    property BaudValue   : DWORD read GetBaudValue write SetBaudValue;
    property RTSSettings : TRTSSettings read GetRTSSettings write SetRTSSettings;
    property DataControl : TCommDataControl read FDataControl write SetDataControl;
    property DeviceName  : string read FDeviceName write SetDeviceName;
    property DTRSettings : TDTRSettings read GetDTRSettings write SetDTRSettings;
    property EventChars  : TCommEventChars read FEventChars write SetEventChars;
    property FlowControl : TFlowControl read FFlowControl write SetFlowControl;
    property MonitorEvents: TDeviceEvents read FEvents write FEvents;
    property Options     : TCommOptions read GetCommOptions write SetCommOptions;
    property Synchronize : boolean read FSynchronize write FSynchronize;
    property Timeouts    : TCommTimeoutsEx read FTimeouts write SetTimeouts;
    property XOnXOffSettings: TXOnXOffSettings read GetXOnXOffSettings write SetXOnXOffSettings;
    property OnCommEvent : TCommEvent read FOnCommEvent write FOnCommEvent;
    property OnData      : TDataEvent read FOnData write FOnData;
    property OnRead      : TNotifyEvent read FOnRead write FOnRead;
    property OnSend      : TNotifyEvent read FOnSend write FOnSend;
  end;

  TXComm = class ( TCustomComm )
  published
    property BaudRate;
    property BaudValue;
    property Buffers;
    property RTSSettings;
    property DataControl;
    property DeviceName;
    property DTRSettings;
    property EventChars;
    property MonitorEvents;
    property FlowControl;
    property Options;
    property Synchronize;
    property Timeouts;
    property XOnXOffSettings;

    property OnCommEvent;
    property OnData;
    property OnRead;
    property OnSend;

    {$IFDEF X_DEBUG}
    property Opened;
    {$ENDIF}
  end;

type  {Modem support}

  TDialType = ( dtPulse, dtTone );
  TConnectType = ( ctDial, ctDirect, ctWait );

  TConnectingEvent = procedure ( Sender: TObject; const ConnectType: TConnectType ) of object;

  TModemSettings = class ( TPersistent )
  private
    FInitString      : string;
    FResetString     : string;
    FDialNumber      : string;
    FSpeed           : Longint;
    FDialType        : TDialType;
    FConnectType     : TConnectType;
    FWaitRings       : byte;
    procedure SetSpeed( Value: longint );
  protected
    procedure AssignTo( Dest: TPersistent ); override;
  public
    constructor Create;
  published
    property DialType    : TDialType read FDialType write FDialType;
    property DialNumber  : string read FDialNumber write FDialNumber;
    property ConnectType : TConnectType read FConnectType write FConnectType;
    property InitString  : string read FInitString write FInitString;
    property ResetString : string read FResetString write FResetString;
    property Speed       : Longint read FSpeed write SetSpeed;
    property WaitRings   : byte read FWaitRings write FWaitRings;
  end;

  THayesAT = record
    Command: string;
    Data: string;
    Result: string;
    ME: integer;
  end;

  THayesATEvent = procedure ( Sender: TObject; AT: THayesAT ) of object;
  TLineStatus = set of ( lsCTS, lsDSR, lsRing, lsCD );
  TModemState = set of ( msInstalled, msConnected, msCommandState, msATSent,
    msConnecting, msWaitingCall, msDisconnecting );

  TCustomModem = class( TCustomComm )
  private
    FModemState      : TModemState;
    FModemSettings   : TModemSettings;
    FOnHayesAT       : THayesATEvent;
    FOnConnect       : TNotifyEvent;
    FOnDisconnect    : TNotifyEvent;
    FOnRing          : TNotifyEvent;
    FOnConnecting    : TConnectingEvent;
    FOnDisconnecting : TNotifyEvent;
    FOnChangeCS      : TNotifyEvent;
    FBuffer          : string;
    FCommand         : string;
    FECChar          : char;
    WLocked          : Boolean;
    WHayesAT         : THayesAT;
    WRegSent         : Boolean;
    WCmdPresent      : Boolean;
    procedure SetModemSettings( Value: TModemSettings );
    function InitCommand( Value: string ): boolean;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利91精品| 亚洲福利一二三区| 国产高清成人在线| 久久久不卡网国产精品一区| 国产呦精品一区二区三区网站| 日韩欧美激情在线| 国产福利不卡视频| 亚洲精品老司机| 欧美美女一区二区三区| 久久99精品视频| 亚洲国产精品av| 欧美在线一二三| 精品一区二区三区免费播放| 国产视频不卡一区| 在线观看亚洲专区| 老司机午夜精品99久久| 欧美韩日一区二区三区四区| 99re成人精品视频| 青青草91视频| 中文字幕亚洲成人| 91.com在线观看| 91麻豆精品视频| 亚洲一区二区三区视频在线播放| 91精品中文字幕一区二区三区| 国产精品一区二区免费不卡| 亚洲一区在线播放| 久久久久久久久久久电影| 色婷婷av一区| 国产精品综合久久| 亚洲第一福利一区| 国产精品久久综合| 欧美xfplay| 在线观看精品一区| 懂色中文一区二区在线播放| 天堂蜜桃一区二区三区 | 国模娜娜一区二区三区| 亚洲欧美日韩国产一区二区三区| 日韩欧美国产电影| 91免费观看国产| 国产精品18久久久久久久久久久久| 一个色在线综合| 国产精品嫩草久久久久| 日韩三区在线观看| 色八戒一区二区三区| 国产经典欧美精品| 青青草一区二区三区| 一区二区三区不卡视频| 国产欧美一区二区精品性色超碰| 欧美丰满高潮xxxx喷水动漫| 色婷婷久久久亚洲一区二区三区| 国产一区二区三区不卡在线观看| 天堂资源在线中文精品| 亚洲视频图片小说| 国产视频视频一区| 精品国产乱码久久久久久蜜臀| 欧美日韩免费电影| 色94色欧美sute亚洲线路一久| 懂色av中文字幕一区二区三区| 久久精品72免费观看| 亚洲bt欧美bt精品| 亚洲福利一二三区| 亚洲一区二区三区免费视频| 亚洲日本在线看| 亚洲欧美综合另类在线卡通| 国产丝袜美腿一区二区三区| 精品奇米国产一区二区三区| 日韩午夜激情av| 欧美一级日韩免费不卡| 欧美一级一区二区| 欧美一区二区三区性视频| 欧美日韩免费电影| 欧美军同video69gay| 欧美日韩国产高清一区二区| 欧美日韩一区视频| 欧美美女直播网站| 51精品久久久久久久蜜臀| 欧美老年两性高潮| 日韩欧美激情四射| 亚洲精品一区二区三区精华液| 日韩免费视频线观看| 精品国产乱码久久久久久图片| 亚洲精品一区二区三区四区高清| 欧美精品一区二区三区四区| 久久久精品国产99久久精品芒果| 国产亚洲精品超碰| 中文字幕色av一区二区三区| 亚洲欧美日韩国产成人精品影院| 一区二区三区在线免费观看| 亚洲最快最全在线视频| 午夜精品成人在线视频| 丝袜国产日韩另类美女| 精品在线播放免费| 欧美午夜影院一区| 欧美精品一二三| 欧美va日韩va| 中文字幕在线一区免费| 一区二区三区波多野结衣在线观看| 亚洲成人黄色影院| 韩国一区二区在线观看| 成人午夜又粗又硬又大| 色婷婷综合激情| 欧美一区二区免费视频| 欧美精品一区二区在线播放| 亚洲丝袜另类动漫二区| 爽好久久久欧美精品| 国内不卡的二区三区中文字幕| 不卡av电影在线播放| 欧美日韩国产经典色站一区二区三区 | 青青草精品视频| 成人一区二区三区视频在线观看| 色综合久久久久综合体| 91精品久久久久久久99蜜桃 | 95精品视频在线| 日韩午夜在线观看视频| 国产精品毛片高清在线完整版| 亚洲电影欧美电影有声小说| 国产麻豆精品视频| 欧美三级视频在线播放| 国产清纯美女被跳蛋高潮一区二区久久w| 《视频一区视频二区| 免费观看成人av| 一本久久精品一区二区| 26uuu精品一区二区三区四区在线| 亚洲欧美综合色| 精品一区二区免费视频| 在线视频欧美精品| 亚洲国产电影在线观看| 日韩在线a电影| 99re成人在线| 久久久久久久久久久黄色| 午夜免费久久看| 97se亚洲国产综合在线| 久久丝袜美腿综合| 免费高清视频精品| 色欧美乱欧美15图片| 中文字幕 久热精品 视频在线 | 国产成人一区在线| 制服丝袜日韩国产| 一区二区三区免费| 成人免费视频播放| 精品女同一区二区| 亚洲第一主播视频| 91丨九色丨尤物| 中文字幕中文字幕中文字幕亚洲无线| 美女久久久精品| 欧美日韩第一区日日骚| 亚洲男人电影天堂| 成人av综合在线| 国产精品日韩成人| 国产精品77777竹菊影视小说| 日韩一区二区三区高清免费看看| 亚洲.国产.中文慕字在线| 91久久精品一区二区三区| 国产精品成人一区二区艾草| 成人精品国产一区二区4080| 久久久不卡网国产精品二区| 精品在线播放免费| 精品久久久久久无| 狠狠久久亚洲欧美| 日韩欧美电影在线| 美女在线观看视频一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 91视频免费观看| 亚洲视频你懂的| 色综合久久中文字幕综合网| 亚洲人xxxx| 91黄色激情网站| 亚洲一区二区精品3399| 欧美中文字幕一二三区视频| 亚洲一区在线视频| 欧美日韩国产高清一区二区三区| 亚洲国产精品久久不卡毛片| 欧美日韩性生活| 日韩高清在线电影| 日韩欧美亚洲一区二区| 精品中文字幕一区二区小辣椒| 精品国产乱码久久久久久久久| 国产精品亚洲а∨天堂免在线| 国产日韩欧美激情| 99re66热这里只有精品3直播| 一区二区三区在线观看国产| 欧美日韩综合色| 麻豆国产精品一区二区三区| 久久嫩草精品久久久精品| 成人中文字幕在线| 一区二区三区波多野结衣在线观看| 欧美丝袜自拍制服另类| 蜜桃av一区二区在线观看| 久久亚洲一区二区三区明星换脸| 成人污视频在线观看| 亚洲伦理在线免费看| 欧美精品在线视频| 国产一区二区按摩在线观看| 中文字幕在线视频一区| 欧美体内she精视频| 国产在线精品视频| 亚洲欧美经典视频| 欧美一级午夜免费电影| 成人高清视频免费观看| 性久久久久久久久久久久|